2009-01-11 129 views
1

OpenGL ES中的RGB調色板和8位Alpha通道可以獲得調色板紋理? (我的目標是iPhone OpenGL ES實現。)在瀏覽OpenGL文檔之後,我覺得在調色板中支持調色板紋理,包括alpha。紋理包含256位RGBA顏色的調色板中的8位索引。我想要一個包含8位索引的紋理到一個RGB調色板獨立的8位Alpha通道。 (我試圖節省內存和32位RGBA紋理相當奢侈。)或者這應該是手工完成的,即。通過創建兩個獨立的紋理,一個用於顏色,另一個用於alpha地圖,並手動合併它們?OpenGL ES中具有8位Alpha通道的調色板紋理

回答

1

聲明: 此信息基於官方的OpenGL | ES規範。我不知道iPhone上支持壓縮紋理的OpenGL | ES實現與否。理論上它至少應該模擬壓縮紋理,但現在你永遠不會。

您可以通過調用glCompressedTexImage2D來加載8位/像素紋理。您最喜歡使用的壓縮類型是GL_PALETTE8_RGBA8_OES

與調色板一起存儲額外的alpha通道不是直接可能的。無論是使用alpha分量的第二個紋理單位,還是考慮顏色量化時的alpha,並使用包含alpha的調板格式。

在網絡上有一個名爲BRIGHT的命令行色彩量化工具。它在用alpha處理圖像方面做了令人難以置信的工作。你可能想嘗試一下。

2

不。一般來說,圖形芯片真的不喜歡碼垛紋理(爲什麼?因爲從它讀取任何紋理元素需要兩次內存讀取,其中一個索引和另一個進入調色板,正常讀取的延遲時間加倍)。

如果您只是在保存內存後才查看壓縮紋理格式。特別是在iPhone中,它支持2位/像素和4位/像素的PVRTC壓縮格式。壓縮是有損的(就像調色板壓縮通常是有損的),但是內存和帶寬的節省是相當大的。

+0

謝謝!我意識到紋理壓縮,但可惜的是壓縮僞像對於我的目的來說太明顯了(這是一個卡通2D遊戲)。 – zoul 2009-01-12 07:39:31

1

調色板紋理將在iPhone上加載GPU時加載,因此除了存儲大小以外,您不會獲得任何優勢。卡通風格遊戲的最佳選擇是探索使用PVRTC壓縮紋理(如NeARAZ說)和16位紋理(RGBA4444用於alpha,RGBA5551用於穿透,RGB565用於不透明紋理)。使用兩者的混合是我自己的方法。

+0

嗨。我很抱歉,你打算什麼意思?你可以指點我關於使用RGBA4444的任何教程或資源(因爲我只在RGBA8888中有精靈片,而且它對iPhone的內存太重了) – 2010-01-05 16:16:23