Class GLPipelineFactory

java.lang.Object
com.jogamp.opengl.GLPipelineFactory

public class GLPipelineFactory extends Object
Factory for pipelining GL instances
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final boolean
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static final GL
    create(String pipelineClazzBaseName, Class<?> reqInterface, GL downstream, Object[] additionalArgs)
    Creates a pipelined GL instance using the given downstream downstream and optional arguments additionalArgs for the constructor.

    Methods inherited from class java.lang.Object

    equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • DEBUG

      public static final boolean DEBUG
  • Constructor Details

    • GLPipelineFactory

      public GLPipelineFactory()
  • Method Details

    • create

      public static final GL create(String pipelineClazzBaseName, Class<?> reqInterface, GL downstream, Object[] additionalArgs)
      Creates a pipelined GL instance using the given downstream downstream and optional arguments additionalArgs for the constructor.

      Sample code which installs a Debug and Trace pipeline automatic w/ user defined interface, here: GL2ES2:

           gl = drawable.setGL( GLPipelineFactory.create("com.jogamp.opengl.Debug", GL2ES2.class, gl, null) );
           gl = drawable.setGL( GLPipelineFactory.create("com.jogamp.opengl.Trace", GL2ES2.class, gl, new Object[] { System.err } ) );
       
      or automatic w/ automatic defined class:
           gl = drawable.setGL( GLPipelineFactory.create("com.jogamp.opengl.Debug",         null, gl, null) );
           gl = drawable.setGL( GLPipelineFactory.create("com.jogamp.opengl.Trace",         null, gl, new Object[] { System.err } ) );
       

      The upstream GL instance is determined as follows:

      • Use pipelineClazzBaseName as the class name's full basename, incl. package name
      • For the downstream class and it's superclasses, do:
        • For all downstream class and superclass interfaces, do:
          • If reqInterface is not null and the interface is unequal, continue loop.
          • If downstream is not instance of interface, continue loop.
          • If upstream class is available use it, end loop.

      Parameters:
      pipelineClazzBaseName - the basename of the pipline class name
      reqInterface - optional requested interface to be used, may be null, in which case the first matching one is used
      downstream - is always the 1st argument for the upstream constructor
      additionalArgs - additional arguments for the upstream constructor