Browse files

Initial ScissorRectangle and ScissorTestEnable implementation. Needs …

…further test/tweaking.

git-svn-id: https://xnatouch.svn.codeplex.com/svn@59037 ffd33b8c-2492-42e0-bdc5-587b920b7d6d
  • Loading branch information...
1 parent 469dfec commit b672846f4fe16fbf8d6e2fbcfc0b41ba2b77f0e5 SND\CartBlanche_cp committed Mar 10, 2011
View
51 MonoGame.Framework/Audio/InstancePlayLimitException.cs
@@ -0,0 +1,51 @@
+// #region License
+// /*
+// Microsoft Public License (Ms-PL)
+// MonoGame - Copyright © 2009 The MonoGame Team
+//
+// All rights reserved.
+//
+// This license governs use of the accompanying software. If you use the software, you accept this license. If you do not
+// accept the license, do not use the software.
+//
+// 1. Definitions
+// The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under
+// U.S. copyright law.
+//
+// A "contribution" is the original software, or any additions or changes to the software.
+// A "contributor" is any person that distributes its contribution under this license.
+// "Licensed patents" are a contributor's patent claims that read directly on its contribution.
+//
+// 2. Grant of Rights
+// (A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3,
+// each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.
+// (B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3,
+// each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.
+//
+// 3. Conditions and Limitations
+// (A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.
+// (B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software,
+// your patent license from such contributor to the software ends automatically.
+// (C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution
+// notices that are present in the software.
+// (D) If you distribute any portion of the software in source code form, you may do so only under this license by including
+// a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object
+// code form, you may only do so under a license that complies with this license.
+// (E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees
+// or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent
+// permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular
+// purpose and non-infringement.
+// */
+// #endregion License
+//
+using System;
+using System.Runtime.InteropServices;
+
+namespace Microsoft.Xna.Framework.Audio
+{
+ [SerializableAttribute]
+ public sealed class InstancePlayLimitException : ExternalException
+ {
+ }
+}
+
View
8 MonoGame.Framework/Graphics/Color.cs
@@ -116,10 +116,10 @@ public Color(float r, float g, float b, float alpha)
{
_packedValue = 0;
- R = Convert.ToByte(r * 255);
- G = Convert.ToByte(g * 255);
- B = Convert.ToByte(b * 255);
- A = Convert.ToByte(alpha * 255);
+ R = (byte)MathHelper.Clamp(r * 255, Byte.MinValue, Byte.MaxValue);
+ G = (byte)MathHelper.Clamp(g * 255, Byte.MinValue, Byte.MaxValue);
+ B = (byte)MathHelper.Clamp(b * 255, Byte.MinValue, Byte.MaxValue);
+ A = (byte)MathHelper.Clamp(alpha * 255, Byte.MinValue, Byte.MaxValue);
}
public byte B
View
16 MonoGame.Framework/Graphics/GraphicsDevice.cs
@@ -222,7 +222,7 @@ public Microsoft.Xna.Framework.Graphics.GraphicsProfile GraphicsProfile
internal void StartSpriteBatch(SpriteBlendMode blendMode, SpriteSortMode sortMode)
{
- _spriteDevice.StartSpriteBatch(blendMode,sortMode);
+ _spriteDevice.StartSpriteBatch(blendMode,sortMode);
}
internal void EndSpriteBatch()
@@ -296,11 +296,19 @@ public VertexDeclaration VertexDeclaration
get;
set;
}
-
+
+ Rectangle _scissorRectangle;
public Rectangle ScissorRectangle
{
- get;
- set;
+ get
+ {
+ return _scissorRectangle;
+ }
+ set
+ {
+ _scissorRectangle = value;
+ GL.Scissor(_scissorRectangle.X, _scissorRectangle.Y, _scissorRectangle.Width, _scissorRectangle.Height );
+ }
}
public RenderState RenderState
View
17 MonoGame.Framework/Graphics/RenderState.cs
@@ -86,9 +86,24 @@ public Blend SourceBlend
set;
}
+ bool _scissorTestEnable = false;
public bool ScissorTestEnable
{
- get; set;
+ get
+ {
+ return _scissorTestEnable;
+ }
+ set
+ {
+ if ( _scissorTestEnable != value )
+ {
+ _scissorTestEnable = value;
+ if ( !_scissorTestEnable )
+ {
+ GL.Disable(All.ScissorTest);
+ }
+ }
+ }
}
BlendFunction alphaBlendOperation;
View
6 MonoGame.Framework/Graphics/SpriteBatch.cs
@@ -134,6 +134,12 @@ public void End()
GL.FrontFace(All.Cw);
GL.Color4(1.0f, 1.0f, 1.0f, 1.0f);
+ // Enable Scissor Tests if necessary
+ if ( _graphicsDevice.RenderState.ScissorTestEnable )
+ {
+ // TODO GL.Enable(All.ScissorTest);
+ }
+
_batcher.DrawBatch ( _sortMode );
}

0 comments on commit b672846

Please sign in to comment.