0

我想在 OpenGL ES 2.0 中解析模型并渲染 4 顶点多边形(矩形),而不是使用两个三角形,我想为每个四边形/矩形使用一个三角形条。

问题是我的矩形没有在整个模型中连接。如果我有三个四边形(12 个顶点),我想像这样绘制它们(numOfQuadFaces = 3):

glDrawArrays(GL_TRIANGLE_STRIP, 0, numOfQuadFaces*4);

对顶点数组进行排序,以便每四个顶点开始一个新的四边形。但是当然 OpenGL 将其解释为对于数组中第三个顶点之外的每个新顶点都开始一个新三角形。我可以在某个地方指定我想要长度为 4 的单个三角形条/四边形吗?- 这样我就可以画出类似的东西(如果当然只在 glDrawArrays- 调用):

glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glDrawArrays(GL_TRIANGLE_STRIP, 4, 4);
glDrawArrays(GL_TRIANGLE_STRIP, 8, 4);
4

2 回答 2

3

您最好的选择是将四边形转换为三角形。在普通 OpenGL 中,如果您使用索引三角形条带,glPrimitiveRestartIndex它基本上指定了一个索引,在发送时重新启动条带,但这在 OpenGL ES 2.0 中不可用,所以我想这没有帮助。

另一种选择是将“条带”与退化三角形连接,但这将占用与将四边形转换为三角形(两个额外顶点)一样多的内存。

于 2012-04-18T14:02:00.827 回答
0

您可以通过插入额外的点来渲染退化的三角形,从而产生线形三角形,图形驱动程序将优化这些并渲染断开的三角形带,可以是四边形(两个三角形)

于 2012-08-05T12:49:45.417 回答