学習課題として、遅延レンダリングエンジンを作成しました。このエンジンにシーングラフを追加したいのですが、その方法に少し戸惑っています。
通常の(フォワードレンダリングエンジン)では、すべての項目(すべてIDrawableとIUpdateAbleを実装)をシーングラフに追加するだけで、最初にシーングラフの幅を移動し、どこにでもDraw()を呼び出します。
ただし、遅延レンダリングエンジンでは、描画呼び出しを分離する必要があります。すべてを組み合わせる前に、まずジオメトリを描画し、次にシャドウキャスター、次にライト(すべて異なるレンダーターゲットに対して)を描画する必要があります。したがって、この場合、シーングラフ上を移動して、drawを呼び出すだけでは済みません。私の見方では、シーングラフ全体を3回移動して、描画する必要があるオブジェクトの種類を確認するか、何らかの方法で相互に接続された3つの個別のシーングラフを作成する必要があります。これらはどちらも貧弱なソリューションのようですが、シーンオブジェクトをより透明に処理したいと考えています。
私が考えていたもう1つの解決策は、通常どおりシーングラフを移動し、アイテムを3つの個別のリストに追加し、ジオメトリ、シャドウキャスター、ライトを分離し、これらのリストを反復して正しいものを描画することでした。フレームごとに3つのリストを再入力するのは賢明ですか?