【问题标题】:Generating a 16-bits per channel PNG file procedurally以程序方式生成每通道 16 位的 PNG 文件
【发布时间】:2013-05-09 12:02:26
【问题描述】:

有没有办法使用 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 文件。

【问题讨论】:

  • 为什么不直接使用libpng呢?

标签: directx png tiff 16-bit


【解决方案1】:

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

【讨论】:

  • 感谢建议,我会试试看的。
猜你喜欢
  • 2017-04-07
  • 1970-01-01
  • 2012-05-27
  • 1970-01-01
  • 2018-01-29
  • 2014-08-10
  • 1970-01-01
  • 2020-12-02
  • 2011-03-12
相关资源
最近更新 更多