我正在学习openGL,我遇到过使用顶点缓冲对象的三角扇。如果给定要渲染的顶点数组,openGL如何确定必须使用多少个顶点来构造三角形扇形。似乎可以使用任意数量的顶点。
答案 0 :(得分:11)
这可以通过将 Triangle Strips 与 Triangle Fans 进行比较来轻松解释。
正如您可能知道的,三角形条带是一组共享顶点的连接三角形,这样可以更有效地使用内存。 (我们节省了内存,因为我们不存储所有重复的顶点)
另一方面,我们有一个三角扇,这也是一组连接的三角形。虽然所有这些三角形都有一个共同的顶点,即中心顶点。 (第一个顶点总是中心)
据说我们可以拍摄上面相同的图像并改变顶点的顺序。完成后,Triangle Fan会是这样的。 (其中A,是第一个和中心顶点)
在上面的图像中,三角形扇形只能在彩色区域中工作,因为顶点需要根据三角扇进行排列。
答案 1 :(得分: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
另一种思考方式是每个三角形共享一个从中心顶点到先前三角形辐射的边缘;字面意思是折叠纸扇。
答案 2 :(得分:3)
请看这里:GL_TRIANGLE FAN Explanation
您为openGL提供的顶点越多,获得的三角形就越多。第一个顶点对所有三角形都是通用的。第一个三角形由顶点1,2和3组成。第二个三角形由1,3和4组成。依此类推。 对于n个顶点,你得到n - 2个三角形。
答案 3 :(得分:2)
由用于执行渲染的命令指定。例如,drawArrays()
和drawElements()
都有一个count
参数,用于指定要使用的顶点数。