/// <summary> /// Unind this buffer. /// </summary> public virtual void Unbind() { if (glBindBuffer == null) { glBindBuffer = OpenGL.GetDelegateFor <OpenGL.glBindBuffer>(); } glBindBuffer((uint)this.Target, 0); }
/// <summary> /// Vertex Buffer Object. /// </summary> /// <param name="usage"></param> public Buffer(BufferUsage usage) { if (glGenBuffers == null) { glGenBuffers = OpenGL.GetDelegateFor <OpenGL.glGenBuffers>(); glBindBuffer = OpenGL.GetDelegateFor <OpenGL.glBindBuffer>(); glBufferData = OpenGL.GetDelegateFor <OpenGL.glBufferData>(); } this.Usage = usage; }
/// <summary> /// 为给定VBO执行渲染时所需的操作。 /// </summary> /// <param name="bufferID">用GL.GenBuffers()得到的VBO的ID。</param> /// <param name="length">此VBO含有多个个元素?</param> internal BufferPtr(uint bufferID, int length, int byteLength) { if (glBindBuffer == null) { glBindBuffer = OpenGL.GetDelegateFor <OpenGL.glBindBuffer>(); glDeleteBuffers = OpenGL.GetDelegateFor <OpenGL.glDeleteBuffers>(); } this.BufferId = bufferID; this.Length = length; this.ByteLength = byteLength; }
/// <summary> /// 为给定VBO执行渲染时所需的操作。 /// </summary> /// <param name="bufferID">用GL.GenBuffers()得到的VBO的ID。</param> /// <param name="length">此VBO含有多个个元素?</param> internal BufferPtr(uint bufferID, int length, int byteLength) { if (glBindBuffer == null) { glBindBuffer = OpenGL.GetDelegateFor<OpenGL.glBindBuffer>(); glDeleteBuffers = OpenGL.GetDelegateFor<OpenGL.glDeleteBuffers>(); } this.BufferId = bufferID; this.Length = length; this.ByteLength = byteLength; }
/// <summary> /// Stop reading/writing buffer. /// </summary> /// <param name="unbind"></param> public virtual bool UnmapBuffer(bool unbind = true) { if (glUnmapBuffer == null) { glUnmapBuffer = OpenGL.GetDelegateFor <OpenGL.glUnmapBuffer>(); } bool result = glUnmapBuffer((uint)this.Target); if (unbind) { if (glBindBuffer == null) { glBindBuffer = OpenGL.GetDelegateFor <OpenGL.glBindBuffer>(); } glBindBuffer((uint)this.Target, 0); } return(result); }
/// <summary> /// Start to read/write buffer. /// </summary> /// <param name="access"></param> /// <param name="bind"></param> /// <returns></returns> public virtual IntPtr MapBuffer(MapBufferAccess access, bool bind = true) { if (bind) { if (glBindBuffer == null) { glBindBuffer = OpenGL.GetDelegateFor <OpenGL.glBindBuffer>(); } glBindBuffer((uint)this.Target, this.BufferId); } if (glMapBuffer == null) { glMapBuffer = OpenGL.GetDelegateFor <OpenGL.glMapBuffer>(); } IntPtr pointer = glMapBuffer((uint)this.Target, (uint)access); return(pointer); }
/// <summary> /// Start to read/write buffer. /// </summary> /// <param name="offset"></param> /// <param name="length"></param> /// <param name="access"></param> /// <param name="bind"></param> /// <returns></returns> public virtual IntPtr MapBufferRange(int offset, int length, MapBufferRangeAccess access, bool bind = true) { if (bind) { if (glBindBuffer == null) { glBindBuffer = OpenGL.GetDelegateFor <OpenGL.glBindBuffer>(); } glBindBuffer((uint)this.Target, this.BufferId); } if (glMapBufferRange == null) { glMapBufferRange = OpenGL.GetDelegateFor <OpenGL.glMapBufferRange>(); } IntPtr pointer = glMapBufferRange((uint)this.Target, offset, length, (uint)access); return(pointer); }
private static void InitFunctions() { glGenBuffers = OpenGL.GetDelegateFor<OpenGL.glGenBuffers>(); glBindBuffer = OpenGL.GetDelegateFor<OpenGL.glBindBuffer>(); glBufferData = OpenGL.GetDelegateFor<OpenGL.glBufferData>(); }
private static void InitFunctions() { glGenBuffers = OpenGL.GetDelegateFor <OpenGL.glGenBuffers>(); glBindBuffer = OpenGL.GetDelegateFor <OpenGL.glBindBuffer>(); glBufferData = OpenGL.GetDelegateFor <OpenGL.glBufferData>(); }
/// <summary> /// Stop reading/writing buffer. /// </summary> /// <param name="unbind"></param> public virtual bool UnmapBuffer(bool unbind = true) { if (glUnmapBuffer == null) { glUnmapBuffer = OpenGL.GetDelegateFor<OpenGL.glUnmapBuffer>(); } bool result = glUnmapBuffer((uint)this.Target); if (unbind) { if (glBindBuffer == null) { glBindBuffer = OpenGL.GetDelegateFor<OpenGL.glBindBuffer>(); } glBindBuffer((uint)this.Target, 0); } return result; }
/// <summary> /// Unind this buffer. /// </summary> public virtual void Unbind() { if (glBindBuffer == null) { glBindBuffer = OpenGL.GetDelegateFor<OpenGL.glBindBuffer>(); } glBindBuffer((uint)this.Target, 0); }
/// <summary> /// Start to read/write buffer. /// </summary> /// <param name="offset"></param> /// <param name="length"></param> /// <param name="access"></param> /// <param name="bind"></param> /// <returns></returns> public virtual IntPtr MapBufferRange(int offset, int length, MapBufferRangeAccess access, bool bind = true) { if (bind) { if (glBindBuffer == null) { glBindBuffer = OpenGL.GetDelegateFor<OpenGL.glBindBuffer>(); } glBindBuffer((uint)this.Target, this.BufferId); } if (glMapBufferRange == null) { glMapBufferRange = OpenGL.GetDelegateFor<OpenGL.glMapBufferRange>(); } IntPtr pointer = glMapBufferRange((uint)this.Target, offset, length, (uint)access); return pointer; }
/// <summary> /// Start to read/write buffer. /// </summary> /// <param name="access"></param> /// <param name="bind"></param> /// <returns></returns> public virtual IntPtr MapBuffer(MapBufferAccess access, bool bind = true) { if (bind) { if (glBindBuffer == null) { glBindBuffer = OpenGL.GetDelegateFor<OpenGL.glBindBuffer>(); } glBindBuffer((uint)this.Target, this.BufferId); } if (glMapBuffer == null) { glMapBuffer = OpenGL.GetDelegateFor<OpenGL.glMapBuffer>(); } IntPtr pointer = glMapBuffer((uint)this.Target, (uint)access); return pointer; }