gpt4 book ai didi

c++ - PNG Gamma 校正

转载 作者:行者123 更新时间:2023-11-30 02:19:12 28 4
gpt4 key购买 nike

我使用 DirectXTex 库捕获 DX11 游戏的屏幕截图并将其保存到文件中。问题是当我将它保存为 jpeg 时效果很好,但如果我将它保存为 png 图像会变得非常明亮并被洗掉。我使用 TweakPNG 检查图像,发现 Gamma 设置为 1.0,这就是导致问题的原因。 TweakPNG我检查了一些其他软件拍摄的图像,包括截图工具,它们似乎使用 0.45455 作为 Gamma ,或者他们完全忽略了 Gamma 值。

我不知道 DirectXTex 是否会让我指定 Gamma 值。我什至不确定 WIC 是否具有此功能,因为我似乎无法在 MSDN 或其他站点上找到有用的信息。

最佳答案

默认 DirectXTex如果格式为 DXGI_FORMAT_*_SRGB,会将 sRGB block 添加到它写入的 PNG 文件中。此外,如果格式不是 DXGI_FORMAT_*_SRGB 我明确删除了 sRGB block 并将 gAMA block 设置为1.0,否则 WIC 总是 添加 sRGB block 。

您可以在 DirectXTexWIC.cpp 的代码中看到此行为在DirectX Tool KitScreenGrab.cpp模块。

如果您没有在渲染目标为 DXGI_FORMAT_*_SRGB 格式但具有 DXGI_FORMAT_* 格式的 sRGB 内容的情况下进行“gamma-correct”渲染,那么我的建议您将格式的 sRGB 版本传递给函数。

在 DirectXTex 中,这可以通过 MakeSRGB 函数轻松完成。

Gamma correction in the PNG format is a bit of a mess. See this blog post

关于c++ - PNG Gamma 校正,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51031085/

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