glDrawElements函数如下:
void glDrawElements( GLenum mode,
GLsizei count,
GLenum type,
const GLvoid * indices);
glDrawElements函数声明如上面,其中最后一个参数表示存放顶点索引的数组。在OPenGL 3.0之前,我们一般直接传入顶点索引数组,如下:
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glColor3f(1.0f,0.0f,0.0f);
//四个顶点
float pfVer[] = { 0.0f, 0.0f, 0.0f,
2.0f, 0.0f, 0.0f,
2.0f, 2.0f, 0.0f,
0.0f, 2.0f, 0.0f };
//两个面
short indices[] = {0,1,2,
2,3,0 };
glEnableClientState(GL_VERTEX_ARRAY);//启用顶点数组,很重要,否则不显示
//参数1:表示该pfVer数组中几个元素表示一个点,这里是三维点,当然是3个数据表示一个点
//参数2:指示pfVer数组中元素的数据类型
//参数3:表示跨度,这里为0,表示数据元素没有跨度,即依次每3个元素表示一个点
//参数4:顶点数据数组
glVertexPointer( 3,GL_FLOAT, 0, pfVer ); //指定顶点指针,必须的,指向真正的点数据
//这个函数的参数列表前面已经解释过了。我们重点看下,第二个参数,即要画的几何图形的顶点的个数,这里因为要画2个面,每个面3个顶点,所以是6个。
//最后一个参数,传递是indices
glDrawElements( GL_TRIAN

本文介绍了OpenGL 3.0后glDrawElements函数的简化,如何通过glBufferData和相关API设置索引缓冲,以及使用Vertex Arrays Object (VAO)和Element Array Buffer (EBO)来组织顶点数据和索引。重点展示了如何在新版本中省略顶点索引数组参数,并在实际代码中进行演示。
最低0.47元/天 解锁文章
3243

被折叠的 条评论
为什么被折叠?



