2009-08-31 8 views
0

私はしばらくこの問題を抱えていましたが、以前誰かがこの問題に遭遇したのかどうか疑問に思っていました。D3DXFont :: DrawTextを使用しているときに、重複するテキストが別のテクスチャのZバッファにレンダリングされるのはなぜですか?

私が取り組んでいるアプリケーションは、画面の下部に複数のデータプロットと1つのタイムラインに分かれています。各プロット(実際には互いに重ね合わされた複数のテクスチャ)とタイムラインは別々のテクスチャにレンダリングされます。タイムラインテクスチャが最初にレンダリングされ、続いてスクリーンの上端から下端までの各プロットテクスチャが表示されます。私はDXUTとDirectX9(2009年3月)を使用しています。

タイムラインテクスチャにタイム・テキストを追加した後、すべてのデータ・プロットのタイトル・バーにテキストが繰り返し表示されていました。ここでは、ディスプレイの一部のSCREENCAPだ、それだけで、単一のプロットを示しているが、テキストはすべてのプロットに繰り返されるが開か:

alt text

それはのDrawTextは、タイムラインの中で呼び出されているに直接接続されるように思えますレンダー機能。私はDrawTextに渡される矩形として相対座標を使用していますが、レンダーターゲットを既に希望のテクスチャに設定しているので、現在のテクスチャにのみ影響するはずです。後でレンダーされるすべてのテクスチャではありません

D3DXFontを使用してこのような問題に遭遇したことがありますか?

EDIT:もう少し実験を重ねると、Zバッファと何か関係があるように見えます。各テクスチャサーフェス上のクリアにD3DCLEAR_ZBUFFERを追加すると、重複したテキストはなくなります。この問題は今のところ回避されているようですが、なぜ私のDrawText呼び出し中に完全に別のテクスチャのZバッファが書き込まれたのか不思議です。

答えて

2

Zバッファの状態は永続的です。例えば

SetDepthStencilSurface(X) 
SetRenderTarget(A) 
Draw() 
SetRenderTarget(B) 
Draw() 

両方は、コールが同じ深度バッファを使用する描画します。

DrawTextは、設定したデプスバッファを変更していません。それは、あなたがしたことをすることを意図していると仮定します。

関連する問題