2011-08-07 157 views
0

我正在使用OpenGL製作蠕蟲式位圖可破壞地形遊戲。我想知道在視頻內存方面的限制對於世界的大小。OpenGL:紋理大小和視頻內存

目前,我爲地形使用512 * 512 RGBA紋理塊。

  • 多少內存,非常粗略地說,我可以期待這樣的512 * 512 RGBA紋理佔用多少?
  • 是否有任何內部自動壓縮?
  • 我希望大多數用戶的電腦有多少視頻內存可以免費使用?

回答

1

我不會擔心非常多。即使是8192 * 2048的世界(4個屏幕寬,2個屏幕高,這對於蠕蟲風格的遊戲來說非常大),您只需要8 * 2 * 4 = 64Mb(添加mipmap,其他紋理,幀緩衝)界限。就我所知,即使是較老的GPU也有這種內存(我們沒有談論GeForce4卡,對吧?)。

舊的GPU可能會限制每個紋理可能有多大,但由於您已將您的世界分割爲512x512塊,因此這不會成爲問題。

如果視頻內存成爲問題,您可以允許用戶使用半角大小的紋理(即將世界縮減到4096 * 1024和256x256的縫隙),並根據需要提取新的/丟棄未使用的區域。

2

我可以期待這樣一個512 * 512 RGBA紋理佔用多少內存,非常粗略?

沒有足夠的信息。你應該總是使用大小OpenGL image formats(GL_RGBA ,GL_RGBA )。

GL_RGBA8每個像素佔用32位,這是4個字節。因此,512 * 512 * 4 = 1MB。

是否有任何內部自動壓縮正在進行?

我有多少視頻內存可以預期大部分用戶的計算機上有免費的嗎?

您目前使用多少?

OpenGL將根據可用空間將圖像數據導入和導出。如果用完GPU內存,OpenGL會很樂意分配系統內存並根據需要上傳圖像。

但說實話,你的小蠕蟲遊戲並不會在內存大小方面花費任何東西。上手時,可能會有64MB。沒什麼需要關注的。

+0

內存要求很大程度上取決於您。您需要選擇一條合理的線(即64Mb)並嘗試適合它。 – Kromster

0

再次,這取決於你的引擎,但如果我是你,我會做到這一點:

由於您的地形紋理很可能會重複使用一些馬賽克狀紋理,和你需要知道像素是否存在,或者被破壞,那麼鑑於您使用的拼圖紋理不大於256x256,您肯定可以用GL_RG16內部格式(其中每個組件都是您需要映射的紋理座標[0,255] - > [0.0 ,1.0],並且你會保留一些特殊的值來表明地形被破壞),使得每個512x512塊佔用0.5MB。 雖然它做臨時工增加一個額外的字節來表示地形的存在,但3個字節格式將不緩存太好