Собрать конфигурационный файл в исполняемый файл? - PullRequest
1 голос
/ 20 мая 2010

В настоящее время я работаю над небольшой графической демонстрацией (с использованием DirectX), которая в основном основана на шейдере HLSL, над которым я работаю. Используя D3DX10CreateEffectFromFile, я загружаю (и компилирую шейдер) во время выполнения, так как мне легче его настроить.

Однако, как только я закончу, я бы хотел сделать несколько комбинаций из следующего:

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

Прежде всего, я хочу сделать это, потому что я хочу, чтобы демо было просто одним файлом, который можно очень легко скопировать.

Одна вещь, которую я мог бы легко сделать, это просто поместить исходный текст прямо в cpp, но это было бы очень утомительно, мне нужно было обновить его позже.

Можно ли сделать что-то подобное (используя Visual Studio, DirectX, HLSL)?

1 Ответ

2 голосов
/ 21 мая 2010

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

Лично я бы пошел с чем-то вроде большого двоичного файла. Начало файла имеет оглавление. В основном ID шейдера и смещение. Смещение тогда соответствует тому, где начинаются двоичные скомпилированные данные. Вы можете поместить 4 байта в верхней части каждого скомпилированного шейдера, который говорит, как долго это будет продолжаться. Вставка нового шейдера может быть проблематичной, так как для этого требуется перемещение большого количества данных, но это не является проблемой в автономном режиме.

...