2013-05-15 2 views
0

Есть ли способ генерировать PNG-файл на 16 бит на канал (RGBA) с использованием D3DX11SaveTextureToFile? Или любая версия DirectX, любая библиотека изображений (C++), любой формат изображенияГенерирование 16-битного PNG-файла процедурно

Я пытался использовать образец кода здесь: http://msdn.microsoft.com/en-us/library/windows/desktop/bb205131(v=vs.85).aspx

и изменяли имена функций для D3D11 версии.

Программа отлично работает, когда я устанавливаю desc.Format в DXGI_FORMAT_R8G8B8A8_UNORM.

Но D3DX11SaveTextureToFile возвращает E_FAIL, когда я изменил desc.Format на DXGI_FORMAT_R16G16B16A16_UNORM.

Я попытался использовать DevIL (библиотеку изображений разработчика), но он не поддерживает 16-битный PNG-файл канала.

+0

Почему бы не использовать libpng напрямую? – Fabel

ответ

0

Единственный формат, который может сохранить все текстурные форматы, - D3DX11_IFF_DDS. Кажется, что D3DX11SaveTextureToFile не может сохранить 16Bit pngs. Одна из возможностей состоит в том, чтобы извлечь imagedata вашей текстуры и сохранить ее вручную с помощью одной из возможностей (например, OpenCV или libpng), обсуждаемой здесь: Writing 16 bit uncompressed image using OpenCV.

+0

Спасибо за предложения, я попробую. – Vivacissimo