我正在試驗幾種繪製大量精靈的方法(例如,對於粒子系統),我有一些不確定的結果。因此,這是我想和我有什麼: 這樣做是繪製25K精靈:加速在OpenGL中繪製旋轉和縮放的圖像
- 使用正則
glBegin
/glEnd
並利用三角函數計算頂點 - 17-18fps。 - 使用常規
glBegin
/glEnd
,但使用glRotate
,glTranslate
和glScale
來轉換精靈-14-15fps。 - 使用頂點數組而不是
glBegin
和glEnd
,但仍使用trig來計算頂點位置 - 10-11fps。 - 使用頂點數組而不是
glBegin
和glEnd
,但使用glRotate
,glTranslate
和glScale
來轉換精靈-10-11fps。
所以我的問題是,爲什麼使用頂點數組比使用glBegin
/glEnd
而我已閱讀(這裏偶),它應該是快慢?
爲什麼不使用自己的三角(這在我的情況是5個COS,5罪,超過5個部門,15次乘法和10加法/減法)比使用5個功能(glPushMatrix()
,glTranslated()
,glRotated()
更快, glScaled()
,glPopMatrix()
)。我雖然他們在GPU上完成,所以它應該很快,更快。
當繪製較少的精靈時,我確實會得到更有希望的結果。就像我繪製10k精靈時一樣,那麼頂點數組的速度可以快5fps,但仍然不一致。另外請注意,比這些fps可以增加整體,因爲我有其他計算正在進行,所以我沒有真正看fps本身,但他們之間的差異。就像是如果頂點陣列和gl變換比手動觸發多5-10幀/秒,那麼我會很高興,但現在看來,這似乎不值得冒這個麻煩。他們會幫助移植到GLES(因爲它沒有glBegin
/glEnd
),但我想我會爲此做一個單獨的實現。
那麼有什麼辦法可以在不使用幾何着色器的情況下加快速度嗎?我真的不明白他們(也許是一些很棒的教程?),他們可能會破壞與舊硬件的兼容性,所以我想在不使用着色器的情況下擠壓所有果汁。
這似乎真的很低。 CPU/GPU規格? – genpfault