1 回答
TA贡献1820条经验 获得超2个赞
您没有使用glGenVertexArrays()和glBindVertexArray()创建/绑定顶点数组对象。VAOs封装一堆顶点属性的状态,包括其属性启用,详细介绍每个属性信息等,他们是可选的,当最初推出的功能,但是他们现在严格/核心上下文需要根据第10.4节的OpenGL核心规范:
当没有绑定顶点数组时,任何修改,绘制或查询顶点数组状态的命令都会生成INVALID_OPERATION错误。这在初始GL状态下发生,并且可能由于BindVertexArray或DeleteVertexArrays的副作用而发生。
这是一个有关如何使用VAO的非常粗糙的示例:
// At initialization time:
GLuint vao = 0;
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
// Set up your vertex attribute state:
// - glBindBuffer(GL_ARRAY_BUFFER,...);
// - glEnableVertexAttribArray(...);
// - glVertexAttribPointer(...);
// - etc. -- Refer to OpenGL docs to see what is/isn't included in the VAO!
glBindVertexArray(0); // unbinds vao
// At draw time:
glBindVertexArray(vao); // automatically sets up previously-bound vertex attribute state
glDrawArrays(...);
glBindVertexArray(0); // unbinds vao
- 1 回答
- 0 关注
- 126 浏览
添加回答
举报