Как встроить информацию о шейдерах в файл .x

Я пишу небольшую графическую программу, используя directx9, которая импортирует некоторые файлы моделей, созданные с помощью блендера, из файлов .x. Все идет нормально.

У моделей есть материалы с текстурами, и получить имена текстур и правильно отобразить объекты просто, однако я хотел бы использовать разные файлы эффектов (шейдеров) для некоторых материалов, но я не могу найти способ встроить информацию о том, какой шейдер использовать в модели в .x файле.

Лучшая идея, которая у меня была, состояла в том, чтобы посмотреть на имя файла текстуры в моем приложении d3d9 и жестко запрограммировать таблицу поиска имени текстуры для файла эффекта. Но это не кажется элегантным, а также означает, что мне придется копировать и переименовывать текстуры только для того, чтобы использовать одну и ту же текстуру с разными шейдерами.

Я чувствую, что мне не хватает более простого способа сделать это, какие-либо предложения?


person jcoder    schedule 26.07.2009    source источник


Ответы (1)


В отличие от файлов текстурных изображений, задание шейдерной программы может быть очень сложным. Вам нужен текст шейдера, а также спецификации необходимых ему параметров и способ, которым любой, кто читает файл, узнает, какие значения установить для параметров и как. Некоторым шейдерам, в свою очередь, требуются текстуры и параметры, а иногда эти текстуры должны генерироваться приложением (например, в случае 3D-текстуры с шумом Перлина).
Короче говоря, нет способа придумать стандартный способ. для общего указания шейдеров, которые могут быть полностью интегрированы в файловый формат, такой как .x. Ваш единственный выбор — придумать что-то специальное для вашего приложения. Метод, который вы предлагаете в вопросе, так же хорош, как и любой другой.

person shoosh    schedule 26.07.2009