2011-02-04 15 views
1

私はXNAを使用してデータを表示していますが、私はデータ用に掲示板を使用し、HUDテキスト描画用にはスプライトバッチを使用しようとしています。看板用XNA SpriteBatchがBasicEffectで問題を引き起こしています

私は素晴らしい作品これは、次の例を使用しています、: http://create.msdn.com/en-US/education/catalog/sample/3d_audio

をその例では、猫は犬のか、後ろの前を通過猫と犬スプライトは、そこにあります、あなたの期待どおりの位置とカメラの位置に依存します。 Cat.DrawとDog.Drawがどのような順序で呼び出されても問題ありません。これらの人はBasicEffectから引き出されます。

DrawableGameComponentを継承し、SpriteBatchを使用するクラスを追加すると、他のコンポーネントのBasicEffectが深度ソートを失い、Quadsが呼び出された順に描画されます。このコンポーネントは、this.Components.Add(...)を介してGameクラスに追加されています。

BasicEffectとSpriteBatchの間に互換性がありませんか?この問題は、SpriteBatch.Begin()/ End()が呼び出されるたびに発生します。もし私がこれを猫/犬と呼んでいないのであれば、大丈夫です。

アイデア?

答えて

2

SpriteBatchが変更する一部のレンダリング状態をリセットする必要があります。

は、あなたのbasiceffectの呼び出し前に、これらを設定してみてください:状態SpriteBatch変更をレンダリングするかについて

GraphicsDevice.BlendState = BlendState.Opaque; 
GraphicsDevice.DepthStencilState = DepthStencilState.Default; 

詳細情報: http://blogs.msdn.com/b/shawnhar/archive/2010/06/18/spritebatch-and-renderstates-in-xna-game-studio-4-0.aspx

+0

はこれを指摘するためにどうもありがとうございます。私がXNA4を使用しているので、あなたが投稿した記事の一番上にある2010年の更新リンクに従わなければなりませんでした。 5秒間私を受け取り、魅力的に働いた。再度、感謝します。 – bufferz

+0

良い点、私はリンクを更新しました、ありがとう:) – Olhovsky

関連する問題