1

シミュレーションの要素を表す多くの 2D アイコンと、別のより重要な要素を表す 3D (.x は Blender で作成) のアイコンがあるシミュレーターのビジュアルを作成しています。

これを他の 2D アイコン (.tga) の上に作成する必要がありますが、これを作成する方法が見つかりません。Direct x で残りの 2D アイコンの上に 3D アイコンを描画することはできますか? この時点で、2D アイコンは常に 3D の上に表示されます。

誰かがこれを手伝ってくれませんか。私は C++ でプログラミングしています。

4

2 に答える 2

0

2D アイコンをレンダリングするときは、Z 書き込みを無効にします。次に、Z 書き込みを有効にして 3D アイコンをレンダリングすると、2D アイコンの上にレンダリングされます。

現在の問題は、2D アイコンをレンダリングするときに、z バッファーの前にある az 値 (おそらく 0) を使用してレンダリングしていることです。また、z 値を 1 に設定して (これもおそらく、2D レンダリングの設定方法に完全に依存します)、2D アイコンを z バッファーの後ろに強制的にレンダリングすることができます。

Z バッファーにエントリがないことは、Z オーダーの後ろにあることと同等です。

于 2011-03-07T11:45:04.733 に答える
0

深度バッファリングが有効になっていると仮定すると、アイコンの Z 値がモデルよりもカメラから離れていることを確認する必要があります。ID3DXSprite を使用している場合は、Draw 関数を呼び出すとき、またはID3DXSprite::SetTransform()関数を使用して、Z 位置を指定できるはずです。

ID3DXSprite::Begin() に渡すフラグによっては、ID3DXSprite がモデルとは異なる射影行列でスプライトを描画する場合があることに注意してください。D3DXSPRITE_OBJECTSPACEフラグを使用することもできます。

于 2011-03-07T11:45:47.347 に答える