我在各種設備上使用Android上的OpenGL玩了一段時間。除非我錯了,否則默認渲染總是以RGB565像素格式執行。使用OpenGL可以在RGB888中渲染嗎?
但是我想用RGB888渲染更準確的顏色。
的GLSurfaceView文檔中提到的兩種方法,其涉及到的像素格式:
- 的setFormat()方法通過SurfaceHolder露出,通過SurfaceView.getHolder()
- 的GLSurfaceView.setEGLConfigChooser()家族的方法所返回
除非I」米錯了,我想我只需要用後面的。或者在這裏使用SurfaceHolder.setFormat()
?
EGLConfigChooser類的文檔提到EGL10.eglChooseConfig(),以發現哪些配置可用。
在我的情況下,如果RGB888不可用,可以回退到RGB565,但我更喜歡這種情況非常罕見。
那麼,在大多數設備上是否可以使用RGB888?
有沒有兼容性問題或怪異的錯誤?
你有沒有一個正確可靠的方法來設置GLSurfaceView渲染RGB888的例子?
您可以隨時渲染到RGBA888 FBO,然後將結果閃爍到屏幕上。 – kvark 2011-04-15 21:28:23
感謝您的建議。我假設通過「blit」你意味着使用jnigraphics lib將framebuffer複製到一個Bitmap,並刷新一個View。是不是會有一個巨大的表現/ fps罰款? – olivierg 2011-04-15 22:20:35
不,blit我的意思是'glBlitFramebuffer'到包含所查看的GL渲染緩衝區的FBO上。 – kvark 2011-04-16 12:07:02