OpenGL renderer


Maybe I’m missing something but Is there any drawbacks of using the openGL renderer in apps or plugins? Isn’t openGL designed that way if there is no openGL capable card in the computer then the render will be done on CPU by the driver (obviously slower, but is it slower than the non openGL cpu render?)?

So what could be a reason not to use the openGL renderer?


Added complexity & failure points, initialization overhead, memory overhead, resizing & tracking lagging, slightly different output, possibly slower rendering etc. (and the software driver path is most probably a lot slower than the juce software renderer), offloading graphics to gpu may or may not limit performance of other compute shaders…

etc. etc.

I wouldn’t use it blindly unless you benefit from it - this is the case for everything, though.


The OpenGL renderer can be used in your JUCE applications without any effort, with a simple context.attachTo(*this) instruction. Just doing that leads to performance increases on Mac OS X in general according to my personal tests but not all the time on Windows.

Moreover, Intel and their partners have released during the last years a very important number of buggy drivers for their Intel HD graphics cards, which are everywhere on the PC computers of consumers, and fail to work properly when you try to use JUCE + OpenGL. And finally, the performance of the default JUCE implementation of OpenGL isn’t really good, you need to dig a lot into OpenGL functions and stuff to do something as simple as a FFT Spectrum Analyzer on Windows with OpenGL and getting “normal” performance…

So my opinion is that it’s worth digging into it, but it can’t be used blindly, and you’ll need to spend a lot of time doing some performance tests and learning basic OpenGL stuff if you want to get a real benefit.

I would love anyway seeing the JUCE community sharing more OpenGL stuff in the forums, and I intend to do so when I have interesting stuff to share… I’ve spent a lot of time learning OpenGL properly these last months, but a lot of things are not simple…


thanks guys for the opinions!