JOGL v2.6.0-rc-20250712
JOGL, High-Performance Graphics Binding for Java™ (public API).
com.jogamp.opengl.GLDrawableFactory Class Referenceabstract
Collaboration diagram for com.jogamp.opengl.GLDrawableFactory:

Public Member Functions

abstract boolean setDisplayGamma (final NativeSurface surface, final float gamma, final float brightness, final float contrast) throws IllegalArgumentException
 Sets the gamma, brightness, and contrast of the display associated with the given surface. More...
 
abstract void resetDisplayGamma (final NativeSurface surface)
 Resets the gamma, brightness and contrast values of the display associated with the given surface to its original values before setDisplayGamma was called the first time. More...
 
abstract void resetAllDisplayGamma ()
 Resets the gamma, brightness and contrast values of all modified displays to their original values before setDisplayGamma was called the first time. More...
 
abstract AbstractGraphicsDevice getDefaultDevice ()
 Retrieve the default device connection, unit ID and unique ID name. More...
 
abstract boolean getIsDeviceCompatible (AbstractGraphicsDevice device)
 
final boolean hasRendererQuirk (final AbstractGraphicsDevice device, final GLProfile glp, final int quirk)
 Returns true if the quirk exist in the shared resource's context GLRendererQuirks. More...
 
abstract GLRendererQuirks getRendererQuirks (AbstractGraphicsDevice device, final GLProfile glp)
 Returns the shared resource's context GLRendererQuirks. More...
 
abstract boolean hasOpenGLDesktopSupport ()
 Method returns true if underlying implementation may support native desktop OpenGL, otherwise false. More...
 
abstract boolean hasOpenGLESSupport ()
 Method returns true if underlying implementation may support native embedded OpenGL ES, otherwise false. More...
 
final List< GLCapabilitiesImmutablegetAvailableCapabilities (AbstractGraphicsDevice device)
 Returns an array of available GLCapabilities for the device. More...
 
abstract GLDrawable createGLDrawable (NativeSurface target) throws IllegalArgumentException, GLException
 Returns an unrealized GLDrawable according to it's chosen GLCapabilitiesImmutable,
which determines pixel format, on- and offscreen incl. More...
 
abstract GLOffscreenAutoDrawable createOffscreenAutoDrawable (AbstractGraphicsDevice device, GLCapabilitiesImmutable caps, GLCapabilitiesChooser chooser, int width, int height) throws GLException
 Creates a realized GLOffscreenAutoDrawable incl it's offscreen NativeSurface with the given capabilities and dimensions. More...
 
abstract GLAutoDrawable createDummyAutoDrawable (AbstractGraphicsDevice deviceReq, boolean createNewDevice, GLCapabilitiesImmutable capsRequested, GLCapabilitiesChooser chooser)
 Creates a realized dummy GLAutoDrawable incl it's dummy, invisible NativeSurface as created with createDummyDrawable(AbstractGraphicsDevice, boolean, GLCapabilitiesImmutable, GLCapabilitiesChooser). More...
 
abstract GLDrawable createOffscreenDrawable (AbstractGraphicsDevice device, GLCapabilitiesImmutable caps, GLCapabilitiesChooser chooser, int width, int height) throws GLException
 Creates an unrealized offscreen GLDrawable incl it's offscreen NativeSurface with the given capabilities and dimensions. More...
 
abstract GLDrawable createDummyDrawable (AbstractGraphicsDevice deviceReq, boolean createNewDevice, GLCapabilitiesImmutable capsRequested, GLCapabilitiesChooser chooser)
 Creates an unrealized dummy GLDrawable. More...
 
abstract ProxySurface createProxySurface (AbstractGraphicsDevice device, int screenIdx, long windowHandle, GLCapabilitiesImmutable caps, GLCapabilitiesChooser chooser, UpstreamSurfaceHook upstream)
 Creates a proxy NativeSurface w/ defined surface handle, i.e. More...
 
abstract boolean canCreateFBO (AbstractGraphicsDevice device, GLProfile glp)
 Returns true if it is possible to create an framebuffer object (FBO). More...
 
abstract boolean canCreateGLPbuffer (AbstractGraphicsDevice device, GLProfile glp)
 Returns true if it is possible to create an pbuffer surface. More...
 
abstract GLContext createExternalGLContext () throws GLException
 
abstract boolean canCreateExternalGLDrawable (AbstractGraphicsDevice device)
 Returns true if it is possible to create an external GLDrawable object via createExternalGLDrawable. More...
 
