Using OpenGL on Windows

I am facing some irregular behaviors with using OpenGL.
Here is my screenshots of JuceDemo.

software render

OpenGL render



And here is my NVIDIA Graphics Card information.

Please help to use OpenGL stably on Windows.
Any help will be appreciated.

Hate to say it, but your GPU is pretty old, and your driver is detrimentally out of date. According to the GeForce website, latest for the GT440 is 381.89, while your screenshot is showing version 368.39.

You should always update your driver before troubleshooting GPU-related issues. So many bug fixes and new features are added… And besides, it’s impossible to maintain frameworks and libraries against all possible versions of drivers.

I just updated driver.

And it fails absolutely same.

OT: what is the use of having the cutting edge system, and your product fails at the customer?
I always prefer to have the system of the average user… average age, average specs…

The average user will see Windows updates, which drivers are part of. Neglecting your system doesn’t make it average, but much less so.

Others have had issues with OpenGL and Windows machines: OpenGL in commercial plug-ins.

Is it safe to use OpenGL as a commercial app and is it widely compatible with Windows machines?

Using OpenGL is absolutely viable, even if you want to target iOS and Android. This stands for apps and games alike, where the latter has been doing so for 25 years!

From my experience, the issue is much more social than technological - to a point that I would consider it a matter of herding cats. Basically, you have to convince your users to keep drivers, and maybe other software, up to date.

How recent of a graphics card do you need though? You said his graphics card was too old (2011). What is considered too old?

1 Like

I think I approached the wording incorrectly, as old isn’t necessarily the right word. The answer isn’t really black and white; there’s a tipping point in where these things aren’t even good enough to use a group of shaders, but it’s not very specific, it’s GPU model dependant. This also depends on what you’re planning on doing/how complicated you want to make your application (or game, I guess).

The most important thing is to get anything software up to date first, and see if that works.

Been doing some reading and it seems as if there are GPL versions? @jrlanglois can you share your experience with customers who are not compatible.

Our app is considered highly graphical and without OpenGL, we are looking at 30-40% CPU, so we need it. I’m new to OpenGL and was surprised to find out that man users might not be compatible. As you can see from the attached @hasan_tata an updated driver for his NVIDIA GForce. So any user with a 2011 NVIDIA would be disqualified? There are still users using old machines. It looks like in this case the Driver is not the case.

GPL versions? If I understand what you’re saying correctly, you wouldn’t need to worry about that as integrating OpenGL involves using the operating system’s headers and libraries - this is the most painless way to go, and is JUCE’s case.

So any user with a 2011 NVIDIA would be disqualified?

As I was trying to convey, it’s not that cut and dry. The best approach I can suggest is asking your users, with bold lettering, to keep their GPU drivers up to date. This should cover the large majority of cases, whether it’s an Intel, AMD or NVIDIA GPU.

can you share your experience with customers who are not compatible.

Before recently jumping back to JUCE, I’ve been in a GPU rendering world mainly, but mostly mobile and consoles. There aren’t many choices but to try and accommodate a lowest common denominator - wherever the market share gives the best bang. For the application/game engine I was working on, this meant targeting minimum spec of devices and OS versions: iOS 8 and Android 4.2 (Jelly Bean). On consoles, you can thankfully specify a minimum OS version in your packages, and the OS will prevent launching the app until your user updates.

As a last resort on desktop apps, you should allow the user to switch between CPU and GPU. If feasible, accumulate user metrics to better understand and average out the minimum hardware specs.

1 Like

Yea thanks man…We will probably include a non-GPL version, but that version is much much less cooler :’(

I wonder if there is a way to detect automatically when there is a problem with OpenGL. I have a spectrum analyzer which works with or without OpenGL, but the choice is given to the user, I would like that choice to be done by the application…

1 Like

Logging crash stack traces is the only way! You can have the user send log files to you manually, or create a system that automagically sends the log to you. Really, you should tag the hardware and various driver and software details with it, too…

See JUCE’s crash handling APIs for a way to do this.

There are OpenGL errors which you can poke for, but this is at the cost of stalling your pipeline temporarily.

Thanks for good information. :wink: