在 OpenGL ES 中,我可以使用扩展名为 GL_EXT_sRGB 的 OpenGL ES 3.0 或 OpenGL ES 2.0 创建 sRGB 渲染缓冲区。我创建了一个内部格式为 GL_SRGB8_ALPHA8(或 GL_SRGB8_ALPHA8_EXT)的可渲染纹理,它在支持它的 Android 设备上运行良好。
但是,我找不到任何方法让默认渲染缓冲区在 Android 上使用 sRGB。我正在使用 GLSurfaceView,所以它通过 EGL 和 eglChooseConfig,但我找不到控制 sRGB 设置的属性(如果有的话)。
我当然可以通过渲染到一个 sRGB 目标然后在显示之前复制到后台缓冲区来解决它,但这相当浪费。在 OpenGL 和 DirectX 中执行起来要容易得多,但是 OpenGL ES 需要在创建渲染缓冲区/帧缓冲区时应用 sRGB 设置。
有任何想法吗?