abstract GLDrawable createExternalGLDrawable () throws GLException
 

Static Public Member Functions

static final void initSingleton ()
 Instantiate singleton factories if available, EGLES1, EGLES2 and the OS native ones. More...
 
static GLDrawableFactory getDesktopFactory ()
 Returns the sole GLDrawableFactory instance for the desktop (X11, WGL, ..) if exist or null. More...
 
static GLDrawableFactory getEGLFactory ()
 Returns the sole GLDrawableFactory instance for EGL if exist or null. More...
 
static GLDrawableFactory getFactory (final GLProfile glProfile) throws GLException
 Returns the sole GLDrawableFactory instance. More...
 
static GLDrawableFactory getFactory (final boolean useNativeGLES)
 Returns the sole GLDrawableFactory instance, either for mobile if usesNativeGLES is true, or for desktop otherwise. More...
 
static GLDrawableFactory getFactory (final AbstractGraphicsDevice device)
 Returns the sole GLDrawableFactory matching the given AbstractGraphicsDevice instance, which will be suitable either for native mobile or native desktop. More...
 

Protected Member Functions

 GLDrawableFactory ()
 
abstract boolean isComplete ()
 Returns true if this factory is complete, i.e. More...
 
void enterThreadCriticalZone ()
 
void leaveThreadCriticalZone ()
 
abstract void shutdownImpl ()
 
abstract void resetAllDisplayGammaNoSync ()
 
final AbstractGraphicsDevice validateDevice (AbstractGraphicsDevice device)
 
abstract Thread getSharedResourceThread ()
 Validate and start the shared resource runner thread if necessary and if the implementation uses it. More...
 
final boolean createSharedResource (final AbstractGraphicsDevice device)
 Create the shared resource used internally as a reference for capabilities etc. More...
 
abstract boolean createSharedResourceImpl (AbstractGraphicsDevice device)
 
abstract List< GLCapabilitiesImmutablegetAvailableCapabilitiesImpl (AbstractGraphicsDevice device)
 

Static Protected Member Functions

static void shutdown ()
 
static String getThreadName ()
 
static GLDrawableFactory getFactoryImpl (final String glProfileImplName)
 
static GLDrawableFactory getFactoryImpl (final boolean useNativeGLES)
 

Static Protected Attributes

static final boolean DEBUG = Debug.debug("GLDrawable")
 

Detailed Description

Provides a virtual machine- and operating system-independent mechanism for creating GLDrawables.

The com.jogamp.opengl.GLCapabilities objects passed in to the various factory methods are used as a hint for the properties of the returned drawable. The default capabilities selection algorithm (equivalent to passing in a null GLCapabilitiesChooser) is described in DefaultGLCapabilitiesChooser. Sophisticated applications needing to change the selection algorithm may pass in their own GLCapabilitiesChooser which can select from the available pixel formats. The GLCapabilitiesChooser mechanism may not be supported by all implementations or on all platforms, in which case any passed GLCapabilitiesChooser will be ignored.

Because of the multithreaded nature of the Java platform's Abstract Window Toolkit, it is typically not possible to immediately reject a given GLCapabilities as being unsupportable by either returning null from the creation routines or raising a GLException. The semantics of the rejection process are (unfortunately) left unspecified for now. The current implementation will cause a GLException to be raised during the first repaint of the com.jogamp.opengl.awt.GLCanvas or com.jogamp.opengl.awt.GLJPanel if the capabilities can not be met.
GLOffscreenAutoDrawable are created lazily, see createOffscreenAutoDrawable(..).

The concrete GLDrawableFactory subclass instantiated by getFactory can be changed by setting the system property opengl.factory.class.name to the fully-qualified name of the desired class.

Definition at line 99 of file GLDrawableFactory.java.

Constructor & Destructor Documentation

◆ GLDrawableFactory()

com.jogamp.opengl.GLDrawableFactory.GLDrawableFactory ( )
protected

Definition at line 239 of file GLDrawableFactory.java.

Member Function Documentation

◆ canCreateExternalGLDrawable()

abstract boolean com.jogamp.opengl.GLDrawableFactory.canCreateExternalGLDrawable ( AbstractGraphicsDevice  device)
abstract

Returns true if it is possible to create an external GLDrawable object via createExternalGLDrawable.

Parameters
devicewhich connection denotes the shared the target device, may be null for the platform's default device.

◆ canCreateFBO()

