public static void glVertexAttribPointer (int index, int size, int type, boolean normalized, int stride, Buffer ptr )
参数含义:
index: 指定要修改的顶点着色器中顶点变量id;
size: 指定每个顶点属性的组件数量。必须为1、2、3或者4。如position是由3个(x,y,z)组成,而颜色是4个(r,g,b,a));
type: 指定数组中每个组件的数据类型。可用的符号常量有GL_BYTE, GL_UNSIGNED_BYTE, GL_SHORT,GL_UNSIGNED_SHORT, GL_FIXED, 和 GL_FLOAT,初始值为GL_FLOAT;
normalized 指定当被访问时,固定点数据值是否应该被归一化(GL_TRUE)或者直接转换为固定点值(GL_FALSE);
stride: 指定连续顶点属性之间的偏移量。如果为0,那么顶点属性会被理解为:它们是紧密排列在一起的。初始值为0。如果normalized被设置为GL_TRUE,意味着整数型的值会被映射至区间-1,1,或者区间[0,1](无符号整数),反之,这些值会被直接转换为浮点值而不进行归一化处理;
ptr: 顶点的缓冲数据。
按照我们前面介绍的3D空间投影到2D屏幕,需要经过:模型矩阵 -> 视图矩阵 -> 投影矩阵,因此从逻辑上来说运算顺序应该是:
Model Matrix * View Matrix * Projection Matrix
但是在 OpenGL 的运算中,需要反过来:
Project Matrix * View Matrix * Model Matrix