In OpenGL you have to bind an object to the context to be used in subsequent calls, instead of just using it as an argument in those calls.
For example, in OpenGL you write this
glGenBuffers( 1, &vbo );
glBindBuffer( GL_ARRAY_BUFFER, vbo );
glBufferData( GL_ARRAY_BUFFER, verts.size(), verts.data(), GL_STATIC_DRAW );
Instead of something like this:
glGenBuffers( GL_ARRAY_BUFFER, 1, &vbo );
glBufferData( vbo, verts.size(), verts.data(), GL_STATIC_DRAW );
I wonder, what was the reason behind that decision? Was there a technical reason for this?
glBufferData
:glGenBuffers(1, &vbo); glBufferData(vbo, GL_ARRAY_BUFFER, verts.size(), verts.data(), GL_STATIC_DRAW);
GL_ARRAY_BUFFER
shouldn't even be there, it's a name for a bind point not a type.