abstract boolean com.jogamp.opengl.GLDrawableFactory.canCreateFBO ( AbstractGraphicsDevice  device,
GLProfile  glp 
)
abstract

Returns true if it is possible to create an framebuffer object (FBO).

FBO feature is implemented in OpenGL, hence it is GLProfile dependent.

FBO support is queried as described in GLContext#hasBasicFBOSupport().

Parameters
devicewhich connection denotes the shared the target device, may be null for the platform's default device.
glpGLProfile to check for FBO capabilities
See also
GLContext::hasBasicFBOSupport()

◆ canCreateGLPbuffer()

abstract boolean com.jogamp.opengl.GLDrawableFactory.canCreateGLPbuffer ( AbstractGraphicsDevice  device,
GLProfile  glp 
)
abstract

Returns true if it is possible to create an pbuffer surface.

Some older graphics cards do not have this capability, as well as some new GL implementation, i.e. OpenGL 3 core on OSX.

Parameters
devicewhich connection denotes the shared the target device, may be null for the platform's default device.
glpGLProfile to check for FBO capabilities
Here is the caller graph for this function:

◆ createDummyAutoDrawable()

abstract GLAutoDrawable com.jogamp.opengl.GLDrawableFactory.createDummyAutoDrawable ( AbstractGraphicsDevice  deviceReq,
boolean  createNewDevice,
GLCapabilitiesImmutable  capsRequested,
GLCapabilitiesChooser  chooser 
)
abstract

Creates a realized dummy GLAutoDrawable incl it's dummy, invisible NativeSurface as created with createDummyDrawable(AbstractGraphicsDevice, boolean, GLCapabilitiesImmutable, GLCapabilitiesChooser).

The dummy GLAutoDrawable's GLDrawable is realized without an assigned GLContext, hence not initialized completely.
The GLContext can be assigned later manually via setContext(ctx) or it will be created lazily at the 1st display() method call.
Lazy GLContext creation will take a shared GLContext into account which has been set directly or via another GLAutoDrawable.

Parameters
deviceReqwhich connection denotes the shared device to be used, may be null for the platform's default device.
createNewDeviceif true a new independent device instance is created from the deviceReq, otherwise deviceReq is used as-is and must be valid!
capsRequestedthe desired GLCapabilitiesImmutable, incl. it's GLProfile. For shared context, same GLCapabilitiesImmutable#getVisualID(com.jogamp.nativewindow.VisualIDHolder.VIDType) across shared drawables will yield best compatibility.
chooserthe custom chooser, may be null for default
Returns
the created and realized dummy GLAutoDrawable instance
See also
createDummyDrawable(AbstractGraphicsDevice, boolean, GLCapabilitiesImmutable, GLCapabilitiesChooser)

◆ createDummyDrawable()

abstract GLDrawable com.jogamp.opengl.GLDrawableFactory.createDummyDrawable ( AbstractGraphicsDevice  deviceReq,
boolean  createNewDevice,
GLCapabilitiesImmutable  capsRequested,
GLCapabilitiesChooser  chooser 
)
abstract

Creates an unrealized dummy GLDrawable.

A dummy drawable is not visible on screen and will not be used to render directly to, it maybe on- or offscreen and implementation prefers creating a surfaceless drawable.

It is used to allow the creation of a GLContext to query information. It also allows creation of framebuffer objects which are used for rendering or creating a shared GLContext w/o actually rendering to this dummy drawable's framebuffer.

Parameters
deviceReqwhich connection denotes the shared device to be used, may be null for the platform's default device.
createNewDeviceif true a new independent device instance is created from the deviceReq, otherwise deviceReq is used as-is and must be valid!
capsRequestedthe desired GLCapabilitiesImmutable, incl. it's GLProfile. For shared context, same visual ID or caps across shared drawables will yield best compatibility.
chooserthe custom chooser, may be null for default
Returns
the created unrealized dummy GLDrawable

◆ createExternalGLContext()

abstract GLContext com.jogamp.opengl.GLDrawableFactory.createExternalGLContext ( ) throws GLException
abstract

Creates a GLContext object representing an existing OpenGL context in an external (third-party) OpenGL-based library. This GLContext object may be used to draw into this preexisting context using its GL and com.jogamp.opengl.glu.GLU objects. New contexts created through GLDrawables may share textures and display lists with this external context.

The underlying OpenGL context must be current on the current thread at the time this method is called. The user is responsible for the maintenance of the underlying OpenGL context; calls to makeCurrent and release on the returned GLContext object have no effect. If the underlying OpenGL context is destroyed, the destroy method should be called on the GLContext. A new GLContext object should be created for each newly-created underlying OpenGL context.

Exceptions
GLExceptionif any window system-specific errors caused the creation of the external GLContext to fail.
Here is the caller graph for this function:

◆ createExternalGLDrawable()

abstract GLDrawable com.jogamp.opengl.GLDrawableFactory.createExternalGLDrawable ( ) throws GLException
abstract

Creates a GLDrawable object representing an existing OpenGL drawable in an external (third-party) OpenGL-based library. This GLDrawable object may be used to create new, fully-functional GLContexts on the OpenGL drawable. This is useful when interoperating with a third-party OpenGL-based library and it is essential to not perturb the state of the library's existing context, even to the point of not sharing textures or display lists with that context.

An underlying OpenGL context must be current on the desired drawable and the current thread at the time this method is called. The user is responsible for the maintenance of the underlying drawable. If one or more contexts are created on the drawable using GLDrawable#createContext, and the drawable is deleted by the third-party library, the user is responsible for calling GLContext#destroy on these contexts.

Calls to setSize, getWidth and getHeight are illegal on the returned GLDrawable. If these operations are required by the user, they must be performed by the third-party library.

It is legal to create both an external GLContext and GLDrawable representing the same third-party OpenGL entities. This can be used, for example, to query current state information using the external GLContext and then create and set up new GLContexts using the external GLDrawable.

This functionality may not be available on all platforms and canCreateExternalGLDrawable should be called first to see if it is present. For example, on X11 platforms, this API requires the presence of GLX 1.3 or later.

Exceptions
GLExceptionif any window system-specific errors caused the creation of the external GLDrawable to fail.

◆ createGLDrawable()

abstract GLDrawable com.jogamp.opengl.GLDrawableFactory.createGLDrawable ( NativeSurface  target) throws IllegalArgumentException, GLException
abstract

Returns an unrealized GLDrawable according to it's chosen GLCapabilitiesImmutable,
which determines pixel format, on- and offscreen incl.

PBuffer type.

The chosen GLCapabilitiesImmutable are referenced within the target NativeSurface's AbstractGraphicsConfiguration.

An onscreen GLDrawable is created if caps.isOnscreen() is true.

A FBO drawable is created if both caps.isFBO() and canCreateFBO(device, caps.getGLProfile()) is true.

A Pbuffer drawable is created if both caps.isPBuffer() and canCreateGLPbuffer(device) is true.

If not onscreen and neither FBO nor Pbuffer is available, a simple pixmap/bitmap drawable/surface is created, which is unlikely to be hardware accelerated.

Exceptions
IllegalArgumentExceptionif the passed target is null
GLExceptionif any window system-specific errors caused the creation of the GLDrawable to fail.
See also
canCreateGLPbuffer(AbstractGraphicsDevice, GLProfile)
GLContext::isFBOAvailable(AbstractGraphicsDevice, GLProfile)
com.jogamp.opengl.GLCapabilities::isOnscreen()
com.jogamp.opengl.GLCapabilities::isFBO()
com.jogamp.opengl.GLCapabilities::isPBuffer()
GraphicsConfigurationFactory::chooseGraphicsConfiguration(CapabilitiesImmutable, CapabilitiesImmutable, CapabilitiesChooser, AbstractGraphicsScreen, int)
Here is the caller graph for this function:

◆ createOffscreenAutoDrawable()

abstract GLOffscreenAutoDrawable com.jogamp.opengl.GLDrawableFactory.createOffscreenAutoDrawable ( AbstractGraphicsDevice  device,
GLCapabilitiesImmutable  caps,
GLCapabilitiesChooser  chooser,
int  width,
int  height 
) throws GLException
abstract

Creates a realized GLOffscreenAutoDrawable incl it's offscreen NativeSurface with the given capabilities and dimensions.

The GLOffscreenAutoDrawable's GLDrawable is realized without an assigned GLContext, hence not initialized completely.

The GLContext can be assigned later manually via setContext(ctx) or it will be created lazily at the 1st display() method call.

Lazy GLContext creation will take a shared GLContext into account which has been set directly or via another GLAutoDrawable.

In case the passed GLCapabilitiesImmutable contains default values, i.e. caps.isOnscreen() == true, it is auto-configured. Auto configuration will set caps to offscreen and FBO or Pbuffer, whichever is available in that order.

A FBO based auto drawable, GLOffscreenAutoDrawable.FBO, is created if both caps.isFBO() and canCreateFBO(device, caps.getGLProfile()) is true.

A Pbuffer based auto drawable is created if both caps.isPBuffer() and canCreateGLPbuffer(device) is true.

If neither FBO nor Pbuffer is available, a simple pixmap/bitmap auto drawable is created, which is unlikely to be hardware accelerated.

The resulting GLOffscreenAutoDrawable has it's own independent device instance using device details.

Parameters
devicewhich connection denotes the shared device to be used, may be null for the platform's default device.
capsthe requested GLCapabilties
chooserthe custom chooser, may be null for default
widththe requested offscreen width
heightthe requested offscreen height
Returns
the created and realized offscreen GLOffscreenAutoDrawable instance
Exceptions
GLExceptionif any window system-specific errors caused the creation of the Offscreen to fail.
See also
createOffscreenDrawable(AbstractGraphicsDevice, GLCapabilitiesImmutable, GLCapabilitiesChooser, int, int)
Here is the caller graph for this function:

◆ createOffscreenDrawable()

abstract GLDrawable com.jogamp.opengl.GLDrawableFactory.createOffscreenDrawable ( AbstractGraphicsDevice  device,
GLCapabilitiesImmutable  caps,
GLCapabilitiesChooser  chooser,
int  width,
int  height 
) throws GLException
abstract

Creates an unrealized offscreen GLDrawable incl it's offscreen NativeSurface with the given capabilities and dimensions.

In case the passed GLCapabilitiesImmutable contains default values, i.e. caps.isOnscreen() == true, it is auto-configured. The latter will set offscreen and also FBO or Pbuffer, whichever is available in that order.

A resizeable FBO drawable, GLFBODrawable.Resizeable, is created if both caps.isFBO() and canCreateFBO(device, caps.getGLProfile()) is true.

A Pbuffer drawable is created if both caps.isPBuffer() and canCreateGLPbuffer(device) is true.

If neither FBO nor Pbuffer is available, a simple pixmap/bitmap drawable is created, which is unlikely to be hardware accelerated.

The resulting GLDrawable has it's own independent device instance using device details.

Parameters
devicewhich connection denotes the shared device to be used, may be null for the platform's default device.
capsthe requested GLCapabilties
chooserthe custom chooser, may be null for default
widththe requested offscreen width
heightthe requested offscreen height
Returns
the created unrealized offscreen GLDrawable
Exceptions
GLExceptionif any window system-specific errors caused the creation of the Offscreen to fail.
See also
#createOffscreenAutoDrawable(AbstractGraphicsDevice, GLCapabilitiesImmutable, GLCapabilitiesChooser, int, int, GLContext)
Here is the caller graph for this function:

◆ createProxySurface()

abstract ProxySurface com.jogamp.opengl.GLDrawableFactory.createProxySurface ( AbstractGraphicsDevice  device,
int  screenIdx,
long  windowHandle,
GLCapabilitiesImmutable  caps,
GLCapabilitiesChooser  chooser,
UpstreamSurfaceHook  upstream 
)
abstract

Creates a proxy NativeSurface w/ defined surface handle, i.e.

a jogamp.nativewindow.WrappedSurface or jogamp.nativewindow.windows.GDISurface instance.

It's AbstractGraphicsConfiguration is properly set according to the given windowHandle's native visualID if set or the given GLCapabilitiesImmutable.

Lifecycle (creation and destruction) of the given surface handle shall be handled by the caller via ProxySurface#createNotify() and ProxySurface#destroyNotify().

Such surface can be used to instantiate a GLDrawable. With the help of GLAutoDrawableDelegate you will be able to implement a new native windowing system binding almost on-the-fly, see com.jogamp.opengl.swt.GLCanvas.

The resulting GLOffscreenAutoDrawable has it's own independent device instance using device details which may be blocking depending on platform and windowing-toolkit requirements.

Parameters
devicewhich connection denotes the shared the target device, may be null for the platform's default device. Caller has to ensure it is compatible w/ the given windowHandle
screenIdxmatching screen index of given windowHandle
windowHandlethe native window handle
capsthe requested GLCapabilties
chooserthe custom chooser, may be null for default
upstreamoptional UpstreamSurfaceHook allowing control of the ProxySurface's lifecycle and data it presents.
Returns
the created ProxySurface instance w/ defined surface handle.

