> I noticed rendering differs among different JVM with JOGL 2.3.2 : in these two
> examples, left window is 1.6 and right window is 1.8 (details below).
"on MacOSX 10.8.5"
^^ this was the most critical delta next to the JRE version (not JVM),
since 1.7* AWT uses an CALayer on OSX, which can only be utilized by
us via a FBO -> texture rendering.
Note: That means no more direct on-screen rendering since,
but FBO to texture, where the latter is being used for the
CALayer 'final compositioning'.
> * text size of axis box differ (it uses GLUT.glutBitmapString)
> * aliasing settings are not the same (1.8 version is cleaner than 1.6)
> * alpha values are handled differently (1.8 appears lighter than 1.6)
> * colorbar is not rendered properly on its translucent part (where text stand)
> : it is initially a Java2d image rendered by gl.getGL2().glPixelZoom,
> glRasterPos3f and then glDrawPixels)
Looks like there are many changes:
- FBO color space?
- Scaling ? HiDPI ?
- Java2D + GL mixing
- Translucency ?
It would be helpful to describe each difference separately
and let us analyze them, but lets continue below first:
> And I just change JVM not JOGL or JZY3d versions.
Note: NewtCanvasAWT has to use the same
AWT CALayer mechanism as GLCanvas for JRE >= 1.7* (see above).
Just to make sure to not misunderstand, you say that:
- NewtCanvasAWT behaves 'well' or 'as expected' on all JRE versions
(onscreen and offscreen).
- NewtCanvasAWT and GLCanvas behave 'well' or 'as expected' on JRE >= 1.7*.
so, to make a long story short:
- GLCanvas does _not_ behave 'well' or 'as expected' on JRE 6 (onscreen).
> *Should we throw away GLCanvas?*
B/c it does not behave well on JRE 6 on OSX?
Well, that is your decision ofc.
Indeed, a NEWT Window behaves more deterministic due to the simple
fact that this is our code base, i.e. we cannot influence AWTs
behavior that much.
And surely I favor NEWT and NewtCanvasAWT, for this and many other reasons
like better input responsiveness, see:
Then it will also be easier to make the NEWT based application
AWT agnostic, i.e. portable for other [embedded] platforms.
Hope this helps a bit.