【发布时间】:2010-06-22 20:50:24
【问题描述】:
如果您正在计算多边形的法线以在 WebGL 上渲染它,您是为索引数组中的每个索引还是为顶点数组中的每个顶点使用法线?
【问题讨论】:
如果您正在计算多边形的法线以在 WebGL 上渲染它,您是为索引数组中的每个索引还是为顶点数组中的每个顶点使用法线?
【问题讨论】:
在notes here 中,用户正在为每个顶点计算它们。
【讨论】:
每个顶点。 WebGL 意义上的顶点(与 OpenGL ES 和其他前辈相同)并不是真正的空间点,而是属性的组合。其中之一几乎总是位置(尽管在特殊情况下您可能没有),而其他通常是法线向量、颜色、纹理坐标等。
相比之下,索引数组是顶点属性数组的偏移量。因此,当您在索引数组中指定索引(例如)1 时,它是“由位置缓冲区中的第一个位置、法线缓冲区中的第一个法线、颜色缓冲区中的第一个颜色和第一个纹理坐标缓冲区中的纹理坐标”。
当我了解到这一点时,最违反直觉的事情是将顶点与它们碰巧占据的位置分开。没有理由两个顶点不能有相同的位置。
【讨论】: