#region License /* FNA - XNA4 Reimplementation for Desktop Platforms * Copyright 2009-2022 Ethan Lee and the MonoGame Team * * Released under the Microsoft Public License. * See LICENSE for details. */ #endregion namespace Microsoft.Xna.Framework.Graphics { public class BlendState : GraphicsResource { #region Public Properties public BlendFunction AlphaBlendFunction { get { return state.alphaBlendFunction; } set { state.alphaBlendFunction = value; } } public Blend AlphaDestinationBlend { get { return state.alphaDestinationBlend; } set { state.alphaDestinationBlend = value; } } public Blend AlphaSourceBlend { get { return state.alphaSourceBlend; } set { state.alphaSourceBlend = value; } } public BlendFunction ColorBlendFunction { get { return state.colorBlendFunction; } set { state.colorBlendFunction = value; } } public Blend ColorDestinationBlend { get { return state.colorDestinationBlend; } set { state.colorDestinationBlend = value; } } public Blend ColorSourceBlend { get { return state.colorSourceBlend; } set { state.colorSourceBlend = value; } } public ColorWriteChannels ColorWriteChannels { get { return state.colorWriteEnable; } set { state.colorWriteEnable = value; } } public ColorWriteChannels ColorWriteChannels1 { get { return state.colorWriteEnable1; } set { state.colorWriteEnable1 = value; } } public ColorWriteChannels ColorWriteChannels2 { get { return state.colorWriteEnable2; } set { state.colorWriteEnable2 = value; } } public ColorWriteChannels ColorWriteChannels3 { get { return state.colorWriteEnable3; } set { state.colorWriteEnable3 = value; } } public Color BlendFactor { get { return state.blendFactor; } set { state.blendFactor = value; } } public int MultiSampleMask { get { return state.multiSampleMask; } set { state.multiSampleMask = value; } } #endregion #region Public BlendState Presets public static readonly BlendState Additive = new BlendState( "BlendState.Additive", Blend.SourceAlpha, Blend.SourceAlpha, Blend.One, Blend.One ); public static readonly BlendState AlphaBlend = new BlendState( "BlendState.AlphaBlend", Blend.One, Blend.One, Blend.InverseSourceAlpha, Blend.InverseSourceAlpha ); public static readonly BlendState NonPremultiplied = new BlendState( "BlendState.NonPremultiplied", Blend.SourceAlpha, Blend.SourceAlpha, Blend.InverseSourceAlpha, Blend.InverseSourceAlpha ); public static readonly BlendState Opaque = new BlendState( "BlendState.Opaque", Blend.One, Blend.One, Blend.Zero, Blend.Zero ); #endregion #region Internal FNA3D Variables internal FNA3D.FNA3D_BlendState state; #endregion #region Public Constructor public BlendState() { AlphaBlendFunction = BlendFunction.Add; AlphaDestinationBlend = Blend.Zero; AlphaSourceBlend = Blend.One; ColorBlendFunction = BlendFunction.Add; ColorDestinationBlend = Blend.Zero; ColorSourceBlend = Blend.One; ColorWriteChannels = ColorWriteChannels.All; ColorWriteChannels1 = ColorWriteChannels.All; ColorWriteChannels2 = ColorWriteChannels.All; ColorWriteChannels3 = ColorWriteChannels.All; BlendFactor = Color.White; MultiSampleMask = -1; // AKA 0xFFFFFFFF } #endregion #region Private Constructor private BlendState( string name, Blend colorSourceBlend, Blend alphaSourceBlend, Blend colorDestBlend, Blend alphaDestBlend ) : this() { Name = name; ColorSourceBlend = colorSourceBlend; AlphaSourceBlend = alphaSourceBlend; ColorDestinationBlend = colorDestBlend; AlphaDestinationBlend = alphaDestBlend; } #endregion } }