140 lines
2.7 KiB
C#
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
|
|
}
|
|
}
|