Name

glDrawElements — 由数组数据渲染图元

C Specification

void glDrawElements( GLenum mode,
  GLsizei count,
  GLenum type,
  const GLvoid * indices);
 

Parameters

mode

指定要渲染何种图元. 可接受的符号常量有 GL_POINTSGL_LINE_STRIPGL_LINE_LOOP

GL_LINES,GL_TRIANGLE_STRIPGL_TRIANGLE_FAN, 和 GL_TRIANGLES 

count

指定要渲染的元素数量

type

指定indices中的值的类型。必须为GL_UNSIGNED_BYTE或者GL_UNSIGNED_SHORT。

indices

指定存指向索引存储位置的指针

Description

glDrawElements使用很少的子例程调用来指定多重几何图元。除了调用GL方法来传递每一个顶点的属性,你还可以使用glVertexAttribPointer函数来设置独立的顶点、法线、颜色矩阵,以及纹理坐标,并仅需调用glDrawArrays就可以通过它们构建一系列图元。

glDrawElements函数被调用时,它使用启用的数组中的从indices开始的count个连续的元素构建一系列几何图元。mode指定了要构建何种图元以及数组元素怎样构建图元。如果启用了不止一个数组,那么每个数组都会被使用。

要启用或者禁用顶点属性数组,调用glEnableVertexAttribArrayglDisableVertexAttribArray

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错误。

评论模块尚未加载