2

だから..これまでの私の試みでは、これが起こることです.ゲームは伸びていません:

ここに画像の説明を入力 そして、これが私がやっている方法です:

この変数を宣言しました。

RenderTarget2D renderTarget;

私の game1 コンストラクターでは、これがあります。ここでも実際の画面解像度を試しましたが、同じです。

graphics.PreferredBackBufferWidth = 96;
graphics.PreferredBackBufferHeight = 160;

私の初期化では、これがあります:

renderTarget = new RenderTarget2D(GraphicsDevice, GraphicsDevice.PresentationParameters.BackBufferWidth,
            GraphicsDevice.PresentationParameters.BackBufferHeight, false,
            GraphicsDevice.PresentationParameters.BackBufferFormat, DepthFormat.Depth24);

ここにこの機能があります:

protected void DrawSceneToTexture(RenderTarget2D renderTarget)
    {
        // Set the render target
        GraphicsDevice.SetRenderTarget(renderTarget);

        GraphicsDevice.DepthStencilState = new DepthStencilState() { DepthBufferEnable = true };

        // Draw the scene
        GraphicsDevice.Clear(Color.CornflowerBlue);
        spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend, SamplerState.PointClamp,
            DepthStencilState.None, RasterizerState.CullCounterClockwise);
        switch (gameState)
        {
            case GameStates.Menu: { menuState.Draw(spriteBatch); break; }
            case GameStates.Playing: { playingState.Draw(spriteBatch); break; }
            case GameStates.GameOver: { gameOverState.Draw(spriteBatch); break; }
        }
        spriteBatch.End();

        // Drop the render target
        GraphicsDevice.SetRenderTarget(null);
    }

そして、私の draw メソッドは次のようになります。

DrawSceneToTexture(renderTarget);

        GraphicsDevice.Clear(Color.Black);

        spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend,
            SamplerState.LinearClamp, DepthStencilState.Default,
            RasterizerState.CullNone);

        spriteBatch.Draw(renderTarget, new Rectangle(0, 0, actualScreenWidth, actualScreenHeight), Color.White);

        spriteBatch.End();

        base.Draw(gameTime);
4

1 に答える 1