Should my app target the 3.2+ core profile anyway?

#1

Hi everyone,
I’m struggling a bit to understand how deprecation of functionalities and future OpenGL support by GPU vendors could impact my application.
It seems that on launch, the default context format selected by the application is always the 3.0 version, even if lower or higher versions are supported. This seems to be true on all platforms windows, mac and linux. I’m using the Qt wrapper around OpenGL, so maybe that’s something specific to the Qt libs.
The questions I have
[ul]
[li]Is it safe not to upgrade to the core profile, or will there come a time when hardware vendors drop the support for the compatibility profiles? For instance I’ve heard that some GPUs don’t support the fixed function pipeline anymore.
[/li][li]The other question has been asked many times, and to my (limited) knowledge has no final answer but in case some of you have new insight: should I continue to use OpenGL for the macOS version, or is it doomed on this platform meaning it’s time to switch to Metal?
[/li][/ul]

Thanks for your thoughts.

#2

In general, if you use “legacy” context-creation functions (i.e. functions which have existed since before OpenGL 3.1), you get a context which works with legacy code. This means either a version no later than 3.0, or 3.2 or later with a compatibility profile. A context which uses 3.1 or 3.2+ core profile typically won’t work with code written for earlier versions. So you won’t get a core profile context if you aren’t expecting one.

This is already (partially) the case on Mac, which doesn’t support the compatibility profile. You have a choice between 2.1 and 3.2+ core profile, so if you’re relying upon features which aren’t provided by the core profile, you’re limited to 2.1.

Hard to say. If Apple can get enough developers to use Metal, they’ll drop OpenGL support. But I doubt that they’ll do that if the result is that most developers just stop supporting Mac altogether. Really, it comes down to whether they want to provide an alternative PC platform or if they’re happy with the Mac being an iPhone with a bigger monitor and a keyboard.

#3

Thanks it’s a little more clear now.

This is already (partially) the case on Mac, which doesn’t support the compatibility profile. You have a choice between 2.1 and 3.2+ core profile, so if you’re relying upon features which aren’t provided by the core profile, you’re limited to 2.1.

I don’t need anything more than 2.1 functionalities, but I don’t want to be caught unawares if GPU vendors start dropping support for 2.1 and the app’s users get (rightfully) upset.

If Apple can get enough developers to use Metal, they’ll drop OpenGL support. But I doubt that they’ll do that if the result is that most developers just stop supporting Mac altogether.

I side with the developers who will stop supporting macOS. I’d rather develop my app’s features than learn yet another language. But hopefully, Apple’s support for OpenGL 3.2 will last for a very long time.
Or is it possible that a third party will come up with a wrapper library that maps OpenGL commands to METAL?