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不一樣,那就開始渲染,這就算是乙個渲染批次了。
按照上面的邏輯,分成以下兩種方式處理:
二:在面對plist型別的時,plist合圖實際上算是乙個材質,比如 lin.png 合圖里有 lin_test1.png ,lin_test2.png...
所以在我需要建立 lin_test1.png ,lin_test2.png...等的時候,並不需要將其分類處理,整個渲染過程其實只做了一次gl call。
綜上,如果是需要連續多種大量建立的物件,將其放到乙個plist合圖里處理能非常有效的降低gl call次數
使用委託來減少if else判斷
上述 根據傳進來的語言列舉值和名字串來輸出相應語言的問候語,不過,這個方法的可擴充套件性太差了,如果以後我們需要再新增韓文版,日文版,就不得不反覆修改列舉和dowork 方法,以適應新的需求。使用委託可以解決優化此類問題。using system using system.collections.g...
使用委託來減少if else判斷
using system using system.collections.generic using system.linq using system.text namespace 13 public void sayenglish string name public enum language...
調優(二) 減少if語句的使用
程式中減少if語句的使用 注 if語句通常會讓 更加負載,但這不代表要完全拋棄if語句 1 if語句的問題 a.通常出現if語句的 很容易越改越糟 b.複製時會有問題,即if語句缺失domain的概念 c.開發者必須在頭腦中模擬執行實際情況,造成腦細胞浪費 2 替代if語句的方案 1 布林引數 bo...