OpenGL ES:绘制函数glDrawArrays 和 glDrawElements 的区别

glDrawArrays 和 glDrawElements绘制的区别


比如画一个由2个3角形组成的正方形,左上角坐标是l,t,右下角坐标是r,b
使用glDrawArrays绘制时,画2个三角形,需要这样传如下形式的数组:

[ (l,t),(r,t),(l,b)(r,t),(r,b),(l,b)]

而用glDrawElements渲染场景的话可以这样float coord[4][2]=[{l,t},{r,t},{r,b},{l,b}];
绘制时的索引数组:[0,1,31,2,3]

OpenGL ES:绘制函数glDrawArrays 和 glDrawElements 的区别_第1张图片

glDrawArrays 和 glDrawElements的性能区别


glDrawArrays传输或指定的数据是最终的真实数据,在绘制时效能更好
而glDrawElements指定的是真实数据的调用索引,在内存/显存占用上更节省

glDrawArrays 和 glDrawElements的损耗说明及其使用场景


glDrawArrays主要讲数据空间损耗在顶点的定义处;
glDrawElements主要讲数据空间损耗在顶点索引的定义处;
如果在你的工程中,画的图形较少或者,图形虽多但很多相同的,则可采用glDrawArrays更节省数据占用的空间;相反,如果图形多,而且形状大不相同的时候,可以优先考虑采用glDrawElements函数。

你可能感兴趣的:(OpenGL ES:绘制函数glDrawArrays 和 glDrawElements 的区别)