2009-10-14 3 views
2

При использовании функции: D3DXSaveTextureToFile и передачи в D3DXIFF_BMP для создания BMP Я заметил, что значения, по-видимому, оцениваются, а не указаны конкретно.Как библиотека d3dx сохраняет текстуры в файлах?

Исправьте меня, если я ошибаюсь, но текстура с плавающей точкой может хранить любой поплавок в любом текстеле, который выведет его за пределы диапазона BMP, который застрял между rgb (255,255,255,255), так что кажется, что функция делает просто взятие верхнего и самого нижнего значения текстуры и нормализации его между этим диапазоном.

Так что мой вопрос: возможно ли захватить значения точно так, как они есть в памяти? в том числе, когда цвета находятся за пределами спектра монитора компьютера?

ответ

4

Не используйте BMP. Используйте формат, который поддерживает нужный тип данных. Для текстур DX кажется, что формат D3DXIFF_PFM - это то, что вам нужно. Это описано так:

Портативный формат карты плавания. Необработанный формат изображения с плавающей запятой, без любого сжатия. Заголовок файла определяет ширину изображения, высоту, монохромный или цветной и машинное слово заказ. Пиксельные данные сохраняются как 32-разрядные значения с плавающей запятой, с 3 значениями на пиксель для цвета, и одно значение за пикселей для монохромного изображения.

Обратите внимание, что изображения будут большими. Текстура 256x256 в этом формате должна весить около 768 КБ.

Обновления: Вы должны быть в состоянии использовать команду отображения для просмотра изображений в этом формате. Также HDRView поддерживает формат PFM. Третий вариант может быть fv.