我正在使用Direct3d 11,并且遇到了一些奇怪的事情。我采用了正常的地图并将其编码为DDS文件两次。一旦用编码R8G8B8A8_SNORM,并用一次BC5_SNORM。采样BC5_SNORM纹理产生不正确的值范围
接着我加载结合使用D3DX11CreateShaderResourceViewFromFile每个纹理与D3DX11GetImageInfoFromFile。当我在像素着色器中对这些纹理进行采样时,我发现texture正在返回[-1,1]范围内的值,这正是我所期望的SNORM纹理。但是,纹理返回的值在[0,1]范围内,这对我没有任何意义。
我使用我的调试器和PIX加倍检查。纹理的格式是正确的(BC5_ * S * NORM),所以我不知道为什么它没有返回带符号的值。
您确定SSD文件在第二种情况下编码正确吗? – jcoder 2012-03-19 15:11:13
@JohnB我不知道你的意思。我使用** D3DX11CreateTextureFromFile **将PNG法线贴图加载为BC5_SNORM纹理,然后使用** D3DX11SaveTextureToFile **将其保存到DDS文件。我不知道那可能是什么问题。 – 2012-03-19 21:11:42
好吧,这只是一个想法,也许它被错误地转换了 – jcoder 2012-03-19 21:30:39