|
JOGL v2.6.0-rc-20250712
JOGL, High-Performance Graphics Binding for Java (public API).
|
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< GLCapabilitiesImmutable > | getAvailableCapabilities (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< GLCapabilitiesImmutable > | getAvailableCapabilitiesImpl (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") |
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.
|
protected |
Definition at line 239 of file GLDrawableFactory.java.
|
abstract |
Returns true if it is possible to create an external GLDrawable object via createExternalGLDrawable.
| device | which connection denotes the shared the target device, may be null for the platform's default device. |
|
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().
| device | which connection denotes the shared the target device, may be null for the platform's default device. |
| glp | GLProfile to check for FBO capabilities |
|
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.
| device | which connection denotes the shared the target device, may be null for the platform's default device. |
| glp | GLProfile to check for FBO capabilities |
|
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.
| deviceReq | which connection denotes the shared device to be used, may be null for the platform's default device. |
| createNewDevice | if true a new independent device instance is created from the deviceReq, otherwise deviceReq is used as-is and must be valid! |
| capsRequested | the desired GLCapabilitiesImmutable, incl. it's GLProfile. For shared context, same GLCapabilitiesImmutable#getVisualID(com.jogamp.nativewindow.VisualIDHolder.VIDType) across shared drawables will yield best compatibility. |
| chooser | the custom chooser, may be null for default |
GLAutoDrawable instance
|
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.
| deviceReq | which connection denotes the shared device to be used, may be null for the platform's default device. |
| createNewDevice | if true a new independent device instance is created from the deviceReq, otherwise deviceReq is used as-is and must be valid! |
| capsRequested | the desired GLCapabilitiesImmutable, incl. it's GLProfile. For shared context, same visual ID or caps across shared drawables will yield best compatibility. |
| chooser | the custom chooser, may be null for default |
GLDrawable
|
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.
| GLException | if any window system-specific errors caused the creation of the external GLContext to fail. |
|
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.
| GLException | if any window system-specific errors caused the creation of the external GLDrawable to fail. |
|
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.
| IllegalArgumentException | if the passed target is null |
| GLException | if any window system-specific errors caused the creation of the GLDrawable to fail. |
|
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.
| device | which connection denotes the shared device to be used, may be null for the platform's default device. |
| caps | the requested GLCapabilties |
| chooser | the custom chooser, may be null for default |
| width | the requested offscreen width |
| height | the requested offscreen height |
GLOffscreenAutoDrawable instance| GLException | if any window system-specific errors caused the creation of the Offscreen to fail. |
|
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.
| device | which connection denotes the shared device to be used, may be null for the platform's default device. |
| caps | the requested GLCapabilties |
| chooser | the custom chooser, may be null for default |
| width | the requested offscreen width |
| height | the requested offscreen height |
GLDrawable| GLException | if any window system-specific errors caused the creation of the Offscreen to fail. |
|
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.
| device | which 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 |
| screenIdx | matching screen index of given windowHandle |
| windowHandle | the native window handle |
| caps | the requested GLCapabilties |
| chooser | the custom chooser, may be null for default |
| upstream | optional UpstreamSurfaceHook allowing control of the ProxySurface's lifecycle and data it presents. |
ProxySurface instance w/ defined surface handle.
|
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
.
| device | which connection denotes the shared the target device, may be null for the platform's default device. |
Definition at line 384 of file GLDrawableFactory.java.
|
abstractprotected |
|
protected |
Definition at line 250 of file GLDrawableFactory.java.
| 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.
| device | which connection denotes the shared the target device, may be null for the platform's default device. |
com.jogamp.opengl.GLCapabilitiesImmutable's, maybe empty if none is available. Definition at line 539 of file GLDrawableFactory.java.
|
abstractprotected |
|
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.
|
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.
GLDrawableFactory or null if none is available Definition at line 450 of file GLDrawableFactory.java.
|
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.
GLDrawableFactory or null if none is available Definition at line 467 of file GLDrawableFactory.java.
|
static |
Returns the sole GLDrawableFactory matching the given AbstractGraphicsDevice instance, which will be suitable either for native mobile or native desktop.
| device | the queries AbstractGraphicsDevice seeking for its matching factory |
GLDrawableFactory or null if none is available Definition at line 520 of file GLDrawableFactory.java.
|
static |
Returns the sole GLDrawableFactory instance, either for mobile if usesNativeGLES is true, or for desktop otherwise.
| useNativeGLES | request native mobile GLES support if true |
GLDrawableFactory or null if none is available Definition at line 492 of file GLDrawableFactory.java.
|
static |
Returns the sole GLDrawableFactory instance.
| glProfile | GLProfile to determine the factory type, ie for native mobile GL or native desktop GL. |
GLDrawableFactory | GLException | if no matching GLDrawableFactory exists |
Definition at line 479 of file GLDrawableFactory.java.
|
staticprotected |
|
staticprotected |
Definition at line 496 of file GLDrawableFactory.java.
|
abstract |
| device | which connection denotes the shared the target device, may be null for the platform's default device. |
|
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.
| device | which connection denotes the shared the target device, may be null for the platform's default device. |
| glp | GLProfile to identify the device's GLRendererQuirks, maybe null |
|
abstractprotected |
Validate and start the shared resource runner thread if necessary and if the implementation uses it.
|
staticprotected |
Definition at line 245 of file GLDrawableFactory.java.
|
abstract |
Method returns true if underlying implementation may support native desktop OpenGL, otherwise false.
|
abstract |
Method returns true if underlying implementation may support native embedded OpenGL ES, otherwise false.
| 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;
| device | which connection denotes the shared the target device, may be null for the platform's default device. |
| glp | GLProfile to identify the device's GLRendererQuirks, maybe null |
| quirk | the quirk to be tested, e.g. GLRendererQuirks#NoDoubleBufferedPBuffer. |
| IllegalArgumentException | if the quirk is out of range |
Definition at line 406 of file GLDrawableFactory.java.
|
static |
Instantiate singleton factories if available, EGLES1, EGLES2 and the OS native ones.
Definition at line 112 of file GLDrawableFactory.java.
|
abstractprotected |
Returns true if this factory is complete, i.e.
ready to be used. Otherwise return false.
|
protected |
Definition at line 251 of file GLDrawableFactory.java.
|
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.
|
abstractprotected |
|
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.
|
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.
| surface | denominates the display device |
| gamma | The gamma value, typically > 1.0 (default values vary, but typically roughly 1.0) |
| brightness | The brightness value between -1.0 and 1.0, inclusive (default values vary, but typically 0) |
| contrast | The contrast, greater than 0.0 (default values vary, but typically 1) |
| IllegalArgumentException | if any of the parameters were out-of-bounds |
|
staticprotected |
|
abstractprotected |
|
protected |
Definition at line 343 of file GLDrawableFactory.java.
|
staticprotected |
Definition at line 101 of file GLDrawableFactory.java.