名称
glBindBuffer- 绑定一个命名(ID)的缓冲区对象
C规范
void glBindBuffer(GLenum target,GLuint buffer);
参数
target
指定缓冲区对象绑定的目标。 符号常量必须为GL_ARRAY_BUFFER或GL_ELEMENT_ARRAY_BUFFER。
buffer
指定缓冲区对象的名称(ID)。
描述
glBindBuffer允许您创建或使用命名缓冲区对象。 调用glBindBuffer,目标设置为GL_ARRAY_BUFFER或GL_ELEMENT_ARRAY_BUFFER,缓冲区设置为新缓冲区对象的名称,这样就将缓冲区对象名称绑定到目标了。 当缓冲区对象绑定到目标时,该目标的先前绑定将自动中断。
缓冲区对象名称是无符号整数。 0值保留,但每个缓冲区对象目标没有默认缓冲区对象。 相反,缓冲区设置为0可以有效地取消绑定先前绑定的任何缓冲区对象,并恢复该缓冲区对象目标的客户机内存使用情况。 缓冲区对象名称和相应的缓冲区对象内容对于当前GL渲染上下文的共享对象空间是本地的。
您可以使用glGenBuffers生成一组新的缓冲区对象名称。
usage为GL_STATIC_DRAW时第一次绑定后的缓冲区对象的状态是零大小的内存缓冲区。
绑定非零缓冲区对象名称时,绑定到的目标上的GL操作会影响绑定缓冲区对象,并且绑定到的目标的查询将从绑定缓冲区对象返回状态。 当绑定缓冲区对象名称零时,如在初始状态中,尝试修改或查询绑定到的目标上的状态会生成GL_INVALID_OPERATION错误。
当通过调用glVertexAttribPointer更改顶点数组指针状态时,当前缓冲区对象绑定(GL_ARRAY_BUFFER_BINDING,GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING中的一个)被复制到要更改的顶点属性数组的相应客户端状态。当非零缓冲区对象绑定到GL_ARRAY_BUFFER目标时,传统上被解释为指向客户端内存的指针的顶点数组指针参数被解释为在基本机器单元中测量的缓冲区对象内的偏移量(glVertexAttribPointer原本的最后一个参数是顶点属性数组的指针,当绑定VBO后,最后一个参数就是指向所绑定的VBO的一个地址了)。
当非零缓冲区对象绑定到GL_ELEMENT_ARRAY_BUFFER目标时,glDrawElements的indices参数(传统上被解释为指向客户端内存的指针)被解释为在基本机器单元中测量的缓冲区对象内的偏移量。
使用glBindBuffer创建的缓冲区对象绑定保持活动状态,直到将不同的缓冲区对象名称绑定到同一目标,或者直到使用glDeleteBuffers删除绑定的缓冲区对象为止。
一旦创建,命名缓冲区对象可以根据需要经常重新绑定到任何目标。 但是,GL实现可以基于其初始绑定目标来选择如何优化缓冲区对象的存储。
错误
GL_INVALID_ENUM
:target不是允许的值
相关Gets
glGet 参数GL_ARRAY_BUFFER_BINDING
glGet 参数GL_ELEMENT_ARRAY_BUFFER_BINDING
另见
glDeleteBuffers,glGenBuffers,glGet ,glIsBuffer
版权
https://www.khronos.org/registry/OpenGL-Refpages/es2.0/xhtml/glBindBuffer.xml
https://blog.csdn.net/flycatdeng
Copyright © 1991-2006 Silicon Graphics, Inc.本文档的许可是根据SGI Free Software B License.详见http://oss.sgi.com/projects/FreeB/.