private void drawMainGame(GameTime gameTime, int shaderNum) { RenderTargetManager.setRenderTarget(RenderTargetManager.framePreRender); //background colour: Purple! GraphicsDevice.Clear(Color.Purple); //New updated real draw calls //which does not rely on spaghetti spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp); //the blocks are in the waaaaay back. //if buffered draw is used, they *must* be the first thing drawn. world.draw(spriteBatch); foreach (Particle particle in Particle.active) { particle.draw(spriteBatch); } //NPCs are behind the player foreach (NPC npc in NPC.Active) { npc.draw(spriteBatch); } //Due to immediate, draw back to front currentPlayer.draw(spriteBatch); //UI & projectiles are in front foreach (Projectile p in Projectile.active) { p.draw(spriteBatch); } //item draw foreach (ItemInWorld item in ItemInWorld.active) { item.draw(spriteBatch); } //UI over all. IGUI.draw(); spriteBatch.End(); RenderTargetManager.unsetRenderTarget(); //draw the rendered scene to the screen. spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, SamplerState.PointClamp); //Everything is shader! mainShader.CurrentTechnique.Passes[shaderNum].Apply(); //Draw everything. spriteBatch.Draw(RenderTargetManager.framePreRender, zeroedWindow, Color.White); spriteBatch.End(); }
/// <summary> /// Draws a frame of the game to a rendertarget. /// </summary> /// <param name="screen"></param> /// <param name="target"></param> public void drawFrameToRenderTarget(screens screen, RenderTarget2D target) { //save information & set to values screens pastScreen = currentScreen; currentScreen = screen; bool cursorShown = isCursorDrawn; isCursorDrawn = false; bool controllerCursorShown = isPsuedoCursorDrawn; isPsuedoCursorDrawn = false; //Set to provided target and draw. RenderTargetManager.setRenderTarget(target); Draw(lastDrawTime); //Reset graphics device. RenderTargetManager.unsetRenderTarget(); //Reset screen and cursor. currentScreen = pastScreen; isCursorDrawn = cursorShown; isPsuedoCursorDrawn = controllerCursorShown; }