http://www.dreamingwish.com/dream-2012/gldrawelements.html
Name
glDrawElements — 由数组数据渲染图元
C Specification
void glDrawElements( | GLenum mode, |
| GLsizei count, |
| GLenum type, |
| const GLvoid * indices) ; |
Parameters
-
指定要渲染何种图元. 可接受的符号常量有
GL_POINTS
,GL_LINE_STRIP
,GL_LINE_LOOP
,GL_LINES
,GL_TRIANGLE_STRIP
,GL_TRIANGLE_FAN
, 和GL_TRIANGLES
-
指定要渲染的元素数量
-
指定
indices
中的值的类型。必须为GL_UNSIGNED_BYTE或者GL_UNSIGNED_SHORT。 -
指定存指向索引存储位置的指针
mode
count
type
indices
Description
glDrawElements使用很少的子例程调用来指定多重几何图元。除了调用GL方法来传递每一个顶点的属性,你还可以使用glVertexAttribPointer函数来设置独立的顶点、法线、颜色矩阵,以及纹理坐标,并仅需调用glDrawArrays就可以通过它们构建一系列图元。
glDrawElements函数被调用时,它使用启用的数组中的从indices
开始的count
个连续的元素构建一系列几何图元。mode
指定了要构建何种图元以及数组元素怎样构建图元。如果启用了不止一个数组,那么每个数组都会被使用。
要启用或者禁用顶点属性数组,调用glEnableVertexAttribArray和glDisableVertexAttribArray。
Notes
如果当前的程序对象(由glUseProgram设定)不可用,那么渲染结果是未定义的。但是,这种情况下不会产生任何错误。
Errors
如果 mode
不是可接受的值,产生GL_INVALID_ENUM错误。
如果type
不是GL_UNSIGNED_BYTE或者GL_UNSIGNED_SHORT,则产生GL_INVALID_ENUM错误。
如果count
为负,产生GL_INVALID_VALUE错误。
如果当前绑定的帧缓冲区未完成(也就是说,glCheckFramebufferStatus的返回值不是GL_FRAMEBUFFER_COMPLETE),产生GL_INVALID_FRAMEBUFFER_OPERATION错误。
See Also
glCheckFramebufferStatus, glDisableVertexAttribArray, glDrawArrays, glEnableVertexAttribArray, glUseProgram,glVertexAttribPointer