我什么时候应该使用 GL_SRGB8 而不是 GL_RGB8?

Rob*_*son 6 opengl srgb

关于 RGB 和 sRGB,我的以下理解(或不正确)是否正确?

  1. 我将创作的图像(.png)读入GL_SRGB8格式纹理。
    • (q) 当从 (1) 采样纹理时,硬件将从 sRGB 转换为线性颜色空间?
  2. 我将创作的图像读入GL_RGB8纹理。
    • (q) 当从 (2) 采样纹理时,硬件不会从 sRGB 转换为线性?
  3. GL_FRAMEBUFFER_SRGB在管道的最后阶段设置为 true。
    • (q) 当显示后台缓冲区时,硬件会从线性颜色空间转换为 sRGB 颜色空间吗?
  4. 我有一个有 5 个阶段的管道,每个阶段都写入一个浮点纹理 ( GL_RGBA16F)
    • (q) 整个流水线直到最后阶段都是线性的,前提是 (1) 和 (3) 为真。

dat*_*olf 5

基本上是的。然而 (3) 有一个额外的限制:对于执行线性 RGB 到 sRGB 转换的帧缓冲区,颜色附件本身必须是 SRGB 格式,即是 sRGB 纹理、渲染缓冲区或具有 sRGB 像素格式的主窗口。