输入装配

VkPipelineInputAssemblyStateCreateInfo结构体用于描述两个信息:顶点数据定义了哪种类型的几何图元,以及是否启用几何图元重启。前一个信息通过topology成员变量指定,它的值可以是下面这些:

  • VK_PRIMITIVE_TOPOLOGY_POINT_LIST:点图元

  • VK_PRIMITIVE_TOPOLOGY_LINE_LIST:每两个顶点构成一个线段图元

  • VK_PRIMITIVE_TOPOLOGY_LINE_STRIP:每两个顶点构成一个线段图元,除第一个线段图元外,每个线段图元使用上一个线段图元的一个顶点

  • VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST:每三个顶点构成一个三角形图元

  • VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP:每个三角形的第二个和第三个顶点被下一个三角形作为第一和第二个顶点使用

一般而言,我们会通过索引缓冲来更好地复用顶点缓冲中的顶点数据。如果将primitiveRestartEnable成员变量的值设置为VK_TRUE,那么如果使用带有_STRIP结尾的图元类型,可以通过一个特殊索引值0xFFFF或0xFFFFFFFF达到重启图元的目的(从特殊索引值之后的索引重置为图元的第一个顶点)。

我们的目的是绘制三角形,可以按照下面代码填写结构体:

VkPipelineInputAssemblyStateCreateInfo inputAssembly = {};
inputAssembly.sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO;
inputAssembly.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST;
inputAssembly.primitiveRestartEnable = VK_FALSE;