@gouessej said:
I have no plan for Android yet as there is no plan to implement the second code path to support Android versions lower than 2.3 in JOGL 2.0 yet and my smartphone is under Android 2.2. I have forgotten to speak about AWT-free plugins. If Java allows to run applets without AWT one day as it was planned a few years ago (in order to get an extremely short startup time), you will be happy to have some AWT-free canvases even in desktop environments. That's the same thing for embedded VMs with no AWT support, for example for video games machines.
I remind you that AWT full screen mode is still broken under Linux with KDE 4 whereas it works fine with NEWT. If you put a (NEWT) GLWindow into an AWT frame, you lose this advantage.
Okay to try and make it clear and not lose ourselves in some terms I'll only talk from the jME/user side: You can start the renderer either with a native window/fullscreen context that doesn't depend on awt or you can get a canvas that then makes it dependent on awt. I know our settings window does depend on awt but lets put that aside for now as it can be replaced with a starter app or so setting the settings directly.
@gouessej said:
I know that but you could have modified the source code to call the 2 methods displaying some information about frame buffers. Anyway I have just committed another fix, please give it a try.
Ah right, sorry, I normally don't roam the renderer code ;)
This is what I get now:
[xml]02.11.2012 22:50:21 com.jme3.renderer.jogl.JoglRenderer setFrameBuffer
SCHWERWIEGEND: === jMonkeyEngine FBO State ===
=== OpenGL FBO State ===
Context doublebuffered? false
FBO ID: 1
Is proper? true
FrameBuffer[format=512x512x1, drawBuf=0]
Depth => BufferTarget[format=Depth]
Color(0) => TextureTarget[format=RGBA8]
Is bound to draw? true
Is bound to read? true
Draw buffer: GL_COLOR_ATTACHMENT0
Read buffer: GL_COLOR_ATTACHMENT0
== Renderbuffer Depth ==
RB ID: 1
Is proper? true
Type: Buffer
RB ID: 1
== Renderbuffer Color0 ==
RB ID: -1
Is proper? false
Type: Texture
Exception in thread "AWT-EventQueue-0-AWTAnimator-1" java.lang.RuntimeException: java.lang.IllegalStateException: Incomplete multisample buffer.
at jogamp.common.awt.AWTEDTExecutor.invoke(AWTEDTExecutor.java:58)
at jogamp.opengl.awt.AWTThreadingPlugin.invokeOnOpenGLThread(AWTThreadingPlugin.java:103)
at jogamp.opengl.ThreadingImpl.invokeOnOpenGLThread(ThreadingImpl.java:205)
at javax.media.opengl.Threading.invokeOnOpenGLThread(Threading.java:172)
at javax.media.opengl.Threading.invoke(Threading.java:191)
at javax.media.opengl.awt.GLCanvas.display(GLCanvas.java:449)
at com.jogamp.opengl.util.AWTAnimatorImpl.display(AWTAnimatorImpl.java:74)
at com.jogamp.opengl.util.AnimatorBase.display(AnimatorBase.java:142)
at com.jogamp.opengl.util.Animator$MainLoop.run(Animator.java:176)
at java.lang.Thread.run(Thread.java:680)
Caused by: java.lang.IllegalStateException: Incomplete multisample buffer.
at com.jme3.renderer.jogl.JoglRenderer.checkFrameBufferError(JoglRenderer.java:1415)
at com.jme3.renderer.jogl.JoglRenderer.setFrameBuffer(JoglRenderer.java:1680)
at com.jme3.renderer.RenderManager.renderViewPort(RenderManager.java:961)
at com.jme3.water.SimpleWaterProcessor.postQueue(SimpleWaterProcessor.java:230)
at com.jme3.renderer.RenderManager.renderViewPort(RenderManager.java:979)
at com.jme3.renderer.RenderManager.render(RenderManager.java:1029)
at com.jme3.app.SimpleApplication.update(SimpleApplication.java:251)
at com.jme3.system.jogl.JoglDisplay.display(JoglDisplay.java:354)
at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:373)
at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:358)
at javax.media.opengl.awt.GLCanvas$7.run(GLCanvas.java:983)
at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:655)
at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:594)
at javax.media.opengl.awt.GLCanvas$8.run(GLCanvas.java:996)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:702)
at java.awt.EventQueue.access$400(EventQueue.java:82)
at java.awt.EventQueue$2.run(EventQueue.java:663)
at java.awt.EventQueue$2.run(EventQueue.java:661)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:672)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
[/xml]
And this is lwjgls output:
[xml]=== OpenGL FBO State ===
Context doublebuffered? false
FBO ID: 1
Is proper? true
Is bound to draw? true
Is bound to read? true
Draw buffer: GL_COLOR_ATTACHMENT0
Read buffer: GL_COLOR_ATTACHMENT0
== Renderbuffer Depth ==
RB ID: 1
Is proper? true
Type: Buffer
RB ID: 1
== Renderbuffer Color0 ==
RB ID: -1
Is proper? false
Type: Texture[/xml]