一、顶点数组,顶点数组对象和缓冲区对象
顶点数组及顶点数组对象可以有效地解决渲染过程中的数据冗余以及大量的添加额外信息的问题,而缓冲区对象则避免渲染过程中反复的读写数据导致的效率损耗。二者结合可以大幅度的提高渲染的效率。
1、顶点数组的使用步骤:
(1) 激活数组。这些数组描述了图元的几何属性,例如,顶点坐标,表面法线,RGBA颜色,辅助颜色,颜色索引,雾坐标,纹理坐标,多边形边界标志等。
glEnableClientState(GLenum array)
(2)把数据放入数组中。 其他属性采用 glColorPointer(...), glTextureCoordPointer(...)等等,不一一列举。
glVertexPointer(GLint sizei, GLenum type, GLsizei stride, const GLvoid * pointer)
(3) 绘制几何图元。
glDrawElements(GLenum Mode, GLsizei count, GLenum type, const GLvoid* indices)
在大场景渲染过程中,通常多个对象之间的顶点属性并不相同,这时候需要频繁调用glVetexPointer这些函数。而顶点数组对象则对这些调用进行集合。简单点来讲,针对每个需要渲染的对象创建一个顶点数组对象,此时该顶点数组对象包含了该对象所有的属性,在渲染的过程中,只需要调用该对象的顶点数组对象,便可以在多个对象之间进行切换,从而避免了glVetexPointer函数的反复调用。
2、顶点数组对象相关的函数:
(1)创建顶点数组对象
glGenVertexArray(GLsizei n, GLuint* arrarys)
(2)初始化新对象
glBindVertexArray(GLuint array)
3、使用