我正在尝试使用曲面 segmentation 和原始重新启动索引来绘制立方体。通过使用原始重启索引,我可以将索引计数减少到 17,并使用如下所示绘制立方体:
glEnable(GL_PRIMITIVE_RESTART);
glPrimitiveRestartIndex(0xFFFF);
glDrawElements(GL_TRIANGLE_STRIP, 17, GL_UNSIGNED_SHORT, NULL);
所以,在这种情况下,我得到了奇怪的结果,但是用 36 个索引和 GL_TRIANGLES
绘制立方体类型工作得很好。
如何使用 glPrimitiveRestartIndex()
进行 segmentation ?
最佳答案
只有一种基本类型允许进行曲面 segmentation : GL_PATCHES
。所以你不能 segmentation GL_TRIANGLE_STRIP
s。您应该已经获得 GL_INVALID_OPERATION
渲染时出错。
每个N
顶点将被视为要进行 segmentation 的单个面片,其中 N
由 TCS 或调用 glPatchParameteri(GL_PATCH_VERTICES, N);
定义。这很像 GL_TRIANGLES
:每3个顶点就是一个三角形。每个补丁都与其他路径完全分开。所以如果 N
是4,那么绘制8个顶点将生成2个面片。
这意味着使用primitive restart确实没有任何目的。与镶嵌。
关于c - 使用 glPrimitiveRestartIndex() 进行曲面 segmentation ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44875807/