--- src/main/java/com/ardor3d/framework/jogl/JoglCanvasRenderer.java (revision 63) +++ src/main/java/com/ardor3d/framework/jogl/JoglCanvasRenderer.java (working copy) @@ -18,7 +18,6 @@ import javax.media.opengl.GLDrawableFactory; import javax.media.opengl.GLException; import javax.media.opengl.GLProfile; -import javax.media.opengl.glu.GLU; import com.ardor3d.annotation.MainThread; import com.ardor3d.framework.CanvasRenderer; @@ -140,47 +139,50 @@ } _context.makeCurrent(); - - // Look up a shared context, if a shared JoglCanvasRenderer is given. - RenderContext sharedContext = null; - if (settings.getShareContext() != null) { - sharedContext = ContextManager.getContextForKey(settings.getShareContext().getRenderContext() - .getContextKey()); + try { + // Look up a shared context, if a shared JoglCanvasRenderer is given. + RenderContext sharedContext = null; + if (settings.getShareContext() != null) { + sharedContext = ContextManager.getContextForKey(settings.getShareContext().getRenderContext() + .getContextKey()); + } + + final ContextCapabilities caps = createContextCapabilities(); + _currentContext = new RenderContext(_context, caps, sharedContext); + + ContextManager.addContext(_context, _currentContext); + ContextManager.switchContext(_context); + + _renderer = new JoglRenderer(); + + if (settings.getSamples() != 0 && caps.isMultisampleSupported()) { + final GL gl = _context.getGL(); + gl.glEnable(GL.GL_MULTISAMPLE); + } + + _renderer.setBackgroundColor(ColorRGBA.BLACK); + + if (_camera == null) { + /** Set up how our camera sees. */ + _camera = new Camera(settings.getWidth(), settings.getHeight()); + _camera.setFrustumPerspective(45.0f, (float) settings.getWidth() / (float) settings.getHeight(), 1, 1000); + _camera.setProjectionMode(ProjectionMode.Perspective); + + final Vector3 loc = new Vector3(0.0f, 0.0f, 10.0f); + final Vector3 left = new Vector3(-1.0f, 0.0f, 0.0f); + final Vector3 up = new Vector3(0.0f, 1.0f, 0.0f); + final Vector3 dir = new Vector3(0.0f, 0f, -1.0f); + /** Move our camera to a correct place and orientation. */ + _camera.setFrame(loc, left, up, dir); + } else { + // use new width and height to set ratio. + _camera.setFrustumPerspective(_camera.getFovY(), + (float) settings.getWidth() / (float) settings.getHeight(), _camera.getFrustumNear(), _camera + .getFrustumFar()); + } + } finally { + _context.release(); } - - final ContextCapabilities caps = createContextCapabilities(); - _currentContext = new RenderContext(_context, caps, sharedContext); - - ContextManager.addContext(_context, _currentContext); - ContextManager.switchContext(_context); - - _renderer = new JoglRenderer(); - - if (settings.getSamples() != 0 && caps.isMultisampleSupported()) { - final GL gl = GLU.getCurrentGL(); - gl.glEnable(GL.GL_MULTISAMPLE); - } - - _renderer.setBackgroundColor(ColorRGBA.BLACK); - - if (_camera == null) { - /** Set up how our camera sees. */ - _camera = new Camera(settings.getWidth(), settings.getHeight()); - _camera.setFrustumPerspective(45.0f, (float) settings.getWidth() / (float) settings.getHeight(), 1, 1000); - _camera.setProjectionMode(ProjectionMode.Perspective); - - final Vector3 loc = new Vector3(0.0f, 0.0f, 10.0f); - final Vector3 left = new Vector3(-1.0f, 0.0f, 0.0f); - final Vector3 up = new Vector3(0.0f, 1.0f, 0.0f); - final Vector3 dir = new Vector3(0.0f, 0f, -1.0f); - /** Move our camera to a correct place and orientation. */ - _camera.setFrame(loc, left, up, dir); - } else { - // use new width and height to set ratio. - _camera.setFrustumPerspective(_camera.getFovY(), - (float) settings.getWidth() / (float) settings.getHeight(), _camera.getFrustumNear(), _camera - .getFrustumFar()); - } } public GLContext getContext() { --- src/main/java/com/ardor3d/framework/jogl/JoglAwtCanvas.java (revision 63) +++ src/main/java/com/ardor3d/framework/jogl/JoglAwtCanvas.java (working copy) @@ -10,6 +10,8 @@ package com.ardor3d.framework.jogl; +import java.awt.EventQueue; +import java.lang.reflect.InvocationTargetException; import java.util.concurrent.CountDownLatch; import javax.media.opengl.GLAutoDrawable; import javax.media.opengl.GLRunnable; @@ -54,7 +56,20 @@ } // Make the window visible to realize the OpenGL surface. - setVisible(true); + setVisible(true); + /** + try { + EventQueue.invokeAndWait(new Runnable() { + public void run() { + setVisible(true); + display(); // force creation via validateGLDrawable() + } + }); + } catch (InvocationTargetException e) { + throw new RuntimeException(e.getTargetException()); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } */ // Request the focus here as it cannot work when the window is not visible requestFocus(); --- src/main/java/com/ardor3d/scene/state/jogl/util/JoglTextureUtil.java (revision 63) +++ src/main/java/com/ardor3d/scene/state/jogl/util/JoglTextureUtil.java (working copy) @@ -15,7 +15,7 @@ import javax.media.opengl.GL2GL3; import com.ardor3d.image.ImageDataFormat; -import com.ardor3d.image.ImageDataType; +import com.ardor3d.image.PixelDataType; import com.ardor3d.image.TextureStoreFormat; import com.ardor3d.image.Texture.ApplyMode; import com.ardor3d.image.Texture.CombinerFunctionAlpha; @@ -159,7 +159,7 @@ throw new IllegalArgumentException("Incorrect format set: " + format); } - public static int getGLPixelDataType(final ImageDataType type) { + public static int getGLPixelDataType(final PixelDataType type) { switch (type) { case Byte: return GL.GL_BYTE; --- .classpath (revision 63) +++ .classpath (working copy) @@ -3,7 +3,7 @@ - - + +