public override void WriteData(int offset, int length, BufferBase src, bool discardWholeBuffer) { //Update the shadow buffer if (useShadowBuffer) { var destData = shadowBuffer.Lock(offset, length, discardWholeBuffer ? BufferLocking.Discard : BufferLocking.Normal); src = destData; shadowBuffer.Unlock(); } if (offset == 0 && length == sizeInBytes) { GL.BufferData(GLenum.ArrayBuffer, new IntPtr(sizeInBytes), src.Pin(), GLES2HardwareBufferManager.GetGLUsage(usage)); GLES2Config.GlCheckError(this); } else { if (discardWholeBuffer) { GL.BufferData(GLenum.ArrayBuffer, new IntPtr(sizeInBytes), IntPtr.Zero, GLES2HardwareBufferManager.GetGLUsage(usage)); GLES2Config.GlCheckError(this); } GL.BufferSubData(GLenum.ArrayBuffer, new IntPtr(offset), new IntPtr(length), src.Pin()); GLES2Config.GlCheckError(this); } }
public override void WriteData( int offset, int length, BufferBase src, bool discardWholeBuffer ) { //Update the shadow buffer if ( useShadowBuffer ) { var destData = shadowBuffer.Lock( offset, length, discardWholeBuffer ? BufferLocking.Discard : BufferLocking.Normal ); src = destData; shadowBuffer.Unlock(); } if ( offset == 0 && length == sizeInBytes ) { GL.BufferData( GLenum.ArrayBuffer, new IntPtr( sizeInBytes ), src.Pin(), GLESHardwareBufferManager.GetGLUsage( usage ) ); GLESConfig.GlCheckError( this ); } else { if ( discardWholeBuffer ) { GL.BufferData( GLenum.ArrayBuffer, new IntPtr( sizeInBytes ), IntPtr.Zero, GLESHardwareBufferManager.GetGLUsage( usage ) ); GLESConfig.GlCheckError( this ); } GL.BufferSubData( GLenum.ArrayBuffer, new IntPtr( offset ), new IntPtr( length ), src.Pin() ); GLESConfig.GlCheckError( this ); } }
/// <summary> /// /// </summary> /// <param name="offset"></param> /// <param name="length"></param> /// <param name="dest"></param> public override void ReadData( int offset, int length, BufferBase dest ) { if ( useShadowBuffer ) { // lock the buffer for reading var src = shadowBuffer.Lock( offset, length, BufferLocking.ReadOnly ); // copy that data in there Memory.Copy( src, dest, length ); // unlock the buffer shadowBuffer.Unlock(); } else { Gl.glBindBufferARB( Gl.GL_ARRAY_BUFFER_ARB, this.bufferID ); Gl.glGetBufferSubDataARB( Gl.GL_ARRAY_BUFFER_ARB, new IntPtr( offset ), new IntPtr( length ), dest.Pin() ); // TAO 2.0 dest.UnPin(); //Gl.glGetBufferSubDataARB( // Gl.GL_ARRAY_BUFFER_ARB, // offset, // length, // dest ); } }
/// <summary> /// /// </summary> /// <param name="offset"></param> /// <param name="length"></param> /// <param name="src"></param> /// <param name="discardWholeBuffer"></param> public override void WriteData( int offset, int length, BufferBase src, bool discardWholeBuffer ) { Gl.glBindBufferARB( Gl.GL_ARRAY_BUFFER_ARB, this.bufferID ); if ( useShadowBuffer ) { // lock the buffer for reading var dest = shadowBuffer.Lock( offset, length, discardWholeBuffer ? BufferLocking.Discard : BufferLocking.Normal ); // copy that data in there Memory.Copy( src, dest, length ); // unlock the buffer shadowBuffer.Unlock(); } if ( discardWholeBuffer ) { Gl.glBufferDataARB( Gl.GL_ARRAY_BUFFER_ARB, new IntPtr( sizeInBytes ), IntPtr.Zero, GLHelper.ConvertEnum( usage ) ); // TAO 2.0 //Gl.glBufferDataARB( Gl.GL_ARRAY_BUFFER_ARB, // sizeInBytes, // IntPtr.Zero, // GLHelper.ConvertEnum( usage ) ); } Gl.glBufferSubDataARB( Gl.GL_ARRAY_BUFFER_ARB, new IntPtr( offset ), new IntPtr( length ), src.Pin() ); // TAO 2.0 src.UnPin(); //Gl.glBufferSubDataARB( // Gl.GL_ARRAY_BUFFER_ARB, // offset, // length, // src ); }
/// <summary> /// /// </summary> /// <param name="offset"></param> /// <param name="length"></param> /// <param name="dest"></param> public override void ReadData(int offset, int length, BufferBase dest) { if (useShadowBuffer) { // lock the buffer for reading var src = shadowBuffer.Lock(offset, length, BufferLocking.ReadOnly); // copy that data in there Memory.Copy(src, dest, length); // unlock the buffer shadowBuffer.Unlock(); } else { Gl.glBindBufferARB(Gl.GL_ARRAY_BUFFER_ARB, this.bufferID); Gl.glGetBufferSubDataARB(Gl.GL_ARRAY_BUFFER_ARB, new IntPtr(offset), new IntPtr(length), dest.Pin()); // TAO 2.0 dest.UnPin(); //Gl.glGetBufferSubDataARB( // Gl.GL_ARRAY_BUFFER_ARB, // offset, // length, // dest ); } }
/// <summary> /// /// </summary> /// <param name="offset"></param> /// <param name="length"></param> /// <param name="src"></param> /// <param name="discardWholeBuffer"></param> public override void WriteData(int offset, int length, BufferBase src, bool discardWholeBuffer) { Gl.glBindBufferARB(Gl.GL_ARRAY_BUFFER_ARB, this.bufferID); if (useShadowBuffer) { // lock the buffer for reading var dest = shadowBuffer.Lock(offset, length, discardWholeBuffer ? BufferLocking.Discard : BufferLocking.Normal); // copy that data in there Memory.Copy(src, dest, length); // unlock the buffer shadowBuffer.Unlock(); } if (discardWholeBuffer) { Gl.glBufferDataARB(Gl.GL_ARRAY_BUFFER_ARB, new IntPtr(sizeInBytes), IntPtr.Zero, GLHelper.ConvertEnum(usage)); // TAO 2.0 //Gl.glBufferDataARB( Gl.GL_ARRAY_BUFFER_ARB, // sizeInBytes, // IntPtr.Zero, // GLHelper.ConvertEnum( usage ) ); } Gl.glBufferSubDataARB(Gl.GL_ARRAY_BUFFER_ARB, new IntPtr(offset), new IntPtr(length), src.Pin()); // TAO 2.0 src.UnPin(); //Gl.glBufferSubDataARB( // Gl.GL_ARRAY_BUFFER_ARB, // offset, // length, // src ); }
public static unsafe Col3b *ToCol3BPointer(this BufferBase buffer) { return((Col3b *)buffer.Pin()); }
public static unsafe TextureLightMap *ToTextureLightMapPointer(this BufferBase buffer) { return((TextureLightMap *)buffer.Pin()); }