一。使用顶点数组绘制:1.glArrayElement,
2.glDrawElements
3.glDrawArrays
glArrayElemen: 每次 只能 使用 一组 顶点数据,并且 必须 在 GLbegin 和 glend 之间 绘制。
glBegin(GL_LINES); glArrayElement(0); glArrayElement(1); glArrayElement(2); glArrayElement(3); glEnd();
glDrawElements 每次 可以 绘制 多组 顶点数据,顺序 可以 任意 存放,无 glBegin 和 glend 的限制。
void drawTwoLineWithArray2() { GLfloat data[]= {1.0, 0.0, 0.0,25.0,25.0, 1.0, 0.0, 0.0,100.0,100.0, 0.0, 1.0, 0.0,120.0,120.0, 0.0, 1.0, 0.0,200.0,200.0}; GLubyte index[]= {0,1,2,3} ; glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_COLOR_ARRAY); glColorPointer(3,GL_FLOAT,5*sizeof(GLfloat),&data[0]); glVertexPointer(2,GL_FLOAT,5*sizeof(GLfloat),&data[3]); glDrawElements(GL_LINES,4,GL_UNSIGNED_BYTE,index); }
glDrawArrays 每次 可以绘制 多组顶点数据,必须 从 起点 到 终点 按顺序 绘制,无 glBegin 和 glend 限制。
glDrawArrays(GL_LINES,0,4);
二。每次启用数组顶点的时候要
glEnableClientState(GL_VERTEX_ARRAY);
混合参数,有颜色和顶点数组。
oid drawTwoLineWithArray3() { GLfloat data[]= {1.0, 0.0, 0.0,25.0,25.0,0.0, 1.0, 0.0, 0.0,100.0,100.0,0.0, 0.0, 1.0, 0.0,120.0,120.0,0.0, 0.0, 1.0, 0.0,200.0,200.0,0.0}; glInterleavedArrays(GL_C3F_V3F,0,data); glDrawArrays(GL_LINES,0,4); }
- GL_V2F,表明顶点数据有2个表示顶点坐标的浮点数组成.
- GL_V3F,表明顶点数据有3个表示顶点坐标的浮点数组成.
- GL_C3F_V3F,表明顶点数据有6个浮点数组成,其中前三个为顶点的颜色数据(Color,C);后三个为顶点的坐标位置数据(Vertex,V)
- GL_N3F_V3F,N表明顶点的法线向量Normal.
- GL_C4F_N3F_V3F,color,color,color,color,normal,normal,normal,vertex,vertex,vertex,
- GL_T2F_V3F,T表示顶点的纹理坐标.
- GL_T4F_V4F,GL_T2F_C3F_V3F,GL_T2F_N3F_V3F,GL_T2F_C4F_N3F_V3F,GL_T4F_C4F_N3F_V4F;意义同上.