OpenGL ES中的RGB調色板和8位Alpha通道可以獲得調色板紋理? (我的目標是iPhone OpenGL ES實現。)在瀏覽OpenGL文檔之後,我覺得在調色板中支持調色板紋理,包括alpha。紋理包含256位RGBA顏色的調色板中的8位索引。我想要一個包含8位索引的紋理到一個RGB調色板和獨立的8位Alpha通道。 (我試圖節省內存和32位RGBA紋理相當奢侈。)或者這應該是手工完成的,即。通過創建兩個獨立的紋理,一個用於顏色,另一個用於alpha地圖,並手動合併它們?OpenGL ES中具有8位Alpha通道的調色板紋理
回答
聲明: 此信息基於官方的OpenGL | ES規範。我不知道iPhone上支持壓縮紋理的OpenGL | ES實現與否。理論上它至少應該模擬壓縮紋理,但現在你永遠不會。
您可以通過調用glCompressedTexImage2D
來加載8位/像素紋理。您最喜歡使用的壓縮類型是GL_PALETTE8_RGBA8_OES
。
與調色板一起存儲額外的alpha通道不是直接可能的。無論是使用alpha分量的第二個紋理單位,還是考慮顏色量化時的alpha,並使用包含alpha的調板格式。
在網絡上有一個名爲BRIGHT的命令行色彩量化工具。它在用alpha處理圖像方面做了令人難以置信的工作。你可能想嘗試一下。
不。一般來說,圖形芯片真的不喜歡碼垛紋理(爲什麼?因爲從它讀取任何紋理元素需要兩次內存讀取,其中一個索引和另一個進入調色板,正常讀取的延遲時間加倍)。
如果您只是在保存內存後才查看壓縮紋理格式。特別是在iPhone中,它支持2位/像素和4位/像素的PVRTC壓縮格式。壓縮是有損的(就像調色板壓縮通常是有損的),但是內存和帶寬的節省是相當大的。
調色板紋理將在iPhone上加載GPU時加載,因此除了存儲大小以外,您不會獲得任何優勢。卡通風格遊戲的最佳選擇是探索使用PVRTC壓縮紋理(如NeARAZ說)和16位紋理(RGBA4444用於alpha,RGBA5551用於穿透,RGB565用於不透明紋理)。使用兩者的混合是我自己的方法。
嗨。我很抱歉,你打算什麼意思?你可以指點我關於使用RGBA4444的任何教程或資源(因爲我只在RGBA8888中有精靈片,而且它對iPhone的內存太重了) – 2010-01-05 16:16:23
- 1. OpenGL ES 2.0 PNG alpha通道
- 2. 使用OpenGL ES透明紋理而不使用Alpha通道
- 3. OpenGL-ES變量紋理alpha(2D)?
- 4. OpenGL多位Alpha紋理
- 5. 在OpenGL ES中使用malloc Scribble時紋理的alpha通道不工作
- 6. iPhone - OpenGL ES 1.1 - Alpha Blend使紋理顏色錯誤
- 7. Opengl:使用紋理只給一個有色物體的alpha通道
- 8. 帶有Alpha通道的WPF 3D紋理
- 9. 的OpenGL ES着色器多紋理
- 10. 關於具有8個紋理單元的opengl es多紋理着色器的想法
- 11. OpenGL ES iPhone紋理
- 12. OpenGL ES 2.0紋理
- 13. OpenGL ES 2.0紋理顯示黑色
- 14. Android opengl es和白色紋理
- 15. OpenGL ES 1.1顏色在字體紋理
- 16. OpenGL ES繪製黑色紋理
- 17. 在OpenGL中繪製紋理,同時忽略Alpha通道
- 18. 在OpenGL中只使用alpha通道紋理?
- 19. 當手動添加alpha通道時,紋理在opengl中變成灰色
- 20. 如何在Android上爲OpenGl-ES 2.0設置8位紋理?
- 21. 在OpenGL中渲染具有Alpha的紋理的3D模型
- 22. OpenGL - 使用紋理的alpha通道和「全局」不透明度
- 23. OpenGL ES的旋轉紋理
- 24. 的OpenGL ES 2.0:在紋理
- 25. iOS和OpenGL ES上的單通道紋理3
- 26. OpenGL ES - 紋理映射8頂點立方體的所有面?
- 27. OpenGL ES 2.0中具有不同紋理的許多對象
- 28. 如何在OpenGL ES中移動具有紋理的形狀?
- 29. OpenGL ES的多紋理alpha混合問題
- 30. OpenGL:爲什麼複製紋理時alpha通道設置爲255?
謝謝!我意識到紋理壓縮,但可惜的是壓縮僞像對於我的目的來說太明顯了(這是一個卡通2D遊戲)。 – zoul 2009-01-12 07:39:31