1

私の XNA ゲームでは、spritesortmode.texture をかなり安価な方法で描画するため、多く使用しています。私の問題は、物事がほとんどの場合正しい方法で描画されることですが、時々間違っていることです (つまり、背景が前景の上に描画されます)。これ、デスクトップがフルスクリーンかどうか、または 2 番目のモニターはラップトップに接続されています。

これは、時々混同されるこれらのものがどこに描画されるかを示す私の描画ブロックの一部です。

 //============SPritebatch for background LINEAR WRAP textures===============

        spriteBatch.Begin(SpriteSortMode.Texture, BlendState.Opaque, SamplerState.LinearWrap,
               DepthStencilState.Default,
                RasterizerState.CullNone, null, _camera.Transform);

            Globals.CurrentLevel.CurrentRoom.DrawBg(spriteBatch);

            spriteBatch.End();
        }

  //===========SPritebatch for foreground objects, blocks etc.=================
        spriteBatch.Begin(SpriteSortMode.Texture, BlendState.Opaque, SamplerState.LinearClamp,
               DepthStencilState.Default,
               RasterizerState.CullNone, null, _camera.Transform);

        //Draw Currentroom

        Globals.CurrentLevel.CurrentRoom.Draw(spriteBatch);

        spriteBatch.End();

ここでテクスチャをロードします.. (すべて同時にロードします)

    namespace Artefact001
    {
        class Textures
        {
            public Texture2D TiledBG01Texture { get; private set; }
            public Texture2D Blocktxture { get; private set; }
            public Texture2D ProjectileTxture { get; private set; }
            public Texture2D PointLightTexture32 { get; private set; }

            public Textures(Game game)
            {          
                PointLightTexture32 = LightTextureBuilder.CreatePointLight(game.GraphicsDevice, 32);
                Blocktxture = game.Content.Load<Texture2D>(".\\WallGraphics\\blocks");
                ProjectileTxture = game.Content.Load<Texture2D>(".\\splosions\\projectile01");
                TiledBG01Texture = game.Content.Load<Texture2D>(".\\BGgraphics\\bgtile01");
            }
        }
    }

spritesortmode.texture は、テクスチャが読み込まれる順序を使用して描画順序を決定することをいくつかの場所で読みましたが、これを使用して正しい順序を取得する方法が明示的に説明されたことはありません。これが実際にどのように機能するかを誰かが説明できれば、それは素晴らしいことです!

4

1 に答える 1