当使用函数:D3DXSaveTextureToFile并传入D3DXIFF_BMP来创建一个bmp我注意到这些值似乎是估计而不是具体给出。
如果我错了,请纠正我,但是浮点纹理可以在任何给定的纹理元素中存储任何浮点数,这会使它超出滞留在rgb(255,255,255,255)之间的BMP范围,所以看起来函数是做就是简单地获取纹理的最高和最低值,并在该范围之间对其进行标准化。
所以我的问题是:是否有可能完全像在内存中那样获取值?包括何时颜色超出计算机显示器的规格?
答案 0 :(得分:4)
不要使用BMP。使用支持所需数据类型的格式。对于DX纹理,似乎D3DXIFF_PFM
格式是您需要的。它的描述如下:
便携式浮动地图格式。原始的 浮点图像格式,没有 任何压缩。文件头 指定图像宽度,高度, 单色或彩色和机器字 订购。像素数据存储为32位 浮点值,有3个值 每个像素的颜色,每个值一个 单色像素。
请注意,图像会很大。这种格式的256x256纹理应该重约768 KB。
更新:您应该可以使用Image Magick的display命令以此格式查看图像。 HDRView也支持PFM格式。第三种选择可能是fv。