【发布时间】:2020-01-24 21:05:31
【问题描述】:
VkGraphicsPipelineCreateInfo 期望将VkRenderPass 分配给.renderPass 属性。我真的不明白为什么管道必须与渲染通道相结合。我的意思是,VkGraphicsPipelineCreateInfo 不会直接“对话”以呈现与传递相关的内容,例如 FBO 及其附件。我可能想使用具有多个渲染通道的相同管道,例如我想在不同场景中渲染相同的一组对象,那么我是否必须创建另一个具有完全相同设置的对象?
只是补充一点,使用.renderPass = nullptr 创建VkPipeline 失败并出现验证错误:
vkCreateGraphicsPipelines:必填参数 pCreateInfos[0].renderPass 指定为 VK_NULL_HANDLE.Invalid VkRenderPass 对象 0x0。 Vulkan 规范规定:renderPass 必须是 有效的 VkRenderPass 句柄 (https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VUID-VkGraphicsPipelineCreateInfo-renderPass-parameter)
【问题讨论】:
-
"我可能想使用具有多个渲染通道的相同管道,例如我想在不同场景中渲染同一组对象" 为什么会涉及使用不同的渲染通道?
-
在我的用例中,我可能有几个场景具有不同的渲染目标、渲染目标的不同尺寸以及启用/禁用 MSAA
-
除了样本计数之外,这些都不会影响使用的
VkRenderPass对象的结构。就多重采样而言......好吧,停止这样做。选择一个样本计数并坚持下去。 -
@NicolBolas “选择样本数量并坚持下去”是什么意思?
-
意思是选择一个样本数并坚持下去。没有一堆具有不同样本数的不同渲染目标。我可以看到需要对主渲染过程进行多重采样,而不需要对通过渲染到纹理处理的反射进行多重采样。但这只是两个样本计数,需要两个渲染通道和两个管道。
标签: vulkan