问题描述
我有识别 sRGB 的代码,即图像数据位于 sRGB 空间中。出于某种原因,保存图像数据的纹理也保存了不是 sRGB 的其他图像数据。因此,在着色器中,我应用通常的公式将 sRGB 转换为线性(我们不讨论过滤问题)。在本机上,它显示正确。在 WebGL2 测试应用程序中,使用 SDL 获取“窗口”和 GL 上下文,它是暗的,结果与渲染内容时在本机中发出 glDisable(GL_FRAMEBUFFER_SRGB) 基本相同。
在另一个测试中,图像数据位于使用 sRGB 纹理的 sRGB 空间中。在 WebGL2 测试应用程序中,使用 SDL 获取“窗口”和 GL 上下文是黑暗的,结果与在渲染内容时在本机中发出 glDisable(GL_FRAMEBUFFER_SRGB) 基本相同。相比之下,原生的亮度是正确的。无意中,我修改了代码,使纹理的内部格式为 GL_RGBA8 而不是 GL_SRGB8_ALPHA8,瞧,它对 WebGL2 显示没有影响,并使原生(正确)变暗。
这些结果适用于 Safari 和 Chrome。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)