使用VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP绘制矩形时gl_VertexIndex的取值疑问
VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP下gl_VertexIndex的工作逻辑 gl_VertexIndex是顶点着色器的输入变量,它的取值完全对应你提交的顶点缓冲区中原始顶点的索引,和图元拓扑的装配规则无关。VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP是GPU在拓扑装配阶段的处理逻辑:用连续的顶点生成三角形,第n个三角形由顶点n-2、n-1、n组成(同时自动调整缠绕顺序),但这一过程是GPU内部隐式完成的,不会修改gl_VertexIndex的取值。
针对你给出的例子:
若你提交的4个顶点顺序为「右下(索引0)、左上(索引1)、右下(索引2)、右上(索引3)」,绘制三角带时GPU会生成两个三角形:
- 第一个三角形:顶点0、1、2
- 第二个三角形:顶点1、2、3
但在顶点着色器中,每个顶点被处理时,gl_VertexIndex的取值依次是0;1;2;3——既不是你猜测的0;1;2;1;2;3(这是三角带内部组合三角形的索引逻辑,不会暴露给着色器),也不会是0;1;2;3;4;5;6(这种情况需要提交7个顶点,和画矩形的场景无关)。
内容的提问来源于stack exchange,提问作者julien
相关产品推荐
相关产品推荐

