216 lines
9.0 KiB
C#
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;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|