I created this graph from different methods, mostly in efforts to understand the problems I was having here:
I figured that they’d be generally interesting to the jogl’ers out there. Basically, I had four different methods of rendering:
Active - classic active mode rendering using just the main thread
Standard jogl - rendering as default, multi-threaded onto the event queue
Invoke later - custom implementation to use invokeLater() instead of invokeAndWait()
Worker - tell JOGL to use the worker thread
All code was executed in the exact same manner, except for how the context was made current, buffers swapped, etc. All scene preparation started from the main thread.
The results (for my Mac) show that active rendering has a pretty noticeable performance boost compared to the others. I didn’t do any statistical analysis, but my bet is that the other 3 are not statistically significant from each other. They are also much more unstable than active rendering.
Now if only we could get a stable canvas so that active rendering would work reliably (oh wait that’s in LWJGL ::)).