
- 书: https://pan.baidu.com/s/1XqKbodMZYD_Bu2f_E1ghxw?pwd=y5p9
- 笔记如下:
- “Vulkan是‘面向未来的图形API’,显式控制GPU资源,替代OpenGL的隐式状态机。”
- “
vkEnumerateInstanceExtensionProperties
检查扩展支持,VK_KHR_surface
启用窗口系统集成。” - “队列家族(Queue Family)区分图形、计算和传输操作,
vkGetPhysicalDeviceQueueFamilyProperties
查询能力。” - “交换链(Swapchain)配置三要素:表面格式(
VkSurfaceFormatKHR
)、呈现模式(VkPresentModeKHR
)、分辨率(VkExtent2D
)。” - “管线布局(
VkPipelineLayout
)绑定描述符集和推送常量(Push Constants),后者适合高频小数据更新。” - “内存类型索引(
memoryTypeIndex
)区分设备本地(VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
)和主机可见内存。” - “屏障(
VkImageMemoryBarrier
)控制资源访问同步,转换图像布局(如VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
)。” - “描述符池(
VkDescriptorPool
)预分配描述符集,避免运行时动态分配开销。” - “多采样抗锯齿(MSAA):
VkImageCreateInfo
设置sampleCount
,VkPipelineMultisampleStateCreateInfo
配置采样数。” - “动态渲染(
VK_KHR_dynamic_rendering
)替代VkRenderPass
,简化现代渲染流程。” - “间接命令(
VkDrawIndirectCommand
)结合计算着色器生成绘制参数,实现GPU驱动渲染。” - “管线衍生(Pipeline Derivatives)复用基础管线状态,减少创建开销(如
VK_PIPELINE_CREATE_DERIVATIVE_BIT
)。” - “时间戳查询(
VkQueryPool
)测量GPU耗时,vkCmdWriteTimestamp
插入标记。” - “
VK_EXT_mesh_shader
引入网格着色器,替代传统顶点/图元着色器管线。” - “异步计算:提交到不同队列(图形vs计算),用
VkSemaphore
同步避免资源竞争。” - “
VK_KHR_buffer_device_address
允许着色器直接访问GPU内存,加速光线追踪。” - “延迟渲染优化:
VkRenderPass
子通道(Subpass)共享附件数据,减少带宽消耗。” - “
VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT
启用着色器printf调试,输出到主机日志。” - “管线缓存(
VkPipelineCache
)跨程序启动持久化,加速管线重建。” - “开发箴言:‘验证层(Validation Layers)是最好老师——始终在调试阶段启用’。”