如何在 Vulkan 中创建渐变背景?
How do I create a Gradient Background in Vulkan?
我一直在修补 Vulkan 三角形演示。我正在尝试获得渐变背景而不是纯色。在 OpenGL 中,这很容易通过渲染四边形并保留背景像素来完成。当我在 Vulkan 中执行此操作时,四边形会覆盖三角形。任何人都知道如何做到这一点?我尝试了单独的渲染通道,但不知道如何从第一个渲染通道(背景)中保留像素任何帮助或示例代码将不胜感激。谢谢,
托尼
如果您只想让全屏四边形显示渐变,则无需单独的渲染通道。实际上它与您在 OpenGL 中所做的几乎相同。使用渐变渲染覆盖整个屏幕的三角形或四边形,然后绘制三角形。如果你的四边形隐藏了三角形,即使三角形离观察者更近(在 z 轴上),你可能禁用了深度测试。
不需要单独的通道,您可以在 hello 三角形之前渲染渐变四边形。
如果你有一个单独的着色器,那么你可以绑定它。如果数据在单独的 VBO 中,则根据需要绑定它。
好的,深度缓冲区清除工作正常。这是代码片段。将此命令放在背景渲染和三角形之间。
VkClearDepthStencilValue val;
val.depth = 1.0f;
val.stencil = 0;
VkImageSubresourceRange range;
range.layerCount = 1;
range.levelCount = 1;
range.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT;
range.baseArrayLayer = 0;
range.baseMipLevel = 0;
vkCmdClearDepthStencilImage(m_drawCmdBuffers[i], m_depthStencil.image, VK_IMAGE_LAYOUT_GENERAL, &val, 1, &range);
我一直在修补 Vulkan 三角形演示。我正在尝试获得渐变背景而不是纯色。在 OpenGL 中,这很容易通过渲染四边形并保留背景像素来完成。当我在 Vulkan 中执行此操作时,四边形会覆盖三角形。任何人都知道如何做到这一点?我尝试了单独的渲染通道,但不知道如何从第一个渲染通道(背景)中保留像素任何帮助或示例代码将不胜感激。谢谢,
托尼
如果您只想让全屏四边形显示渐变,则无需单独的渲染通道。实际上它与您在 OpenGL 中所做的几乎相同。使用渐变渲染覆盖整个屏幕的三角形或四边形,然后绘制三角形。如果你的四边形隐藏了三角形,即使三角形离观察者更近(在 z 轴上),你可能禁用了深度测试。
不需要单独的通道,您可以在 hello 三角形之前渲染渐变四边形。
如果你有一个单独的着色器,那么你可以绑定它。如果数据在单独的 VBO 中,则根据需要绑定它。
好的,深度缓冲区清除工作正常。这是代码片段。将此命令放在背景渲染和三角形之间。
VkClearDepthStencilValue val;
val.depth = 1.0f;
val.stencil = 0;
VkImageSubresourceRange range;
range.layerCount = 1;
range.levelCount = 1;
range.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT;
range.baseArrayLayer = 0;
range.baseMipLevel = 0;
vkCmdClearDepthStencilImage(m_drawCmdBuffers[i], m_depthStencil.image, VK_IMAGE_LAYOUT_GENERAL, &val, 1, &range);