glBufferData
首先看看函数原型:
void glBufferData(GLenum target,
GLsizeiptr size,
const GLvoid * data,
GLenum usage);
创建缓存区对象之后,就需要空间去保留这些数据,那么glBufferData就来完成这个任务。官方文档是这样写的:
creates and initializes a buffer object's data store.
参数1:
target:指定缓存区对象的类型。它必须是下面的值:
(官网)
Buffer Binding Target | Purpose |
---|---|
GL_ARRAY_BUFFER | Vertex attributes |
GL_ATOMIC_COUNTER_BUFFER | Atomic counter storage |
GL_COPY_READ_BUFFER | Buffer copy source |
GL_COPY_WRITE_BUFFER | Buffer copy destination |
GL_DISPATCH_INDIRECT_BUFFER | Indirect compute dispatch commands |
GL_DRAW_INDIRECT_BUFFER | Indirect command arguments |
GL_ELEMENT_ARRAY_BUFFER | Vertex array indices |
GL_PIXEL_PACK_BUFFER | Pixel read target |
GL_PIXEL_UNPACK_BUFFER | Texture data source |
GL_QUERY_BUFFER | Query result buffer |
GL_SHADER_STORAGE_BUFFER | Read-write storage for shaders |
GL_TEXTURE_BUFFER | Texture data buffer |
GL_TRANSFORM_FEEDBACK_BUFFER | Transform feedback buffer |
GL_UNIFORM_BUFFER | Uniform block storage |
参数2:
size:存储数据的总量。
参数3:
data:需要复制到存储空间的数据,若为NULL表示没有数据需要复制。
参数4:
usage:数据分配之后的读取和写入方式,他必须是下面的值
GL_STREAM_DRAW, GL_STREAM_READ, GL_STREAM_COPY, GL_STATIC_DRAW, GL_STATIC_READ, GL_STATIC_COPY, GL_DYNAMIC_DRAW, GL_DYNAMIC_READ, or GL_DYNAMIC_COPY.