通过之前的学习,我们知道,如果要绘制一个几何图形,那就要不断的调用绘制函数,比如绘制一个20条边的多边形,起码要调用22条函数(包含glBegin和glEnd)。
所以OpenGL提供了一系列的顶点数组函数减少函数调用的次数来提高性能。而且使用顶点还可以避免顶点共享的冗余处理。
对于上面的示例,我们使用顶点数组如下:
所以OpenGL提供了一系列的顶点数组函数减少函数调用的次数来提高性能。而且使用顶点还可以避免顶点共享的冗余处理。
1.简单示例
先来回顾一下之前我们是怎么画直线的:
void drawOneLine(GLfloat x1,GLfloat y1,GLfloat x2,GLfloat y2)
{
glBegin(GL_LINES);
glVertex2f (x1,y1);
glVertex2f (x2,y2);
glEnd();
}
对于上面的示例,我们使用顶点数组如下:
void drawLineWithArray()
{
GLint vertices[]={25,25,
100,100
};
glEnableClientState(GL_VERTEX_ARRAY);//启用顶点数组
glVertexPointer(2,GL_INT,0,vertices);//指定数组数据
glBegin(GL_LINES);
glArrayElement(0); //解引用和渲染
glArrayElement(1);
glEnd();
}
2.使用顶点数组的三个步骤
(1)先启用顶点数组
//指定需要启动的数组(GL_VERTEX_ARRAY,GL_COLOR_ARRAY,GL_INDEX_ARRAY等8个可用数组)
void glEnableClientState(GLenum array);
(2)指定数组数据
//size表示顶点坐标数量(2,3,4),type表示数据类型,stride表示连续顶点之间字节偏移(0表示紧密相邻),pointer表示数组首地址
void glVertexPointer(GLint size,GLenum type,GLsizei s