在glDrawElements / glDrawArrays中绘制多个OpenGL原始形状

时间:2013-07-06 07:23:46

标签: c++ opengl

是否可以绘制多个OpenGL原始形状并调用glDrawElements或glDrawArrays?

例如:

在顶点[0到N ...]中使用GL_TRIANGLE_STRIP而在顶点[N到M]中使用GL_QUADS?

或者还有其他方法可以解决这类问题吗?

因为我想限制对glDrawers的调用。

如何使用GL_TRIANGLE *?

实现这样的目标

enter image description here

假设是彩色矩形。

1 个答案:

答案 0 :(得分:1)

你可以得到的最接近的是将glDrawElements与GL_TRIANGLES一起使用,根据需要重复使用相应形状的点(使用它来将开始......结束序列转换为现代GL,并减少绘制调用)。

例如,如果要绘制GL_QUAD,请将角坐标存储在顶点数组中(就像对glDrawArrays()一样,然后将0,1,2,0,2,3存储在elements数组中用两个三角形构建四边形。

见第134行。这个例子(它的Java源码,但它应该是直接在C ++中构建类似的东西): https://code.google.com/p/playn-gl11-emulation/source/browse/src/main/java/playn/gl11emulation/MeshBuilder.java