使用 Emscripten 的 SDL 的 WebGL 渲染对于 sRGB 感知代码来说太暗了

问题描述

我有识别 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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...