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默认正面为逆时针方向,因此我选择逆时针方向绘制。