glVertexAttribPointer()
的第一个参数是表示顶点属性所在位置的索引,Opengl 提供至少 16 个插槽。
我希望所有 16 个代表不同的顶点属性(位置 = 0、uvs = 1、颜色 = 3、权重 = 8 等),并且这些属性在每个顶点类型中都是恒定的,即使顶点不使用该属性。
我的问题是,如果索引对于给定的顶点不连续,这有什么关系吗?例如,这会不会是低效的:
enum Attrib : GLuint {
aPos = 0,
aUv1 = 1,
aUv2 = 2,
aColor1 = 3,
aColor2 = 4,
aNormal = 5,
aTangent = 6,
aBitangent = 7,
aBoneIndex = 8,
aBoneWeight = 9,
aAttrib1 = 10,
aAttrib2 = 11,
aAttrib3 = 12,
aAttrib4 = 13,
aAttrib5 = 14,
aAttrib6 = 15,
a__count = 16
};
glVertexAttribPointer(aPos, ...);
glVertexAttribPointer(aUv1, ...);
glVertexAttribPointer(aAttrib1, ...);