Axiom.RenderSystems.OpenGLES.GLESHardwareVertexBuffer.WriteData C# (CSharp) Method

WriteData() public method

public WriteData ( int offset, int length, IntPtr src, bool discardWholeBuffer ) : void
offset int
length int
src System.IntPtr
discardWholeBuffer bool
return void
		public override void WriteData( int offset, int length, IntPtr src, bool discardWholeBuffer )
		{
			OpenGL.BindBuffer( All.ArrayBuffer, _bufferId );
			GLESConfig.GlCheckError( this );
			// Update the shadow buffer
			if ( useShadowBuffer )
			{
				IntPtr destData = shadowBuffer.Lock( offset, length, discardWholeBuffer ? BufferLocking.Discard : BufferLocking.Normal );
				Memory.Copy( src, destData, length );
				shadowBuffer.Unlock();
			}

			if ( offset == 0 && length == sizeInBytes )
			{
				OpenGL.BufferData( All.ArrayBuffer, new IntPtr( sizeInBytes ), src, GLESHardwareBufferManager.GetGLUsage( usage ) );
				GLESConfig.GlCheckError( this );
			}
			else
			{
				if ( discardWholeBuffer )
				{
					OpenGL.BufferData( All.ArrayBuffer, new IntPtr( sizeInBytes ), IntPtr.Zero, GLESHardwareBufferManager.GetGLUsage( usage ) );
					GLESConfig.GlCheckError( this );
				}
				// Now update the real buffer
				OpenGL.BufferSubData( All.ArrayBuffer, new IntPtr( offset ), new IntPtr( length ), src );
				GLESConfig.GlCheckError( this );
			}
		}