From df6cee8df1951991f00f93dde4c8a34255bbed66 Mon Sep 17 00:00:00 2001 From: Colin McMillen Date: Mon, 9 Dec 2019 17:21:22 -0500 Subject: [PATCH] partial work toward keeping multiple render targets around for GIF encoding GitOrigin-RevId: 8061896562453a95013ada91df852afc9e904c76 --- Jumpy.Shared/JumpyGame.cs | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/Jumpy.Shared/JumpyGame.cs b/Jumpy.Shared/JumpyGame.cs index a9be9c4..8fb0958 100644 --- a/Jumpy.Shared/JumpyGame.cs +++ b/Jumpy.Shared/JumpyGame.cs @@ -2,13 +2,16 @@ using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; -using System; using System.Collections.Generic; namespace Jumpy { public class JumpyGame : Game { GraphicsDeviceManager graphics; - RenderTarget2D renderTarget; + + const int numRenderTargets = 1; + RenderTarget2D[] renderTargets = new RenderTarget2D[numRenderTargets]; + int renderTargetIdx = 0; + SpriteBatch spriteBatch; SpriteFont font; KeyboardInput keyboardInput = new KeyboardInput(); @@ -29,10 +32,12 @@ namespace Jumpy { display = (IDisplay) Services.GetService(typeof(IDisplay)); display.Initialize(Window, graphics); display.SetFullScreen(fullScreen); - - renderTarget = new RenderTarget2D( - GraphicsDevice, Camera.Width, Camera.Height, false /* mipmap */, - GraphicsDevice.PresentationParameters.BackBufferFormat, DepthFormat.Depth24); + + for (int i = 0; i < renderTargets.Length; i++) { + renderTargets[i] = new RenderTarget2D( + GraphicsDevice, Camera.Width, Camera.Height, false /* mipmap */, + GraphicsDevice.PresentationParameters.BackBufferFormat, DepthFormat.Depth24); + } base.Initialize(); } @@ -77,8 +82,9 @@ namespace Jumpy { fpsCounter.Update(); // Draw scene to RenderTarget. + RenderTarget2D renderTarget = renderTargets[renderTargetIdx]; + renderTargetIdx = (renderTargetIdx + 1) % renderTargets.Length; GraphicsDevice.SetRenderTarget(renderTarget); - // GraphicsDevice.DepthStencilState = new DepthStencilState() { DepthBufferEnable = true }; GraphicsDevice.Clear(Color.CornflowerBlue); spriteBatch.Begin(); player.Draw(gameTime, spriteBatch);