指定了渲染时着色器索引值为 index 的顶点属性数组(颜色、纹理、法线坐标)的数据格式和位置,用于从内存向显存上传数据(数据是由glBufferData之类的方式从内存上传到显存的)。属性数组中的值在VBO中存放。(这些数据通过 glDrawElements 或 glDrawArrays 从 CPU 主存中拷贝到 GPU 中去进行运算与渲染。这种做法需要频繁地在 CPU 与 GPU 之间传递数据,效率低下,因此出现了 VBO (Vertex Buffer object),即顶点缓存,它直接在 GPU 中开辟一个缓存区域来存储顶点数据,因为它是用来缓存储顶点数据,因此被称之为顶点缓存。)顶点属性glVertexAttribPointer默认是关闭的,使用时要以顶点属性位置值为参数调用glEnableVertexAttribArray开启,如glEnableVertexAttribArray(0);使用完成后要再次关闭glDisableVertexAttribArray(0)。
与openGL之API学习(一六六)glVertexAttrib*函数的主要区别是可以大量传递数据,更适用于逐顶点绘制的情况。
void glVertexAttribPointer( GLuint index,
GLint size,
GLenum type,
GLboolean normalized,
GLsizei stride,
const GLvoid * pointer);
index
Specifi