1. 程式人生 > >通過減少GL CALLS 來優化渲染效能

通過減少GL CALLS 來優化渲染效能

        GL verts 表示給顯示卡繪製的頂點數 
        GL calls 表示代表每一幀中OpenGL指令的呼叫次數 

其中“GL calls”代表每一幀中OpenGL指令的呼叫次數,這個數字越小,程式的繪製效能就越好。

cocos中渲染流程是這樣的:

(1)drawScene開始繪製場景

(2)遍歷場景的子節點,呼叫visit函式,遞迴遍歷子節點的子節點

(3)對每一個子節點呼叫draw函式

(4)初始化QuadCommand物件,這就是渲染命令,會丟到渲染佇列裡

(5)丟完QuadCommand就完事了,接著就交給渲染邏輯處理了。

(7)渲染邏輯遍歷渲染命令佇列,這時候會有一個變數,用來儲存渲染命令裡的材質ID,遍歷過程中就拿當前渲染命令的材質ID和上一個的材質ID對比,如果發現是一樣的,那就不進行渲染,儲存一下所需的資訊,繼續下一個遍歷。好,如果這時候發現當前材質ID和上一個材質ID不一樣,那就開始渲染,這就算是一個渲染批次了。

按照上面的邏輯,分成以下兩種方式處理:

一:在面對localType型別的圖片時,我們在寫邏輯的時候注意將同一紋理的物件統計放到一起載入就行了。

二:在面對plist型別的圖片時,plist合圖實際上算是一個材質,比如 lin.png 合圖裡有 lin_test1.png ,lin_test2.png...

所以在我需要建立 lin_test1.png ,lin_test2.png...等圖片的時候,並不需要將其分類處理,整個渲染過程其實只做了一次gl call。

綜上,如果是需要連續多種大量建立的圖片物件,將其放到一個plist合圖裡處理能非常有效的降低gl call次數