【问题标题】:How many vertices does a triangle fan use opengl三角扇用opengl有多少个顶点
【发布时间】:2013-11-29 02:41:50
【问题描述】:

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

【问题讨论】:

标签: c++ opengl


【解决方案1】:

这可以通过比较三角带三角扇来轻松解释。

三角带

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

三角带示例

三角扇

另一方面,我们有一个三角形扇,这也是一组相连的三角形。尽管所有这些三角形都有一个共同的顶点,即中心顶点。 (第一个顶点总是中心)

话虽如此,我们可以使用上面相同的图像并更改顶点的顺序。完成后,三角形风扇将看起来像这样。 (其中 A, 是第一个和中心顶点)

三角扇示例

在上图中,三角扇只能在彩色区域起作用,因为顶点需要按照三角扇排列。

【讨论】:

  • 更好的解释是strip总是使用一个三角形的最后2个顶点作为下一个三角形的前2个顶点。所以在条形图中,想象做前 3 个三角形,然后想要添加一个三角形 C-E-G 而不是 D-E-G。不能这样做,因为 D-E 自动是三角形 4 的开始。结果可以用fan 完成,因为有一个公共顶点。结果图:Wiki- Triangle fan
【解决方案2】:

从视觉上看,三角扇是这样工作的:

每个三角形共享中心顶点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

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

      

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

【讨论】:

    【解决方案3】:

    看这里:GL_TRIANGLE FAN Explanation

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-04
        • 1970-01-01
        • 1970-01-01
        • 2021-06-03
        • 1970-01-01
        • 2023-03-22
        • 2016-10-14
        • 1970-01-01
        相关资源
        最近更新 更多