glBufferData 是 OpenGL 中的一个函数,用于为缓冲对象(VBO,IBO 等)分配空间并存储数据。它的原型如下:
void glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage);
其中:
target 指定缓冲对象的目标。
size 指定要分配的空间大小(以字节为单位)。
data 指向要存储的数据的指针。如果要清空缓冲对象而不传递新数据,则可以将此参数设置为 NULL。
usage 指定缓冲对象的用途,可以是 GL_STATIC_DRAW,GL_DYNAMIC_DRAW 或 GL_STREAM_DRAW。
举个例子,如果我们有一个包含顶点数据的数组,可以使用以下代码将数据存储在 VBO 中:
// 创建一个缓冲对象
GLuint vbo;
glGenBuffers(1, &vbo);
// 绑定缓冲对象
glBindBuffer(GL_ARRAY_BUFFER, vbo);
// 分配空间并存储数据
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);