如果我使用VAO,是否需要调用glEnableVertexAttribArray?

时间:2017-05-05 12:34:53

标签: c++ opengl graphics vbo vao

我知道VAO可以存储绑定到VBO和索引VBO(GL_ARRAY_BUFFERGL_ELEMENT_ARRAY_BUFFER),但现在我有一个问题:

void render()
{
    ..Set up textures, uniforms..

    glBindVertexArray(vaoId)); // This also binds VBOs and indices VBOs 
    automatically (if it was properly set up)

    glEnableVertexAttribArray(0); // Do I need this?
    glEnableVertexAttribArray(1); // Do I need this?
    glEnableVertexAttribArray(2); // Do I need this?

    glDrawElements(GL_TRIANGLES, indices_N, GL_UNSIGNED_BYTE, 0);

    .. cleanup..
}

即使我已经正确设置了VAO,我还需要拨打glEnableVertexAttribArray吗?

1 个答案:

答案 0 :(得分:1)

这不是必需的。您应该在VAO设置期间调用glEnableVertexAttribArray,以便在VAO绑定时自动启用它们。