void* is just any pointer! It can be cast to and from any pointer! You can use it in an array of unspecified types, of using a custom class/struct of a "map" (Single dictionary entry). This applies to C, as C++ has its own dynamic arrays and map types. Binding something in OpenGL is equivelent to attaching/using it. BindBuffer means AttachBufferForUse. You'd want to have a VBO and VAO for each "object" you have in your application.