|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjavax.media.opengl.GLDrawableFactory
com.jogamp.opengl.impl.GLDrawableFactoryImpl
public abstract class GLDrawableFactoryImpl
Extends GLDrawableFactory with a few methods for handling typically software-accelerated offscreen rendering (Device Independent Bitmaps on Windows, pixmaps on X11). Direct access to these GLDrawables is not supplied directly to end users, though they may be instantiated by the GLJPanel implementation.
Field Summary | |
---|---|
protected static boolean |
DEBUG
|
Fields inherited from class javax.media.opengl.GLDrawableFactory |
---|
glDrawableFactories |
Constructor Summary | |
---|---|
protected |
GLDrawableFactoryImpl()
|
Method Summary | |
---|---|
abstract boolean |
canCreateContextOnJava2DSurface(AbstractGraphicsDevice device)
|
abstract boolean |
canCreateGLPbuffer(AbstractGraphicsDevice device)
Returns true if it is possible to create a GLPbuffer. |
abstract GLContext |
createContextOnJava2DSurface(Object graphics,
GLContext shareWith)
|
GLContext |
createExternalGLContext()
Creates a GLContext object representing an existing OpenGL context in an external (third-party) OpenGL-based library. |
protected abstract GLContext |
createExternalGLContextImpl()
|
GLDrawable |
createExternalGLDrawable()
Creates a GLDrawable object representing an existing
OpenGL drawable in an external (third-party) OpenGL-based
library. |
protected abstract GLDrawable |
createExternalGLDrawableImpl()
|
GLDrawable |
createGLDrawable(NativeSurface target)
Returns a GLDrawable according to it's chosen Capabilities, which determines pixel format, on- and offscreen incl. |
GLPbuffer |
createGLPbuffer(AbstractGraphicsDevice deviceReq,
GLCapabilitiesImmutable capsRequested,
GLCapabilitiesChooser chooser,
int width,
int height,
GLContext shareWith)
Creates a GLPbuffer with the given capabilites and dimensions. |
GLDrawable |
createOffscreenDrawable(AbstractGraphicsDevice deviceReq,
GLCapabilitiesImmutable capsRequested,
GLCapabilitiesChooser chooser,
int width,
int height)
Creates a Offscreen GLDrawable incl it's offscreen NativeSurface with the given capabilites and dimensions. |
protected abstract GLDrawableImpl |
createOffscreenDrawableImpl(NativeSurface target)
|
NativeSurface |
createOffscreenSurface(AbstractGraphicsDevice deviceReq,
GLCapabilitiesImmutable capsRequested,
GLCapabilitiesChooser chooser,
int width,
int height)
Creates an offscreen NativeSurface. A Pbuffer surface is created if both caps.isPBuffer()
and canCreateGLPbuffer(device) is true.Otherwise a simple pixmap/bitmap surface is created. |
protected abstract NativeSurface |
createOffscreenSurfaceImpl(AbstractGraphicsDevice device,
GLCapabilitiesImmutable capabilities,
GLCapabilitiesImmutable capsRequested,
GLCapabilitiesChooser chooser,
int width,
int height)
creates an offscreen NativeSurface, which must implement SurfaceChangeable as well, so the windowing system related implementation is able to set the surface handle. |
protected abstract GLDrawableImpl |
createOnscreenDrawableImpl(NativeSurface target)
|
static GLDrawableFactoryImpl |
getFactoryImpl(GLProfile glp)
Returns the sole GLDrawableFactoryImpl instance. |
protected Buffer |
getGammaRamp()
Gets the current gamma ramp. |
protected int |
getGammaRampLength()
Returns the length of the computed gamma ramp for this OS and hardware. |
abstract GLDynamicLookupHelper |
getGLDynamicLookupHelper(int profile)
Returns the GLDynamicLookupHelper |
protected AbstractGraphicsDevice |
getOrCreateSharedDevice(AbstractGraphicsDevice device)
Returns the shared device mapped to the device AbstractGraphicsDevice.getConnection() ,
either a preexisting or newly created, or null if creation failed or not supported.Creation of the shared context is tried only once. |
protected abstract AbstractGraphicsDevice |
getOrCreateSharedDeviceImpl(AbstractGraphicsDevice device)
|
protected void |
maybeDoSingleThreadedWorkaround(Runnable action)
|
void |
resetDisplayGamma()
|
protected void |
resetGammaRamp(Buffer originalGammaRamp)
Resets the gamma ramp, potentially using the specified Buffer as data to restore the original values. |
boolean |
setDisplayGamma(float gamma,
float brightness,
float contrast)
Sets the gamma, brightness, and contrast of the current main display. |
protected boolean |
setGammaRamp(float[] ramp)
Sets the gamma ramp for the main screen. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected static final boolean DEBUG
Constructor Detail |
---|
protected GLDrawableFactoryImpl()
Method Detail |
---|
protected final AbstractGraphicsDevice getOrCreateSharedDevice(AbstractGraphicsDevice device)
device
AbstractGraphicsDevice.getConnection()
,
either a preexisting or newly created, or null
if creation failed or not supported.
device
- which connection
denotes the shared device to be used, may be null
for the platform's default device.protected abstract AbstractGraphicsDevice getOrCreateSharedDeviceImpl(AbstractGraphicsDevice device)
public abstract GLDynamicLookupHelper getGLDynamicLookupHelper(int profile)
profile
- if EGL/ES, profile 1
refers to ES1 and 2
to ES2,
otherwise the profile is ignored.public GLDrawable createGLDrawable(NativeSurface target)
GLDrawableFactory
The native platform's chosen Capabilties are referenced within the target NativeSurface's AbstractGraphicsConfiguration.
In case target's Capabilities.isOnscreen()
is true,
an onscreen GLDrawable will be realized.
In case target's Capabilities.isOnscreen()
is false,
either a Pbuffer drawable is created if target's GLCapabilities.isPBuffer()
is true,
or a simple pixmap/bitmap drawable is created. The latter is unlikely to be hardware accelerated.
createGLDrawable
in class GLDrawableFactory
javax.media.nativewindow.GraphicsConfigurationFactory#chooseGraphicsConfiguration(Capabilities, CapabilitiesChooser, AbstractGraphicsScreen)
protected abstract GLDrawableImpl createOnscreenDrawableImpl(NativeSurface target)
public abstract boolean canCreateGLPbuffer(AbstractGraphicsDevice device)
GLDrawableFactory
canCreateGLPbuffer
in class GLDrawableFactory
device
- which connection
denotes the shared the target device, may be null
for the platform's default device.public GLPbuffer createGLPbuffer(AbstractGraphicsDevice deviceReq, GLCapabilitiesImmutable capsRequested, GLCapabilitiesChooser chooser, int width, int height, GLContext shareWith)
GLDrawableFactory
See the note in the overview documentation on context sharing.
createGLPbuffer
in class GLDrawableFactory
deviceReq
- which connection
denotes the shared the target device, may be null
for the platform's default device.capsRequested
- the requested capabilitieschooser
- the custom chooser, may be null for defaultwidth
- initial width of pbufferheight
- initial height of pbuffershareWith
- a shared GLContext this GLPbuffer shall use
GLPbuffer
specific GLAutoDrawable
protected abstract GLDrawableImpl createOffscreenDrawableImpl(NativeSurface target)
public GLDrawable createOffscreenDrawable(AbstractGraphicsDevice deviceReq, GLCapabilitiesImmutable capsRequested, GLCapabilitiesChooser chooser, int width, int height)
GLDrawableFactory
NativeSurface
with the given capabilites and dimensions.
A Pbuffer drawable/surface is created if both caps.isPBuffer()
and canCreateGLPbuffer(device)
is true.
Otherwise a simple pixmap/bitmap drawable/surface is created, which is unlikely to be hardware accelerated.
createOffscreenDrawable
in class GLDrawableFactory
deviceReq
- which connection
denotes the shared device to be used, may be null
for the platform's default device.chooser
- the custom chooser, may be null for defaultwidth
- the requested offscreen widthheight
- the requested offscreen height
public NativeSurface createOffscreenSurface(AbstractGraphicsDevice deviceReq, GLCapabilitiesImmutable capsRequested, GLCapabilitiesChooser chooser, int width, int height)
GLDrawableFactory
caps.isPBuffer()
and canCreateGLPbuffer(device)
is true.
createOffscreenSurface
in class GLDrawableFactory
deviceReq
- which connection
denotes the shared the target device, may be null
for the platform's default device.capsRequested
- the requested GLCapabiltieschooser
- the custom chooser, may be null for defaultwidth
- the requested offscreen widthheight
- the requested offscreen height
protected abstract NativeSurface createOffscreenSurfaceImpl(AbstractGraphicsDevice device, GLCapabilitiesImmutable capabilities, GLCapabilitiesImmutable capsRequested, GLCapabilitiesChooser chooser, int width, int height)
protected abstract GLContext createExternalGLContextImpl()
public GLContext createExternalGLContext()
GLDrawableFactory
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 GLU
objects. New contexts created through
GLDrawable
s 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.
createExternalGLContext
in class GLDrawableFactory
protected abstract GLDrawable createExternalGLDrawableImpl()
public GLDrawable createExternalGLDrawable()
GLDrawableFactory
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 GLContext
s 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(javax.media.opengl.GLContext)
, 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
GLDrawableFactory.canCreateExternalGLDrawable(javax.media.nativewindow.AbstractGraphicsDevice)
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.
createExternalGLDrawable
in class GLDrawableFactory
protected void maybeDoSingleThreadedWorkaround(Runnable action)
public static GLDrawableFactoryImpl getFactoryImpl(GLProfile glp)
glProfile
- GLProfile to determine the factory type, ie EGLDrawableFactory,
or one of the native GLDrawableFactory's, ie X11/GLX, Windows/WGL or MacOSX/CGL.public abstract boolean canCreateContextOnJava2DSurface(AbstractGraphicsDevice device)
public abstract GLContext createContextOnJava2DSurface(Object graphics, GLContext shareWith) throws GLException
GLException
public boolean setDisplayGamma(float gamma, float brightness, float contrast) throws IllegalArgumentException
gamma
- The gamma value, typically > 1.0 (default value is
1.0)brightness
- The brightness value between -1.0 and 1.0,
inclusive (default value is 0)contrast
- The contrast, greater than 0.0 (default value is 1)
IllegalArgumentException
- if any of the parameters were
out-of-boundspublic void resetDisplayGamma()
protected int getGammaRampLength()
protected boolean setGammaRamp(float[] ramp)
protected Buffer getGammaRamp()
protected void resetGammaRamp(Buffer originalGammaRamp)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |