public void Setup(Light light) { this.light = light; renderTargetStack = new RenderTargetStack(device); shadowMap = new ShadowMap(device, 2048, 2048); CalculateLightMatrices(light); }
public void CreateARenderTargetStackAndSaveCurrentRT() { //Given GraphicsDevice device = GraphicsDevice.New(DeviceCreationFlags.Debug); //When RenderTargetStack stack = new RenderTargetStack(device); //Then Assert.IsTrue(stack.CurrentRenderTargetName.CompareTo("InitialRT") == 0); }
private void RefreshViewMode(ResizeMode resizeMode, float pixelScale) { WindowSize = new Size(XNAGameWrapper.Window.ClientBounds.Width, XNAGameWrapper.Window.ClientBounds.Height); WindowCenter = (WindowSize / 2f).ToVector2(); _pixelScale = pixelScale; switch (resizeMode) { case ResizeMode.KeepProportions: Size = new Size(_nextInternalWidth, _nextInternalHeight); KeepProportionsScale = WindowHeight / (Height * _pixelScale); // width correction float internalGameWidth = Math.Round(Width * _pixelScale * KeepProportionsScale); _gameCanvasPosition = Math.Round(new Vector2((WindowWidth - internalGameWidth) / 2f, 0f)); break; case ResizeMode.ExpandView: KeepProportionsScale = 1f; _gameCanvasPosition = Vector2.Zero; Size = WindowSize / _pixelScale; break; default: break; } ResizeMode = resizeMode; Center = (Size / 2f).ToVector2(); // renderers foreach (Renderer renderer in Renderers) { renderer.RecalculateProjection(); } // canvas RenderTargetStack.Clear(); // game renderers projection if (MainCanvas != null) { MainCanvas.Resize(Size); MainCanvas.ClippingRegion = MainCanvas.SourceRegion; } #if DEBUG if (DebugCanvas != null) { DebugCanvas.Resize((int)Math.Floor(Size.Width * KeepProportionsScale * PixelScale), (int)Math.Floor(Size.Height * KeepProportionsScale * PixelScale)); DebugCanvas.ClippingRegion = DebugCanvas.SourceRegion; } #endif ScreenRenderer.RecalculateProjection(); // window callback OnWindowResize?.Invoke(); }