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 關注
- 151 瀏覽
添加回答
舉報