Question about OpenGL versions and Extensions

Hi all,

I searched for similar topics but couldn’t find any. I have the following question:

I’ve made a sprite rendering engine using OpenGL 4.5 core. The engine uses ARB_bindless_texture and ARB_shader_storage_buffer_object. The engine works great, but now I am thinking about increasing the amount of machines it can run on. There is the obvious choice of having fallbacks to more traditional rendering methods. However I’d like your input on the following thought:

The way I understand it, the subset of GPUs that don’t natively support OpenGL 4.3+ but may support these extensions is greater than the subset of GPUs that natively support the version of OpenGL required for these extensions. If this assumption is correct, should I just use OpenGL 4.0 core along with these extensions? Is this considered good practice? I don’t aim to support all GPUs, just to support more than by using 4.3+.

Please do let me know if this makes any sense.

1st, if you want to know which or how many GPUs support extensions or GL versions checkout by Sascha Willems. You did not say which type or age of GPU you are targeting.

2nd, it should be fine to create an older GL Context and check for extensions. (Assuming we are talking beyond GL 3.2 for Core contexts). IIRC the MESA framework actually works out which GL version a driver can support by looking at the extensions it supports. So you should generally be safe.

OpenGL 4.3, release date August 6, 2012.
OpenGL 4.4, release date July 22, 2013.
OpenGL 4.5, release date August 11, 2014.
OpenGL 4.6, release date July 31, 2017.

I don’t think it’s unreasonable to require support for a 5 year old version, and it’s definitely not unreasonable to require support for a 10 year old version. If you were buying new hardware today, you’d have a very hard time finding something that doesn’t support 4.6; even old integrated Intels support 4.6 (Macs are, of course, a different story).

It’s also the case that older versions don’t automatically mean more hardware support, and more computers to run your program on. I don’t have figures, but I’d happily bet that there’s more 4.6 capable hardware out there than not.

I totally agree, for a Windows desktop application. Which is what I assume @vdweller is using as he is trying to regress the GL version used.

But as general advise, you need to know the target OS and type of user.
MacOS (all versions) only supports GL 4.1 Core and GL 2.1 Compatibility.
I suspect some Android and/or ARM Linux combination do not go up to GL 4.5. Entering “MALI” into gives a max of GL 3.1!

That’s OpenGL ES, which has a different versioning system.