Login  Register

Re: Issue with Java 3D under OpenJDK 7 / Mac OS X

Posted by Sven Gothel on Oct 04, 2012; 5:47pm
URL: https://forum.jogamp.org/Issue-with-Java-3D-under-OpenJDK-7-Mac-OS-X-tp4025259p4026381.html

On 10/04/2012 06:58 PM, Manu [via jogamp] wrote:

> Trying with JOGL nightly builds of the 4th of October
> (gluegen-2.0-b597-20121004-macosx-universal.7z +
> jogl-2.0-b820-20121004-macosx-universal.7z) and Java 3D 1.6.0-pre3 version,
> gives a different error:
>
> 3D [dev] 1.6.0-pre3-daily-experimental daily
>
> javax.media.opengl.GLException: BackingLayerHost w/ unknown handle (!FBO, !PBuffer): MacOSXOnscreenCGLDrawable[Realized true,
> Factory   jogamp.opengl.macosx.cgl.awt.MacOSXAWTCGLDrawableFactory@694f21f3,
> Handle    0x7ff335024340,
> Surface   JAWT-Window[windowHandle 0x7ff33515aea0, surfaceHandle 0x7ff335024340, bounds [ 0 / 0  256 x 234 ], insets [ l 0, r 0 - t 0, b 0 - 0x0], shallUseOffscreenLayer false, isOffscreenLayerSurface true, pos 0/0, size 256x234, visible true, lockedExt false,
> config AWTGraphicsConfiguration[AWTGraphicsScreen[AWTGraphicsDevice[type .awt, connection Display 69678464, unitID 0, awtDevice sun.awt.CGraphicsDevice@7bb6aea4, handle 0x0], idx 0],
> chosen    GLCaps[rgba 0x5/5/5/0, opaque, accum-rgba 0/0/0/0, dp/st/ms: 16/0/0, dbl, mono  , hw, GLProfile[GL2/GL2.hw], offscr[auto-cfg]],
> requested GLCaps[rgba 0x5/5/5/0, opaque, accum-rgba 0/0/0/0, dp/st/ms: 16/0/0, dbl, mono  , hw, GLProfile[GL2/GL2.hw], on-scr[.]],
> CGLGraphicsConfig[dev=69678464,pixfmt=0],
> encapsulated MacOSXCGLGraphicsConfiguration[DefaultGraphicsScreen[MacOSXGraphicsDevice[type .macosx, connection decon, unitID 0, handle 0x0, NullToolkitLock[]], idx 0],
> chosen    GLCaps[rgba 0x8/8/8/8, opaque, accum-rgba 0/0/0/0, dp/st/ms: 16/0/0, dbl, mono  , hw, GLProfile[GL2/GL2.hw], offscr[auto-cfg]],
> requested GLCaps[rgba 0x5/5/5/0, opaque, accum-rgba 0/0/0/0, dp/st/ms: 16/0/0, dbl, mono  , hw, GLProfile[GL2/GL2.hw], on-scr[.]]]],
> awtComponent javax.media.j3d.Canvas3D[canvas1,0,0,256x234],
> surfaceLock <4edb440a, 1d5014f8>[count 1, qsz 0, owner <J3D-Renderer-1>]]]
> at jogamp.opengl.macosx.cgl.MacOSXCGLContext$NSOpenGLImpl.contextRealized(MacOSXCGLContext.java:612)
> at jogamp.opengl.macosx.cgl.MacOSXCGLContext.contextRealized(MacOSXCGLContext.java:292)
> at jogamp.opengl.GLContextImpl.makeCurrent(GLContextImpl.java:528)
> at javax.media.j3d.JoglPipeline.createNewContext(JoglPipeline.java:6198)
> at javax.media.j3d.Canvas3D.createNewContext(Canvas3D.java:4773)
> at javax.media.j3d.Canvas3D.createNewContext(Canvas3D.java:2407)
> at javax.media.j3d.Renderer.doWork(Renderer.java:893)
> at javax.media.j3d.J3dThread.run(J3dThread.java:270)
>
> DefaultRenderingErrorListener.errorOccurred:
> CONTEXT_CREATION_ERROR: Renderer: Error creating Canvas3D graphics context
> graphicsDevice = sun.awt.CGraphicsDevice@7bb6aea4
> canvas = javax.media.j3d.Canvas3D[canvas1,0,0,256x234]
>
>
> This was tested under Mac OS X 10.7.4 and not 10.8 which is not my main system
> yet. I sincerely hope you don't target only Mac OS X 10.8, otherwise it would
> make it much less useful (see these recent statistics
> <http://www.computerworld.com/s/article/9231937/OS_X_Mountain_Lion_s_torrid_upgrade_pace_cools_>).
Very good, thank you!

Java3D's Canvas3D needs to adapt the offscreen-layer caps,
then it will work.

The exception states that offscreen-layer is detected (and enabled by JAWTWindow),
however the wrong drawable type has been instantiated.

In AWT's GLCanvas of JOGL, the proper drawable
  "drawable = (GLDrawableImpl) GLDrawableFactory.getFactory(capsReqUser.getGLProfile()).createGLDrawable(jawtWindow);"

GLDrawableFactory.createGLDrawable(NativeSurface) does select the proper capabilities
and drawable type. This is somehow missing in Canvas3D I assume, and an onscreen drawable
is used.


~Sven



signature.asc (907 bytes) Download Attachment