2013-11-28 73 views
5

我正在学习openGL,并且我遇到了使用顶点缓冲对象的三角形风扇。如果给定要渲染的顶点数组,OpenGL如何确定必须使用多少顶点来构造三角形扇形。似乎可以使用任意数量的顶点。三角形风扇使用多少个顶点opengl

+0

http://stackoverflow.com/questions/8043923/gl-triangle-fan-explanation –

回答

3

看吧:GL_TRIANGLE FAN Explanation

顶点越多,你给openGL的,更多的三角形你。所有三角形的第一个顶点将是共同的。第一个三角形由顶点1,2和3组成。第二个三角形由1,3和4组成。依此类推。 你得到n - 2个三角形的n个顶点。

2

这是您用来执行渲染的命令指定的。例如,drawArrays()drawElements()都有一个count参数,它指定要使用的顶点数。

12

这可以通过比较三角形条三角形风扇很容易解释。

三角地带

正如你可能知道,一个三角形地带是一组连接的三角形,其份额顶点,这使得更多的内存使用效率。 (我们节省内存,因为我们不存储所有复制的顶点)的一个三角形地带

enter image description here

三角形扇

在另一方面,我们有一个三角形扇

为例,这是也是一组相连的三角形。尽管所有这些三角形都有一个共同的顶点,也就是中心顶点。 (第一个顶点始终是中心)

就是说我们可以采用上面的相同图像并更改顶点的顺序。当完成后,三角扇将看起来像这样。 (其中A,是在第一和中央顶点)的三角形扇

enter image description here

在三角形扇以上时,图像仅在着色区域工作

实施例,由于顶点如何需要按照三角扇排列。

+0

更好的解释是'strip'总是使用一个三角形的**最后2个顶点**作为前2个顶点下一个三角形。因此,在条形图中,想象做前3个三角形,然后想要添加三角形C-E-G而不是D-E-G。不能这样做,因为D-E自动成为三角形4的开始。结果可以用'fan'来完成,因为有一个共同的顶点。结果图:[Wiki- Triangle fan](https://en.wikipedia.org/wiki/Triangle_fan) – ToolmakerSteve

4

从外观上看,这是一个三角形风扇的工作原理:

每个三角形共享中心顶点A,并重新使用最后一个顶点处理。因此,在定义ABC之后,每个以下三角形仅需要1个点(例如,D,E,F)。

Indices:  A,B,C,D,E,F  [Count: 6] 
Triangles: (A,B,C) 
      (A) (C,D) 
      (A) (D,E) 
      (A)  (E,F) [N=4] --> 4+2 = 6 

另一种考虑这种方式的方法是每个三角形共享从中心顶点与前三角形辐射的边缘;字面上像一个折叠纸扇。

            Paper fan

你需要N + 2个顶点,其中N是你的影迷三角形的数量。