Normal Debugging
prepare
- loadAssets:加载模型
- prepareUniformBuffers
- createBuffer: VS
- createBuffer: GS
- updateUniformBuffers
- setupDescriptorSetLayout
- vkCreateDescriptorSetLayout
- vkCreatePipelineLayout
- preparePipelines
- Rendering pipeline
- vkCreateGraphicsPipelines: 计算法线阶段(带GS)
- vkCreateGraphicsPipelines: 渲染模型阶段
- Rendering pipeline
- setupDescriptorPool
- vkCreateDescriptorPool
- setupDescriptorSet
- vkAllocateDescriptorSets
- writeDescriptorSet
- vkUpdateDescriptorSets
- buildCommandBuffers
- loop
- vkBeginCommandBuffer
- vkCmdBeginRenderPass
- vkCmdSetViewport
- vkCmdSetScissor
- vkCmdSetLineWidth:设置线宽
- vkCmdBindDescriptorSets
- Solid shading
- vkCmdBindPipeline
- draw
- Normal debugging
- vkCmdBindPipeline
- draw
- drawUI
- vkCmdEndRenderPass
- vkEndCommandBuffer
- loop
render
- draw
- prepareFrame
- vkQueueSubmit
- submitFrame
shader
- VS: 正常
- GS: 正常渲染
- layout (triangles) in;
- layout (line_strip, max_vertices = 6) out;
- layout (location = 0) in vec3 inNormal[];
- FS: 正常渲染
小结
几何着色器已经比较熟悉了, 这里注意一下Vulkan管线线宽的设置方法即可.
Viewport Arrays
prepare
- loadAssets:加载模型
- prepareUniformBuffers
- createBuffer: GS
- updateUniformBuffers
- 这里设置两个视窗不用的MVP矩阵
- setupDescriptorSetLayout
- vkCreateDescriptorSetLayout
- vkCreatePipelineLayout
- preparePipelines
- vkCreateGraphicsPipelines: - setupDescriptorPool
- vkCreateDescriptorPool
- setupDescriptorSet
- vkAllocateDescriptorSets
- writeDescriptorSet
- vkUpdateDescriptorSets
- buildCommandBuffers
- loop
- vkBeginCommandBuffer
- vkCmdBeginRenderPass
- vkCmdSetViewport:这里set两个视图
- vkCmdSetScissor:两个裁剪视窗
- vkCmdSetLineWidth:设置线宽
- vkCmdBindDescriptorSets
- vkCmdBindPipeline
- draw
- drawUI
- vkCmdEndRenderPass
- vkEndCommandBuffer
- loop
render
- draw
- prepareFrame
- vkQueueSubmit
- submitFrame
shader
- VS: 正常
- GS: 正常渲染
- #extension GL_ARB_viewport_array : enable
- 开启 viewport array
- layout (triangles, invocations = 2) in;
- invocations = 2 两次调用
- gl_InvocationID
- 本次调用的ID
- main方法主要根据传入的MPV数组进行每个视窗的VS操作
- #extension GL_ARB_viewport_array : enable
- FS: 正常渲染
小结
本节主要讲多视口渲染。注意一下vulkan多视窗的配置。以及GS多次调用的配置。