◆ createSharedResource()

final boolean com.jogamp.opengl.GLDrawableFactory.createSharedResource ( final AbstractGraphicsDevice  device)
protected

Create the shared resource used internally as a reference for capabilities etc.

Returns true if a shared resource could be created for the device AbstractGraphicsDevice#getConnection().
This does not imply a shared resource is mapped (ie. made persistent), but is available in general
.

Parameters
devicewhich connection denotes the shared the target device, may be null for the platform's default device.
Returns
true if a shared resource could been created, otherwise false.

Definition at line 384 of file GLDrawableFactory.java.

Here is the call graph for this function:

◆ createSharedResourceImpl()

abstract boolean com.jogamp.opengl.GLDrawableFactory.createSharedResourceImpl ( AbstractGraphicsDevice  device)
abstractprotected
Here is the caller graph for this function:

◆ enterThreadCriticalZone()

void com.jogamp.opengl.GLDrawableFactory.enterThreadCriticalZone ( )
protected

Definition at line 250 of file GLDrawableFactory.java.

◆ getAvailableCapabilities()

final List< GLCapabilitiesImmutable > com.jogamp.opengl.GLDrawableFactory.getAvailableCapabilities ( AbstractGraphicsDevice  device)

Returns an array of available GLCapabilities for the device.


The list is sorted by the native ID, ascending.
The chosen GLProfile statement in the result may not refer to the maximum available profile due to implementation constraints, ie using the shared resource.

Parameters
devicewhich connection denotes the shared the target device, may be null for the platform's default device.
Returns
A list of com.jogamp.opengl.GLCapabilitiesImmutable's, maybe empty if none is available.

Definition at line 539 of file GLDrawableFactory.java.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getAvailableCapabilitiesImpl()

abstract List< GLCapabilitiesImmutable > com.jogamp.opengl.GLDrawableFactory.getAvailableCapabilitiesImpl ( AbstractGraphicsDevice  device)
abstractprotected
Here is the caller graph for this function:

◆ getDefaultDevice()

abstract AbstractGraphicsDevice com.jogamp.opengl.GLDrawableFactory.getDefaultDevice ( )
abstract

Retrieve the default device connection, unit ID and unique ID name.

for this factory
The implementation must return a non null default device, which must not be opened, ie. it's native handle is null.

This method shall return the default device if available even if the GLDrawableFactory is not functional and hence not compatible. The latter situation may happen because no native OpenGL implementation is available for the specific implementation.

Returns
the default shared device for this factory, eg. :0.0 on X11 desktop.
See also
getIsDeviceCompatible(AbstractGraphicsDevice)
Here is the caller graph for this function:

◆ getDesktopFactory()

static GLDrawableFactory com.jogamp.opengl.GLDrawableFactory.getDesktopFactory ( )
static

Returns the sole GLDrawableFactory instance for the desktop (X11, WGL, ..) if exist or null.

To fetch the appropriate GLDrawableFactory for native desktop or mobile, use getFactory(boolean).

It is possible that the desktop GLDrawableFactory will be used for native mobile GL profiles, e.g. Platform.OSType#IOS.

Returns
the matching GLDrawableFactory or null if none is available

Definition at line 450 of file GLDrawableFactory.java.

Here is the call graph for this function:

◆ getEGLFactory()

static GLDrawableFactory com.jogamp.opengl.GLDrawableFactory.getEGLFactory ( )
static

Returns the sole GLDrawableFactory instance for EGL if exist or null.

To fetch the appropriate GLDrawableFactory for native desktop or mobile, use getFactory(boolean).

It is possible that a non EGL GLDrawableFactory will be used for native mobile GL profiles, e.g. Platform.OSType#IOS.

Returns
the matching GLDrawableFactory or null if none is available

Definition at line 467 of file GLDrawableFactory.java.

Here is the call graph for this function:

◆ getFactory() [1/3]

static GLDrawableFactory com.jogamp.opengl.GLDrawableFactory.getFactory ( final AbstractGraphicsDevice  device)
static

Returns the sole GLDrawableFactory matching the given AbstractGraphicsDevice instance, which will be suitable either for native mobile or native desktop.

Parameters
devicethe queries AbstractGraphicsDevice seeking for its matching factory
Returns
the matching GLDrawableFactory or null if none is available

Definition at line 520 of file GLDrawableFactory.java.

Here is the call graph for this function:

◆ getFactory() [2/3]

