Using JOGL with QtJambi



  • Hi !

    I’m trying to use JOGL with QtJambi. I’m using code I found in tutorials (some of them are very old) and forums but nothing is displayed. The QGLWidget initialization prevents the window to be displayed. I have no error in the console. The program is running, but there is no window.

    Is there something I’m doing wrong ?

    Here is my code.

    The GLWidget

    public class QtJOGLTestGLWidget extends QGLWidget
    {
        protected GLContext context; 
        protected GL gl; 
    
        public QtJOGLTestGLWidget()
        {
            this(null); 
        }
    
        public QtJOGLTestGLWidget(QWidget parent)
        {
            super(parent); 
        }
    
        @Override
        protected void initializeGL()
        {
            GLProfile profile = GLProfile.get(GLProfile.GL2); 
            GLCapabilities glCaps = new GLCapabilities(profile); 
            glCaps.setPBuffer(true); 
            GLDrawableFactory factory = GLDrawableFactory.getFactory(profile); 
            context().makeCurrent(); 
            this.context = factory.createExternalGLContext(); 
            this.context.makeCurrent(); 
            this.gl = this.context.getGL(); 
        }
    
        @Override 
        protected void resizeGL(int w, int h)
        {
            GL2 gl2 = this.gl.getGL2(); 
            gl2.glViewport(0, 0, w, h);
            gl2.glMatrixMode(GL2.GL_PROJECTION);
            float r = 3.0f / 2.0f;
            gl2.glLoadIdentity();
            gl2.glFrustum(-0.2, 1 * r, -0.2, 1.2, 1, 2000);
        }
    
        @Override
        protected void paintGL()
        {
            GL2 gl2 = this.gl.getGL2(); 
    
            gl2.glMatrixMode(GL2.GL_MODELVIEW);
            gl2.glLoadIdentity();
    
            gl2.glBegin(GL.GL_TRIANGLES);
            {
                gl2.glColor3f(1, 0, 0);
                gl2.glVertex3f(0, 0, -1);
                gl2.glColor3f(0, 1, 0);
                gl2.glVertex3f(0, 1, -1);
                gl2.glColor3f(0, 0, 1);
                gl2.glVertex3f(1, 0, -1);
            }
            gl2.glEnd();
        }
    }
    

    The window

    public class QtJOGLTestFrame extends QMainWindow
    {
        protected QtJOGLTestGLWidget glWidget; 
        protected QGridLayout gridLayout; 
    
        public QtJOGLTestFrame()
        {
            this.gridLayout = new QGridLayout(); 
            this.glWidget = new QtJOGLTestGLWidget(this); // This line prevents the window to be displayed 
            this.gridLayout.addWidget(this.glWidget, 0, 0); 
    
            QWidget widget = new QWidget(); 
            widget.setLayout(this.gridLayout); 
            this.setCentralWidget(widget); 
            this.setWindowTitle("Hello JOGL");
        }
    }
    

    Main

    public class QtJOGLTest
    {
        public static void main(String[] args)
        {
            QApplication.initialize(args);
            QtJOGLTestFrame frame = new QtJOGLTestFrame(); 
            frame.resize(800, 600); 
            frame.show(); 
            QApplication.execStatic();
        }
    }
    

    I'm using the last version of JOGL and Mac OS X Sierra.

    Thank you in advance.


  • Lifetime Qt Champion

    Hi,

    What version of Qt are you using ?

    Did you test that everything is working fine in C++ before using Java ?



  • Hi !

    QtJambi is using the 4.8.6 version of Qt.
    I didn't test with C++ because of lack of experience with this language.


  • Lifetime Qt Champion

    Qt 4.8.6 might be working properly or not on Sierra. The thing is that latest and last version of Qt 4 is 4.8.7 and it was released long before Sierra so I might or might not work as intended because of changes from Apple.

    I'd recommend contacting the folks who are currently handling the QtJambi module which was officially retired in 2010.



  • Thanks for the information.
    I tested on a Windows 7 virtual machine and it works. So I suppose you are right about a compatibility problem with Sierra.
    I'll contact the current dev team of QtJambi.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.