SharpDx получить переменную шейдера Имена Texture2D,SamplerState
Мне интересно, возможно ли получить имена переменных Texture2D и SamplerState. Я знаю, что смогу получить это через Framework эффектов. Но я ищу способ без этой рамки. Как и в случае с константбуферами (ShaderReflection). Я хочу сделать код HLSL, как это
Texture2D tex0;
Texture2D bg;
Кто-нибудь есть идея, как я мог бы получить доступ к VariableNames без EffectsFramework?
1 ответ
Решение
Хорошо, здесь все просто, сначала скомпилируйте свой шейдер, чтобы получить байт-код.
Затем создайте экземпляр ShaderReflection
byte[] yourbytecode;
SharpDX.D3DCompiler.ShaderReflection sr;
sr = new ShaderReflection(yourbytecode);
Чтобы узнать, сколько ресурсов связано:
int ResourceCount = sr.Description.BoundResources;
Затем, чтобы получить подробную информацию об этом:
InputBindingDescription desc = sr.GetResourceBindingDescription(index);
Он содержит имя, размерность и другие полезные данные.