javax.media.opengl
Class GLContext

java.lang.Object
  extended by javax.media.opengl.GLContext

public abstract class GLContext
extends Object

Abstraction for an OpenGL rendering context. In order to perform OpenGL rendering, a context must be "made current" on the current thread. OpenGL rendering semantics specify that only one context may be current on the current thread at any given time, and also that a given context may be current on only one thread at any given time. Because components can be added to and removed from the component hierarchy at any time, it is possible that the underlying OpenGL context may need to be destroyed and recreated multiple times over the lifetime of a given component. This process is handled by the implementation, and the GLContext abstraction provides a stable object which clients can use to refer to a given context.


Field Summary
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 boolean DEBUG_TRACE_SWITCH
           
static int[][] GL_VERSIONS
           
static boolean PROFILE_ALIASING
          If true (default), bootstrapping the available GL profiles will use the highest compatible GL context for each profile, hence skipping querying lower profiles if a compatible higher one is found: 4.2-core -> 4.2-core, 3.3-core 4.2-comp -> 4.2-comp, 3.3-comp, 2 Otherwise the dedicated GL context would be queried and used: 4.2-core -> 4.2-core 3.3-core -> 3.3-core 4.2-comp -> 4.2-comp 3.3-comp -> 3.3-comp 3.0-comp -> 2 Using aliasing speeds up initialization about: Linux x86_64 - Nvidia: 28%, 700ms down to 500ms Linux x86_64 - AMD : 40%, 1500ms down to 900ms
static boolean TRACE_GL
          Reflects property jogl.debug.TraceGL.
static boolean TRACE_SWITCH
           
static com.jogamp.common.util.VersionNumber Version100
           
static com.jogamp.common.util.VersionNumber Version110
           
static com.jogamp.common.util.VersionNumber Version120
           
static com.jogamp.common.util.VersionNumber Version130
           
static com.jogamp.common.util.VersionNumber Version140
           
static com.jogamp.common.util.VersionNumber Version150
           
static com.jogamp.common.util.VersionNumber Version30
          Version 3.0.
static com.jogamp.common.util.VersionNumber Version31
          Version 3.1.
static com.jogamp.common.util.VersionNumber Version32
          Version 3.2.
 
