OpenGL :glBindBuffer参数详解
1.函数原型
- void glBufferData(GLenum target, GLsizeiptr size, const GLvoid * data, GLenum usage);
glBufferData
创建用于当前绑定到缓冲对象的新数据存储目标。将删除任何预先存在的数据存储。新的数据存储与指定的创建大小以字节为单位和使用。如果数据不是NULL,数据存储进行初始化,从这个指针数据。第一次绑定后的缓冲区对象的状态是未映射的零大小的内存缓冲区,具有GL_READ_WRITE
访问权限和GL_STATIC_DRAW
用法。
2. 参数解释
2.1 target
target,指定目标缓冲区对象:
可选参数 | 解释 |
---|---|
GL_ARRAY_BUFFER | 可以用来保存glVertexAttribPointer()设置的顶点数组数据 |
GL_ATOMIC_COUNTER_BUFFER | 同样,可以使用GL_UNIFORM_BUFFER,GL_ATOMIC_COUNTER_BUFFER和GL_SHADER_STORAGE_BUFFER缓冲区绑定点,但不分别直接影响统一缓冲区,原子计数器缓冲区或着色器存储缓冲区状态。必须使用glBindBufferBase或glBindBufferRange将缓冲区绑定到索引的统一缓冲区,原子计数器缓冲区或着色器存储缓冲区绑定点 |
GL_COPY_READ_BUFFER GL_COPY_WRITE_BUFFER | 这两个目标是一对互相匹配的结合点,用于拷贝缓存之间的数据,并且不会引起OpenGL的状态变化,也不会产生任何特殊形式的OPenGL调用,允许使用glCopyBufferSubData而不会干扰其他绑定的状态。但是,glCopyBufferSubData可以与任何一对缓冲区绑定点一起使用 |
GL_DRAW_INDIRECT_BUFFER | 通过glDrawArraysIndirect和glDrawElementsIndirect发出的绘制参数来自该缓冲区对象的数据存储中的指定偏移量 |
GL_DISPATCH_INDIRECT_BUFFER | 当非零缓冲区对象绑定到GL_DISPATCH_INDIRECT_BUFFER目标时,通过glDispatchComputeIndirect发出的计算调度的参数来自该缓冲区对象的数据存储中的指定偏移量 |