0

データの上に複数のオーバーレイを表示する必要があるウィンドウ化された Direct3D データ プロット アプリケーションに取り組んでいます (ゲームの HUD に似ています)。プロットが必要なデータが大量にある可能性があり、すべてのオーバーレイが毎回変更されるわけではないため、表示内のオーバーレイが 1 つだけ変更されたときに頂点を再プロットするのは得策ではないと考えました。

これにより、オーバーレイのテクスチャと頂点を透明な背景を持つ複数のテクスチャにレンダリングし、レンダリング ループでオーバーレイして個別に更新できる (Photoshop のレイヤーと同様) というアイデアに至りました。

このプログラムの大部分を、サーフェスではなくテクスチャにレンダリングするように変更することに着手する前に、テクスチャを使用することが最善のアプローチかどうか疑問に思っていました。

4

3 に答える 3

0

RTTはうまく機能し、最近行ったゲームで使用しました。各シーン(シーンはレイヤーを指し、「HUD」はシーン、「メイン」はメインシーンなど)がテクスチャにレンダリングされ、次に各テクスチャがクワッドにレンダリングされ、前後に並べ替えられました(アルファブレンディングの場合)。 )。後処理ができるので、シーンをバックバッファに直接レンダリングするだけでなく、これを選択しました。

キャッシングの目的では、これが最善の方法のようですが、テクスチャがメモリをすぐに消費する可能性があることに注意してください。場合によっては、すべてを再度レンダリングして、前に並べ替えることをお勧めします。

于 2009-06-08T22:59:02.223 に答える
0

テクスチャへのレンダリングは確かに機能し、良い方法かもしれませんが、おそらくやり過ぎです。最新の 3D ハードウェアは非常に高速であるため、プログラムに大幅な変更を加える前に、更新が必要なときに再レンダリングを行ってパフォーマンスが本当に問題になるかどうかを確認することをお勧めします。

パフォーマンスが問題になる場合は、プロットをレンダリングするコードの最適化に時間を費やしたほうがよいかもしれません。これは、オーバーレイを変更するだけでなく、データの変更を伴う更新にも役立つためです。私はゲームのグラフィック プログラマーであり、一般的にリアルタイム 3D では、最適化の取り組みを最善 (更新が必要なオーバーレイは 1 つだけ) ではなく、最悪のケース (すべてを再描画する必要があります) に集中させたいと考えています。

于 2009-07-16T00:15:25.330 に答える
0

テクスチャ レンダー ターゲット サーフェスへのレンダリングは非常に良いアイデアであり、最適化やキャッシュなどの多くの用途に使用できますが、通常のアルファ (a*c1 + (1-a)*c2) を使用したブレンド操作に注意してください。@ が ARGB ブレンドの場合、l1@l2@l3 != l3@l1@l2; つまり、可換ではありませんが、すべてのテクスチャ/レイヤーで事前に乗算されたアルファを使用することで、ブレンド操作を可換にすることができます。

最終的な参考文献は、1984 年の Porter/Duff の記事「Compositing Digital Images」です。

于 2010-07-23T08:41:40.877 に答える