我尝试使用细分和原始重启索引绘制多维数据集。使用原始重启索引,我可以将索引计数减少到17,并使用以下内容绘制多维数据集:
glEnable(GL_PRIMITIVE_RESTART);
glPrimitiveRestartIndex(0xFFFF);
glDrawElements(GL_TRIANGLE_STRIP, 17, GL_UNSIGNED_SHORT, NULL);
所以,在这种情况下,我得到了奇怪的结果,但绘制带有36个索引和GL_TRIANGLES
类型的多维数据集效果很好。
如何在glPrimitiveRestartIndex()
使用镶嵌细分?
答案 0 :(得分:0)
曲面细分只允许一种原始类型:GL_PATCHES
。因此,您无法对GL_TRIANGLE_STRIP
进行细分。渲染时应该会出现GL_INVALID_OPERATION
错误。
每个N
个顶点都将被视为要进行细分的单个补丁,其中N
由TCS或glPatchParameteri(GL_PATCH_VERTICES, N);
调用定义。这很像GL_TRIANGLES
:每3个顶点是一个三角形。每个补丁与其他所有路径完全分开。因此,如果N
为4,那么绘制8个顶点将生成2个补丁。
这意味着将primitive restart用于曲面细分确实没有用处。