/// <inheritdoc/> public void SetScissorRectangle(Rectangle? rect) { Contract.EnsureNotDisposed(this, Disposed); if (this.scissorRectangle != rect) { if (rect == null) { gl.Disable(gl.GL_SCISSOR_TEST); gl.ThrowIfError(); } else { var rectValue = rect.GetValueOrDefault(); if (rectValue.Width < 0 || rectValue.Height < 0) throw new ArgumentOutOfRangeException("rect"); var x = rectValue.X; var y = rectValue.Y; ConvertScreenRegionUvToGL(ref x, ref y, rectValue.Width, rectValue.Height); gl.Enable(gl.GL_SCISSOR_TEST); gl.ThrowIfError(); gl.Scissor(x, y, rectValue.Width, rectValue.Height); gl.ThrowIfError(); } this.scissorRectangle = rect; } }