Axiom.Graphics.TempBlendedBufferInfo.ExtractFrom C# (CSharp) Méthode

ExtractFrom() public méthode

Utility method, extract info from the given VertexData
public ExtractFrom ( VertexData sourceData ) : void
sourceData VertexData
Résultat void
		public void ExtractFrom( VertexData sourceData )
		{
			// Release old buffer copies first
			HardwareBufferManager mgr = HardwareBufferManager.Instance;
			if ( destPositionBuffer != null )
			{
				mgr.ReleaseVertexBufferCopy( destPositionBuffer );
				Debug.Assert( destPositionBuffer == null );
			}
			if ( destNormalBuffer != null )
			{
				mgr.ReleaseVertexBufferCopy( destNormalBuffer );
				Debug.Assert( destNormalBuffer == null );
			}

			VertexDeclaration decl = sourceData.vertexDeclaration;
			VertexBufferBinding bind = sourceData.vertexBufferBinding;
			VertexElement posElem = decl.FindElementBySemantic( VertexElementSemantic.Position );
			VertexElement normElem = decl.FindElementBySemantic( VertexElementSemantic.Normal );
			VertexElement tanElem = decl.FindElementBySemantic( VertexElementSemantic.Tangent );
			VertexElement binormElem = decl.FindElementBySemantic( VertexElementSemantic.Binormal );

			Debug.Assert( posElem != null, "Positions are required" );

			posBindIndex = posElem.Source;
			srcPositionBuffer = bind.GetBuffer( posBindIndex );

			if ( normElem == null )
			{
				posNormalShareBuffer = false;
				srcNormalBuffer = null;
			}
			else
			{
				normBindIndex = normElem.Source;
				if ( normBindIndex == posBindIndex )
				{
					posNormalShareBuffer = true;
					srcNormalBuffer = null;
				}
				else
				{
					posNormalShareBuffer = false;
					srcNormalBuffer = bind.GetBuffer( normBindIndex );
				}
			}
			if ( tanElem == null )
				srcTangentBuffer = null;
			else
			{
				tanBindIndex = tanElem.Source;
				srcTangentBuffer = bind.GetBuffer( tanBindIndex );
			}

			if ( binormElem == null )
				srcBinormalBuffer = null;
			else
			{
				binormBindIndex = binormElem.Source;
				srcBinormalBuffer = bind.GetBuffer( binormBindIndex );
			}
		}

Usage Example

Exemple #1
0
		/// <summary>
		///		Internal method for extracting metadata out of source vertex data
		///		for fast assignment of temporary buffers later.
		/// </summary>
		/// <param name="sourceData"></param>
		/// <param name="info"></param>
		protected internal void ExtractTempBufferInfo( VertexData sourceData, TempBlendedBufferInfo info )
		{
			info.ExtractFrom( sourceData );
		}