#region Using Statements using System; using ANX.Framework.NonXNA.Development; #endregion // 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.Framework.Graphics { [PercentageComplete(100)] [Developer("Glatzemann")] [TestState(TestStateAttribute.TestState.Untested)] public struct VertexBufferBinding { #region Private private readonly VertexBuffer vertexBuffer; private readonly int instanceFrequency; private readonly int vertexOffset; #endregion #region Public public VertexBuffer VertexBuffer { get { return this.vertexBuffer; } } public int InstanceFrequency { get { return this.instanceFrequency; } } public int VertexOffset { get { return this.vertexOffset; } } #endregion public VertexBufferBinding(VertexBuffer vertexBuffer) { if (vertexBuffer == null) throw new ArgumentNullException("vertexBuffer"); this.vertexBuffer = vertexBuffer; this.vertexOffset = 0; this.instanceFrequency = 0; } public VertexBufferBinding(VertexBuffer vertexBuffer, int vertexOffset) { if (vertexBuffer == null) throw new ArgumentNullException("vertexBuffer"); if (vertexOffset < 0 || vertexOffset >= vertexBuffer.VertexCount) throw new ArgumentOutOfRangeException("vertexOffset"); this.vertexBuffer = vertexBuffer; this.vertexOffset = vertexOffset; this.instanceFrequency = 0; } public VertexBufferBinding(VertexBuffer vertexBuffer, int vertexOffset, int instanceFrequency) { if (vertexBuffer == null) throw new ArgumentNullException("vertexBuffer"); if (vertexOffset < 0 || vertexOffset >= vertexBuffer.VertexCount) throw new ArgumentOutOfRangeException("vertexOffset"); if (instanceFrequency < 0) throw new ArgumentOutOfRangeException("instanceFrequency"); this.vertexBuffer = vertexBuffer; this.vertexOffset = vertexOffset; this.instanceFrequency = instanceFrequency; } public static implicit operator VertexBufferBinding(VertexBuffer vertexBuffer) { return new VertexBufferBinding(vertexBuffer); } } }