I had to write a custom drawing function for an animated multipoint envelope to speed up drawing, because some of JUCE’s functions were to slow (some are very fast too, for instance fillRect()). I really could feel the difference to JUCE146 with some. It would take about 2x-4x more CPU to do the same thing.
Now I could have just generated an Image and drawn that to the screen via drawImageAt(), but it’s slow, especially at fullscreen. What’s much faster is to directly access JUCE’s own framebuffer. So I had to hack JUCE’s LowLevelGraphicsSoftwareRenderer to do exactly that. The performance gain is extremely high, instead of about 60fps I get 140fps at fullscreen, so my animation is very very fluid and consumes less CPU.
It would be nice to have the possibilty to gain access to JUCE’s internal framebuffer without custom hacking. So you’d just get a pointer to a SharedImage, int xOrigin & int yOrigin, and you could start manipulating the image data.