static GLDrawableFactory com.jogamp.opengl.GLDrawableFactory.getFactory ( final boolean  useNativeGLES)
static

Returns the sole GLDrawableFactory instance, either for mobile if usesNativeGLES is true, or for desktop otherwise.

Parameters
useNativeGLESrequest native mobile GLES support if true
Returns
the matching GLDrawableFactory or null if none is available

Definition at line 492 of file GLDrawableFactory.java.

Here is the call graph for this function:

◆ getFactory() [3/3]

static GLDrawableFactory com.jogamp.opengl.GLDrawableFactory.getFactory ( final GLProfile  glProfile) throws GLException
static

Returns the sole GLDrawableFactory instance.

Parameters
glProfileGLProfile to determine the factory type, ie for native mobile GL or native desktop GL.
Returns
the matching GLDrawableFactory
Exceptions
GLExceptionif no matching GLDrawableFactory exists

Definition at line 479 of file GLDrawableFactory.java.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getFactoryImpl() [1/2]

static GLDrawableFactory com.jogamp.opengl.GLDrawableFactory.getFactoryImpl ( final boolean  useNativeGLES)
staticprotected

Definition at line 499 of file GLDrawableFactory.java.

Here is the call graph for this function:

◆ getFactoryImpl() [2/2]

static GLDrawableFactory com.jogamp.opengl.GLDrawableFactory.getFactoryImpl ( final String  glProfileImplName)
staticprotected

Definition at line 496 of file GLDrawableFactory.java.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getIsDeviceCompatible()

abstract boolean com.jogamp.opengl.GLDrawableFactory.getIsDeviceCompatible ( AbstractGraphicsDevice  device)
abstract
Parameters
devicewhich connection denotes the shared the target device, may be null for the platform's default device.
Returns
true if the device is compatible with this factory, ie. if it can be used for GLDrawable creation. Otherwise false. This implies validation whether the implementation is functional.
See also
getDefaultDevice()
Here is the caller graph for this function:

◆ getRendererQuirks()

abstract GLRendererQuirks com.jogamp.opengl.GLDrawableFactory.getRendererQuirks ( AbstractGraphicsDevice  device,
final GLProfile  glp 
)
abstract

Returns the shared resource's context GLRendererQuirks.

Implementation calls GLContext#getRendererQuirks() on the shared resource context.

In case no shared device exist yet or the implementation doesn't support tracking quirks, the result is always null.

Parameters
devicewhich connection denotes the shared the target device, may be null for the platform's default device.
glpGLProfile to identify the device's GLRendererQuirks, maybe null
See also
GLContext::getRendererQuirks()
GLRendererQuirks
Here is the caller graph for this function:

◆ getSharedResourceThread()

abstract Thread com.jogamp.opengl.GLDrawableFactory.getSharedResourceThread ( )
abstractprotected

Validate and start the shared resource runner thread if necessary and if the implementation uses it.

Returns
the shared resource runner thread, if implementation uses it.

◆ getThreadName()

static String com.jogamp.opengl.GLDrawableFactory.getThreadName ( )
staticprotected

Definition at line 245 of file GLDrawableFactory.java.

◆ hasOpenGLDesktopSupport()

abstract boolean com.jogamp.opengl.GLDrawableFactory.hasOpenGLDesktopSupport ( )
abstract

Method returns true if underlying implementation may support native desktop OpenGL, otherwise false.

Here is the caller graph for this function:

◆ hasOpenGLESSupport()

abstract boolean com.jogamp.opengl.GLDrawableFactory.hasOpenGLESSupport ( )
abstract

Method returns true if underlying implementation may support native embedded OpenGL ES, otherwise false.

Here is the caller graph for this function:

◆ hasRendererQuirk()

final boolean com.jogamp.opengl.GLDrawableFactory.hasRendererQuirk ( final AbstractGraphicsDevice  device,
final GLProfile  glp,
final int  quirk 
)

Returns true if the quirk exist in the shared resource's context GLRendererQuirks.

Convenience method for:

 final GLRendererQuirks glrq = factory.getRendererQuirks(device);
 return null != glrq ? glrq.exist(quirk) : false;
Parameters
devicewhich connection denotes the shared the target device, may be null for the platform's default device.
glpGLProfile to identify the device's GLRendererQuirks, maybe null
quirkthe quirk to be tested, e.g. GLRendererQuirks#NoDoubleBufferedPBuffer.
Exceptions
IllegalArgumentExceptionif the quirk is out of range
See also
getRendererQuirks(AbstractGraphicsDevice, GLProfile)
GLRendererQuirks

