2

使用函数时:D3DXSaveTextureToFile 并传入 D3DXIFF_BMP 以创建 bmp 我注意到这些值似乎是估计的,而不是具体给出的。

如果我错了,请纠正我,但是浮点纹理可以将任何浮点数存储在任何给定的纹素中,这会将其置于卡在 rgb(255,255,255,255) 之间的 BMP 范围之外,所以看起来函数正在做的只是取纹理的最高和最低值并在该范围之间对其进行归一化。

所以我的问题是:是否可以完全按照内存中的值获取值?包括当颜色超出计算机显示器的光谱范围时?

4

1 回答 1

4

不要使用 BMP。使用支持所需数据类型的格式。对于 DX 纹理,格式似乎D3DXIFF_PFM是您所需要的。它是这样描述的:

便携式浮动地图格式。未经任何压缩的原始浮点图像格式。文件头指定图像宽度、高度、单色或颜色以及机器字序。像素数据存储为 32 位浮点值,彩色每个像素 3 个值,单色每个像素一个值。

请注意,图像会很大。这种格式的 256x256 纹理应该在 768 KB 左右。

更新:您应该能够使用Image Magick的 display 命令以这种格式查看图像。HDRView 也支持PFM 格式。第三个选择可能是fv

于 2009-10-14T12:44:07.373 回答