openGL中带三角形条带和向量法线的立方体

openGL中带三角形条带和向量法线的立方体,opengl,vertices,Opengl,Vertices,我正在尝试使用一系列顶点创建一个立方体,如已尝试和已讨论过的顶点。我想要的答案应该是这样的: 1, 1, -1 -1, -1, -1, 1, 1, 1 。。。等等我希望将其减少到最少13个顶点(6边立方体=12个三角形) 这可能吗?如果我理解正确的话,我可以把它降到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
-1, -1, -1,
 1,  1,  1
。。。等等我希望将其减少到最少13个顶点(6边立方体=12个三角形)


这可能吗?

如果我理解正确的话,我可以把它降到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

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


(无论如何,如果你不关心法线或任何东西:就绝对效率而言,你能做的最好的事情就是只指定8个顶点并使用索引数组。这允许使用顶点缓存,因此你的顶点着色器可能只在每个顶点上运行一次,即使它被多个面使用)。

它需要14个顶点,作为前3个三角形,然后每个额外的三角形使用一个额外的顶点(2+num_三角形)。我就是这样管理的:

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])

如前所述,这会导致法线出现问题,因此我想我将以非条带格式重写它。

这会获得正确的效果,但我认为应该能够使用较少的顶点来完成。你认为有可能吗?否则,它看起来确实像是一些三角形重叠,从而产生了一些瑕疵:(当我使用CullMode时立方体是反转的。CullCountrockWiseFace,如何将立方体反转到正确的方向?使用CullClockwiseFace,或通过更改顶点顺序来更改缠绕顺序(可能只是反转列表)请注意,OpenGL默认正面为逆时针方向,因此我选择逆时针方向绘制。