Axiom.Serialization.MeshSerializerImpl.ReadGeometryVertexBuffer C# (CSharp) Метод

ReadGeometryVertexBuffer() защищенный Метод

protected ReadGeometryVertexBuffer ( BinaryReader reader, VertexData data ) : void
reader System.IO.BinaryReader
data Axiom.Graphics.VertexData
Результат void
		protected virtual void ReadGeometryVertexBuffer( BinaryReader reader, VertexData data )
		{
			// Index to bind this buffer to
			short bindIdx = ReadShort( reader );

			// Per-vertex size, must agree with declaration at this index
			short vertexSize = ReadShort( reader );

			// check for vertex data header
			MeshChunkID chunkID = ReadChunk( reader );

			if ( chunkID != MeshChunkID.GeometryVertexBufferData )
			{
				throw new AxiomException( "Can't find vertex buffer data area!" );
			}

			// check that vertex size agrees
			if ( data.vertexDeclaration.GetVertexSize( bindIdx ) != vertexSize )
			{
				throw new AxiomException( "Vertex buffer size does not agree with vertex declaration!" );
			}

			// create/populate vertex buffer
			HardwareVertexBuffer buffer = HardwareBufferManager.Instance.CreateVertexBuffer( data.vertexDeclaration.Clone( bindIdx ), data.vertexCount, mesh.VertexBufferUsage, mesh.UseVertexShadowBuffer );

			IntPtr bufferPtr = buffer.Lock( BufferLocking.Discard );

			ReadBytes( reader, data.vertexCount * vertexSize, bufferPtr );

			buffer.Unlock();

			// set binding
			data.vertexBufferBinding.SetBinding( bindIdx, buffer );
		}