Commit Description:
Various UI improvements.
Commit Description:
Various UI improvements.
File last commit:
Show/Diff file:
Action:
FNA/src/Graphics/Effect/StockEffects/SpriteEffect.cs
80 lines | 2.2 KiB | text/x-csharp | CSharpLexer
#region File Description
//-----------------------------------------------------------------------------
// SpriteEffect.cs
//
// Microsoft XNA Community Game Platform
// Copyright (C) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
#endregion
namespace Microsoft.Xna.Framework.Graphics
{
/// <summary>
/// The default effect used by SpriteBatch.
/// </summary>
internal class SpriteEffect : Effect
{
#region Effect Parameters
EffectParameter matrixParam;
#endregion
#region Methods
/// <summary>
/// Creates a new SpriteEffect.
/// </summary>
public SpriteEffect(GraphicsDevice device)
: base(device, Resources.SpriteEffect)
{
CacheEffectParameters();
}
/// <summary>
/// Creates a new SpriteEffect by cloning parameter settings from an existing instance.
/// </summary>
protected SpriteEffect(SpriteEffect cloneSource)
: base(cloneSource)
{
CacheEffectParameters();
}
/// <summary>
/// Creates a clone of the current SpriteEffect instance.
/// </summary>
public override Effect Clone()
{
return new SpriteEffect(this);
}
/// <summary>
/// Looks up shortcut references to our effect parameters.
/// </summary>
void CacheEffectParameters()
{
matrixParam = Parameters["MatrixTransform"];
}
/// <summary>
/// Lazily computes derived parameter values immediately before applying the effect.
/// </summary>
protected internal override void OnApply()
{
Viewport viewport = GraphicsDevice.Viewport;
Matrix projection = Matrix.CreateOrthographicOffCenter(0, viewport.Width, viewport.Height, 0, 0, 1);
Matrix halfPixelOffset = Matrix.CreateTranslation(-0.5f, -0.5f, 0);
matrixParam.SetValue(halfPixelOffset * projection);
}
#endregion
}
}