指定管道输入程序集状态
译者注:示例代码点击此处
制几何图形(3D模型)涉及指定从提供的顶点形成的图元的类型。这是通过输入程序集状态完成的。
怎么做...
1.创建名为input_assembly_state_create_info的VkPipelineInputAssemblyStateCreateInfo类型变量。 使用以下值初始化其成员:
·sType为VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO
·pNext为nullptr
·flags为0
·topology为从顶点形成的所选基元类型(点列表(point list),线列表(line list),线条(line strip),三角形列表(triangle list),三角形条带(triangle strip),三角形扇形(triangle fan),具有相邻性的线条列表(line list with adjacency),具有相邻性的线条条带(line strip with adjacency),具有相邻性的三角形列表(triangle list with adjacency),具有相邻性的三角形条带(triangle strip with adjacency),或者patch lis。
2.对于primitiveRestartEnable成员,在绘制使用顶点索引的命令的情况下,指定特殊索引值是否应重新启动基元(VK_TRUE,不能用于列表基元)或是否应禁用基元重启(VK_FALSE)。
这个怎么运作...
通过输入装配状态,我们定义从绘制的顶点形成什么类型的多边形。 最常用的基元是三角形条或列表(triangle strips or lists),但使用的拓扑结构取决于我们想要实现的结果。
提示:创建图形管道需要输入装配状态。
在选择如何组装顶点时,我们只需要记住一些要求:
·我们不能使用带有基元重启选项的列表(list)基元。
·具有邻接(adjacency)的基元只能与几何着色器一起使用。 为使其正常工作,必须在创建逻辑设备期间启用geometryShader功能。
·当我们想要使用曲面细分着色器时,我们只能使用patch基元。 此外,我们还需要记住,在创建逻辑设备期间必须启用tessellationShader功能。
以下是初始化VkPipelineInputAssemblyStateCreateInfo类型的变量的源代码示例:
input_assembly_state_create_info = {
VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
nullptr,
0,
topology,
primitive_restart_enable
};