【问题标题】:Clear all Layers with vkCmdBeginRenderPass (Vulkan, Layered rendering)使用 vkCmdBeginRenderPass 清除所有图层(Vulkan,分层渲染)
【发布时间】:2017-10-25 15:02:29
【问题描述】:

我有一个带有一个颜色附件的帧缓冲区,它是一个有 6 层的立方体贴图。我尝试使用几何着色器的分层渲染。将一个简单的三角形渲染到所有图层都可以。但我不确定如何使用vkCmdBeginRenderPass 清除所有图层。

vkCmdBeginRenderPass 支持pClearValuesclearValueCount 但我不能指定层数。所以只有第一层被清除。将 clearValueCount 设置为 6 并给出 6 个明确的值也无济于事。

我看到vkCmdClearAttachments 似乎允许指定层。

vkCmdClearAttachments 是唯一的方法,还是我错过了什么? vkCmdBeginRenderPass虽然渲染似乎渲染到所有层,但是否有可能只清除第一层?

【问题讨论】:

    标签: graphics vulkan


    【解决方案1】:

    clearValueCount 是指要清除的附件数量(关于它们的 clearOp),而不是帧缓冲区的层数。

    帧缓冲区的渲染通道开始时要清除的层数(如果 clearOp 设置为清除)是通过其 imageView 的子资源的 layerCount 指定的。

    【讨论】:

    • imageViews layerCount 实际上是正确的。但是 VkFramebufferCreateInfo.layers 是错误的(:。有趣的是,英特尔驱动程序仍然对图层进行光栅化,但没有清除图层。(这让我感到困惑)Nvidia 驱动程序正确地既没有渲染也没有清除。我想这就是你从低级别得到的API ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    相关资源
    最近更新 更多