美文网首页iOS Developer程序员IOS
OpenGL ES:绘制函数glDrawArrays 和 glD

OpenGL ES:绘制函数glDrawArrays 和 glD

作者: 神经骚栋 | 来源:发表于2016-10-10 10:55 被阅读4500次

    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]

    glDrawArrays 和 glDrawElements的性能区别


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

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


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

    相关文章

      网友评论

        本文标题:OpenGL ES:绘制函数glDrawArrays 和 glD

        本文链接:https://www.haomeiwen.com/subject/ysweettx.html