OpenGL glArrayElement

来源:互联网 发布:c语言是不是高级语言 编辑:程序博客网 时间:2024/05/24 00:41

当我们人为的绘制形状时,首先想到是是坐标点,而不是api,如要绘制一条直线,首先将两个点的坐标存在一起,则更加容易理解,OpenGL的顶点数组就是这样的作用.

首先来回顾下之前画直线的函数

示例1

void drawOneLine(GLfloat x1,GLfloat y1,GLfloat x2,GLfloat y2){   glBegin(GL_LINES);   glVertex2f ((x1),(y1));    glVertex2f ((x2),(y2));   glEnd();}

需要调用两次glVertex2f ,并且输入两个顶点,现在我们来看另一种做法

示例2

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();}

vertices记录了两个坐标(x1,y1)=(25,25),(x2,y2)=(100,100) 
但是其索引值却是0,1,2,3.为了识别一个坐标点,需要一个函数将数组进行切分. 
glVertexPointer则用于这个功能,可以称这种数组为混合数组,参数指定了顶点数组的配对点(如坐标定位为2个,颜色则为3个),数据类型及数组 
注意:在使用顶点数组时,必须先调用glEnableClientState开启顶点数组功能,在不用的时候调用glDisableClientState来禁用

glArrayElement则根据顶点数组来调用相应的函数,每次只调用1个顶点

示例2和示例1的效果是相同,初看好像并没有变简单,反而变复杂了.

原创粉丝点击