glDrawArrays,glDrawElements

Posted on 2012-03-13 10:29  无忧consume  阅读(1321)  评论(0编辑  收藏  举报

顶点数组, 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();

Copyright © 2024 无忧consume
Powered by .NET 8.0 on Kubernetes