我知道当调用glDrawElements时,它使用索引缓冲区来确定以什么顺序绘制哪些顶点。我的问题是如何将这些索引应用于纹理、法线和颜色属性。是否可以为每个顶点设置另一个索引数组,以用于纹理坐标和法线。还是必须创建法线坐标缓冲区和纹理坐标缓冲区,以便它们与正在绘制的顶点对齐?
是否可以为每个顶点设置另一个索引数组,以用于纹理坐标和法线。
不。有充分的理由:
还是必须创建法线坐标缓冲区和纹理坐标缓冲区,以便它们与正在绘制的顶点对齐?
不要尝试将顶点、法线、纹理坐标等视为分配给顶点(-位置)的不同矢量。顶点实际上是一个复合向量,它涵盖了所有这些属性。旧术语源于固定函数管道。现代 OpenGL 只知道通用顶点属性。
因此,每个索引都只引用一个特定的顶点向量。如果任何属性存在差异,则它是不同的顶点,因此应被赋予不同的索引。