【Android开发学习16】Android OpenGL ES 关于glDrawArrays和glDrawElements

引用一段网上的话:

For both, you pass OpenGL some buffers containing vertex data.

glDrawArrays is basically "draw this contiguous range of vertices, using the data I gave you earlier". Good:

You don't need to build an index buffer
Bad:

If you organise your data into GL_TRIANGLES, you will have duplicate vertex data for adjacent triangles. This is obviously wasteful.
If you use GL_TRIANGLE_STRIP and GL_TRIANGLE_FAN to try and avoid duplicating data: it isn't terribly effective and you'd have to make a rendering call for each strip and fan. OpenGL calls are expensive and should be avoided where possible
With glDrawElements, you pass in buffer containing the indices of the vertices you want to draw.

Good

No duplicate vertex data - you just index the same data for different triangles
You can just use GL_TRIANGLES and rely on the vertex cache to avoid processing the same data twice - no need to re-organise your geometry data or split rendering over multiple calls
Bad

Memory overhead of index buffer
My recommendation is to use glDrawElements

个人理解为:
glDrawArrays主要讲数据空间损耗在顶点的定义处;
glDrawElements主要讲数据空间损耗在顶点索引的定义处;
如果在你的工程中,画的图形较少或者,图形虽多但很多相同的,则可采用glDrawArrays更节省数据占用的空间;
相反,如果图形多,而且形状大不相同的时候,可以优先考虑采用glDrawElements函数。
(点击上面的名称,即可进入官方对此函数的说明)

本文博客源地址:http://blog.csdn.net/ypist

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值