在程序上生成每通道16位的PNG文件

时间:2013-05-15 03:13:27

标签: directx png tiff 16-bit

有没有办法使用D3DX11SaveTextureToFile生成每通道16位(RGBA)的PNG文件? 或任何版本的DirectX,任何图像库(C ++),任何图像格式

我试着在这里使用示例代码: http://msdn.microsoft.com/en-us/library/windows/desktop/bb205131(v=vs.85).aspx

并将函数名称修改为D3D11版本。

当我将desc.Format设置为DXGI_FORMAT_R8G8B8A8_UNORM时,程序运行正常。

但是当我将desc.Format更改为DXGI_FORMAT_R16G16B16A16_UNORM时,D3DX11SaveTextureToFile返回E_FAIL。

我尝试使用DevIL(开发人员的图像库),但它不支持每通道16位的png文件。

1 个答案:

答案 0 :(得分:0)

唯一可以保存所有纹理格式的格式是D3DX11_IFF_DDS。似乎D3DX11SaveTextureToFile无法保存16Bit png。一种可能性是提取纹理的图像数据,并使用此处讨论的一种可能性(例如OpenCV或libpng)手动保存:Writing 16 bit uncompressed image using OpenCV