2012-12-24 174 views
1

我有一个顶点缓冲区的点是要成为每个圆(三角形风扇)的中心。我该如何拿这些,让我们说围绕这一点画10个三角形,然后移动到下一个点上?我一直无法找到任何示例代码。OpenGL三角形风扇

回答

6

如果您使用旧管道,则必须glEnd(),然后glBegin()

如果您正在发出绘图调用,则可以使用原始重新启动功能,其中可以将一个索引指定为开始一个新的基元。所有信贷datenwolf指出,我已经清楚从我的记忆中删除它。

但是我个人认为只要使用索引的三角形就可以达到更好的效果,然后您可以随时重新使用任何想要的顶点。它更简单,驱动程序/硬件会感谢你。

(换句话说,不要使用GL_TRIANGLE_FAN - 只是使用GL_TRIANGLES。这是所有的硬件绘制)。

+0

原始重启指数已经存在很久了。由于cristmas不会降低,但你的答案是不准确的。 – datenwolf

+0

@datenwolf你说得对,而且我已经用完整的功劳纠正了我的答案。我也提高了你的答案。圣诞节快乐! – JasonD

2

您可以使用原始重新启动索引来执行此操作。您可以设置一个特殊索引值(通常是用于索引的类型可表示的最大数字)。然后,无论索引缓冲区中遇到此索引,都会启动一个新的基元,就好像多次调用glDraw ...一样。

http://www.opengl.org/sdk/docs/man3/xhtml/glPrimitiveRestartIndex.xml

+0

那真是令人尴尬。我只是一直想着可怜的车手不得不重新格式化硬件的所有数据。 – JasonD