2011-02-05 103 views
6

我想知道是否建議消除所有多餘的opengl調用。進行冗餘OpenGL調用

舉例來說,我應該做這樣的事情(包裝在一個函數):

if(foobuffer != boundbuffer) { 
    glBindBuffer(GL_BAR_BUFFER, foobuffer); 
    boundbuffer = foobuffer; 
} 

或者是驅動程序會自動做這樣的事情,這實際上是一個多餘的reduntant檢查?

回答

5

你應該避免它。 Here(特別是22.040,因爲沒有錨點,你必須向下滾動頁面),注意到冗餘調用通常是不好的做法,即使有些實現嘗試最小化影響。

gDEBugger這樣的工具可以用來幫助追蹤你可能在哪裏進行多餘的呼叫,如果你的位置不確定你在代碼庫中可能會做多少。

3

我剛剛從Android應用程序中消除了很多這樣的調用,所以我可以直接告訴你它在該平臺上(在特定的操作系統版本和硬件上)很重要。它將幀率提高了幾個fps,我說約5-10%的利潤。