The benefits are well documented of the Modern OpenGL 3.X & 4.X API's, but I'm wondering if there are ANY benefits to keeping with the old OpenGL, Or if learning OpenGL 2.X is a complete waste of time now no matter what?

Particularly I've wondered if using the OpenGL 2.X API is appropriate if the target platform had graphics hardware capable of only up to OpenGL 2.X. Would a driver update on said target platform allow programs compiled using the Modern OpenGL API's to be released on this old platform? If they both work, which would be faster?


  • \$\begingroup\$ Worth noting that as of right now, no publicly released VM software support OpenGL 3 rendering contexts. If you want any of your users to be able to run your software inside a VM, then right now OpenGL 3 or later aren't an option. \$\endgroup\$ Jun 5, 2014 at 7:31
  • \$\begingroup\$ Learn 2.0. There are still millions of devices out there that don't support 3.0 yet. Especially mobile devices. \$\endgroup\$
    – badweasel
    Jun 5, 2014 at 9:30
  • \$\begingroup\$ I have a different opinion: 1.x has plenty of uses still and is most widely supported. 2.x can be forgotten. If you need shaders, go 3.x. \$\endgroup\$ Jun 5, 2014 at 11:56

1 Answer 1


The legacy OpenGL API does have a purpose; it keeps support for the older systems which couldn't support programmable shaders and the other virtues of modern OpenGL.

It's also useful for writing quick applications which don't really need the performance advantages of shaders and vertex buffers.

Answer to your second question : Modern OpenGL features can only occasionally work on legacy cards. Newer graphics cards provide hardware-level systems for utilizing these newer features, which gives them such a large boost. Some OpenGL features can be used on older cards through software extensions. The performance of these extensions is usually far less than that on a modern card, but it does work.

  • \$\begingroup\$ Thank you for your comment. So you mean to say that Modern OpenGL programs would not run on such "older systems"? \$\endgroup\$
    – user27886
    Jun 5, 2014 at 6:04
  • \$\begingroup\$ I doubt they will. The newer OpenGL API uses framebuffer objects and vertex buffer / array objects, which I believe replaced display lists in legacy GL. \$\endgroup\$
    – jtst
    Jun 5, 2014 at 6:08
  • 1
    \$\begingroup\$ Vertex buffers have been in OpenGL since 1.5 :) \$\endgroup\$
    – Terje
    Jun 5, 2014 at 9:52
  • \$\begingroup\$ As an extension, right? \$\endgroup\$
    – LaVolpe
    Jun 5, 2014 at 13:36
  • 1
    \$\begingroup\$ @Techie: No, they have existed as an extension since at least OpenGL 1.3 (ATi's vertex buffer extension anyway), but were promoted to core in 1.5. When they were promoted to core, they stopped being called "vertex buffers" and GL adopted the more general term "buffer object," which now applies to several different uses for GPU-side memory. Buffer objects really have no type, they are just memory and you can use the same buffer object for several different things just by binding it to a different location (e.g. you can use the same buffer object for pixel transfer and vertex data). \$\endgroup\$ Jun 6, 2014 at 2:58

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .