Example #1
0
 /// <summary>
 /// Unind this buffer.
 /// </summary>
 public virtual void Unbind()
 {
     if (glBindBuffer == null)
     {
         glBindBuffer = OpenGL.GetDelegateFor <OpenGL.glBindBuffer>();
     }
     glBindBuffer((uint)this.Target, 0);
 }
Example #2
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;
        }
Example #3
0
        /// <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;
        }
Example #4
0
        /// <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;
        }
Example #5
0
        /// <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);
        }
Example #6
0
        /// <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);
        }
Example #7
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);
        }
Example #8
0
 private static void InitFunctions()
 {
     glGenBuffers = OpenGL.GetDelegateFor<OpenGL.glGenBuffers>();
     glBindBuffer = OpenGL.GetDelegateFor<OpenGL.glBindBuffer>();
     glBufferData = OpenGL.GetDelegateFor<OpenGL.glBufferData>();
 }
Example #9
0
 private static void InitFunctions()
 {
     glGenBuffers = OpenGL.GetDelegateFor <OpenGL.glGenBuffers>();
     glBindBuffer = OpenGL.GetDelegateFor <OpenGL.glBindBuffer>();
     glBufferData = OpenGL.GetDelegateFor <OpenGL.glBufferData>();
 }
Example #10
0
        /// <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;
        }
Example #11
0
 /// <summary>
 /// Unind this buffer.
 /// </summary>
 public virtual void Unbind()
 {
     if (glBindBuffer == null) { glBindBuffer = OpenGL.GetDelegateFor<OpenGL.glBindBuffer>(); }
     glBindBuffer((uint)this.Target, 0);
 }
Example #12
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;
        }
Example #13
0
        /// <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;
        }