2 Stimmen

SharpDx erhalten Shader-Variablennamen von Texture2D, SamplerState

Ich frage mich, ob es möglich ist, die Variablennamen von Texture2D und SamplerState zu erhalten. Ich weiß, dass ich diese über das Effects Framework bekommen kann. Aber ich suche nach einem Weg ohne dieses Framework. Wie der Weg mit Constant Buffers (ShaderReflection). Ich möchte den HLSL-Code so machen

   Texture2D tex0;
   Texture2D bg;

Hat jemand eine Idee, wie ich die Variablennamen ohne das EffectsFramework zugreifen könnte?

2voto

mrvux Punkte 8148

Ok ziemlich einfach hier, zuerst kompilieren Sie Ihren Shader, um Bytecode zu erhalten.

Erstellen Sie dann eine Instanz von ShaderReflection

byte[] deinbytecode;
SharpDX.D3DCompiler.ShaderReflection sr;
sr = new ShaderReflection(deinbytecode);

Um herauszufinden, wie viele Ressourcen gebunden sind:

int ResourceCount = sr.Description.BoundResources;

Dann um Details dazu zu erhalten:

InputBindingDescription desc = sr.GetResourceBindingDescription(index);

Es enthält Namen, Dimension und andere nützliche Daten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X