4
レンダリングコードでID3D11InputLayoutを処理するのに最適な方法は?
directx11コードで入力レイアウトを処理するエレガントな方法を探しています。 EffectクラスとElementクラスがあるという問題があります。エフェクトクラスはシェーダーと同様の設定をカプセル化し、Elementクラスは描画可能なもの(3dモデル、lanscapeなど)を含みます 私の描画コードは、指定された効果を使用してデバイスシェーダーなどを設定し、次にElementのdraw関数を呼び出して、それに含まれる実際のジオメトリを描画します。 問題はこれです-どこかにD3D11InputLayoutを作成する必要があります。これは実際にはElementクラスに属します。これは、その要素が頂点レイアウトを表すためにどのように選択するかは、システムの他の部分のビジネスではないためです。ただし、オブジェクトを作成するために、APIはオブジェクトの描画に使用される頂点シェーダーの頂点シェーダーバイトコードを必要とします。directx9では簡単で、依存関係がなかったので、要素に独自の入力レイアウト構造を含め、影響を与えることなくそれらを設定できました。 しかし、要素は、それが描画されている効果について何も知っている必要はありません。それは単にレンダリング設定であり、要素はジオメトリを提供するために存在します。 そのため、保存する場所と、各描画呼び出しに対してInputLayoutを選択する方法が本当にわかりません。つまり、私は何かを働かせましたが、それは非常に醜いようです。 これは私が何か明白なものを逃したことを私に引き起こします、さもなければ、すべてのレンダリング設定をエフェクトに、要素にジオメトリを、そしてそれをすべて描画するサードパーティを持っている私のデザインはただ欠陥があります。 他の誰かがdirectx11で入力レイアウトをエレガントな方法でどのように処理するのか疑問に思っていますか?