oOo*_*oOo 2 javascript cube webgl
在本教程中,作者通过定义其6个面(6*4个顶点)然后告诉webgl关于每个面中的三角形来显示一个立方体.
这不是浪费吗?仅定义8个顶点并告诉webgl如何将它们连接起来获取三角形不是更好吗?多个顶点共享的颜色是否有问题?
让我的关注明显:如果作者用indices数组定义三角形,为什么他需要这么多顶点?他可以指定顶点数组中只有8个顶点的所有三角形.
这里的例子的作者.正如您所怀疑的那样,问题在于立方体的着色.
最容易理解这种代码的方法是将WebGL的"顶点"视为空间中的简单点,而不是属性束.特定顶点可能是束<(1,-1,1),红色>.就WebGL而言,位于空间中相同点但具有不同颜色(例如<(1,-1,1),绿色>)的不同顶点将完全是不同的顶点.
因此,当一个立方体在空间中的点的数学意义上只有8个顶点时,如果你想要每个面具有不同的颜色,那么每个点必须被三个不同的顶点占据,每个颜色一个 - 这使得8x3 = 24 WebGL意义上的顶点.
它在内存方面并不是非常有效,但与CPU功率相比,内存便宜,而更加规范化的表示需要高效处理.
希望澄清事情.