1
GLuint vao;
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
glEnableVertexAttribArray(0);
vbo.bind(GL_ARRAY_BUFFER);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
glDisableVertexAttribArray(0);
ibo.bind(GL_ELEMENT_ARRAY_BUFFER); //where do I put this?
glBindVertexArray(0);

while (glfwGetWindowParam(GLFW_OPENED)) {
    glClear(GL_COLOR_BUFFER_BIT);
    glBindVertexArray(vao);
    glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_INT, 0);
    glfwSwapBuffers();
}

私がVAOを理解する方法は、vaoハンドルを作成し、このようにバインドすることです

glGenVertexArrays(1, &vao);
glBindVertexArray(vao);

これで、VAO にこれら 3 つのコマンドを入力できます

vbo.bind(GL_ARRAY_BUFFER);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
glDisableVertexAttribArray(0);

ここで独自の vbo クラスを使用したことに注意してください。

そして、VAOを次のように閉じます

glBindVertexArray(0);

そして、それをレンダーループにロードするだけです

glBindVertexArray(vao);
glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_INT, 0);

しかし、出力が得られません。

今、それは私のインデックス付き配列と関係があると思います。(ibo) IBO で VAO を使用するにはどうすればよいですか?

4

1 に答える 1