Exemplo n.º 1
0
        public void Setup(Light light)
        {
            this.light = light;

            renderTargetStack = new RenderTargetStack(device);

            shadowMap = new ShadowMap(device, 2048, 2048);

            CalculateLightMatrices(light);
        }
Exemplo n.º 2
0
        public void CreateARenderTargetStackAndSaveCurrentRT()
        {
            //Given
            GraphicsDevice device = GraphicsDevice.New(DeviceCreationFlags.Debug);

            //When
            RenderTargetStack stack = new RenderTargetStack(device);

            //Then
            Assert.IsTrue(stack.CurrentRenderTargetName.CompareTo("InitialRT") == 0);
        }
Exemplo n.º 3
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();
        }