How to use the Debug and Trace GL Pipeline and Debug GL Context

From JogampWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Debug and Trace GL Pipeline

class MyGLEvenListener extends GLEvenListener {

  static final boolean glDebug = .. ; // enable at your leisure
  static final boolean glTrace = .. ; // enable at your leisure

  static boolean once = false;

  public void init(GLAutoDrawable drawable) {
    GL2ES2 gl2es2;
    if( !once ) {
      once = true;
      GL gl = drawable.getGL();

      if(glDebug) {
          try {
              // Debug ..
              gl = gl.getContext().setGL( GLPipelineFactory.create("javax.media.opengl.Debug", null, gl, null) );
          } catch (Exception e) {e.printStackTrace();}
      }

      if(glTrace) {
          try {
              // Trace ..
              gl = gl.getContext().setGL( GLPipelineFactory.create("javax.media.opengl.Trace", null, gl, new Object[] { System.err } ) );
          } catch (Exception e) {e.printStackTrace();}
      }

      gl2es2 = gl.getGL2ES2();
    } else {
      gl2es2 = drawable.getGL().getGL2ES2();
    }
  }

}

You also can enable 'JVM wide' DebugGL by simply setting property jogl.debug.DebugGL:

  -Djogl.debug.DebugGL

This will also enable the native debug context, see below.

You also can enable 'JVM wide' TraceGL by simply setting property jogl.debug.TraceGL:

  -Djogl.debug.TraceGL


Debug GL Context

If you like to use the native debug context you would need to configure the not yet natively created GLContext:

GLContext ctx = ...; // not yet natively created by 1st makeCurrent()
ctx.setContextCreationFlags(GLContext.CTX_OPTION_DEBUG);

.. or using an GLAutoDrawable implementation:

GLWindow glWin = ... ; // newly create one, not yet visible
glWin.setContextCreationFlags(GLContext.CTX_OPTION_DEBUG);