绘制方法---glDrawArrays与glDrawElements

来源:互联网 发布:种子下载软件 编辑:程序博客网 时间:2024/05/19 16:33

在interface GL10 extends GL中,

glDrawArrays

public void glDrawArrays(int mode,int first,int count)

功能:

由矩阵数据渲染图元。

详细

glDrawArrays通过很少的子程序调用指明多层几何图元。你可以设置独立的顶点、法线、颜色矩阵,以及纹理坐标,并仅需调用glDrawArrays就可以通过它们构建一系列图元。

当glDrawArrays被调用,它从被允许访问的矩阵中计算连续count个元素来构建一系列几何图元,从first元素开始。mode指明哪一种图元将被构建及矩阵元素怎样构建这些图元。如果GL_VERTEX_ARRAY没有启用,则不会有图元产生。

当glDrawArrays返回后,由glDrawArrays改变的顶点属性会得到一个未指明的值。举个例子,如果GL_COLOR_ARRAY被启用,则glDrawArrays执行后当前颜色的值是未定义的。未改变的属性仍然是已定义的。

错误

如果mode不是被允许的值,将会产生GL_INVALID_ENUM。

如果count是负数,将会产生GL_INVALID_VALUE。

参数

mode——指明渲染哪一种图元。允许的符号常量有GL_POINTS, GL_LINE_STRIP, GL_LINE_LOOP, GL_LINES, GL_TRIANGLE_STRIP,GL_TRIANGLE_FAN和GL_TRIANGLES。

first——指明在允许访问的矩阵中的起始索引。

count——指明要渲染的索引的数量。

抛出:

java.lang.ArrayIndexOutOfBoundsException——如果序列中任一索引first至first + count – 1,导致引用出界。这个序列包括当前顶点、颜色、法线、纹理坐标,点大小,矩阵索引,或加权矩阵。


glDrawElements

public void glDrawElements(int mode,int count,int type,Buffer indices)

功能

由矩阵数据渲染图元。

详细

glDrawElements用少量调用指明多重几何图元,你可以事先指明独立的顶点、法线、颜色和纹理坐标矩阵并且可以通过调用glDrawElements方法来使用它们创建序列图元。

当glDrawElements被调用,它会使用有序索引来查询可用矩阵中的元素,并以此创建序列几何图元,如果GL_VERTEX_ARRAY被禁用,则不会创建。

顶点属性由glDrawElements修改,glDrawElements在返回后会有一个未指明的值。举一个例子,如果GL_COLOR_ARRAY启用,当执行glDrawElements方法后,当前颜色的值是未定义的,属性不会维持它之前的值。

错误

如果mode的值不被允许,将产生GL_INVALID_ENUM。

如果type的值不被允许,将产生GL_INVALID_ENUM。

如果count是负数,将产生GL_INVALID_VALUE。

参数

mode——指明被渲染的是哪种图元,被允许的符号常量有GL_POINTS,GL_LINE_STRIP,GL_LINE_LOOP,GL_LINES,GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN和GL_TRIANGLES

count——指明被渲染的元素个数。

type——指明索引指的类型,不是GL_UNSIGNED_BYTE就是GL_UNSIGNED_SHORT。

indices——指明存储索引的位置指针。

抛出

java.lang.IllegalStateException——如果最近一次调用glBindBuffer方法以GL_ELEMENT_ARRAY_BUFFER为目标时,有一个非0缓冲区参数。

java.lang.IllegalArgumentException——如果索引为空。

java.lang.ArrayIndexOutOfBoundsException——如果索引序列中从0到count-1中任意索引超出现有索引或数据矩阵范围。

原创粉丝点击