glBindBuffer vs. glBindbufferARB

glBindBufferARB was defined in the OpenGL extension GL_ARB_vertex_buffer_object. That was in OpenGL version 1.4.

Starting with OpenGL 1.5, GL_ARB_vertex_buffer_object was accepted into the core OpenGL API and so glBindBufferARB became glBindBuffer. glBindBufferARB is still available and performs the same function as glBindBuffer. Yet, in source code, you have to be careful not to use glBindBuffer if your program is going to run on a GPU that only supports OpenGL 1.4. Otherwise, your program will crash.

I am stuck to using glBindBufferARB instead of glBindBuffer because Unity must run on systems such as the Intel GMA 950 which only supports OpenGL 1.4 on Linux. You may think that all is find when your code runs on a systems with OpenGL 2.0+, only to see it crash on a system with a lower version of OpenGL. So be careful!

  • http://linkedin.com/in/lesterwm Mike Lester

    Thanks for this! I ran in to this problem during a project last year. I was working with an old code base for an open-source game, and they had used several calls with the ARB suffix. As I worked through and updated the code, I would switch these to the standard call. It worked, of course, on my machine, but would crash on a colleagues. I didn’t track it down because it was a personal project that only needed to run on one machine, but thinking back I’m pretty positive that this was the problem.