我在各种设备上使用Android上的OpenGL玩了一段时间.除非我错了,否则默认渲染始终使用RGB565像素格式.
但是,我想使用RGB888渲染更准确的颜色.
所述GLSurfaceView文档中提到的两种方法,其涉及像素格式:
除非我错了,我想我只需要使用后者.或者SurfaceHolder.setFormat()在这里使用相关?
EGLConfigChooser类的文档提到了EGL10.eglChooseConfig(),以发现可用的配置.
在我的情况下,如果RGB888不可用,可以回退到RGB565,但我更喜欢这种情况.
那么,是否可以在大多数设备上使用RGB888?
这有什么兼容性问题或奇怪的错误吗?
您是否有正确可靠的方法来设置GLSurfaceView以渲染RGB888?
小智 11
在较新的设备上,大多数设备应支持RGBA8888作为原生格式.强制RGBA颜色格式的一种方法是设置曲面的半透明度,除了深度和模板缓冲区之外,您仍然希望选择EGLConfig来最好地猜测通道的配置.
setEGLConfigChooser(8, 8, 8, 8, 0, 0);
getHolder().setFormat(PixelFormat.RGBA_8888);
Run Code Online (Sandbox Code Playgroud)
但是,如果我正确地阅读了您的问题,那么就要求RGB888支持(alpha不关心),RGBX8888可能不受所有设备支持(驱动程序供应商限制).
关于性能需要注意的事项,因为RGBA8888是大多数GPU硬件本身支持的颜色格式,最好避免使用任何其他颜色格式(非原生支持),因为这通常转换为颜色转换,在下面添加非必要的工作负载GPU.
| 归档时间: |
|
| 查看次数: |
6729 次 |
| 最近记录: |