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 { /// /// Native Sampler State object for OpenGL. /// /// Basically this is a wrapper class for setting the different values all /// at once, because OpenGL has no State objects like DirectX. /// /// 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 /// [PercentageComplete(10)] [TestState(TestStateAttribute.TestState.Untested)] public class SamplerStateGL3 : INativeSamplerState { #region Public #region IsBound /// /// Flag if the state object is bound to the device. /// 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 /// /// Create a new sampler state object. /// internal SamplerStateGL3() { IsBound = false; } #endregion #region Apply /// /// Apply the sampler state. /// /// Graphics device. /// The index of which sampler should be modified. public void Apply(GraphicsDevice graphicsDevice, int index) { IsBound = true; // TODO: set stuff } #endregion #region Release /// /// Release the sampler state. /// public void Release() { IsBound = false; } #endregion #region Dispose /// /// Dispose the sampler state object. /// public void Dispose() { } #endregion } }