三角形风扇使用opengl有多少个顶点

Pop*_*lop 5 c++ opengl

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

Val*_*tin 11

通过比较Triangle StripsTriangle Fans可以很容易地解释这一点.

三角带

您可能知道,Triangle Strip是一组共享顶点的连接三角形,这样可以更有效地使用内存.(我们节省了内存,因为我们不存储所有重复的顶点)

三角带的示例

在此输入图像描述

三角扇

另一方面,我们有一个三角扇,这也是一组连接的三角形.虽然所有这些三角形都有一个共同的顶点,即中心顶点.(第一个顶点始终是中心)

据说我们可以拍摄上面相同的图像并改变顶点的顺序.完成后,Triangle Fan会是这样的.(其中A,是第一个和中心顶点)

三角扇的示例

在此输入图像描述

在上面的图像中,三角扇只能在彩色区域中工作,因为顶点需要根据三角扇来排列.


And*_*man 5

从视觉上看,这就是三角形风扇的工作原理:

每个三角形共享中心顶点A,并重新使用最后一个被寻址的顶点。因此,定义之后ABC的每个三角形仅需要 1 个点(例如DEF)。

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
Run Code Online (Sandbox Code Playgroud)

另一种思考方式是,每个三角形与前一个三角形共享一条从中心顶点辐射出来的边;字面上就像折纸扇一样。

      纸扇

您需要 N+2 个顶点,其中 N 是扇形中三角形的数量。


use*_*290 3

看这里:GL_TRIANGLE FAN 说明

给 openGL 的顶点越多,得到的三角形就越多。第一个顶点对于所有三角形都是公共的。第一个三角形由顶点 1、2 和 3 组成。第二个三角形由顶点 1、3 和 4 组成。依此类推。您将得到 n - 2 个具有 n 个顶点的三角形。