У меня есть шейдер (в .fx
файл), который имеет части, как, что (которые используют SAS):Чтение семантики и аннотации HLSL с помощью API DirectX 11?
cbuffer UpdatePerObject : register(b1)
{
float4x4 worldViewIT : WorldViewInverseTranspose < string UIWidget = "MyName"; >;
float4x4 world : World < string UIWidget = "None"; >;
};
Я использую DirectX 11 и моя программа в C++.
Различные шейдеры потребуют разных матриц, текстур и т. Д. Я хочу установить их в эти шейдеры на основе их семантики & аннотаций.
Я могу сделать это, просто разобрав файл .fx
вручную и ищем : ... <...>
шаблон. Или, может быть, API DirectX 11 имеет некоторые специальные методы или подход для этого.
Дополнительное чтение всех шейдеров от руки для поиска семантики & аннотации выглядят как немного завышенные.
Итак, без использования сторонних библиотек я больше не могу это делать с DirectX 11 (как я был, например, в DirectX 9)? Мне просто нужно получить семантическое имя для моей матрицы из шейдера (в '.fx' или в .hlsl'). – PolGraphic
Это не совсем сторонняя библиотека, она от Microsoft и основана на поддержке FX, которая использовалась для отправки в составе SDK. Они вытащили большую часть того, что использовалось для создания D3DX, чтобы открыть библиотеки с открытым исходным кодом. Это было сделано отчасти потому, что, когда DirectX SDK переместился в Windows SDK, они были бы ограничены, когда они могли бы выпускать обновления для вспомогательных библиотек. – mattnewport
Если вы хотите получить семантику для файла шейдера (а не для конкретной информации в FX), используйте API-интерфейсы D3DReflect: https://msdn.microsoft.com/en-us/library/windows/desktop/ff728670(v=vs .85) .aspx – mattnewport