2

Texture2D と SamplerState の変数名を取得できるかどうか疑問に思っています。私はエフェクト フレームワークを介してそれらを取得できることを知っています。しかし、私はこのフレームワークなしで方法を探しています。Constantbuffers (ShaderReflection) の場合と同様です。このようなHLSLコードを作りたい

   Texture2D tex0;
   Texture2D bg;

EffectsFrameworkなしでVariableNamesにアクセスする方法を知っている人はいますか?

4

1 に答える 1

2

ここでは非常に簡単です。最初にシェーダーをコンパイルしてバイトコードを取得します。

次に ShaderReflection のインスタンスを作成します

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

バインドされているリソースの数を確認するには:

int ResourceCount = sr.Description.BoundResources;

次に、それに関する詳細を取得します。

InputBindingDescription desc = sr.GetResourceBindingDescription(index);

名前、次元、およびその他の有用なデータが含まれています。

于 2013-07-09T12:25:15.613 に答える