I have been doing some gfx programming in opengl, and have some questions about it.
- What is the relation between a vertex array (vao) and vertex buffer object (vbo)?
- When I call glBindBuffer(), I am getting that the first argument is like a global 'state' that is bound to the second argument? Like
glBindBuffer(GL_UNIFORM_BUFFER, uniformBufferHandle)will bind uniformbufferHandle to the uniform buffer object?
-
If 2 is what I thought, then why do I need to use glBindFramebuffer() or glBindVertexArray(), rather than calling glBindBuffer(GL_FRAMEBUFFER, fbo) or whatever?
-
What is the relation between glVertexAttribPointer(), glEnableVertexAttribArray(), and glEnableClientState()?
Also, i'd like to know if there is some particular design philosophy that SGS chose or thing I should keep in mind. Like why they chose to go with this kind of buffer/handle design. Or some tips if you have any. I don't like calling all these opengl functions without knowing how exactly they should be used etc.