DirectX11 HLSL 颜色输出问题

iamshuke 2018-02-27 11:30:29
请教大家,最近想了解一下DirectX11,就用SDK向导生成了个工程。但后来发现Pixel Shader中,返回的颜色float4和最终输出到屏幕上的颜色,不是线性关系。

例如
float4 PSMain() : SV_TARGET
{
return float4(0.5, 0.5, 0.5, 1.0);
}
最终输出的颜色是 R188 G188 B188。而在OpenGL或DirectX9中,应该是R127 G127 B127的。
用几组数据测试后,发现规律如下:
float RGB
0.008 22
0.04 56
0.05 63
0.1 89
0.2 124
0.5 188
1 255

请教,DirectX11是不是有设置颜色模式的地方,把HLSL输出搞成线性内差?
...全文
641 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-02-28
  • 打赏
  • 举报
回复
帮结帖+蹭分
zgl7903 2018-02-28
  • 打赏
  • 举报
回复
该回复于2018-02-27 17:05:28被管理员删除 请管理员出来解释下原因!!!
smwhotjay 2018-02-28
  • 打赏
  • 举报
回复
蹭分
iamshuke 2018-02-27
  • 打赏
  • 举报
回复
补充一下,用的DXUT框架。如果不用DXUT框架,结果是正确的。
iamshuke 2018-02-27
  • 打赏
  • 举报
回复
找到原因了,DirectX11 DXUT框架下,默认打开了Gamma校正,DXGI_FORMAT强制改成DXGI_FORMAT_R8G8B8A8_UNORM_SRGB了(自己设成DXGI_FORMAT_R8G8B8A8_UNORM也没用)。创建设备前用DXUTSetIsInGammaCorrectMode( false );关掉该功能就行了。

19,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