iphone opengl es glDrawElements问题

时间:2009-08-30 15:57:21

标签: iphone opengl-es

我对opengl很新,所以我想知道是否可以使用glDrawElements函数绘制两个单独的正方形(我实际上想要绘制两个以上,但是为了学习我只会创建两个)?

顶点数组如下所示:

CGFloat array [] =

{   0.2,0.4,   0.2,0.2,   0.4,0.2,   0.4,0.4,

0.8,1.0,   0.8,0.8,   1.0,0.8,   1.0,1.0, };

非常感谢您的关注!

2 个答案:

答案 0 :(得分:5)

您可以通过在顶点使用索引数组,或在正方形之间使用退化三角形来完成此操作。索引数组将允许您指定哪个顶点连接到哪个顶点,并且可以轻松创建许多断开连接的对象。例如,您可以查看我的应用程序Molecules的源代码,其中我在同一个索引数组(实际上是索引顶点缓冲区对象)中渲染许多断开连接的原子和键。 iPhone图形硬件为optimized for strip-ordered indexed triangles

正如大卫所指出的那样,如果你仍然希望为正方形使用三角形条带,你可以简单地通过在两个正方形之间创建一个额外的简并三角形来连接它们,这两个正方形的边由相同的顶点重复两次,第三个顶点是第二个方格的起点。如果你把它画出来,它看起来就像你的两个正方形之间的一条线。现代GPU在去除这些退化三角形方面非常有效。

答案 1 :(得分:0)

因为你正在使用三角形条带,所以你不能以明显的方式做到这一点,因为你会在两个正方形之间画出一些额外的三角形。

以下是一些关于如何通过使用额外的不可见三角形来解决这个问题的文章:

http://www.gamedev.net/reference/articles/article1871.asp http://en.wikipedia.org/wiki/Triangle_strip

如果你没有绘制大量的方块,你可能只想坚持使用单独的短glDrawElements次调用,并避免考虑所有这些。