繁体   English   中英

iPhone opengl es glDrawElements问题

[英]iphone opengl es glDrawElements issue

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

顶点数组如下所示:

CGFloat数组[] =

{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,};

非常感谢您的关注!

您可以通过在顶点上使用索引数组或在正方形之间使用退化三角形来实现此目的。 索引数组将使您可以指定将什么顶点连接到什么顶点,并使创建许多断开连接的对象变得容易。 例如,您可以查看我的应用程序Molecules的源代码,在这里我渲染了许多断开的原子并将所有键绑定在同一索引数组(实际上是索引顶点缓冲区对象)内。 iPhone图形硬件针对条形有序索引三角形进行了优化

正如David指出的那样,如果您仍然希望对正方形使用三角带,则可以通过在两个正方形之间创建一个额外的退化三角形来简化它们的连接,该三角形的边由相同的顶点重复两次,第三个顶点为您第二个方块的起点。 如果要绘制出来,它看起来就像是两个正方形之间的一条线。 现代GPU在去除这些退化三角形方面非常有效。

因为您使用的是三角形条纹,所以不能仅仅以明显的方式进行操作,因为您将在两个正方形之间绘制一些额外的三角形。

以下是几篇有关如何通过使用额外的不可见三角形来解决此问题的文章:

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

如果您不绘制大量正方形,则可能只想坚持使用单独的简短glDrawElements调用,而不必考虑所有这些。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM