指定管线细分状态
译者注:示例代码点击此处
曲面细分着色器是可在图形管道中启用的可选附加可编程着色器阶段之一。 但是当我们想要激活它们时,还需要准备管线细分状态。
怎么做...
1.创建名为tessellation_state_create_info的VkPipelineTessellationStateCreateInfo类型变量。 使用以下命令初始化其成员:
·sType为VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO
·pNext为nullptr
·flags为0
·patchControlPoints为形成patch(图像块)的控制点(顶点)的数量
这个怎么运作...
要在我们的应用程序中使用曲面细分着色器,我们需要在创建逻辑设备期间启用tessellationShader功能,需要为曲面细分控制和评估着色器编写源代码,需要为它们创建一个着色器模块(或两个), 还需要准备一个VkPipelineTessellationStateCreateInfo类型的变量表示的管线细分状态。
提示:曲面细分状态是可选的 - 我们只有想要在图形管线中使用曲面细分着色器时才需要指定它。
在曲面细分状态中,我们仅提供有关形成patch(图像块)的控制点(顶点)的数量的信息。 规范声明patch最多可包含32个顶点。
提示:patch中控制点(顶点)的最大支持数量必须至少为32。
patch只是点(顶点)的集合,这些点(顶点)被细分阶段用于生成典型的点、线或多边形(如三角形)。它可以和通常的多边形完全相同。作为一个例子,我们可以将形成三角形的顶点作为patches来绘制。这样的操作结果是正确的。但是对于patche,我们可以使用任何其他不寻常的顺序和顶点数量。这使我们在控制曲面细分引擎创建新顶点的方式方面具有更大的灵活性。
填充VkPipelineTessellationStateCreateInfo类型的变量,我们可以准备以下代码:
tessellation_state_create_info = {
VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO,
nullptr,
0,
patch_control_points_count
};