public static void DrawRenderTargetContent(RenderTargetInstance contentSource, RenderTargetInstance target, Texture2D previousContent, byte?opacity) { // End the sprite batch if needed if (DrawingLayerTypeInUse != null) { _spriteBatch.End(); DrawingLayerTypeInUse = null; } Color color = Color.White; if (opacity.HasValue) { color.A = opacity.Value; } DrawingManager.RenderTargetManager.SwitchTo(target); GraphicsDevice.Clear(new Color(0, 0, 0, 0)); Texture2D renderTexture = _renderTargetManager.GetRenderTarget2D(contentSource); _spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.NonPremultiplied); if (previousContent != null) { //DrawingManager.RenderTargetManager.SaveTexture(RenderTargetInstance.OwnLayerRendering, "E:/own.png"); _spriteBatch.Draw(previousContent, Vector2.Zero, Color.White); } _spriteBatch.Draw(renderTexture, Vector2.Zero, color); _spriteBatch.End(); }
public void SaveTexture(RenderTargetInstance renderTarget, String filePath) { Texture2D bufferTexture = GetRenderTarget2D(renderTarget); using (System.IO.Stream stream = System.IO.File.OpenWrite(filePath)) { bufferTexture.SaveAsPng(stream, bufferTexture.Width, bufferTexture.Height); } }
public Texture2D GetTexture(RenderTargetInstance renderTarget) { if (renderTarget == RenderTargetInstance.A) { return(_resolveTextureA); } else if (renderTarget == RenderTargetInstance.B) { return(_resolveTextureB); } else { return((Texture2D)_backbufferTexture); } }
public void SwitchTo(RenderTargetInstance renderTarget) { if (renderTarget == RenderTargetInstance.A) { _graphicsDevice.SetRenderTarget(_renderTargetA); } else if (renderTarget == RenderTargetInstance.B) { _graphicsDevice.SetRenderTarget(_renderTargetB); } else { _graphicsDevice.SetRenderTarget(_backbuffer); } }
public Texture2D GetTexture(RenderTargetInstance renderTarget) { if (renderTarget == RenderTargetInstance.A) { return(_renderTargetA); } else if (renderTarget == RenderTargetInstance.B) { return(_renderTargetB); } else { return(_backbuffer); } }
public static void LoadContent(GraphicsDevice graphicsDevice) { _graphicsDevice = graphicsDevice; _viewPortSize = new Point(_graphicsDevice.Viewport.Width, _graphicsDevice.Viewport.Height); _spriteBatch = new SpriteBatch(graphicsDevice); #if !REACH _primitiveBatch = new PrimitiveBatch(graphicsDevice); _pixelTexture = new Texture2D(graphicsDevice, 1, 1, false, SurfaceFormat.Color); Color[] pixelColor = new Color[1]; pixelColor[0] = Color.White; _pixelTexture.SetData <Color>(pixelColor); _renderTargetManager = new RenderTargetManager(graphicsDevice); CurrentRenderTarget = RenderTargetInstance.BackBuffer; _renderTargetManager.LoadContent(); #else _pixelTexture = Texture2D.FromFile(DrawingManager.GraphicsDevice, "Content/pixel.png"); #endif LoadEmbeddedIceEffects(); }
public RenderTarget2D GetRenderTarget2D(RenderTargetInstance renderTarget) { switch (renderTarget) { case RenderTargetInstance.SceneRendering: return(_renderTargetSceneRendering); case RenderTargetInstance.OwnLayerRendering: return(_renderTargetOwnLayerRendering); case RenderTargetInstance.EffectA: return(_renderTargetB); case RenderTargetInstance.EffectB: return(_renderTargetC); default: return(null); } }
public void ResolveToTexture(RenderTargetInstance renderTarget) { if (_backbufferTexture != null && (_backbufferTexture.Width != GraphicsDevice.PresentationParameters.BackBufferWidth || _backbufferTexture.Height != GraphicsDevice.PresentationParameters.BackBufferHeight)) { UnloadContent(); LoadContent(); } if (renderTarget == RenderTargetInstance.A) { _resolveTextureA = _renderTargetA.GetTexture(); } else if (renderTarget == RenderTargetInstance.B) { _resolveTextureB = _renderTargetB.GetTexture(); } else { _graphicsDevice.ResolveBackBuffer(_backbufferTexture); } }
public void SwitchTo(RenderTargetInstance renderTarget) { RenderTarget2D rt = GetRenderTarget2D(renderTarget); _graphicsDevice.SetRenderTarget(rt); }
public RenderTarget2D GetRenderTarget2D(RenderTargetInstance renderTarget) { switch (renderTarget) { case RenderTargetInstance.SceneRendering: return _renderTargetSceneRendering; case RenderTargetInstance.OwnLayerRendering: return _renderTargetOwnLayerRendering; case RenderTargetInstance.EffectA: return _renderTargetB; case RenderTargetInstance.EffectB: return _renderTargetC; default: return null; } }
public static void LoadContent(GraphicsDevice graphicsDevice) { _graphicsDevice = graphicsDevice; _viewPortSize = new Point(_graphicsDevice.Viewport.Width, _graphicsDevice.Viewport.Height); _spriteBatch = new SpriteBatch(graphicsDevice); #if !REACH _primitiveBatch = new PrimitiveBatch(graphicsDevice); _pixelTexture = new Texture2D(graphicsDevice, 1, 1, false, SurfaceFormat.Color); Color[] pixelColor = new Color[1]; pixelColor[0] = Color.White; _pixelTexture.SetData<Color>(pixelColor); _renderTargetManager = new RenderTargetManager(graphicsDevice); CurrentRenderTarget = RenderTargetInstance.BackBuffer; _renderTargetManager.LoadContent(); #else _pixelTexture = Texture2D.FromFile(DrawingManager.GraphicsDevice, "Content/pixel.png"); #endif LoadEmbeddedIceEffects(); }
/// <summary> /// Call this method to render all the layers of the scene /// </summary> public static void RenderScene() { if (_isRendering == true) { throw new Exception("RenderScene was previously called but not ended with EndRendering()"); } _isRendering = true; // Reset the value of the last layer in use DrawingLayerTypeInUse = null; // Ensure the rendertargets are of correct size PresentationParameters pp = _graphicsDevice.PresentationParameters; #if !REACH _renderTargetManager.BackbufferResized(pp.BackBufferWidth, pp.BackBufferHeight); CurrentRenderTarget = RenderTargetInstance.BackBuffer; if (_drawOnRenderTarget == true) { _renderTargetManager.SwitchTo(RenderTargetInstance.SceneRendering); CurrentRenderTarget = RenderTargetInstance.SceneRendering; } #endif for (int c = 0; c < SceneManager.ActiveScene.ActiveCameras.Count; c++) { Camera camera = SceneManager.ActiveScene.ActiveCameras[c]; Viewport _viewPort = DrawingManager.GraphicsDevice.Viewport; _viewPort.X = camera.ViewPortPosition.X; _viewPort.Y = camera.ViewPortPosition.Y; _viewPort.Width = DrawingManager.ViewPortSize.X; _viewPort.Height = DrawingManager.ViewPortSize.Y; DrawingManager.GraphicsDevice.Viewport = _viewPort; // Clear our viewport if (DrawingManager.IgnoreClearBeforeRendering == false) { DrawingManager.GraphicsDevice.Clear(SceneManager.ActiveScene.ClearColor); } // Render the scene one time per active camera (split screen) // Render each layer for (int i = _layers.Length - 1; i >= 0; i--) { if (_layers[i].Visible == true) { Matrix layerMatrix; if (_ignoreCamera[i] == true) { layerMatrix = Matrix.Identity; } else { layerMatrix = camera.GetMatrix(_layers[i].Parallax); } _layers[i].RenderLayer(_graphicsDevice, layerMatrix); } } // End the sprite batch if needed if (DrawingLayerTypeInUse != null) { _spriteBatch.End(); DrawingManager.DrawingLayerTypeInUse = null; DrawingManager.LastTransformMatrix = null; } #if !REACH // Check for debug shapes to draw if (_enableDebugDrawing == true && DebugShapes.LinesList.Count > 0) { _primitiveBatch.SetViewPortSize(DrawingManager.ViewPortSize.X, DrawingManager.ViewPortSize.Y); _primitiveBatch.Begin(PrimitiveType.LineList, camera.GetMatrix(DebugShapes.Parallax)); foreach (DebugLine line in DebugShapes.LinesList) { _primitiveBatch.AddVertex(line.vertex, line.color); } _primitiveBatch.End(); } #endif } // End rendering _isRendering = false; for (int i = _layers.Length - 1; i >= 0; i--) { _layers[i].EndDrawing(); } DebugShapes.LinesList.Clear(); #if !REACH if (_drawOnRenderTarget == true) { _drawOnRenderTarget = false; DrawRenderTargetContent(RenderTargetInstance.SceneRendering, RenderTargetInstance.BackBuffer, null, 255); CurrentRenderTarget = RenderTargetInstance.BackBuffer; } #endif }
public static void DrawRenderTargetContent(RenderTargetInstance contentSource, RenderTargetInstance target, Texture2D previousContent, byte? opacity) { // End the sprite batch if needed if (DrawingLayerTypeInUse != null) { _spriteBatch.End(); DrawingLayerTypeInUse = null; } Color color = Color.White; if (opacity.HasValue) { color.A = opacity.Value; } DrawingManager.RenderTargetManager.SwitchTo(target); GraphicsDevice.Clear(new Color(0, 0, 0, 0)); Texture2D renderTexture = _renderTargetManager.GetRenderTarget2D(contentSource); _spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.NonPremultiplied); if (previousContent != null) { //DrawingManager.RenderTargetManager.SaveTexture(RenderTargetInstance.OwnLayerRendering, "E:/own.png"); _spriteBatch.Draw(previousContent, Vector2.Zero, Color.White); } _spriteBatch.Draw(renderTexture, Vector2.Zero, color); _spriteBatch.End(); }
public void SwitchTo(RenderTargetInstance renderTarget) { if (renderTarget == RenderTargetInstance.A) { _graphicsDevice.SetRenderTarget(0, _renderTargetA); } else if (renderTarget == RenderTargetInstance.B) { _graphicsDevice.SetRenderTarget(0, _renderTargetB); } else { _graphicsDevice.SetRenderTarget(0, null); } }
public Texture2D GetTexture(RenderTargetInstance renderTarget) { if (renderTarget == RenderTargetInstance.A) { return _resolveTextureA; } else if (renderTarget == RenderTargetInstance.B) { return _resolveTextureB; } else { return (Texture2D)_backbufferTexture; } }