| java.lang.Object sun.java2d.opengl.OGLUtilities
OGLUtilities | class OGLUtilities (Code) | | This class contains a number of static utility methods that may be
called (via reflection) by a third-party library, such as JOGL, in order
to interoperate with the OGL-based Java 2D pipeline.
WARNING: These methods are being made available as a temporary measure
until we offer a more complete, public solution. Like any sun.* class,
this class is not an officially supported public API; it may be modified
at will or removed completely in a future release.
|
Field Summary | |
final public static int | FBOBJECT | final public static int | FLIP_BACKBUFFER | final public static int | PBUFFER | final public static int | TEXTURE | final public static int | UNDEFINED These OGL-specific surface type constants are the same as those
defined in the OGLSurfaceData class and are duplicated here so that
clients of this API can access them more easily via reflection. | final public static int | WINDOW |
Method Summary | |
public static Rectangle | getOGLScissorBox(Graphics g) Returns the Rectangle describing the OpenGL scissor box on the
Java 2D surface associated with the given Graphics object. | public static Object | getOGLSurfaceIdentifier(Graphics g) Returns an Object identifier for the Java 2D surface associated with
the given Graphics object. | public static int | getOGLSurfaceType(Graphics g) Returns one of the OGL-specific surface type constants (defined in
this class), which describes the surface associated with the given
Graphics object. | public static int | getOGLTextureType(Graphics g) Returns the OpenGL texture target constant (either GL_TEXTURE_2D
or GL_TEXTURE_RECTANGLE_ARB) for the surface associated with the
given Graphics object. | public static Rectangle | getOGLViewport(Graphics g, int componentWidth, int componentHeight) Returns the Rectangle describing the OpenGL viewport on the
Java 2D surface associated with the given Graphics object and
component width and height. | public static boolean | invokeWithOGLContextCurrent(Graphics g, Runnable r) Invokes the given Runnable on the OGL QueueFlusher thread with the
OpenGL context corresponding to the given Graphics object made
current. | public static boolean | invokeWithOGLSharedContextCurrent(GraphicsConfiguration config, Runnable r) Invokes the given Runnable on the OGL QueueFlusher thread with the
"shared" OpenGL context (corresponding to the given
GraphicsConfiguration object) made current. | public static boolean | isQueueFlusherThread() Returns true if the current thread is the OGL QueueFlusher thread. |
FBOBJECT | final public static int FBOBJECT(Code) | | |
FLIP_BACKBUFFER | final public static int FLIP_BACKBUFFER(Code) | | |
PBUFFER | final public static int PBUFFER(Code) | | |
TEXTURE | final public static int TEXTURE(Code) | | |
UNDEFINED | final public static int UNDEFINED(Code) | | These OGL-specific surface type constants are the same as those
defined in the OGLSurfaceData class and are duplicated here so that
clients of this API can access them more easily via reflection.
|
WINDOW | final public static int WINDOW(Code) | | |
getOGLScissorBox | public static Rectangle getOGLScissorBox(Graphics g)(Code) | | Returns the Rectangle describing the OpenGL scissor box on the
Java 2D surface associated with the given Graphics object. When a
third-party library is performing OpenGL rendering directly
into the visible region of the associated surface, this scissor box
must be set to avoid drawing over existing rendering results.
Note that the x/y values in the returned Rectangle object represent
the lower-left corner of the scissor region, relative to the
lower-left corner of the given surface.
Parameters: g - the Graphics object for the corresponding destination surface;cannot be null a Rectangle describing the OpenGL scissor box for the givenGraphics object and corresponding destination surface, or null if thegiven Graphics object is invalid or the clip region is non-rectangular |
getOGLSurfaceIdentifier | public static Object getOGLSurfaceIdentifier(Graphics g)(Code) | | Returns an Object identifier for the Java 2D surface associated with
the given Graphics object. This identifier may be used to determine
whether the surface has changed since the last invocation of this
operation, and thereby whether the OpenGL state corresponding to the
old surface must be destroyed and recreated.
Parameters: g - the Graphics object for the corresponding destination surface;cannot be null an identifier for the surface associated with the givenGraphics object, or null if the given Graphics object is invalid |
getOGLSurfaceType | public static int getOGLSurfaceType(Graphics g)(Code) | | Returns one of the OGL-specific surface type constants (defined in
this class), which describes the surface associated with the given
Graphics object.
Parameters: g - the Graphics object for the corresponding destination surface;cannot be null a constant that describes the surface associated with thegiven Graphics object; if the given Graphics object is invalid (i.e.is not associated with an OpenGL surface) this method will returnOGLUtilities.UNDEFINED |
getOGLTextureType | public static int getOGLTextureType(Graphics g)(Code) | | Returns the OpenGL texture target constant (either GL_TEXTURE_2D
or GL_TEXTURE_RECTANGLE_ARB) for the surface associated with the
given Graphics object. This method is only useful for those surface
types that are backed by an OpenGL texture, namely
TEXTURE ,
FBOBJECT , and (on Windows only)
PBUFFER .
Parameters: g - the Graphics object for the corresponding destination surface;cannot be null the texture target constant for the surface associated with thegiven Graphics object; if the given Graphics object is invalid (i.e.is not associated with an OpenGL surface), or the associated surfaceis not backed by an OpenGL texture, this method will return zero. |
getOGLViewport | public static Rectangle getOGLViewport(Graphics g, int componentWidth, int componentHeight)(Code) | | Returns the Rectangle describing the OpenGL viewport on the
Java 2D surface associated with the given Graphics object and
component width and height. When a third-party library is
performing OpenGL rendering directly into the visible region of
the associated surface, this viewport helps the application
position the OpenGL output correctly on that surface.
Note that the x/y values in the returned Rectangle object represent
the lower-left corner of the viewport region, relative to the
lower-left corner of the given surface.
Parameters: g - the Graphics object for the corresponding destination surface;cannot be null Parameters: componentWidth - width of the component to be painted Parameters: componentHeight - height of the component to be painted a Rectangle describing the OpenGL viewport for the givendestination surface and component dimensions, or null if the givenGraphics object is invalid |
invokeWithOGLContextCurrent | public static boolean invokeWithOGLContextCurrent(Graphics g, Runnable r)(Code) | | Invokes the given Runnable on the OGL QueueFlusher thread with the
OpenGL context corresponding to the given Graphics object made
current. It is legal for OpenGL code executed in the given
Runnable to change the current OpenGL context; it will be reset
once the Runnable completes. No guarantees are made as to the
state of the OpenGL context of the Graphics object; for
example, calling code must set the scissor box using the return
value from
OGLUtilities.getOGLScissorBox to avoid drawing
over other Swing components, and must typically set the OpenGL
viewport using the return value from
OGLUtilities.getOGLViewport to
make the client's OpenGL rendering appear in the correct place
relative to the scissor region.
In order to avoid deadlock, it is important that the given Runnable
does not attempt to acquire the AWT lock, as that will be handled
automatically as part of the rq.flushAndInvokeNow() step.
Parameters: g - the Graphics object for the corresponding destination surface;if null, the step making a context current to the destination surfacewill be skipped Parameters: r - the action to be performed on the QFT; cannot be null true if the operation completed successfully, or false ifthere was any problem making a context current to the surfaceassociated with the given Graphics object |
invokeWithOGLSharedContextCurrent | public static boolean invokeWithOGLSharedContextCurrent(GraphicsConfiguration config, Runnable r)(Code) | | Invokes the given Runnable on the OGL QueueFlusher thread with the
"shared" OpenGL context (corresponding to the given
GraphicsConfiguration object) made current. This method is typically
used when the Runnable needs a current context to complete its
operation, but does not require that the context be made current to
a particular surface. For example, an application may call this
method so that the given Runnable can query the OpenGL capabilities
of the given GraphicsConfiguration, without making a context current
to a dummy surface (or similar hacky techniques).
In order to avoid deadlock, it is important that the given Runnable
does not attempt to acquire the AWT lock, as that will be handled
automatically as part of the rq.flushAndInvokeNow() step.
Parameters: config - the GraphicsConfiguration object whose "shared"context will be made current during this operation; if this value isnull or if OpenGL is not enabled for the GraphicsConfiguration, thismethod will return false Parameters: r - the action to be performed on the QFT; cannot be null true if the operation completed successfully, or false ifthere was any problem making the shared context current |
isQueueFlusherThread | public static boolean isQueueFlusherThread()(Code) | | Returns true if the current thread is the OGL QueueFlusher thread.
|
|
|