我正在使用OpenGL製作蠕蟲式位圖可破壞地形遊戲。我想知道在視頻內存方面的限制對於世界的大小。OpenGL:紋理大小和視頻內存
目前,我爲地形使用512 * 512 RGBA紋理塊。
- 多少內存,非常粗略地說,我可以期待這樣的512 * 512 RGBA紋理佔用多少?
- 是否有任何內部自動壓縮?
- 我希望大多數用戶的電腦有多少視頻內存可以免費使用?
我正在使用OpenGL製作蠕蟲式位圖可破壞地形遊戲。我想知道在視頻內存方面的限制對於世界的大小。OpenGL:紋理大小和視頻內存
目前,我爲地形使用512 * 512 RGBA紋理塊。
隨着32位色(4個字節),你獲得4 * 512 * 512 = 1 MB
見這對於紋理壓縮:http://www.oldunreal.com/editing/s3tc/ARB_texture_compression.pdf
我不會擔心非常多。即使是8192 * 2048的世界(4個屏幕寬,2個屏幕高,這對於蠕蟲風格的遊戲來說非常大),您只需要8 * 2 * 4 = 64Mb(添加mipmap,其他紋理,幀緩衝)界限。就我所知,即使是較老的GPU也有這種內存(我們沒有談論GeForce4卡,對吧?)。
舊的GPU可能會限制每個紋理可能有多大,但由於您已將您的世界分割爲512x512塊,因此這不會成爲問題。
如果視頻內存成爲問題,您可以允許用戶使用半角大小的紋理(即將世界縮減到4096 * 1024和256x256的縫隙),並根據需要提取新的/丟棄未使用的區域。
我可以期待這樣一個512 * 512 RGBA紋理佔用多少內存,非常粗略?
沒有足夠的信息。你應該總是使用大小OpenGL image formats(GL_RGBA ,GL_RGBA )。
GL_RGBA8每個像素佔用32位,這是4個字節。因此,512 * 512 * 4 = 1MB。
是否有任何內部自動壓縮正在進行?
號
我有多少視頻內存可以預期大部分用戶的計算機上有免費的嗎?
您目前使用多少?
OpenGL將根據可用空間將圖像數據導入和導出。如果用完GPU內存,OpenGL會很樂意分配系統內存並根據需要上傳圖像。
但說實話,你的小蠕蟲遊戲並不會在內存大小方面花費任何東西。上手時,可能會有64MB。沒什麼需要關注的。
內存要求很大程度上取決於您。您需要選擇一條合理的線(即64Mb)並嘗試適合它。 – Kromster
再次,這取決於你的引擎,但如果我是你,我會做到這一點:
由於您的地形紋理很可能會重複使用一些馬賽克狀紋理,和你需要知道像素是否存在,或者被破壞,那麼鑑於您使用的拼圖紋理不大於256x256,您肯定可以用GL_RG16內部格式(其中每個組件都是您需要映射的紋理座標[0,255] - > [0.0 ,1.0],並且你會保留一些特殊的值來表明地形被破壞),使得每個512x512塊佔用0.5MB。 雖然它做臨時工增加一個額外的字節來表示地形的存在,但3個字節格式將不緩存太好
不,512x512的紋理RGBA(以及每通道字節)會導致4x512x512 = 1MB – Bart
APPR。 4 * 512 * 512 * 1.33與MIPMAPS – epatel
您一定意味着32-bpp(或8-bpc)。 –