- 博客(18)
- 收藏
- 关注
原创 vulkan demo入门教程一:创建实例
Vulkan是一款低开销、跨平台的3D图形和计算API,相比OpenGL具有显著优势:1)CPU效率更高,减少驱动层负担;2)原生支持多线程;3)统一跨平台接口;4)性能更可预测。其核心架构包含实例/物理设备、命令缓冲区、描述符集等概念,采用显式控制模式,虽然学习曲线陡峭但能充分发挥硬件性能。本文通过代码示例展示了Vulkan初始化流程,并对比了与OpenGL的关键差异,突显Vulkan在现代图形编程中的重要性,特别适合高性能渲染场景。
2026-03-14 16:09:24
85
原创 鸿蒙 6.0横屏显示时画面旋转错误
本文分析了DMS显示管理服务与RS渲染服务的协作流程,重点探讨了横屏旋转异常问题。文章指出屏幕旋转配置未生效的原因在于RSRenderServiceVisitor未正确传递旋转值,导致逻辑分辨率计算错误。具体表现为buffer宽高与物理分辨率不一致,使得srcRect和dstRect计算错误,最终显示画面被裁剪成正方形。解决方法是修正RSRenderServiceVisitor中屏幕信息设置逻辑,确保旋转状态被正确校验和传递。
2026-03-10 20:06:14
625
原创 鸿蒙图显源码解析一:屏幕旋转流程
本文详细分析了HarmonyOS系统中屏幕旋转的完整流程,整个流程涉及DisplayManager、ScreenController、RenderService和HWC等多个系统模块的协同工作,形成完整的屏幕旋转处理机制。
2026-03-07 12:06:52
5697
原创 鸿蒙显示相关接口
摘要 本文档介绍了鸿蒙系统显示相关的两个核心接口模块:display_gralloc和display_devicex。display_gralloc模块提供了内存分配与管理接口,包括Buffer的申请/释放、内存映射/解映射、缓存刷新等操作,部分功能与Android类似但有所扩展。display_devicex模块则负责显示设备管理,包含显示模式设置、电源/背光控制、热插拔/VBlank事件回调、虚拟显示设备管理以及图层合成等功能。这些接口共同构成了鸿蒙系统的显示子系统基础架构,为上层图形显示提供底层支持。
2026-03-03 11:13:05
651
原创 鸿蒙相关指令使用技巧
本文介绍了鸿蒙系统源码编译和调试的相关指令。主要内容包括:1) 源码编译方法,如单独编译模块和内核;2) 样机调试指令,包括hdc工具使用、视频播放、分区读写和旋转配置修改;3) 鸿蒙显示接口定义,对比分析了与Android图形架构的差异,重点介绍了Buffer分配机制和格式转换实现。文章提供了实用的调试命令和代码分析,帮助开发者理解鸿蒙显示系统的底层实现。
2026-02-25 15:34:24
681
原创 wayland协议详解一
本文深入解析Wayland客户端从启动到显示窗口的完整生命周期。首先建立与合成器的unix套接字连接,获取注册表了解可用接口。通过设置监听器处理全局对象,同步等待确保接口通告完成。接着创建Surface作为基础绘图单元,配合窗口管理接口赋予窗口属性。关键步骤包括设置事件监听器处理窗口状态变化、创建EGL窗口实现图形显示。整个过程体现了Wayland简洁安全的客户端-服务器模型,为开发基于Wayland的图形应用奠定基础。
2026-01-15 14:50:56
1214
原创 android hwc设计思路
本文介绍了Displayd系统对Android显示框架的扩展设计。Displayd通过解耦显示控制与图层管理,解决了HWC 1.x架构中存在的代码耦合问题。系统核心包括DeviceManager设备管理类、HdmiDevice HDMI属性适配模块以及HWCProxy通信接口。Displayd支持分辨率切换、切边、3D模式、HDR等高级功能,实现了多显示设备的热插拔管理。HWCProxy定义了与HWC的通信协议,包括设备切换、显示模式设置、数据空间控制等接口。
2026-01-12 09:05:33
1081
原创 RenderDoc Android 图形捕获与分析入门指南
本文介绍了使用RenderDoc进行应用程序帧捕获与分析的基本流程。主要内容包括:1) 下载最新稳定版RenderDoc;2) 连接Android设备步骤,需安装renderdoccmd并授权;3) 以原生谷歌浏览器为例演示截帧操作。文章重点说明从设备连接到完成捕获的整体流程,并展示了最终分析界面,用户可通过Texture Viewer查看具体渲染情况。操作过程配有界面截图辅助说明,适用于快速了解RenderDoc的基本使用方法。
2026-01-09 14:07:34
415
原创 MSAA多重采样demo
摘要:多重采样抗锯齿(MSAA)是一种减少图形渲染锯齿的技术,通过在像素内设置多个采样点来平滑边缘。本文介绍了MSAA的原理和实现方法,包括EGL配置设置、OpenGL ES上下文创建,以及Java与C++层的交互实现。通过调整EGL_SAMPLES参数可控制采样数量,数值越高效果越好但性能开销越大。完整实现代码可参考GitHub示例项目。
2026-01-05 11:33:00
843
原创 Windows 系统下载HDC工具的完整指南
摘要:本文介绍了在Windows系统下载HDC工具的方法。由于HDC工具不提供独立下载,需通过鸿蒙SDK获取。具体步骤为:访问鸿蒙官网下载约3GB的SDK包,解压后找到toolchains-windows压缩包,解压后即可使用HDC工具。文中包含详细的操作截图指引用户完成下载流程,帮助开发者避免踩坑。
2025-12-25 09:43:13
712
3
原创 图显之SurfaceFlinger
在多任务的操作系统,存在多个应用进程同时显示画面的情况,屏幕此时的显示是多个应用进程的图形缓冲合成结果。一种是通过硬件混合渲染器合成(一般称为DE合成),一种是OpenGLES合成(也称为GPU合成)。下面主要是针对Android系统。
2025-12-12 22:19:49
722
原创 图显之gralloc
图像缓冲是一段用于保存图形数据的内存,通常是一段共享内存,可以被不同的进程访。图形缓冲是图形显示系统的系统,图形内容从产生到最终显示,都离不开这个buffer。在Android系统中,由Gralloc负责图形缓冲。
2025-12-06 23:33:12
929
原创 vkQueueWaitIdle阻塞模式合理?
为什么不能将单次命令缓冲区改成全局复用模式?直接使用带Fence的异步提交,并配合多帧命令缓冲区(cmdBuf)循环使用,这样不是可以显著提升性能吗?遇到算法速度的瓶颈了。
2025-12-05 10:52:18
245
原创 git diff时的^M显示异常
更麻烦的是,文件中充斥着 ^M 字符,导致真正的修改点被完全淹没,无法达到 git diff 应有的代码对比效果。当在不同系统间协作,或者文件被不同编辑器保存时,git 会检测到行结束符的变化,并在 diff 中将其显示为 ^M(\r 的显示形式)。配置git 在比较文件时,将行尾的回车符(CR, \r,显示为 ^M)视为正常的行结束符,而不将其标记为差异。Windows:使用 CRLF(\r\n)作为行结束符。老版本 Mac OS:使用 CR(\r)作为行结束符。:使用 LF(\n)作为行结束符。
2025-12-03 20:24:31
256
原创 vulkan API流程
vkAcquireNextImageKHR从VkSwapChainKHR获取一个VkFrameBuffer序号,该序号对应的vkFrameBuffer可以用于录制Vulkan渲染指令的渲染目标,通过vkQueueSubmit函数将录制提交到渲染计算执行队列中,最后渲染结果在计算完成后存放到VkFrameBuffer中。VkFrameBuffer是渲染目标和渲染过程使用的color、depth和stencil等渲染目标缓存组件,在Vulkan叫VkFrameBuffer。
2025-12-03 20:01:02
1210
原创 gdb打开后调试失败
例如:在使用 GDB 调试程序时,经常会遇到:设置断点时提示 “no line” 错误、无法展开宏定义,调试信息不完整,变量名显示异常。
2025-12-02 17:32:48
134
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