2017-02-26 39 views
1

在vulkan中有一个管道创建所需的结构,名为VkPipelineRasterizationStateCreateInfo。在这个结构中有一个名为rasterizerDiscardEnable的成员。如果此成员设置为VK_TRUE,则在光栅化步骤之前放弃所有基元。这将禁用对帧缓冲区的任何输出。什么时候关闭栅格化步骤有意义?

我不能想到这可能会有任何意义的情况。在哪些情况下可能有用?

+1

大概是为了允许扩展来做类似于opengl的变换反馈。 –

回答

3

这将是任何情况下,你只是执行渲染管道的顶点处理阶段的副作用。例如,您可以使用GS将数据提供给缓冲区,稍后将渲染缓冲区。

现在很多情况下,您可以使用计算着色器来做类似的事情。但是你不能使用CS来高效地实现细分;这最好由硬件tessellator完成。所以如果你想捕获由镶嵌细分产生的数据(大概是因为你会多次渲染),你必须使用渲染过程。

+0

用一个真实世界的例子来说明这点:点曲面细分体素化(www.cs.columbia.edu/~fyun/gi12/paper100.pdf)是我最近实现的,我使用图形传递到曲面细分器然后使用几何着色器写出3D缓冲区。从那里你移动到计算着色器来实际创建体素。 –