Definition at line 406 of file GLDrawableFactory.java.

Here is the call graph for this function:

◆ initSingleton()

static final void com.jogamp.opengl.GLDrawableFactory.initSingleton ( )
static

Instantiate singleton factories if available, EGLES1, EGLES2 and the OS native ones.

Definition at line 112 of file GLDrawableFactory.java.

◆ isComplete()

abstract boolean com.jogamp.opengl.GLDrawableFactory.isComplete ( )
abstractprotected

Returns true if this factory is complete, i.e.

ready to be used. Otherwise return false.

◆ leaveThreadCriticalZone()

void com.jogamp.opengl.GLDrawableFactory.leaveThreadCriticalZone ( )
protected

Definition at line 251 of file GLDrawableFactory.java.

◆ resetAllDisplayGamma()

abstract void com.jogamp.opengl.GLDrawableFactory.resetAllDisplayGamma ( )
abstract

Resets the gamma, brightness and contrast values of all modified displays to their original values before setDisplayGamma was called the first time.

While it is not explicitly required that this method be called before exiting manually, calling it is recommended because of the inevitable unspecified behavior during JVM teardown.

Here is the caller graph for this function:

◆ resetAllDisplayGammaNoSync()

abstract void com.jogamp.opengl.GLDrawableFactory.resetAllDisplayGammaNoSync ( )
abstractprotected

◆ resetDisplayGamma()

abstract void com.jogamp.opengl.GLDrawableFactory.resetDisplayGamma ( final NativeSurface  surface)
abstract

Resets the gamma, brightness and contrast values of the display associated with the given surface to its original values before setDisplayGamma was called the first time.

While it is not explicitly required that this method be called before exiting manually, calling it is recommended because of the inevitable unspecified behavior during JVM teardown.

Here is the caller graph for this function:

◆ setDisplayGamma()

abstract boolean com.jogamp.opengl.GLDrawableFactory.setDisplayGamma ( final NativeSurface  surface,
final float  gamma,
final float  brightness,
final float  contrast 
) throws IllegalArgumentException
abstract

Sets the gamma, brightness, and contrast of the display associated with the given surface.

This functionality is not available on all platforms and graphics hardware. Returns true if the settings were successfully changed, false if not. This method may return false for some values of the incoming arguments even on hardware which does support the underlying functionality.

If this method returns true, the display settings will automatically be reset to their original values upon JVM exit (assuming the JVM does not crash); if the user wishes to change the display settings back to normal ahead of time, use resetDisplayGamma(NativeSurface) or resetAllDisplayGamma().

It is recommended to call resetDisplayGamma(NativeSurface) or resetAllDisplayGamma() before calling e.g. System.exit() from the application rather than rely on the shutdown hook functionality due to inevitable race conditions and unspecified behavior during JVM teardown.

This method may be called multiple times during the application's execution, but calling resetDisplayGamma(NativeSurface) will only reset the settings to the values before the first call to this method.

Parameters
surfacedenominates the display device
gammaThe gamma value, typically > 1.0 (default values vary, but typically roughly 1.0)
brightnessThe brightness value between -1.0 and 1.0, inclusive (default values vary, but typically 0)
contrastThe contrast, greater than 0.0 (default values vary, but typically 1)
Returns
true if gamma settings were successfully changed, false if not
Exceptions
IllegalArgumentExceptionif any of the parameters were out-of-bounds
See also
resetDisplayGamma(NativeSurface)
resetAllDisplayGamma()
Here is the caller graph for this function:

◆ shutdown()

static void com.jogamp.opengl.GLDrawableFactory.shutdown ( )
staticprotected

Definition at line 192 of file GLDrawableFactory.java.

Here is the caller graph for this function:

◆ shutdownImpl()

abstract void com.jogamp.opengl.GLDrawableFactory.shutdownImpl ( )
abstractprotected

◆ validateDevice()

final AbstractGraphicsDevice com.jogamp.opengl.GLDrawableFactory.validateDevice ( AbstractGraphicsDevice  device)
protected

Definition at line 343 of file GLDrawableFactory.java.

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ DEBUG

final boolean com.jogamp.opengl.GLDrawableFactory.DEBUG = Debug.debug("GLDrawable")
staticprotected

Definition at line 101 of file GLDrawableFactory.java.


The documentation for this class was generated from the following file: