现代opengl 设计 glDrawArrays与glDrawElements的功能与区别

本文介绍了OpenGL中的glDrawArrays和glDrawElements两种绘制图元的方法,包括它们的基本功能、参数含义和差异。glDrawArrays直接按顺序绘制顶点,而glDrawElements使用索引进行绘制,适用于重复顶点的情况。文章通过代码对比解释了如何在两者间转换,并展示了各自在绘制效率上的优缺点。
摘要由CSDN通过智能技术生成

基本介绍:

glDrawArrays 和 glDrawElements 的作用都是从一个数据数组中提取数据渲染基本图元。( render primitives from array data )

他们只是用不同的方式来将客户端中的数据传送到服务器的地址空间中,OpenGL支持3种方式来完成这个操作:

(1)访问单独的数据元素(随机存储) (2)创建一个单独数组元素的列表(系统存取)(3)线性的处理数组元素。具体选用的数据访问方式取决于需要处理的问题类型。

glArrayElements()、glDrawElements()和glDrawRangeElements()能够对数据数组进行随机存取,但是glDrawArrays()只能按顺序访问它们。因为前者支持顶点索引的机制。

注!如果要 glDrawArrays 和 glDrawElements 正确进行绘制的话,必须在之前 调用带有相应参数的 glEnableClientState 方法。 比如:
 

/* Enable vertex arrays. */
glEnableClientState( GL_VERTEX_ARRAY );
/* Enable texture arrays. */
glEnableClientState( GL_TEXTURE_COORD_ARRAY );

先来看看2个函数的原型:

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

void glDrawArrays(GLenum mode, GLint first, GLsizei count);

绘制模式

这两个方法的第一个形参都是代表 绘制模式(GLenum mode)。绘图模式有如下几种:

GL_POINTS, GL_LINE_STRIP, GL_LINE_LOOP, GL_LINES, GL_LINE_STRIP_ADJACENCYGL_LINES_ADJACENCY</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值