Method Summary
abstract  void addGLDebugListener(GLDebugListener listener)
          Add GLDebugListener.
 StringBuilder append(StringBuilder sb)
           
 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(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(String name)
          Returns the attached user object for the given name to this GLContext.
abstract  int getBoundFramebuffer(int target)
          Return the framebuffer name bound to this context, see GL.glBindFramebuffer(int, int).
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  int getDefaultDrawFramebuffer()
          Return the default draw framebuffer name.
abstract  int getDefaultPixelDataFormat()
          Get the default pixel data format, as required by e.g.
abstract  int getDefaultPixelDataType()
          Get the default pixel data type, as required by e.g.
abstract  int getDefaultReadBuffer()
          Returns the default color buffer within the current bound getDefaultReadFramebuffer(), i.e.
abstract  int getDefaultReadFramebuffer()
          Return the default read framebuffer name.
abstract  GL getGL()
          Returns the GL pipeline object for this GLContext.
abstract  String getGLDebugMessageExtension()
           
abstract  GLDrawable getGLDrawable()
          Returns the write-drawable this context uses for framebuffer operations.
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-Drawable this context uses for read framebuffer operations.
 com.jogamp.common.util.VersionNumber getGLSLVersionNumber()
          Returns the matching GLSL version number, queried by this context GL via GL2ES2.GL_SHADING_LANGUAGE_VERSION if ≥ ES2.0 or GL2.0, otherwise a static match is being utilized.
 String getGLSLVersionString()
          Returns the GLSL version string as to be used in a shader program, including a terminating newline '\n', i.e.
 com.jogamp.common.util.VersionNumberString getGLVendorVersionNumber()
          Returns the vendor's version, i.e.
 String getGLVersion()
          Returns a valid OpenGL version string, ie
 int getGLVersionMajor()
          Deprecated. Use getGLVersionNumber()
 int getGLVersionMinor()
          Deprecated. Use getGLVersionNumber()
 com.jogamp.common.util.VersionNumber getGLVersionNumber()
          Returns this context OpenGL version.
 long getHandle()
          Returns the underlying native OpenGL context handle
static int getMaxMajor()
           
static int getMaxMinor(int major)
           
 int getMaxRenderbufferSamples()
          Returns the maximum number of FBO RENDERBUFFER samples if full FBO is supported, otherwise false.
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.
 com.jogamp.opengl.GLRendererQuirks getRendererQuirks()
          Returns the instance of GLRendererQuirks, allowing one to determine workarounds.
 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 hasBasicFBOSupport()
          Returns true if basic FBO support is available, otherwise false.
 boolean hasFullFBOSupport()
          Returns true if full FBO support is available, otherwise false.
 boolean hasGLSL()
           
 boolean hasRendererQuirk(int quirk)
          Returns true if the quirk exist in getRendererQuirks(), otherwise false.
 boolean isCreated()
          Indicates whether the underlying native 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.
static boolean isFBOAvailable(AbstractGraphicsDevice device, GLProfile glp)
          Returns true if it is possible to create an framebuffer object (FBO).
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 isGL3core()
          Indicates whether this profile is capable of GL3 (core only).
 boolean isGL4()
           
static boolean isGL4Available(AbstractGraphicsDevice device, boolean[] isHardware)
           
 boolean isGL4bc()
           
static boolean isGL4bcAvailable(AbstractGraphicsDevice device, boolean[] isHardware)
           
 boolean isGL4core()
          Indicates whether this profile is capable of GL4 (core only).
 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()
          Query whether using a distinguished read-drawable is supported.
 boolean isHardwareRasterizer()
           
static int isHardwareRasterizer(AbstractGraphicsDevice device, GLProfile glp)
           
 boolean isNPOTTextureAvailable()
          Note: The GL impl.
 boolean isTextureFormatBGRA8888Available()
           
static boolean isValidGLVersion(int major, int minor)
           
 boolean joinSwapGroup(int group)
           
abstract  int makeCurrent()
          Makes this GLContext current on the calling thread.
static String makeCurrentResultToString(int res)
          Returns a String representation of the makeCurrent() result.
 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  GLDrawable setGLDrawable(GLDrawable readWrite, boolean setWriteOnly)
          Sets the read/write drawable for framebuffer operations.
abstract  GLDrawable setGLReadDrawable(GLDrawable read)
          Set the read-Drawable for read framebuffer operations.
The caller should query if this feature is supported via isGLReadDrawableAvailable().
 boolean setSwapInterval(int interval)
          Set the swap interval of the current context and attached drawable.
 String toString()
          Classname, GL, GLDrawable
 void validateCurrent()
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

PROFILE_ALIASING

public static final boolean PROFILE_ALIASING
If true (default), bootstrapping the available GL profiles will use the highest compatible GL context for each profile, hence skipping querying lower profiles if a compatible higher one is found: Otherwise the dedicated GL context would be queried and used: Using aliasing speeds up initialization about:

DEBUG

public static final boolean DEBUG

TRACE_SWITCH

public static final boolean TRACE_SWITCH

DEBUG_TRACE_SWITCH

public static final boolean DEBUG_TRACE_SWITCH

DEBUG_GL

public static final boolean DEBUG_GL
Reflects property jogl.debug.DebugGL. If true, the debug pipeline is enabled at context creation.


TRACE_GL

public static final boolean TRACE_GL
Reflects property jogl.debug.TraceGL. If true, the trace pipeline is enabled at context creation.


CONTEXT_NOT_CURRENT

public static final int CONTEXT_NOT_CURRENT
Indicates that the context was not made current during the last call to makeCurrent.

See Also:
Constant Field Values

CONTEXT_CURRENT

public static final int CONTEXT_CURRENT
Indicates that the context was made current during the last call to makeCurrent.

See Also:
Constant Field Values

CONTEXT_CURRENT_NEW

public static final int CONTEXT_CURRENT_NEW
Indicates that a newly-created context was made current during the last call to makeCurrent.

See Also:
Constant Field Values

Version100

public static final com.jogamp.common.util.VersionNumber Version100

Version110

public static final com.jogamp.common.util.VersionNumber Version110

Version120

public static final com.jogamp.common.util.VersionNumber Version120

Version130

public static final com.jogamp.common.util.VersionNumber Version130

Version140

public static final com.jogamp.common.util.VersionNumber Version140

Version150

public static final com.jogamp.common.util.VersionNumber Version150

Version32

public static final com.jogamp.common.util.VersionNumber Version32
Version 3.2. As an OpenGL version, it qualifies for geometry shader


Version31

public static final com.jogamp.common.util.VersionNumber Version31
Version 3.1. As an OpenGL version, it qualifies for isGL3core(), isGL3bc() and isGL3()


Version30

public static final com.jogamp.common.util.VersionNumber Version30
Version 3.0. As an OpenGL version, it qualifies for isGL2() only


CTX_OPTION_DEBUG

public static final int CTX_OPTION_DEBUG
ARB_create_context related: flag debug. Cache key value. See setContextCreationFlags(int), GLAutoDrawable.setContextCreationFlags(int), getAvailableContextProperties(AbstractGraphicsDevice, GLProfile).

See Also:
Constant Field Values

GL_VERSIONS

public static final int[][] GL_VERSIONS
Method Detail

getRendererQuirks

public final com.jogamp.opengl.GLRendererQuirks getRendererQuirks()
Returns the instance of GLRendererQuirks, allowing one to determine workarounds.

Returns:
instance of GLRendererQuirks if context was made current once, otherwise null.

hasRendererQuirk

public final boolean hasRendererQuirk(int quirk)
                               throws IllegalArgumentException
Returns true if the quirk exist in getRendererQuirks(), otherwise false.

Convenience method for:

    final GLRendererQuirks glrq = ctx.getRendererQuirks();
    boolean hasQuirk = null != glrq ? glrq.exist(quirk) : false ;
 

Parameters:
quirk - the quirk to be tested, e.g. GLRendererQuirks.NoDoubleBufferedPBuffer.
Throws:
IllegalArgumentException - if the quirk is out of range

setGLDrawable

public abstract GLDrawable setGLDrawable(GLDrawable readWrite,
                                         boolean setWriteOnly)
Sets the read/write drawable for framebuffer operations.

If the arguments reflect the current state of this context this method is a no-operation and returns the old and current GLDrawable.

If the context was current on this thread, it is being released before switching the drawable and made current afterwards. However the user shall take extra care that not other thread attempts to make this context current. Otherwise a race condition may happen.

Parameters:
readWrite - The read/write drawable for framebuffer operations, maybe null to remove association.
setWriteOnly - Only change the write-drawable, if setWriteOnly is true and if the read-drawable differs from the write-drawable. Otherwise set both drawables, read and write.
Returns:
The previous read/write drawable
Throws:
GLException - in case null is being passed or this context is made current on another thread.
See Also:
isGLReadDrawableAvailable(), getGLReadDrawable(), #setGLReadDrawable(), getGLDrawable()

getGLDrawable

public abstract GLDrawable getGLDrawable()
Returns the write-drawable this context uses for framebuffer operations.

If the read-drawable has not been changed manually via setGLReadDrawable(GLDrawable), it equals to the write-drawable (default).

See Also:
setGLDrawable(GLDrawable, boolean), setGLReadDrawable(GLDrawable)

isGLReadDrawableAvailable

public abstract boolean isGLReadDrawableAvailable()
Query whether using a distinguished read-drawable is supported.

Returns:
true if using a read-drawable is supported with your driver/OS, otherwise false.

setGLReadDrawable

public abstract GLDrawable setGLReadDrawable(GLDrawable read)
Set the read-Drawable for read framebuffer operations.
The caller should query if this feature is supported via isGLReadDrawableAvailable().

If the context was current on this thread, it is being released before switching the drawable and made current afterwards. However the user shall take extra care that not other thread attempts to make this context current. Otherwise a race condition may happen.

Parameters:
read - the read-drawable for read framebuffer operations. If null is passed, the default write drawable will be set.
Returns:
the previous read-drawable
Throws:
GLException - in case a read drawable is not supported or this context is made current on another thread.
See Also:
isGLReadDrawableAvailable(), getGLReadDrawable()

getGLReadDrawable

public abstract GLDrawable getGLReadDrawable()
Returns the read-Drawable this context uses for read framebuffer operations.

If the read-drawable has not been changed manually via setGLReadDrawable(GLDrawable), it equals to the write-drawable (default).

See Also:
isGLReadDrawableAvailable(), setGLReadDrawable(javax.media.opengl.GLDrawable), getGLDrawable()

makeCurrent

public abstract int makeCurrent()
                         throws GLException
Makes this GLContext current on the calling thread.

Recursive call to makeCurrent() and hence release() are supported.

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 for the 1st time, or that the state of the underlying context or drawable has changed since the last time this context was current. In this case, the application may wish to initialize the render state.

A return value of CONTEXT_CURRENT indicates that the context has been made current, 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.

This method is blocking, i.e. waits until another thread has released the context.

The drawable's surface is being locked at entry and unlocked at release()

Returns:
Throws:
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.

release

public abstract void release()
                      throws GLException
Releases control of this GLContext from the current thread.

Recursive call to release() and hence makeCurrent() are supported.

The drawable's surface is being unlocked at exit, assumed to be locked by makeCurrent().

Throws:
GLException - if the context had not previously been made current on the current thread

copy

public abstract void copy(GLContext source,
                          int mask)
                   throws GLException
Copies selected groups of OpenGL state variables from the supplied source context into this one. The 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.

Parameters:
source - the source OpenGL context from which to copy state
mask - a mask of symbolic names indicating which groups of state to copy
Throws:
GLException - if an OpenGL-related error occurred

getCurrentGL

public static GL getCurrentGL()
                       throws GLException
Returns the GL object bound to this thread current context. If no context is current, throw an GLException

Returns:
the current context's GL object on this thread
Throws:
GLException - if no context is current

getCurrent

public static GLContext getCurrent()
Returns this thread current context. If no context is current, returns null.

Returns:
the context current on this thread, or null if no context is current.

isCurrent

public final boolean isCurrent()
Returns:
true if this GLContext is current on this thread

validateCurrent

public final void validateCurrent()
                           throws GLException
Throws:
GLException - if this GLContext is not current on this thread

makeCurrentResultToString

public static final String makeCurrentResultToString(int res)
Returns a String representation of the makeCurrent() result.


destroy

public abstract void destroy()
Destroys this OpenGL context and frees its associated resources.

The context may be current w/o recursion when calling destroy(), in which case this method destroys the context and releases the lock.


getGL

public abstract GL getGL()
Returns the GL pipeline object for this GLContext.

Returns:
the aggregated GL instance, or null if this context was not yet made current.

setGL

public abstract GL setGL(GL gl)
Sets the GL pipeline object for this GLContext.

Returns:
the set GL pipeline or null if not successful

getHandle

public final long getHandle()
Returns the underlying native OpenGL context handle


isCreated

public final boolean isCreated()
Indicates whether the underlying native OpenGL context has been created.


getAttachedObject

public final Object getAttachedObject(String name)
Returns the attached user object for the given name to this GLContext.


attachObject

public final Object attachObject(String name,
                                 Object obj)
Sets the attached user object for the given name to this GLContext. Returns the previously set object or null.


detachObject

public final Object detachObject(String name)

toString

public String toString()
Classname, GL, GLDrawable

Overrides:
toString in class Object

append

public final StringBuilder append(StringBuilder sb)

isFunctionAvailable

public 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. See GLBase.isFunctionAvailable(String) for more details.

Parameters:
glFunctionName - the name of the OpenGL function (e.g., use "glPolygonOffsetEXT" or "glPolygonOffset" to check if the GL.glPolygonOffset(float,float) is available).

isExtensionAvailable

public 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. See GLBase.isExtensionAvailable(String) for more details.

Parameters:
glExtensionName - the name of the OpenGL extension (e.g., "GL_VERTEX_PROGRAM_ARB").

getPlatformExtensionCount

public abstract int getPlatformExtensionCount()
Returns the number of platform extensions


getPlatformExtensionsString

public 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. Can only be called while this context is current.


getGLExtensionCount

public abstract int getGLExtensionCount()
Returns the number of OpenGL extensions


getGLExtensionsString

public abstract String getGLExtensionsString()
Returns a non-null (but possibly empty) string containing the space-separated list of available extensions. Can only be called while this context is current. This is equivalent to glGetString(GL_EXTENSIONS)


getContextCreationFlags

public abstract int getContextCreationFlags()
Returns:
Additional context creation flags, supported: CTX_OPTION_DEBUG.

setContextCreationFlags

public abstract void setContextCreationFlags(int flags)
Parameters:
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().
See Also:
enableGLDebugMessage(boolean), GLAutoDrawable.setContextCreationFlags(int)

getGLVersion

public final String getGLVersion()
Returns a valid OpenGL version string, ie
     major.minor ([option]?[options,]*) - gl-version
 

e.g.:
row 2, cell 1 row 2, cell 2
ES2 2.0 (ES profile, ES2 compatible, hardware) - 2.0 ES Profile
ATIGL2 3.0 (Compatibility profile, arb, hardware) - 3.2.9704 Compatibility Profile Context
ATIGL3 3.3 (Core profile, any, new, hardware) - 1.4 (3.2.9704 Compatibility Profile Context)
ATIGL3bc3.3 (Compatibility profile, arb, hardware) - 1.4 (3.2.9704 Compatibility Profile Context)
NVGL2 3.0 (Compatibility profile, arb, hardware) - 3.0.0 NVIDIA 195.36.07.03
NVGL3 3.3 (Core profile, arb, hardware) - 3.3.0 NVIDIA 195.36.07.03
NVGL3bc 3.3 (Compatibility profile, arb, hardware) - 3.3.0 NVIDIA 195.36.07.03
NVGL2 3.0 (Compatibility profile, arb, ES2 compatible, hardware) - 3.0.0 NVIDIA 290.10


getGLVersionMajor

public final int getGLVersionMajor()
Deprecated. Use getGLVersionNumber()


getGLVersionMinor

public final int getGLVersionMinor()
Deprecated. Use getGLVersionNumber()


getGLVersionNumber

public final com.jogamp.common.util.VersionNumber getGLVersionNumber()
Returns this context OpenGL version.

See Also:
getGLSLVersionNumber()

getGLVendorVersionNumber

public final com.jogamp.common.util.VersionNumberString getGLVendorVersionNumber()
Returns the vendor's version, i.e. version number at the end of GL_VERSION not being the GL version.

In case no such version exists within GL_VERSION, the zero version instance is returned.

The vendor's version is usually the vendor's OpenGL driver version.


isGLCompatibilityProfile

public final boolean isGLCompatibilityProfile()

isGLCoreProfile

public final boolean isGLCoreProfile()

isGLForwardCompatible

public final boolean isGLForwardCompatible()

isGLDebugEnabled

public final boolean isGLDebugEnabled()

isCreatedWithARBMethod

public final boolean isCreatedWithARBMethod()

getGLSLVersionNumber

public final com.jogamp.common.util.VersionNumber getGLSLVersionNumber()
Returns the matching GLSL version number, queried by this context GL via GL2ES2.GL_SHADING_LANGUAGE_VERSION if ≥ ES2.0 or GL2.0, otherwise a static match is being utilized.

The context must have been current once, otherwise the zero version instance is returned.

Examples w/ major.minor:

    1.00 (ES 2.0), 1.10 (GL 2.0), 1.20 (GL 2.1), 1.50 (GL 3.2), 
    3.30 (GL 3.3), 4.00 (GL 4.0), 4.10 (GL 4.1), 4.20 (GL 4.2)
 

Matching could also refer to the maximum GLSL version usable by this context since normal GL implementations are capable of using a lower GLSL version as well. The latter is not true on OSX w/ a GL3 context.

Returns:
GLSL version number if context has been made current at least once, otherwise the zero version instance is returned.
See Also:
getGLVersionNumber()

getGLSLVersionString

public final String getGLSLVersionString()
Returns the GLSL version string as to be used in a shader program, including a terminating newline '\n', i.e. for desktop
    #version 110
    ..
    #version 150
    #version 330
    ...
 
And for ES:
    #version 100
    #version 300 es
    ..
 

If context has not been made current yet, a string of zero length is returned.

See Also:
getGLSLVersionNumber()

isGLES2Compatible

public final boolean isGLES2Compatible()
Returns:
true if this context is an ES2 context or implements the extension GL_ARB_ES2_compatibility, otherwise false

isHardwareRasterizer

public final boolean isHardwareRasterizer()
Returns:
true if impl. is a hardware rasterizer, otherwise false.
See Also:
isHardwareRasterizer(AbstractGraphicsDevice, GLProfile), GLProfile.isHardwareRasterizer()

hasGLSL

public final boolean hasGLSL()
Returns:
true if context supports GLSL, i.e. is either isGLES2(), isGL3() or isGL2() and major-version > 1.
See Also:
GLProfile.hasGLSL()

hasBasicFBOSupport

public final boolean hasBasicFBOSupport()
Returns true if basic FBO support is available, otherwise false.

Basic FBO is supported if the context is either GL-ES >= 2.0, GL >= core 3.0 or implements the extensions GL_ARB_ES2_compatibility, GL_ARB_framebuffer_object, GL_EXT_framebuffer_object or GL_OES_framebuffer_object.

Basic FBO support may only include one color attachment and no multisampling, as well as limited internal formats for renderbuffer.

See Also:
CTX_IMPL_FBO

hasFullFBOSupport

public final boolean hasFullFBOSupport()
Returns true if full FBO support is available, otherwise false.

Full FBO is supported if the context is either GL >= core 3.0 or implements the extensions ARB_framebuffer_object, or all of EXT_framebuffer_object, EXT_framebuffer_multisample, EXT_framebuffer_blit, GL_EXT_packed_depth_stencil.

Full FBO support includes multiple color attachments and multisampling.


getMaxRenderbufferSamples

public final int getMaxRenderbufferSamples()
Returns the maximum number of FBO RENDERBUFFER samples if full FBO is supported, otherwise false.


isNPOTTextureAvailable

public boolean isNPOTTextureAvailable()
Note: The GL impl. may return a const value, ie GLBase.isNPOTTextureAvailable() always returns true.


isTextureFormatBGRA8888Available

public boolean isTextureFormatBGRA8888Available()

isGL4bc

public final boolean isGL4bc()
See Also:
GLProfile.isGL4bc()

isGL4

public final boolean isGL4()
See Also:
GLProfile.isGL4()

isGL4core

public final boolean isGL4core()
Indicates whether this profile is capable of GL4 (core only).

Includes [ GL4 ].


isGL3bc

public final boolean isGL3bc()
See Also:
GLProfile.isGL3bc()

isGL3

public final boolean isGL3()
See Also:
GLProfile.isGL3()

isGL3core

public final boolean isGL3core()
Indicates whether this profile is capable of GL3 (core only). GL3 starts w/ OpenGL 3.1

Includes [ GL4, GL3 ].


isGL2

public final boolean isGL2()
See Also:
GLProfile.isGL2()

isGL2GL3

public final boolean isGL2GL3()
See Also:
GLProfile.isGL2GL3()

isGLES1

public final boolean isGLES1()
See Also:
GLProfile.isGLES1()

isGLES2

public final boolean isGLES2()
See Also:
GLProfile.isGLES2()

isGLES

public final boolean isGLES()
See Also:
GLProfile.isGLES()

isGL2ES1

public final boolean isGL2ES1()
See Also:
GLProfile.isGL2ES1()

isGL2ES2

public final boolean isGL2ES2()
See Also:
GLProfile.isGL2ES2()

setSwapInterval

public final boolean setSwapInterval(int interval)
                              throws GLException
Set the swap interval of the current context and attached drawable.

Parameters:
interval - Should be ≥ 0. 0 disables the vertical synchronization, where ≥ 1 is the number of vertical refreshes before a swap buffer occurs. A value < 0 is ignored.
Returns:
true if the operation was successful, otherwise false
Throws:
GLException - if the context is not current.

getSwapInterval

public final int getSwapInterval()
Return the current swap interval.

If the context has not been made current at all, the default value -1 is returned.

For a valid context the default value is 1 in case of an EGL based profile (ES1 or ES2) and -1 (undefined) for desktop.


queryMaxSwapGroups

public final boolean queryMaxSwapGroups(int[] maxGroups,
                                        int maxGroups_offset,
                                        int[] maxBarriers,
                                        int maxBarriers_offset)

joinSwapGroup

public final boolean joinSwapGroup(int group)

getSwapGroup

public int getSwapGroup()

bindSwapBarrier

public final boolean bindSwapBarrier(int group,
                                     int barrier)

getBoundFramebuffer

public abstract int getBoundFramebuffer(int target)
Return the framebuffer name bound to this context, see GL.glBindFramebuffer(int, int).


getDefaultDrawFramebuffer

public abstract int getDefaultDrawFramebuffer()
Return the default draw framebuffer name.

May differ from it's default zero in case an framebuffer object (FBObject) based drawable is being used.


getDefaultReadFramebuffer

public abstract int getDefaultReadFramebuffer()
Return the default read framebuffer name.

May differ from it's default zero in case an framebuffer object (FBObject) based drawable is being used.


getDefaultReadBuffer

public abstract int getDefaultReadBuffer()
Returns the default color buffer within the current bound getDefaultReadFramebuffer(), i.e. GL_READ_FRAMEBUFFER​, which will be used as the source for pixel reading commands, like GL.glReadPixels(int, int, int, int, int, int, java.nio.Buffer) etc.

For offscreen framebuffer objects this is GL.GL_COLOR_ATTACHMENT0, otherwise this is GL.GL_FRONT for single buffer configurations and GL.GL_BACK for double buffer configurations.


getDefaultPixelDataType

public abstract int getDefaultPixelDataType()
Get the default pixel data type, as required by e.g. GL.glReadPixels(int, int, int, int, int, int, java.nio.Buffer).


getDefaultPixelDataFormat

public abstract int getDefaultPixelDataFormat()
Get the default pixel data format, as required by e.g. GL.glReadPixels(int, int, int, int, int, int, java.nio.Buffer).


getGLDebugMessageExtension

public abstract String getGLDebugMessageExtension()
Returns:
The extension implementing the GLDebugOutput feature, either GL_ARB_debug_output or GL_AMD_debug_output. If unavailable or called before initialized via makeCurrent(), null is returned.

isGLDebugSynchronous

public abstract boolean isGLDebugSynchronous()
Returns:
the current synchronous debug behavior via
See Also:
#setSynchronous(boolean)

setGLDebugSynchronous

public 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. There is no equivalent for #GL_AMD_debug_output.

The default is true, ie GL2GL3.GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB.


isGLDebugMessageEnabled

public abstract boolean isGLDebugMessageEnabled()
Returns:
true if the GLDebugOutput feature is enabled or not.

enableGLDebugMessage

public abstract void enableGLDebugMessage(boolean enable)
                                   throws GLException
Enables or disables the GLDebugOutput feature of extension GL_ARB_debug_output or GL_AMD_debug_output, if available.

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.

Parameters:
enable - If true enables, otherwise disables the GLDebugOutput feature.
Throws:
GLException - if this context is not current or GLDebugOutput registration failed (enable)
See Also:
setContextCreationFlags(int), addGLDebugListener(GLDebugListener), GLAutoDrawable.setContextCreationFlags(int)

addGLDebugListener

public abstract void addGLDebugListener(GLDebugListener listener)
Add GLDebugListener.

Parameters:
listener - GLDebugListener handling s
See Also:
enableGLDebugMessage(boolean), removeGLDebugListener(GLDebugListener)

removeGLDebugListener

public abstract void removeGLDebugListener(GLDebugListener listener)
Remove GLDebugListener.

Parameters:
listener - GLDebugListener handling s
See Also:
enableGLDebugMessage(boolean), addGLDebugListener(GLDebugListener)

glDebugMessageControl

public 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.

See Also:
enableGLDebugMessage(boolean)

glDebugMessageControl

public 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.

See Also:
enableGLDebugMessage(boolean)

glDebugMessageInsert

public 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.

See Also:
enableGLDebugMessage(boolean)

getMaxMajor

public static final int getMaxMajor()

getMaxMinor

public static final int getMaxMinor(int major)

isValidGLVersion

public static final boolean isValidGLVersion(int major,
                                             int minor)

decrementGLVersion

public static final boolean decrementGLVersion(int[] major,
                                               int[] minor)

isFBOAvailable

public static final boolean isFBOAvailable(AbstractGraphicsDevice device,
                                           GLProfile glp)
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 hasBasicFBOSupport().

Parameters:
device - the device to request whether FBO is available for
glp - GLProfile to check for FBO capabilities
See Also:
hasBasicFBOSupport()

isHardwareRasterizer

public static final int isHardwareRasterizer(AbstractGraphicsDevice device,
                                             GLProfile glp)
Returns:
1 if using a hardware rasterizer, 0 if using a software rasterizer and -1 if not determined yet.
See Also:
isHardwareRasterizer(), GLProfile.isHardwareRasterizer()

isGLES1Available

public static boolean isGLES1Available(AbstractGraphicsDevice device,
                                       boolean[] isHardware)

isGLES2Available

public static boolean isGLES2Available(AbstractGraphicsDevice device,
                                       boolean[] isHardware)

isGL4bcAvailable

public static boolean isGL4bcAvailable(AbstractGraphicsDevice device,
                                       boolean[] isHardware)

isGL4Available

public static boolean isGL4Available(AbstractGraphicsDevice device,
                                     boolean[] isHardware)

isGL3bcAvailable

public static boolean isGL3bcAvailable(AbstractGraphicsDevice device,
                                       boolean[] isHardware)

isGL3Available

public static boolean isGL3Available(AbstractGraphicsDevice device,
                                     boolean[] isHardware)

isGL2Available

public static boolean isGL2Available(AbstractGraphicsDevice device,
                                     boolean[] isHardware)


Copyright 2010 JogAmp Community.