gpt4 book ai didi

Android EGL sRGB 默认渲染缓冲区

转载 作者:太空狗 更新时间:2023-10-29 12:44:39 30 4
gpt4 key购买 nike

在 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 设置。

有什么想法吗?

最佳答案

您绝对是在正确的轨道上,在 OpenGL ES 中获得 sRGB 默认帧缓冲区的唯一方法是通过 EGL。现在,EGL 1.4 没有对 GL 默认帧缓冲区上不同颜色空间的内置支持,但是您的系统可能支持一个名为 EGL_KHR_gl_colorspace 的扩展。 .

如果您的 EGL 实现支持此扩展,那么您可以在创建窗口表面时将以下属性对传递给 EGL:

EGL_GL_COLORSPACE_KHR, EGL_GL_COLORSPACE_SRGB_KHR

现在,事情变得有些有趣了……常量 EGL_GL_COLORSPACE_SRGB_KHR 与 EGL 1.3 中的 EGL_VG_COLORSPACE_sRGB 具有相同的值。 EGL_VG_COLORSPACE_sRGB 在 EGL 1.2 中被称为 EGL_COLORSPACE_sRGB。如果 sRGB OpenGL 颜色空间被提升为 EGL 1.5 的核心,它可能会再次重命名 - 回到它在 EGL 1.2 中的名称;)

长话短说,如果您的实现支持此扩展,您也可以为 OpenGL 表面使用 EGL_VG_COLORSPACE... 常量。它基本上扩展了 OpenVG 对 OpenGL 的功能,一直到对常量使用完全相同的数值。

关于Android EGL sRGB 默认渲染缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20396523/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com