GLException with JOGL 1.1.1a, Win64 & remote desktop

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

GLException with JOGL 1.1.1a, Win64 & remote desktop

OwenD
We are seeing the following GLException, which can be reproduced with a simple JOGL 1.1.1a application which uses JFrame and GLJPanel. The problem only occurs when running with a 64-bit JRE (windows-amd64) on the Windows host machine & starting the application over remote desktop. The application works correctly when: a. running locally (no remote desktop), b. using a 32-bit JRE (windows-i586), or c. starting the application locally then connecting via remote desktop. We have tried multiple host machines (XP x64, Win7 x64) with the same result. Adding the -Dsun.java2d.nodraw=true makes no difference. We are running Java version 1.6.0_22 JRE.

Exception in thread "AWT-EventQueue-0" javax.media.opengl.GLException: Error creating offscreen bitmap of width 592, height 573
        at com.sun.opengl.impl.windows.WindowsOffscreenGLDrawable.create(WindowsOffscreenGLDrawable.java:108)
        at com.sun.opengl.impl.windows.WindowsOffscreenGLDrawable.setSize(WindowsOffscreenGLDrawable.java:67)
        at javax.media.opengl.GLJPanel.initialize(GLJPanel.java:929)
        at javax.media.opengl.GLJPanel.paintComponent(GLJPanel.java:488)
        at javax.swing.JComponent.paint(JComponent.java:1029)
        at javax.swing.JComponent.paintToOffscreen(JComponent.java:5124)
        at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:278)
        at javax.swing.RepaintManager.paint(RepaintManager.java:1224)
        at javax.swing.JComponent._paintImmediately(JComponent.java:5072)
        at javax.swing.JComponent.paintImmediately(JComponent.java:4882)
        at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:785)
        at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:713)
        at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:693)
        at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:125)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

import javax.swing.*;
import java.awt.*;
import javax.media.opengl.*;

public class JOGLHelloWorld extends JFrame implements GLEventListener {

    public JOGLHelloWorld() {
        super("JOGL Hello World");

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());

        setSize(600, 600);
        setLocation(40, 40);
        setVisible(true);

        GLCapabilities caps = new GLCapabilities();
        caps.setDoubleBuffered(true);
        caps.setHardwareAccelerated(true);

        GLJPanel panel = new GLJPanel(caps);
        panel.addGLEventListener(this);

        add(panel, BorderLayout.CENTER);
    }

    public static void main(String[] args) {
        JOGLHelloWorld demo = new JOGLHelloWorld();
        demo.setVisible(true);
    }

    public void display(GLAutoDrawable drawable) {
        GL gl = drawable.getGL();

        gl.glClear(GL.GL_COLOR_BUFFER_BIT);
        gl.glBegin(GL.GL_TRIANGLES);

        gl.glColor3f(1, 0, 0);
        gl.glVertex3f(0.25f, 0.25f, 0);

        gl.glColor3f(0, 1, 0);
        gl.glVertex3f(0.5f, 0.25f, 0);

        gl.glColor3f(0, 0, 1);
        gl.glVertex3f(0.25f, 0.5f, 0);

        gl.glEnd();
        gl.glFlush();
    }

    public void init(GLAutoDrawable drawable) {
        GL gl = drawable.getGL();

        gl.glClearColor(0, 0, 0, 0);
        gl.glMatrixMode(GL.GL_PROJECTION);
        gl.glLoadIdentity();
        gl.glOrtho(0, 1, 0, 1, -1, 1);
    }

    public void reshape(GLAutoDrawable glDrawable, int x, int y, int w, int h) {
    }

    public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {
    }
}

I realize that JOGL 1 is no longer being actively developed, so if anyone has any suggestions or workarounds that would be great.

Thanks.
Reply | Threaded
Open this post in threaded view
|

Re: GLException with JOGL 1.1.1a, Win64 & remote desktop

gouessej
Administrator
Hi!

