顶点缓冲(Vertex Buffers)

生成缓冲区

unsigned int buffer;
glGenBuffers(1, &buffer);//其实buffer里面存的是句柄

绑定缓冲区到缓冲目标(类似于PS选中图层)

glBindBuffer(GL_ARRAY_BUFFER, buffer);

通过缓冲目标向缓冲区存数据

glBufferData(GL_ARRAY_BUFFER, 6 * sizeof(float), positions, GL_STATIC_DRAW)

*DSA(Direct State Access)允许不绑定,直接进行数据修改

unsigned int buffer;
glGenBuffers(1, &buffer);
glNamedBufferData(buffer, 6 * sizeof(float), positions, GL_STATIC_DRAW)

设置顶点布局。(你可能会发现,没有指定target,是因为这两个函数只针对GL_ARRAY_BUFFER这个target)

/*
void glVertexAttribPointer(	
  GLuint index,
  GLint size,
  GLenum type,
  GLboolean normalized,
  GLsizei stride,
  const GLvoid * pointer);
*/
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, sizeof(float) * 2, (const void *)0);

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

大纲

Share the Post:
滚动至顶部