140 lines
2.7 KiB
C#

using ANX.Framework.Graphics;
using ANX.Framework.NonXNA;
using ANX.Framework.NonXNA.Development;
// 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.GL3
{
/// <summary>
/// Native Sampler State object for OpenGL.
/// <para />
/// Basically this is a wrapper class for setting the different values all
/// at once, because OpenGL has no State objects like DirectX.
/// <para />
/// Info for OpenGL filter states:
/// http://gregs-blog.com/2008/01/17/opengl-texture-filter-parameters-explained/
///
/// Info for OGL 3.3 sampler objects (sadly not implemented in OpenTK yet):
/// http://www.sinanc.org/blog/?p=215
/// </summary>
[PercentageComplete(10)]
[TestState(TestStateAttribute.TestState.Untested)]
public class SamplerStateGL3 : INativeSamplerState
{
#region Public
#region IsBound
/// <summary>
/// Flag if the state object is bound to the device.
/// </summary>
public bool IsBound
{
get;
private set;
}
#endregion
#region AddressU
public TextureAddressMode AddressU
{
set;
private get;
}
#endregion
#region AddressV
public TextureAddressMode AddressV
{
set;
private get;
}
#endregion
#region AddressW
public TextureAddressMode AddressW
{
set;
private get;
}
#endregion
#region Filter
public TextureFilter Filter
{
set;
private get;
}
#endregion
#region MaxAnisotropy
public int MaxAnisotropy
{
set;
private get;
}
#endregion
#region MaxMipLevel
public int MaxMipLevel
{
set;
private get;
}
#endregion
#region MipMapLevelOfDetailBias
public float MipMapLevelOfDetailBias
{
set;
private get;
}
#endregion
#endregion
#region Constructor
/// <summary>
/// Create a new sampler state object.
/// </summary>
internal SamplerStateGL3()
{
IsBound = false;
}
#endregion
#region Apply
/// <summary>
/// Apply the sampler state.
/// </summary>
/// <param name="graphicsDevice">Graphics device.</param>
/// <param name="index">The index of which sampler should be modified.</param>
public void Apply(GraphicsDevice graphicsDevice, int index)
{
IsBound = true;
// TODO: set stuff
}
#endregion
#region Release
/// <summary>
/// Release the sampler state.
/// </summary>
public void Release()
{
IsBound = false;
}
#endregion
#region Dispose
/// <summary>
/// Dispose the sampler state object.
/// </summary>
public void Dispose()
{
}
#endregion
}
}