0

彩度低下とホワイト ノイズ効果を XNA プロジェクトに適用しようとしてきましたが、なんとか実行できましたが、描画順序でいくつかの問題が発生しています。

以下のコードでは、コメントアウトされた行が問題の原因です。それらがコメントされている場合、描画順序の問題は修正されますが、画面の彩度は低下しません。コメントを外すと、画面の彩度が低下しますが、描画順序の問題が発生します。

//GraphicsDevice.SetRenderTarget(scaleupTarget);
GraphicsDevice.Clear(Color.SeaGreen);            

DrawModel(building_a_mdl, (Matrix.Identity * Matrix.CreateTranslation(100, -14, -100)), building_a_tex);

/*GraphicsDevice.SetRenderTarget(null);
scaleupEffect.Parameters["RandomOffset"].SetValue((float)rng.NextDouble());
GraphicsDevice.Textures[1] = noiseTexture;
spriteBatch.Begin(
    SpriteSortMode.Texture,
    BlendState.AlphaBlend,
    SamplerState.PointClamp,
    null,
    null,
    scaleupEffect);
spriteBatch.Draw(scaleupTarget, Vector2.Zero, null, Color.White, 0.0f, Vector2.Zero, upScaleAmount, SpriteEffects.None, 0.0f);
spriteBatch.End();*/

問題で 問題で

4

2 に答える 2

0

を変更しようとしてもDepthStencilState、それが問題の鍵を握っていると思います。

呼び出しのプロセスは、呼び出しSpriteBatch.Begin()の 2D レンダリングには必要ないため、深度バッファー テストをオフにしSpriteBatch.Draw()ます。次に、次のフレームで、3D のものを描画しようとするとオフのままになり、発生している問題が発生します。

したがって、3D のものを描画する直前に、DepthStencilState が に戻されていることを確認してくださいDefault

GraphicsDevice.Clear(Color.SeaGreen);

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

DrawModel(building_a_mdl, (Matrix.Identity * Matrix.CreateTranslation(100, -14, -100)), building_a_tex);

このリンクを参照してください: http://blogs.msdn.com/b/shawnhar/archive/2010/06/18/spritebatch-and-renderstates-in-xna-game-studio-4-0.aspx

于 2013-08-10T11:32:17.677 に答える