Директива включения DirectX HLSL не работает - PullRequest
3 голосов
/ 12 марта 2011

документ: http://msdn.microsoft.com/en-us/library/dd607349(v=vs.85).aspx

утверждает, что #include "foobar.fx" будет искать этот файл в том же каталоге, что и текущий файл эффекта.

Это не работает, но использование абсолютного пути работает, что, конечно, бесполезно.

Google ничего не придумала. Что-то мне здесь не хватает?

Ответы [ 3 ]

6 голосов
/ 11 ноября 2013

Существует встроенный обработчик по умолчанию для компилятора шейдеров Direct3D 11.

Это макрос: (c ++) D3D_COMPILE_STANDARD_FILE_INCLUDE

Вот ссылка на функцию D3DCompile.

http://msdn.microsoft.com/en-us/library/windows/desktop/dd607324(v=vs.85).aspx

Макрос упоминается в объяснении переменной include.

Мне потребовалось какое-то время, чтобы найти в Google довольно странно, но я прошел здесь попуть.Я думал, что выложу это на случай, если кто-нибудь еще окажется здесь.

5 голосов
/ 12 марта 2011

Эта автоматическая обработка работает только для инструмента автономного компилятора шейдеров, как указано в предоставленной вами ссылке. Если вы компилируете, используя один из API, вам нужно будет указать обработчик включения, который будет использоваться компилятором всякий раз, когда он встречает директиву include: ID3DInclude

0 голосов
/ 04 июля 2019

Я понял.

Оказывается, моя версия шейдера должна сочетаться с моим уровнем функций следующим образом.

Вершинный шейдер: vs_4_0_level_9_1

Пиксельный шейдер: ps_4_0_level_9_1

...