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.
-
Hi,
What version of Qt are you using ?
Did you test that everything is working fine in C++ before using Java ?
-
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.