216 lines
9.0 KiB
C#

#region Using Statements
using System;
using ANX.Framework.Graphics;
using SharpDX.Direct3D11;
using SharpDX.Direct3D;
using SharpDX.DXGI;
#endregion // Using Statements
// This file is part of the ANX.Framework created by the
// "ANX.Framework developer group" and released under the Ms-PL license.
// For details see: http://anxframework.codeplex.com/license
namespace ANX.RenderSystem.Windows.DX11
{
internal class FormatConverter
{
public static Filter Translate(TextureFilter filter)
{
switch (filter)
{
case TextureFilter.Anisotropic:
return Filter.Anisotropic;
case TextureFilter.Linear:
return Filter.MinMagMipLinear;
case TextureFilter.LinearMipPoint:
return Filter.MinMagMipPoint;
case TextureFilter.MinLinearMagPointMipLinear:
return Filter.MinLinearMagPointMipLinear;
case TextureFilter.MinLinearMagPointMipPoint:
return Filter.MinLinearMagMipPoint;
case TextureFilter.MinPointMagLinearMipLinear:
return Filter.MinPointMagMipLinear;
case TextureFilter.MinPointMagLinearMipPoint:
return Filter.MinPointMagLinearMipPoint;
case TextureFilter.Point:
return Filter.MinMagMipPoint;
case TextureFilter.PointMipLinear:
return Filter.MinMagPointMipLinear;
}
throw new NotImplementedException();
}
public static SharpDX.Direct3D11.TextureAddressMode Translate(ANX.Framework.Graphics.TextureAddressMode addressMode)
{
switch (addressMode)
{
case ANX.Framework.Graphics.TextureAddressMode.Clamp:
return SharpDX.Direct3D11.TextureAddressMode.Clamp;
case ANX.Framework.Graphics.TextureAddressMode.Mirror:
return SharpDX.Direct3D11.TextureAddressMode.Mirror;
case ANX.Framework.Graphics.TextureAddressMode.Wrap:
return SharpDX.Direct3D11.TextureAddressMode.Wrap;
}
return SharpDX.Direct3D11.TextureAddressMode.Clamp;
}
public static BlendOperation Translate(BlendFunction blendFunction)
{
switch (blendFunction)
{
case BlendFunction.Add:
return BlendOperation.Add;
case BlendFunction.Max:
return BlendOperation.Maximum;
case BlendFunction.Min:
return BlendOperation.Minimum;
case BlendFunction.ReverseSubtract:
return BlendOperation.ReverseSubtract;
case BlendFunction.Subtract:
return BlendOperation.Subtract;
}
throw new NotImplementedException();
}
public static BlendOption Translate(Blend blend)
{
switch (blend)
{
case Blend.BlendFactor:
return BlendOption.BlendFactor;
case Blend.DestinationAlpha:
return BlendOption.DestinationAlpha;
case Blend.DestinationColor:
return BlendOption.DestinationColor;
case Blend.InverseBlendFactor:
return BlendOption.InverseBlendFactor;
case Blend.InverseDestinationAlpha:
return BlendOption.InverseDestinationAlpha;
case Blend.InverseDestinationColor:
return BlendOption.InverseDestinationColor;
case Blend.InverseSourceAlpha:
return BlendOption.InverseSourceAlpha;
case Blend.InverseSourceColor:
return BlendOption.InverseSourceColor;
case Blend.One:
return BlendOption.One;
case Blend.SourceAlpha:
return BlendOption.SourceAlpha;
case Blend.SourceAlphaSaturation:
return BlendOption.SourceAlphaSaturate;
case Blend.SourceColor:
return BlendOption.SourceColor;
case Blend.Zero:
return BlendOption.Zero;
}
throw new NotImplementedException();
}
public static ColorWriteMaskFlags Translate(ColorWriteChannels colorWriteChannels)
{
ColorWriteMaskFlags mask = 0;
if ((colorWriteChannels & ColorWriteChannels.All) == ColorWriteChannels.All)
mask |= ColorWriteMaskFlags.All;
if ((colorWriteChannels & ColorWriteChannels.Alpha) == ColorWriteChannels.Alpha)
mask |= ColorWriteMaskFlags.Alpha;
if ((colorWriteChannels & ColorWriteChannels.Blue) == ColorWriteChannels.Blue)
mask |= ColorWriteMaskFlags.Blue;
if ((colorWriteChannels & ColorWriteChannels.Green) == ColorWriteChannels.Green)
mask |= ColorWriteMaskFlags.Green;
if ((colorWriteChannels & ColorWriteChannels.Red) == ColorWriteChannels.Red)
mask |= ColorWriteMaskFlags.Red;
return mask;
}
public static SharpDX.Direct3D11.StencilOperation Translate(ANX.Framework.Graphics.StencilOperation stencilOperation)
{
switch (stencilOperation)
{
case ANX.Framework.Graphics.StencilOperation.Decrement:
return SharpDX.Direct3D11.StencilOperation.Decrement;
case ANX.Framework.Graphics.StencilOperation.DecrementSaturation:
return SharpDX.Direct3D11.StencilOperation.DecrementAndClamp;
case ANX.Framework.Graphics.StencilOperation.Increment:
return SharpDX.Direct3D11.StencilOperation.Increment;
case ANX.Framework.Graphics.StencilOperation.IncrementSaturation:
return SharpDX.Direct3D11.StencilOperation.IncrementAndClamp;
case ANX.Framework.Graphics.StencilOperation.Invert:
return SharpDX.Direct3D11.StencilOperation.Invert;
case ANX.Framework.Graphics.StencilOperation.Keep:
return SharpDX.Direct3D11.StencilOperation.Keep;
case ANX.Framework.Graphics.StencilOperation.Replace:
return SharpDX.Direct3D11.StencilOperation.Replace;
case ANX.Framework.Graphics.StencilOperation.Zero:
return SharpDX.Direct3D11.StencilOperation.Zero;
}
throw new NotImplementedException("unknown StencilOperation");
}
public static Comparison Translate(ANX.Framework.Graphics.CompareFunction compareFunction)
{
switch (compareFunction)
{
case ANX.Framework.Graphics.CompareFunction.Always:
return Comparison.Always;
case ANX.Framework.Graphics.CompareFunction.Equal:
return Comparison.Equal;
case ANX.Framework.Graphics.CompareFunction.Greater:
return Comparison.Greater;
case ANX.Framework.Graphics.CompareFunction.GreaterEqual:
return Comparison.GreaterEqual;
case ANX.Framework.Graphics.CompareFunction.Less:
return Comparison.Less;
case ANX.Framework.Graphics.CompareFunction.LessEqual:
return Comparison.LessEqual;
case ANX.Framework.Graphics.CompareFunction.Never:
return Comparison.Never;
case ANX.Framework.Graphics.CompareFunction.NotEqual:
return Comparison.NotEqual;
}
throw new NotImplementedException("unknown CompareFunction");
}
public static SharpDX.Direct3D11.CullMode Translate(ANX.Framework.Graphics.CullMode cullMode)
{
if (cullMode == ANX.Framework.Graphics.CullMode.CullClockwiseFace)
{
return SharpDX.Direct3D11.CullMode.Front;
}
else if (cullMode == ANX.Framework.Graphics.CullMode.CullCounterClockwiseFace)
{
return SharpDX.Direct3D11.CullMode.Back;
}
else
{
return SharpDX.Direct3D11.CullMode.None;
}
}
public static SharpDX.Direct3D11.FillMode Translate(ANX.Framework.Graphics.FillMode fillMode)
{
if (fillMode == ANX.Framework.Graphics.FillMode.WireFrame)
{
return SharpDX.Direct3D11.FillMode.Wireframe;
}
else
{
return SharpDX.Direct3D11.FillMode.Solid;
}
}
}
}