在openGL中使用三角形条和矢量法线的立方体

时间:2010-11-11 18:39:17

标签: opengl vertices

我正在尝试使用一系列顶点创建一个多维数据集,例如尝试in this example (which I believe is wrong),并且还讨论了on this forum。我正在寻找的答案应该是这样的:

 1,  1, -1
-1, -1, -1,
 1,  1,  1

......等等。我希望将它降低到最少13个顶点(6个方块= 12个三角形)。

这可能吗?

3 个答案:

答案 0 :(得分:4)

最小化三角形/四边形条带的顶点几乎没有什么好处。让每个面都有自己的顶点(对于像立方体一样锋利的网格)的一个好处是能够指定每个顶点不同的法线,如果你想要的话,这可能对你很重要具有镜面反射的正确的每像素照明。

(无论如何,如果你不关心法线或其他东西:在效率方面你能做的最好就是只指定8个顶点并使用索引数组。这样就可以使用顶点缓存使你的顶点着色器每个顶点可能只运行一次,即使它被多个面使用了。)

答案 1 :(得分:3)

如果我理解正确的话,我可以低至17

 1: -1,  1,  1
 2:  1,  1,  1
 3: -1, -1,  1
 4:  1, -1,  1
 5: -1, -1, -1
 6:  1, -1, -1
 7: -1,  1, -1
 8:  1,  1, -1
 9: -1,  1,  1
10:  1,  1,  1
11:  1, -1,  1
12:  1,  1, -1
13:  1, -1, -1
14: -1, -1, -1
15: -1,  1, -1
16: -1, -1,  1
17: -1,  1,  1

答案 2 :(得分:3)

它需要14个顶点,因为前3个构成一个三角形,然后每个额外的三角形使用一个额外的顶点(2 + num_triangles)。这就是我管理它的方式:

v = ((-w, -h,  d),  # front-bottom-left     0
     ( w, -h,  d),  # front-bottom-right    1
     (-w,  h,  d),  # front-top-left        2
     ( w,  h,  d),  # front-top-right       3
     (-w, -h, -d),  # back-bottom-left      4
     ( w, -h, -d),  # back-bottom-right     5
     (-w,  h, -d),  # back-top-left         6
     ( w,  h, -d))  # back-top-right        7


strip_vertices = (v[7] + v[6] + v[3] + v[2] + v[0] + v[6] + v[4] + 
                  v[7] + v[5] + v[3] + v[1] + v[0] + v[5] + v[4])

如上所述,这会导致法线问题,所以我想我会以非条带格式重写它。