Multiple versions of OpenGL in one application

We have a complicated application that uses several different 3rd party rendering libraries, all OpenGL based (Windows and Linux).

All of these 3rd party rendering libraries currently rely on OpenGL1 support. However, one of these 3rd party rendering libraries has a new version available which no longer works with OpenGL1 so we would have to start relying on Mesa3D on systems that do not have graphics cards. However, we don’t want the other 3rd party rendering libraries to use Mesa3D for various reasons.

Is that even possible? It seems to be that this really comes down to if it is possible to load multiple implementations of OpenGL in one application.

Can’t you use a compatibility context?

Generally speaking…

  • One active version per GL context
  • One active GL context per thread

Related:

It’s not obvious to me that compatibility contexts solve my problem. Isn’t that strictly for versioning and requires a single opengl dll/so be loaded?

Well, yes. I presume the idea was that, if you create a compatibility context, both of the libraries you’re using would be able to use the same OpenGL implementation.

Your problem seems to be that Mesa3D doesn’t really support compatibility contexts. So you had some alternative way of running OpenGL that did support GL 1.x stuff. But a new version of your library can’t use that alternative way and now requires Mesa3D… which doesn’t support compatibility contexts.

It would help a bit if we understood how you were creating the non-Mesa3D OpenGL context.