public abstract class GLContext extends Object
Modifier and Type | Field and Description |
---|---|
static int |
CONTEXT_CURRENT
Indicates that the context was made current during the last call to
makeCurrent . |
static int |
CONTEXT_CURRENT_NEW
Indicates that a newly-created context was made current during the last call to
makeCurrent . |
static int |
CONTEXT_NOT_CURRENT
Indicates that the context was not made current during the last call to
makeCurrent . |
static int |
CTX_OPTION_DEBUG
ARB_create_context related: flag debug. |
static boolean |
DEBUG |
static boolean |
DEBUG_GL
Reflects property jogl.debug.DebugGL.
|
static int[][] |
GL_VERSIONS |
static boolean |
TRACE_GL
Reflects property jogl.debug.TraceGL.
|
static boolean |
TRACE_SWITCH |
Modifier and Type | Method and Description |
---|---|
abstract void |
addGLDebugListener(GLDebugListener listener)
Add
GLDebugListener . |
StringBuilder |
append(StringBuilder sb) |
Object |
attachObject(int name,
Object obj)
Sets the attached user object for the given name to this GLContext.
|
Object |
attachObject(String name,
Object obj)
Sets the attached user object for the given name to this GLContext.
|
boolean |
bindSwapBarrier(int group,
int barrier) |
abstract void |
copy(GLContext source,
int mask)
Copies selected groups of OpenGL state variables from the
supplied source context into this one.
|
static boolean |
decrementGLVersion(int[] major,
int[] minor) |
abstract void |
destroy()
Destroys this OpenGL context and frees its associated
resources.
|
Object |
detachObject(int name) |
Object |
detachObject(String name) |
abstract void |
enableGLDebugMessage(boolean enable)
Enables or disables the GLDebugOutput feature of extension GL_ARB_debug_output
or GL_AMD_debug_output, if available.
|
Object |
getAttachedObject(int name)
Returns the attached user object for the given name to this GLContext.
|
Object |
getAttachedObject(String name)
Returns the attached user object for the given name to this GLContext.
|
static String |
getAvailableGLProfile(AbstractGraphicsDevice device,
int reqMajor,
int reqProfile) |
static String |
getAvailableGLVersionAsString(AbstractGraphicsDevice device,
int major,
int profile) |
abstract int |
getContextCreationFlags() |
static GLContext |
getCurrent()
Returns this thread current context.
|
static GL |
getCurrentGL()
Returns the GL object bound to this thread current context.
|
abstract GL |
getGL()
Returns the GL pipeline object for this GLContext.
|
abstract String |
getGLDebugMessageExtension() |
abstract GLDrawable |
getGLDrawable()
Returns the GLDrawable to which this context may be used to
draw.
|
abstract int |
getGLExtensionCount()
Returns the number of OpenGL extensions
|
abstract String |
getGLExtensionsString()
Returns a non-null (but possibly empty) string containing the
space-separated list of available extensions.
|
abstract GLDrawable |
getGLReadDrawable()
Returns the read GLDrawable this context uses for read framebuffer operations.
|
String |
getGLVersion()
Returns a valid OpenGL version string, ie
|
static String |
getGLVersion(int major,
int minor,
int ctp,
String gl_version) |
int |
getGLVersionMajor() |
int |
getGLVersionMinor() |
long |
getHandle()
Returns the native GL context handle
|
static int |
getMaxMajor() |
static int |
getMaxMinor(int major) |
abstract int |
getPlatformExtensionCount()
Returns the number of platform extensions
|
abstract String |
getPlatformExtensionsString()
Returns a non-null (but possibly empty) string containing the
space-separated list of available platform-dependent (e.g., WGL,
GLX) extensions.
|
int |
getSwapGroup() |
int |
getSwapInterval()
Return the current swap interval.
|
abstract void |
glDebugMessageControl(int source,
int type,
int severity,
int count,
int[] ids,
int ids_offset,
boolean enabled)
Generic entry for
GL2GL3.glDebugMessageControlARB(int, int, int, int, int[], int, boolean)
and GL2GL3.glDebugMessageEnableAMD(int, int, int, int[], int, boolean) of the GLDebugOutput feature. |
abstract void |
glDebugMessageControl(int source,
int type,
int severity,
int count,
IntBuffer ids,
boolean enabled)
Generic entry for
GL2GL3.glDebugMessageControlARB(int, int, int, int, IntBuffer, boolean)
and GL2GL3.glDebugMessageEnableAMD(int, int, int, IntBuffer, boolean) of the GLDebugOutput feature. |
abstract void |
glDebugMessageInsert(int source,
int type,
int id,
int severity,
String buf)
Generic entry for
GL2GL3.glDebugMessageInsertARB(int, int, int, int, int, String)
and GL2GL3.glDebugMessageInsertAMD(int, int, int, int, String) of the GLDebugOutput feature. |
boolean |
hasGLSL() |
boolean |
isCreated()
Indicates whether the underlying OpenGL context has been created.
|
boolean |
isCreatedWithARBMethod() |
boolean |
isCurrent() |
abstract boolean |
isExtensionAvailable(String glExtensionName)
Returns true if the specified OpenGL extension can be
successfully called using this GL context given the current host (OpenGL
client) and display (OpenGL server) configuration.
|
abstract boolean |
isFunctionAvailable(String glFunctionName)
Returns true if the specified OpenGL core- or extension-function can be
successfully called using this GL context given the current host (OpenGL
client) and display (OpenGL server) configuration.
|
boolean |
isGL2() |
static boolean |
isGL2Available(AbstractGraphicsDevice device,
boolean[] isHardware) |
boolean |
isGL2ES1() |
boolean |
isGL2ES2() |
boolean |
isGL2GL3() |
boolean |
isGL3() |
static boolean |
isGL3Available(AbstractGraphicsDevice device,
boolean[] isHardware) |
boolean |
isGL3bc() |
static boolean |
isGL3bcAvailable(AbstractGraphicsDevice device,
boolean[] isHardware) |
boolean |
isGL4() |
static boolean |
isGL4Available(AbstractGraphicsDevice device,
boolean[] isHardware) |
boolean |
isGL4bc() |
static boolean |
isGL4bcAvailable(AbstractGraphicsDevice device,
boolean[] isHardware) |
boolean |
isGLCompatibilityProfile() |
boolean |
isGLCoreProfile() |
boolean |
isGLDebugEnabled() |
abstract boolean |
isGLDebugMessageEnabled() |
abstract boolean |
isGLDebugSynchronous() |
boolean |
isGLES() |
boolean |
isGLES1() |
static boolean |
isGLES1Available(AbstractGraphicsDevice device,
boolean[] isHardware) |
boolean |
isGLES2() |
static boolean |
isGLES2Available(AbstractGraphicsDevice device,
boolean[] isHardware) |
boolean |
isGLES2Compatible() |
boolean |
isGLForwardCompatible() |
abstract boolean |
isGLReadDrawableAvailable()
Return availability of GL read drawable.
|
static boolean |
isGLVersionAvailable(AbstractGraphicsDevice device,
int reqMajor,
int reqProfile,
boolean[] isHardware) |
boolean |
isNPOTTextureAvailable()
Note: The GL impl.
|
abstract boolean |
isSynchronized()
Returns true if 'makeCurrent' will exhibit synchronized behavior.
|
boolean |
isTextureFormatBGRA8888Available() |
static boolean |
isValidGLVersion(int major,
int minor) |
boolean |
joinSwapGroup(int group) |
abstract int |
makeCurrent()
Makes this GLContext current on the calling thread.
|
boolean |
queryMaxSwapGroups(int[] maxGroups,
int maxGroups_offset,
int[] maxBarriers,
int maxBarriers_offset) |
abstract void |
release()
Releases control of this GLContext from the current thread.
|
abstract void |
removeGLDebugListener(GLDebugListener listener)
Remove
GLDebugListener . |
abstract void |
setContextCreationFlags(int flags) |
abstract GL |
setGL(GL gl)
Sets the GL pipeline object for this GLContext.
|
abstract void |
setGLDebugSynchronous(boolean synchronous)
Enables or disables the synchronous debug behavior via
glEnable/glDisable(GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB) ,
if extension is #GL_ARB_debug_output . |
abstract void |
setGLReadDrawable(GLDrawable read)
Set the read GLDrawable for read framebuffer operations.
The caller should query if this feature is supported via isGLReadDrawableAvailable() . |
boolean |
setSwapInterval(int interval)
Set the swap interval if the current context.
|
abstract void |
setSynchronized(boolean isSynchronized)
Determines whether 'makeCurrent' will exhibit synchronized behavior.
|
String |
toString()
Classname, GL, GLDrawable
|
void |
validateCurrent() |
public static final boolean DEBUG
public static final boolean TRACE_SWITCH
public static final boolean DEBUG_GL
public static final boolean TRACE_GL
public static final int CONTEXT_NOT_CURRENT
makeCurrent
.public static final int CONTEXT_CURRENT
makeCurrent
.public static final int CONTEXT_CURRENT_NEW
makeCurrent
.public static final int CTX_OPTION_DEBUG
ARB_create_context
related: flag debug. Not a cache key.public static final int[][] GL_VERSIONS
public abstract GLDrawable getGLDrawable()
public abstract boolean isGLReadDrawableAvailable()
public abstract void setGLReadDrawable(GLDrawable read)
isGLReadDrawableAvailable()
.read
- the read GLDrawable for read framebuffer operations.
If null is passed, the default write drawable will be set.GLException
- in case a read drawable is not supported
and the given drawable is not null and not equal to the internal write drawable.isGLReadDrawableAvailable()
,
getGLReadDrawable()
public abstract GLDrawable getGLReadDrawable()
public abstract int makeCurrent() throws GLException
There are two return values that indicate success and one that indicates failure. A return value of CONTEXT_CURRENT_NEW indicates that that context has been made current, and that this is the first time this context has been made current, or that the state of the underlying context or drawable may have changed since the last time this context was made current. In this case, the application may wish to initialize the state. A return value of CONTEXT_CURRENT indicates that the context has been made currrent, with its previous state restored.
If the context could not be made current (for example, because the underlying drawable has not ben realized on the display) , a value of CONTEXT_NOT_CURRENT is returned.
If the context is in use by another thread at the time of the call, then if isSynchronized() is true the call will block. If isSynchronized() is false, an exception will be thrown and the context will remain current on the other thread.
The drawable's surface is being locked at entry
and unlocked at release()
GLException
- if synchronization is disabled and the
context is current on another thread, or because the context
could not be created or made current due to non-recoverable,
window system-specific errors.public abstract void release() throws GLException
The drawable's surface is being unlocked at exit,
assumed to be locked by makeCurrent()
.
GLException
- if the context had not previously been made
current on the current threadpublic abstract void copy(GLContext source, int mask) throws GLException
mask
parameter indicates which groups of state variables are to be
copied. mask
contains the bitwise OR of the same
symbolic names that are passed to the GL command glPushAttrib
. The single symbolic constant
GL_ALL_ATTRIB_BITS
can be used to
copy the maximum possible portion of rendering state.
Not all values for GL state can be copied. For example, pixel
pack and unpack state, render mode state, and select and feedback
state are not copied. The state that can be copied is exactly the
state that is manipulated by the GL command glPushAttrib
.
On most platforms, this context may not be current to any thread, including the calling thread, when this method is called. Some platforms have additional requirements such as whether this context or the source context must occasionally be made current in order for the results of the copy to be seen; these requirements are beyond the scope of this specification.
source
- the source OpenGL context from which to copy statemask
- a mask of symbolic names indicating which groups of state to copyGLException
- if an OpenGL-related error occurredpublic static GL getCurrentGL() throws GLException
GLException
- if no context is currentpublic static GLContext getCurrent()
public final boolean isCurrent()
public final void validateCurrent() throws GLException
GLException
- if this GLContext is not current on this threadpublic abstract void destroy()
The context may be current w/o recursion when calling destroy()
,
in which case this method destroys the context and releases the lock.
public abstract boolean isSynchronized()
public abstract void setSynchronized(boolean isSynchronized)
public abstract GL getGL()
public abstract GL setGL(GL gl)
public final long getHandle()
public final boolean isCreated()
public final Object getAttachedObject(int name)
public final Object getAttachedObject(String name)
public final Object attachObject(int name, Object obj)
public final Object detachObject(int name)
public final Object attachObject(String name, Object obj)
public final StringBuilder append(StringBuilder sb)
public abstract boolean isFunctionAvailable(String glFunctionName)
GLBase.isFunctionAvailable(String)
for more details.glFunctionName
- the name of the OpenGL function (e.g., use
"glPolygonOffsetEXT" or "glPolygonOffset" to check if the GL.glPolygonOffset(float,float)
is available).public abstract boolean isExtensionAvailable(String glExtensionName)
GLBase.isExtensionAvailable(String)
for more details.glExtensionName
- the name of the OpenGL extension (e.g.,
"GL_VERTEX_PROGRAM_ARB").public abstract int getPlatformExtensionCount()
public abstract String getPlatformExtensionsString()
public abstract int getGLExtensionCount()
public abstract String getGLExtensionsString()
glGetString
(GL_EXTENSIONS
)public abstract int getContextCreationFlags()
CTX_OPTION_DEBUG
.public abstract void setContextCreationFlags(int flags)
flags
- Additional context creation flags, supported: CTX_OPTION_DEBUG
.
Unsupported flags are masked out.
Only affects this context state if not created yet via makeCurrent()
.enableGLDebugMessage(boolean)
,
GLAutoDrawable.setContextCreationFlags(int)
public final String getGLVersion()
major.minor ([option]?[options,]*) - gl-version
ES profile
ES profileCompatibility profile
Compatibility profile including fixed function pipeline and deprecated functionalityCore profile
Core profileforward
Forward profile excluding deprecated functionalityarb
refers to an ARB_create_context created contextdebug
refers to a debug contextES2 compatible
refers to an ES2 compatible implementationsoftware
refers to a software implementation of the rasterizerhardware
refers to a hardware implementation of the rasterizerrow 2, cell 1 | row 2, cell 2 |
ES2 | 2.0 (ES profile, ES2 compatible, hardware) - 2.0 ES Profile | |
ATI | GL2 | 3.0 (Compatibility profile, arb, hardware) - 3.2.9704 Compatibility Profile Context |
ATI | GL3 | 3.3 (Core profile, any, new, hardware) - 1.4 (3.2.9704 Compatibility Profile Context) |
ATI | GL3bc | 3.3 (Compatibility profile, arb, hardware) - 1.4 (3.2.9704 Compatibility Profile Context) |
NV | GL2 | 3.0 (Compatibility profile, arb, hardware) - 3.0.0 NVIDIA 195.36.07.03 |
NV | GL3 | 3.3 (Core profile, arb, hardware) - 3.3.0 NVIDIA 195.36.07.03 |
NV | GL3bc | 3.3 (Compatibility profile, arb, hardware) - 3.3.0 NVIDIA 195.36.07.03 |
NV | GL2 | 3.0 (Compatibility profile, arb, ES2 compatible, hardware) - 3.0.0 NVIDIA 290.10 |
public final int getGLVersionMajor()
public final int getGLVersionMinor()
public final boolean isGLCompatibilityProfile()
public final boolean isGLCoreProfile()
public final boolean isGLForwardCompatible()
public final boolean isGLDebugEnabled()
public final boolean isCreatedWithARBMethod()
public final boolean isGLES2Compatible()
GL_ARB_ES2_compatibility
, otherwise falsepublic final boolean hasGLSL()
public boolean isNPOTTextureAvailable()
GLBase.isNPOTTextureAvailable()
always returns true
.public boolean isTextureFormatBGRA8888Available()
public final boolean isGL4bc()
public final boolean isGL4()
public final boolean isGL3bc()
public final boolean isGL3()
public final boolean isGL2()
public final boolean isGL2GL3()
public final boolean isGLES1()
public final boolean isGLES2()
public final boolean isGLES()
public final boolean isGL2ES1()
public final boolean isGL2ES2()
public final boolean setSwapInterval(int interval) throws GLException
interval
- Should be ≥ 0. 0 Disables the vertical synchronisation,
where ≥ 1 is the number of vertical refreshes before a swap buffer occurs.
A value < 0 is ignored.GLException
- if the context is not current.public final int getSwapInterval()
If the context has not been made current at all,
the default value -1
is returned.
The default value for a valid context is 1
for
an EGL based profile (ES1 or ES2) and -1
(undefined)
for desktop.
public final boolean queryMaxSwapGroups(int[] maxGroups, int maxGroups_offset, int[] maxBarriers, int maxBarriers_offset)
public final boolean joinSwapGroup(int group)
public int getSwapGroup()
public final boolean bindSwapBarrier(int group, int barrier)
public abstract String getGLDebugMessageExtension()
makeCurrent()
, null is returned.public abstract boolean isGLDebugSynchronous()
#setSynchronous(boolean)
public abstract void setGLDebugSynchronous(boolean synchronous)
glEnable/glDisable(GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB)
,
if extension is #GL_ARB_debug_output
.
There is no equivalent for #GL_AMD_debug_output
.
The default is true
, ie GL2GL3.GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB
.
public abstract boolean isGLDebugMessageEnabled()
public abstract void enableGLDebugMessage(boolean enable) throws GLException
To enable the GLDebugOutput feature enableGLDebugMessage(true)
or setContextCreationFlags
(CTX_OPTION_DEBUG
)
shall be called before context creation via makeCurrent()
!
In case GLAutoDrawable
are being used,
glAutoDrawable.setContextCreationFlags
(CTX_OPTION_DEBUG
)
shall be issued before context creation via makeCurrent()
!
After context creation, the GLDebugOutput feature may be enabled or disabled at any time using this method.
enable
- If true enables, otherwise disables the GLDebugOutput feature.GLException
- if this context is not current or GLDebugOutput registration failed (enable)setContextCreationFlags(int)
,
addGLDebugListener(GLDebugListener)
,
GLAutoDrawable.setContextCreationFlags(int)
public abstract void addGLDebugListener(GLDebugListener listener)
GLDebugListener
.listener
- GLDebugListener
handling senableGLDebugMessage(boolean)
,
removeGLDebugListener(GLDebugListener)
public abstract void removeGLDebugListener(GLDebugListener listener)
GLDebugListener
.listener
- GLDebugListener
handling senableGLDebugMessage(boolean)
,
addGLDebugListener(GLDebugListener)
public abstract void glDebugMessageControl(int source, int type, int severity, int count, IntBuffer ids, boolean enabled)
GL2GL3.glDebugMessageControlARB(int, int, int, int, IntBuffer, boolean)
and GL2GL3.glDebugMessageEnableAMD(int, int, int, IntBuffer, boolean)
of the GLDebugOutput feature.enableGLDebugMessage(boolean)
public abstract void glDebugMessageControl(int source, int type, int severity, int count, int[] ids, int ids_offset, boolean enabled)
GL2GL3.glDebugMessageControlARB(int, int, int, int, int[], int, boolean)
and GL2GL3.glDebugMessageEnableAMD(int, int, int, int[], int, boolean)
of the GLDebugOutput feature.enableGLDebugMessage(boolean)
public abstract void glDebugMessageInsert(int source, int type, int id, int severity, String buf)
GL2GL3.glDebugMessageInsertARB(int, int, int, int, int, String)
and GL2GL3.glDebugMessageInsertAMD(int, int, int, int, String)
of the GLDebugOutput feature.enableGLDebugMessage(boolean)
public static final int getMaxMajor()
public static final int getMaxMinor(int major)
public static final boolean isValidGLVersion(int major, int minor)
public static final boolean decrementGLVersion(int[] major, int[] minor)
public static String getAvailableGLProfile(AbstractGraphicsDevice device, int reqMajor, int reqProfile) throws GLException
major
- Key Value either 1, 2, 3 or 4profile
- Key Value either CTX_PROFILE_COMPAT
, CTX_PROFILE_CORE
or CTX_PROFILE_ES
GLException
- if version and context profile bits could not be mapped to a GLProfilepublic static boolean isGLVersionAvailable(AbstractGraphicsDevice device, int reqMajor, int reqProfile, boolean[] isHardware)
device
- the device to request whether the profile is available forreqMajor
- Key Value either 1, 2, 3 or 4reqProfile
- Key Value either CTX_PROFILE_COMPAT
, CTX_PROFILE_CORE
or CTX_PROFILE_ES
isHardware
- return value of one boolean, whether the profile is a hardware rasterizer or notpublic static boolean isGLES1Available(AbstractGraphicsDevice device, boolean[] isHardware)
public static boolean isGLES2Available(AbstractGraphicsDevice device, boolean[] isHardware)
public static boolean isGL4bcAvailable(AbstractGraphicsDevice device, boolean[] isHardware)
public static boolean isGL4Available(AbstractGraphicsDevice device, boolean[] isHardware)
public static boolean isGL3bcAvailable(AbstractGraphicsDevice device, boolean[] isHardware)
public static boolean isGL3Available(AbstractGraphicsDevice device, boolean[] isHardware)
public static boolean isGL2Available(AbstractGraphicsDevice device, boolean[] isHardware)
public static String getAvailableGLVersionAsString(AbstractGraphicsDevice device, int major, int profile)
major
- Key Value either 1, 2, 3 or 4profile
- Key Value either CTX_PROFILE_COMPAT
, CTX_PROFILE_CORE
or CTX_PROFILE_ES
Copyright 2010 JogAmp Community.