I'm developing an intensive care monitor using OpenGL ES (WinCE / PowerVR SGX) for the user interface. Mainly I just wanted OpenGL for the waveforms so we could do cool fades and whatnot on them. The rest of the interface I was just going to use Windows GDI. But our lead developer insisted that using OpenGL for everything would speed up performance because it uses the graphics accelerator.
So that's what I've done, but the text rendering is pretty slow. Which makes sense since OpenGL has to redraw it every frame, while GDI (as far as I know) doesn't use any processor cycles unless the text changes, which is relatively infrequent. But it's annoying that redrawing all this mostly static text is causing the waveforms to render at lower fps. Is there any way to cajole OpenGL to only redraw the text when it changes?
I've tried using FBOs and rendering each text field to texture on changed frames, then rendering from that texture on unchanged frames, but that's still a lot slower than GDI. I also tried just not doing a glClear between each frame and only rendering changed items, but that just gave weird unpredictable results.
It seems like there should be a way to just say "hey OpenGL don't change any of this stuff on this part of the screen" and have that cost nothing, but I can't find the way to do it. Or was my old manager (he's since left the company) just wrong when he said that you can always use OpenGL to do the same thing faster than the native graphics API?



