顶点数组, glDrawArrays,glDrawElements - [OpenGL]
前两天接触OpenGL ES的时候发现里面没有了熟悉的glBegin(), glEnd(),glVertex3f()函数,取而代之的是glDrawArrays()。有问题问google,终于找到答案:因为OpenGL ES是针对嵌入式设备这些对性能要求比较高的平台,因此把很多影响性能的函数都去掉了,上述的几个函数都被移除了。接下来看看这些函数是如何使用的。
1.glEnableClientState(GL_VERTEX_ARRAY); 使能顶点数组功能。
2.将准备好的数组告知程序,使用glVertexPointer(),原型如下:
void glVertexPointer(
GLint size, //每个顶点占用的数组元素数量
GLenum type, //数组元素的数据类型
GLsizei stride, //元素之间的间隔,一般系统为0
const GLvoid *pointer //指向数组的指针
);
3.进行绘图:glDrawArrays()或者 glDrawElements(),glDrawElements()主要用于索引数组。函数原型如下:
void glDrawArrays(
GLenum mode, //绘图方式 GL_POINTS、GL_QUADS etc
GLint first, //第一个元素的下标
GLsizei count //绘制元素的数量
);
void glDrawElements(
GLenum mode, //绘图方式 GL_POINTS、GL_QUADS etc
GLsizei count, //顶点数组当中元素的个数
GLenum type, //索引数组当中元素数据类型
const GLvoid *indices //指向索引数组的指针
);
对应于顶点数组,OpenGL当中还提供了法向量数组、纹理坐标数组等等的支持,这些数组与顶点数组的使用方式相同,只是在相关参数和函数名称上将Vertex改为对应的名字即可。
glEnableClientState(GL_COLOR_ARRAY);
glColorPointer();