protected void SetResolutionMetrics(int optimumBackBufferWidth, int optimumBackBufferHeight, ScalingAxis scalingAxis) { _unscaledBackBufferDimensions = new Vector2(optimumBackBufferWidth, optimumBackBufferHeight); if (scalingAxis == ScalingAxis.X) { _resolutionScaling = (float)GraphicsDevice.Viewport.Width / (float)optimumBackBufferWidth; _resolutionOffset = new Vector2(0.0f, ((float)GraphicsDevice.Viewport.Height - (optimumBackBufferHeight * _resolutionScaling)) / 2.0f); } else { _resolutionScaling = (float)GraphicsDevice.Viewport.Height / (float)optimumBackBufferHeight; _resolutionOffset = new Vector2(((float)GraphicsDevice.Viewport.Width - (optimumBackBufferWidth * _resolutionScaling)) / 2.0f, 0.0f); } TouchProcessor.ResolutionScaling = _resolutionScaling; TouchProcessor.ResolutionOffset = _resolutionOffset; _safeDisplayArea = new Rectangle( (int)Math.Max(-(_resolutionOffset.X / _resolutionScaling), 0), (int)Math.Max(-(_resolutionOffset.Y / _resolutionScaling), 0), (int)Math.Min(optimumBackBufferWidth + ((_resolutionOffset.X / _resolutionScaling) * 2.0f), optimumBackBufferWidth), (int)Math.Min(optimumBackBufferHeight + ((_resolutionOffset.Y / _resolutionScaling) * 2.0f), optimumBackBufferHeight)); }