簡體   English   中英

OpenGL紋理與FBO

[英]OpenGL texture vs FBO

我是OpenGL的新手,只是想要一些快速的建議。 我想為游戲畫一個平鋪的背景。 我想這意味着在屏幕上繪制一大堆像精靈一樣的精靈。 我有大約48列到30行,因此1440個瓷磚(瓷磚根據游戲而變化,所以我無法預渲染整個網格)。

目前在啟動時,我創建了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(凹)角,方形填充和直邊。 很抱歉弄亂了問題。

我真的不明白你的問題。 紋理是可以應用於多邊形的(通常為2維)圖像,而FBO(幀緩沖對象)是一種可以渲染而不是屏幕的屏幕外緩沖區,通常用於直接渲染到紋理中。 因此,我不會以任何方式看到你的問題在哪里“紋理與FBO”,因為它們是非常正交的概念,並且使用FBO在你的例子中沒有任何意義。 也許你正在用VBO(頂點緩沖對象)PBO(像素緩沖對象)弄亂FBO? 但是那時候你的問題仍然很不合適。

編輯:如果你真的使用FBO,那只是因為你認為他們神奇地將他們引用的紋理存儲在視頻內存中,那么請放心,紋理總是存儲在視頻內存中,並且在你的情況下使用FBO是完全的無用。

為了你的建議,我建議你只使用標准的OpenGL紋理。

我想我明白你想做什么,但是FBO保留了比你需要的更多的信息,因此需要更長的時間來渲染你的目的地(這是一個FBO)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM