だから..これまでの私の試みでは、これが起こることです.ゲームは伸びていません:
そして、これが私がやっている方法です:
この変数を宣言しました。
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);