OpenGL - 如何在不影响纹理的情况下跳转到单个TRIANGLE_STRIP?

时间:2012-08-08 10:19:15

标签: opengl geometry textures gaps-and-islands gl-triangle-strip

如果将相同的顶点A放入三角形条带中多次,则取另一个顶点B并将其多次放入三角形条带(数量取决于想要继续的三角形方向),然后一个有效地可以有两个单独的三角形条带,只用一次绘制调用(第一个包含顶点A之前的所有三角形,第二个包含顶点B之后的所有三角形)。

我的问题:

我担心,即使完整的三角形条带绘制调用将绘制几何上简单连接的网格,但在尝试纹理网格时,由于其间的跳跃,我会遇到问题。我还没到那里,所以我无法测试它。我的假设是否正确? 无论如何,我在三角形条带中跳跃是“绘图网格”行业中的有效技术吗?有没有办法对结果进行适当的纹理处理,或者是跳跃的等效更好的行为?

2 个答案:

答案 0 :(得分:3)

考虑一个由三角形组成的“网格”,该三角形细分为4个相似的三角形:

      2
       /\
      /  \
   1 /____\3
    /\    /\
   /  \  /  \
0 /____\/4___\5

假设CCW(glFrontFace)缠绕,三角形:{0,4,1}, {1,4,3}, {3,2,1}被编码为条带:{0,4,1,3,2}。诀窍是通过添加退化(零面积)三角形来添加三角形:{4,5,3},同时保持正确的缠绕。简而言之:

{0,4,1,3,2,2,3,3,5,4},添加零区域三角形:{3,2,2}, {2,2,3}, {3,3,5}

如果使用有效的网格striping,这会为较大的网格添加可忽略不计的额外几何体。

答案 1 :(得分:2)

光栅化器绘制三角形区域。具有两个相同点的“三角形”没有区域。因此,没有三角形区域可供渲染。

退化三角形(两个点相同的三角形的技术术语)是连接多个条带的常用技术。这通常通过添加更多索引在索引数组中完成;没有任何关于网格的实际拓扑需要改变。