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

StackOverflow https://stackoverflow.com/questions/1184744

  •  19-09-2019
  •  | 
  •  

Вопрос

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

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

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

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

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top