Question regarding interaction between VAO bindings and sperate VBO bindings

Hello,

I’ve got the following question for you:
When I set up my VAO I bind the VAO i[/i] then bind the VBO i[/i] and IBO i[/i] and then unbind the VAO. As I understand it now the VBO and the IBO are “connected” to the VAO and before I want to draw something I just have to call glBindVertexArray() (without binding the VBO and IBO again).

Now, can I bind the VBO / IBO separately (e.g. for calling glBufferSubData()) and don’t lose the “connection” between VAO and VBO / IBO (or do I have to go through the hole binding VAO, then VBO/IBO again)?

I ask this question because I changed up some code (for optimizing performance) and now I get a

org.lwjgl.opengl.OpenGLException: Cannot use offsets when Element Array Buffer Object is disabled 

I can’t quite trace back where the problem is.
EDIT: Found the problem that caused the exception (missing glGenBuffers() call ::)). Question above remains but now I think that I can bind/unbind the VBO/IBO as much as I want without losing the “connection”. I’d be very grateful if some could confirm.
Thanks!

No, the state is stored in the VAO and it shouldn’t be modified if you use the VBO for different purposes AFAIK.

Thank you, everything works now and I can confirm:
You can bind and unbind the VBO / IBO as much as you want without disturbing the VAO.