【发布时间】:2012-07-07 02:49:30
【问题描述】:
我已经在各种设备上使用 Android 上的 OpenGL 玩了一段时间。除非我错了,否则默认渲染始终使用 RGB565 像素格式。
不过,我想使用 RGB888 渲染更准确的颜色。
GLSurfaceView 文档提到了两种与像素格式相关的方法:
- SurfaceHolder 公开的setFormat() 方法,由SurfaceView.getHolder() 返回
- GLSurfaceView.setEGLConfigChooser() 系列方法
除非我错了,我想我只需要使用后者。还是在这里使用SurfaceHolder.setFormat() 相关?
EGLConfigChooser 类的文档提到了EGL10.eglChooseConfig(),以发现可用的配置。
在我的情况下,如果 RGB888 不可用,则可以回退到 RGB565,但我希望这种情况很少见。
那么,是否可以在大多数设备上使用 RGB888?
这是否有任何兼容性问题或奇怪的错误?
您有设置 GLSurfaceView 以呈现 RGB888 的正确且可靠方法的示例吗?
【问题讨论】:
-
您总是可以渲染到 RGBA888 FBO,然后将结果 blit 到屏幕上。
-
感谢您的建议。我假设通过“blit”,您暗示使用 jnigraphics 库将帧缓冲区复制到位图,并刷新视图。不会有巨大的性能/fps 损失吗?
-
不,我所说的 blit 是指
glBlitFramebuffer到包含查看的 GL 渲染缓冲区的 FBO。