2011-09-27 113 views
0

我在this中閱讀了蘋果文檔(標題爲「避免在屬性數組中存儲常量」),它表示如果模型的頂點都具有相同的顏色,則顏色不應該是頂點屬性。 「OpenGL ES 2.0應用程序可以設置恆定的頂點屬性...」是什麼意思?OpenGL常量顏色

我的問題是,使用統一的顏色值是否會更好,並且調用有統一的調用併爲每個對象繪製調用?無論如何也要擁有頂點屬性,但一舉畫出一切。 (或者,如果這更好,則是一個恆定的頂點屬性)。

基本上,一次繪製所有東西的好處只是缺少多個函數調用的開銷嗎?爲了得到它的感覺,比如我畫了1000個圓圈,每個幀都有不同的顏色和40個頂點。在這種情況下哪個更好?

+0

@genpfault:實際上,我使用的是OpenGL,而不是OpenGL ES,但我認爲這仍然適用。 – mk12

回答

3

答案取決於您在一次繪製調用中繪製了多少東西。如果你有一個30,000個頂點的對象,其中所有的頂點都具有相同的顏色,那麼你就浪費了大量的頂點讀取(假設顏色數據使得你的每個頂點數據變大了,它可能不會)。但是,如果您正在討論四色渲染,每個四色渲染都有不同的顏色,那麼統一更新開銷和多個繪製調用將會影響您的性能。

請注意,在OpenGL下有用於實例化的方法,它允許您擁有每個實例的數據以及每個頂點的數據。但是,除非模型中有數千個實例和100多個頂點,否則這通常不會購買太多。

對於您的具體示例,無法知道哪個更快。你必須對它進行基準測試。

+0

謝謝,這很有道理。 – mk12