RenderingEngine (GL/CG/Software)

The demo, in 'shortcut keys' tab, lists:

  • use software renderer
  • use core graphics renderer
  • use OpenGL renderer

My brain is failing to parse this. Could someone illuminate, giving some examples of when these various renderers are used?

What I don't get is this: surely what framework is being used to render depends on the task, no?

Like, if I am drawing a filled blue rectangle, isn't JUCE going to have some 'drawrect' function, the implementation of which depends on my OS. I would imagine maybe a CG call.

I can't imagine JUCE provides 3 different implementations, one for each of those options. What would be the point of that?

Or rendering text. Surely this is going to just call a native API function to do the text rendering.  I can't imagine 3 different branches. But here's the thing -- if I use these shortcut keys I do notice a subtle shifting in the font rendering. So it really seems to be doing something a bit different.

And software rendering... What's going on there? Writing to a memory bitmap and then handing that over to {CG/GL} ?

Does this really belong alongside the other 2?

Wouldn't it be the case that if I have say a GL window with text overlay, then the GL window uses OpenGL renderer, and I have another transparent CG window on top that I draw text to?

I can't see how this setting would be global. It seems like it should be per window. And I can't see how it could ever be possible to use more than one option.

What would be an example where software rendering would be used?

I don't even understand this enough to ask good question. So please note my above questions are really just designed to illustrate my flounder. What I'm after is enough of a scaffolding understanding that at least lets me ask a sensible question.


PS I have just discovered that the JUCE source now contains a handful of lovely simple demos!  This is going to make it much easier to pick up the basics than struggling through the master demo.  Thanks Jules!