我對OpenGL很新穎,只是想要一些快速建議。我想爲遊戲畫一個平鋪的背景。我想這意味着將一大堆像精靈一樣的精靈畫到屏幕上。我有大約48列到30行,因此1440個瓦片(瓦片根據遊戲而改變,所以我不能預先渲染整個網格)。OpenGL紋理vs FBO
目前在啓動時,我創建了6個不同的FBO(使用來自OpenFrameworks的ofFbo類),它們充當6個不同的瓦片。然後我繪製這些緩衝區,最多1400次,爲每個瓷磚選擇一個。所以只有6個fbos,只是畫很多次。 (緩衝區在啓動時被繪製,創建後永遠不會改變)。
for (int x=0; x<columns; x++) {
for (int y=0; y<rows; y++) {
// Get tile type and rotation from tile struct.
tileNum = tile.form
rotNum = tile.rot
// Draw image/texture/fbo that's stored in a std vector.
tileSet->draw(x*TILESIZE, y*TILESIZE, TILESIZE, TILESIZE);
}
}
我想我正在討論這個錯誤的方法,並想知道是否有人新的最佳/最佳的方式來做到這一點。想想像一個老派的8位視頻遊戲背景。這是我正在進行的工作的圖像。
在後臺的結構是我說的是精靈,不同的部分是INNY角落,outty(凹的)角,方形填充,直的邊緣。對不起,因爲問題搞亂了。
我想你一定是混淆的術語,或者你不明白什麼是FBO。你不希望在一個場景中有1440個FBO,甚至更多,因爲你仍然必須以某種方式將圖像顯示在屏幕上(繪製到FBO中只會吸引到不可見的表面,除非它是默認的FBO)。紋理四邊形是你想要的。另外,5,000微秒是5ms,這相當於幀時間(相當於約200fps)是可以接受的。 – Damon
你已經編輯了你的問題,但你仍然不能確定FBO是什麼。不,紋理總是在視頻內存中播放,不必每次都傳輸。是的,你錯了,因爲我完全無法理解你的問題。你可能在談論維也納國際組織?如果您不確定,請查看這些概念是什麼,並重新提出您的問題。 –
嘿,感謝您的反饋,我認爲可能是這樣。我沒有1440 fbos,對不起,我誤解了這一點。我其實有6個,最多可以抽出1440次。 雖然5000微秒是相當不錯的,但我仍然希望加快一點。遊戲(人物角色和網格滿)下降到30 fps,這沒問題,但我不介意優化。網格是最慢的部分,所以我認爲這應該是我首先想到的。我重新提出了問題,再次感謝。 – rykardo