1、启用数组

1.1中是glEnableClientState(GL_VERTEX_ARRAY);和glDisableClientState(GL_VERTEX_ARRAY);

glEnableVertexAttribArray(*);和glDisableVertexAttribArray(*);

2、指定数组数据

glVertexAttribPointer(GLuint index,GLint size,GLenum type,GLboolean normalized, GLsizei stride,const GLvoid* pointer);

index代表属性索引值,size代表每个顶点属性的组件数量(这个值必须是1、2、3或者4),type代表组件数据类型,normalized代表是否将数据类型标准化(归一化),当数组中的值被访问并被转换至浮点值时,如果normalized被设置为GL_TRUE,意味着整数型的值会被映射至区间[-1,1](有符号整数),或者区间[0,1](无符号整数),反之,这些值会被直接转换为浮点值而不进行归一化处理。stride代表连续顶点属性之间的偏移量,pointer数组的首地址。

如果一个名称非零的缓冲对象被绑定至GL_ARRAY_BUFFER目标(见glBindBuffer)且此时一个定点属性数组被指定了,那么pointer被当做该缓冲对象数据存储区的字节偏移量。要启用或者禁用顶点属性数组,调用glEnableVertexAttribArray和glDisableVertexAttribArray传入参数index。如果启用,那么当glDrawArrays或者glDrawElements被调用时,顶点属性数组会被使用。