You already know we do not maintain anymore JOGL 1.1.1a. Please switch to JOGL 2.0 beta. However, the GLJPanel was a bit broken the last time I tried to use it with JOGL 2 :(
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: GLException with JOGL 1.1.1a, Win64 & remote desktop

OwenD
Thanks for the reply. We have been reluctant to move to JOGL2 beta yet until a stable release is available. We also have seen the following exception when running JOGL2 with Java 1.4 or 1.5 (yes, unfortunately we still have to support these runtime versions):

Exception in thread "main" javax.media.opengl.GLException: No profile available:
 [GL2, GL3bc, GL4bc, GL2GL3, GL3, GL4, GL2ES2, GLES2, GL2ES1, GLES1],
 GLAvailability[Native[GL4bc false, GL4 false, GL3bc false, GL3 false, GL2 false,
 GL2ES1 false, GLES1 false, GL2ES2 false, GLES2 false], Profiles[, default null]]

I tried running the simple application and our full application with JOGL2. I had to use a nightly build since there is no windows-amd64 version in the last webstart release from 28-Apr-2010. So far we are not seeing the initial GLException with remote desktop and everything seems to be running fine. Has anyone seen the above exception running 1.4 or 1.5?

Thanks.
Reply | Threaded
Open this post in threaded view
|

Re: GLException with JOGL 1.1.1a, Win64 & remote desktop

gouessej
Administrator
It is the first time I see this problem :( sorry.

Does it happen only with Java 1.4 and 1.5?
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: GLException with JOGL 1.1.1a, Win64 & remote desktop

Sven Gothel
Administrator
In reply to this post by OwenD
On Tuesday, November 09, 2010 23:21:12 OwenD [via jogamp] wrote:

>
> Thanks for the reply. We have been reluctant to move to JOGL2 beta yet until
> a stable release is available. We also have seen the following exception
> when running JOGL2 with Java 1.4 or 1.5 (yes, unfortunately we still have to
> support these runtime versions):
>
> Exception in thread "main" javax.media.opengl.GLException: No profile
> available:
>  [GL2, GL3bc, GL4bc, GL2GL3, GL3, GL4, GL2ES2, GLES2, GL2ES1, GLES1],
>  GLAvailability[Native[GL4bc false, GL4 false, GL3bc false, GL3 false, GL2
> false,
>  GL2ES1 false, GLES1 false, GL2ES2 false, GLES2 false], Profiles[, default
> null]]
>
> I tried running the simple application and our full application with JOGL2.
> I had to use a nightly build since there is no windows-amd64 version in the
> last webstart release from 28-Apr-2010. So far we are not seeing the initial
> GLException with remote desktop and everything seems to be running fine. Has
> anyone seen the above exception running 1.4 or 1.5?

try out our new versions tomorrow or so.

if there is nothing archives, beta, please just try the good autobuild ones.

currently working on it, and updating the wiki/faq about bugreporting.

~Sven
Reply | Threaded
Open this post in threaded view
|

Re: GLException with JOGL 1.1.1a, Win64 & remote desktop

OwenD
Unfortunately, upon further testing we are now able to reproduce the GLException initially reported with JOGL2 ("Candidate" build from today). It seems to be only when using a GLJPanel with a 64-bit JRE and does not matter if remote desktop is in use or not. I have reported this to the bugzilla: 427
Reply | Threaded
Open this post in threaded view
|

Re: GLException with JOGL 1.1.1a, Win64 & remote desktop

Sven Gothel
Administrator
On Wednesday, November 10, 2010 23:30:15 OwenD [via jogamp] wrote:
>
> Unfortunately, upon further testing we are now able to reproduce the
> GLException initially reported with JOGL2 ("Candidate" build from today). It
> seems to be only when using a GLJPanel with a 64-bit JRE and does not matter
> if remote desktop is in use or not. I have reported this to the bugzilla:
> 427

Thank you.

Please attach the infos as mentioned here
  http://jogamp.org/wiki/index.php/Jogl_FAQ#Bugreports_.26_Testing

to the bugreport.

Especially the new runtime version dump,

  http://jogamp.org/wiki/index.php/Jogamp_Versioning_and_Releases#Runtime_Version_Check

which will give us the exact source code and platform info required.

We might need to include a GLJPanel test to our unit tests :)

~Sven