Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## javax.media.opengl
Interface GLBase

All Known Subinterfaces:
  GL, GL2, GL2ES1, GL2ES2, GL2GL3, GL3, GLES1, GLES2

All Known Implementing Classes:
  DebugGL2, DebugGL2ES1, DebugGL2ES2, DebugGL2GL3, DebugGL3, DebugGLES1, DebugGLES2, FixedFuncImpl, TraceGL2, TraceGL2ES1, TraceGL2ES2, TraceGL2GL3, TraceGL3, TraceGLES1, TraceGLES2

    public interface GLBase

The base interface from which all GL profiles derive, providing checked conversion down to concrete profiles, access to the OpenGL context associated with the GL and extension/function availability queries as described below.

While the APIs for vendor extensions are unconditionally exposed, the underlying functions may not be present. The method `isFunctionAvailable(java.lang.String)` should be used to query the availability of any non-core function before it is used for the first time; for example, `gl.isFunctionAvailable("glProgramStringARB")`. On certain platforms (Windows in particular), the most "core" functionality is only OpenGL 1.1, so in theory any routines first exposed in OpenGL 1.2, 1.3, and 1.4, 1.5, or 2.0 as well as vendor extensions should all be queried. Calling an unavailable function will cause a `GLException` to be raised.

`isExtensionAvailable(java.lang.String)` may also be used to determine whether a specific extension is available before calling the routines or using the functionality it exposes: for example, `gl.isExtensionAvailable("GL_ARB_vertex_program");`. However, in this case it is up to the end user to know which routines or functionality are associated with which OpenGL extensions. It may also be used to test for the availability of a particular version of OpenGL: for example, `gl.isExtensionAvailable("GL_VERSION_1_5");`.

Exceptions to the window system extension naming rules:

- The memory allocators for the NVidia vertex_array_range (VAR) extension, in particular `wglAllocateMemoryNV` / `glXAllocateMemoryNV` and associated routines. `#glAllocateMemoryNV` has been provided for window system-independent access to VAR. `isFunctionAvailable(java.lang.String)` will translate an argument of "glAllocateMemoryNV" or "glFreeMemoryNV" into the appropriate window system-specific name.
- WGL_ARB_pbuffer, WGL_ARB_pixel_format, and other platform-specific pbuffer functionality; the availability of pbuffers can be queried on Windows, X11 and Mac OS X platforms by querying `isExtensionAvailable(java.lang.String)` with an argument of "GL_ARB_pbuffer" or "GL_ARB_pixel_format".

Method Summary
`GLContext` | `getContext()` Returns the GLContext with which this GL object is associated.
`Object` | `getExtension(String extensionName)` Returns an object providing access to the specified OpenGL extension.
`GL` | `getGL()` Casts this object to the GL interface.
`GL2` | `getGL2()` Casts this object to the GL2 interface.
`GL2ES1` | `getGL2ES1()` Casts this object to the GL2ES1 interface.
`GL2ES2` | `getGL2ES2()` Casts this object to the GL2ES2 interface.
`GL2GL3` | `getGL2GL3()` Casts this object to the GL2GL3 interface.
`GL3` | `getGL3()` Casts this object to the GL3 interface.
`GLES1` | `getGLES1()` Casts this object to the GLES1 interface.
`GLES2` | `getGLES2()` Casts this object to the GLES2 interface.
`GLProfile` | `getGLProfile()` Returns the GLProfile with which this GL object is associated.
`Object` | `getPlatformGLExtensions()` Returns an object through which platform-specific OpenGL extensions (EGL, GLX, WGL, etc.) may be accessed.
`int` | `getSwapInterval()` Provides a platform-independent way to get the swap interval set by `setSwapInterval(int)`.
`boolean` | `hasGLSL()` Indicates whether this GL object supports GLSL.
`boolean` | `isExtensionAvailable(String glExtensionName)` Returns true if the specified OpenGL extension can be used successfully through this GL instance given the current host (OpenGL client) and display (OpenGL server) configuration.
`boolean` | `isFunctionAvailable(String glFunctionName)` Returns true if the specified OpenGL core- or extension-function can be used successfully through this GL instance given the current host (OpenGL client) and display (OpenGL server) configuration.
`boolean` | `isGL()` Indicates whether this GL object conforms to any of the common GL profiles.
`boolean` | `isGL2()` Indicates whether this GL object conforms to the GL2 profile.
`boolean` | `isGL2ES1()` Indicates whether this GL object conforms to the GL2ES1 compatible profile.
`boolean` | `isGL2ES2()` Indicates whether this GL object conforms to the GL2ES2 compatible profile.
`boolean` | `isGL2GL3()` Indicates whether this GL object conforms to the GL2GL3 compatible profile.
`boolean` | `isGL3()` Indicates whether this GL object conforms to the GL3 profile.
`boolean` | `isGLES()` Indicates whether this GL object conforms to one of the OpenGL ES compatible profiles.
`boolean` | `isGLES1()` Indicates whether this GL object conforms to the GLES1 profile.
`boolean` | `isGLES2()` Indicates whether this GL object conforms to the GLES2 profile.
`void` | `setSwapInterval(int interval)` Provides a platform-independent way to specify the minimum swap interval for buffer swaps.

Method Detail

### isGL

    boolean isGL()

  Indicates whether this GL object conforms to any of the common GL profiles.

  Returns:
    whether this GL object conforms to any of the common GL profiles

### isGL3

    boolean isGL3()

  Indicates whether this GL object conforms to the GL3 profile. The GL3 profile reflects OpenGL versions greater or equal 3.1

  Returns:
    whether this GL object conforms to the GL3 profile

### isGL2

    boolean isGL2()

  Indicates whether this GL object conforms to the GL2 profile. The GL2 profile reflects OpenGL versions greater or equal 1.5

  Returns:
    whether this GL object conforms to the GL2 profile

### isGLES1

    boolean isGLES1()

  Indicates whether this GL object conforms to the GLES1 profile.

  Returns:
    whether this GL object conforms to the GLES1 profile

### isGLES2

    boolean isGLES2()

  Indicates whether this GL object conforms to the GLES2 profile.

  Returns:
    whether this GL object conforms to the GLES2 profile

### isGLES

    boolean isGLES()

  Indicates whether this GL object conforms to one of the OpenGL ES compatible profiles.

  Returns:
    whether this GL object conforms to one of the OpenGL ES profiles

### isGL2ES1

    boolean isGL2ES1()

  Indicates whether this GL object conforms to the GL2ES1 compatible profile.

  Returns:
    whether this GL object conforms to the GL2ES1 profile

### isGL2ES2

    boolean isGL2ES2()

  Indicates whether this GL object conforms to the GL2ES2 compatible profile.

  Returns:
    whether this GL object conforms to the GL2ES2 profile

### isGL2GL3

    boolean isGL2GL3()

  Indicates whether this GL object conforms to the GL2GL3 compatible profile.

  Returns:
    whether this GL object conforms to the GL2GL3 profile

### hasGLSL

    boolean hasGLSL()

  Indicates whether this GL object supports GLSL.

### getGL

    GL getGL()
             throws GLException

  Casts this object to the GL interface.

  Returns:
    this object cast to the GL interface
  Throws:
    `GLException` - if this GLObject is not a GL implementation

### getGL3

    GL3 getGL3()
               throws GLException

  Casts this object to the GL3 interface.

  Returns:
    this object cast to the GL3 interface
  Throws:
    `GLException` - if this GLObject is not a GL3 implementation

### getGL2

    GL2 getGL2()
               throws GLException

  Casts this object to the GL2 interface.

  Returns:
    this object cast to the GL2 interface
  Throws:
    `GLException` - if this GLObject is not a GL2 implementation

### getGLES1

    GLES1 getGLES1()
                   throws GLException

  Casts this object to the GLES1 interface.

  Returns:
    this object cast to the GLES1 interface
  Throws:
    `GLException` - if this GLObject is not a GLES1 implementation

### getGLES2

    GLES2 getGLES2()
                   throws GLException

  Casts this object to the GLES2 interface.

  Returns:
    this object cast to the GLES2 interface
  Throws:
    `GLException` - if this GLObject is not a GLES2 implementation

### getGL2ES1

    GL2ES1 getGL2ES1()
                     throws GLException

  Casts this object to the GL2ES1 interface.

  Returns:
    this object cast to the GL2ES1 interface
  Throws:
    `GLException` - if this GLObject is not a GL2ES1 implementation

### getGL2ES2

    GL2ES2 getGL2ES2()
                     throws GLException

  Casts this object to the GL2ES2 interface.

  Returns:
    this object cast to the GL2ES2 interface
  Throws:
    `GLException` - if this GLObject is not a GL2ES2 implementation

### getGL2GL3

    GL2GL3 getGL2GL3()
                     throws GLException

  Casts this object to the GL2GL3 interface.

  Returns:
    this object cast to the GL2GL3 interface
  Throws:
    `GLException` - if this GLObject is not a GL2GL3 implementation

### getGLProfile

    GLProfile getGLProfile()

  Returns the GLProfile with which this GL object is associated.

  Returns:
    the GLProfile with which this GL object is associated

### getContext

    GLContext getContext()

  Returns the GLContext with which this GL object is associated.

  Returns:
    the GLContext with which this GL object is associated

### isFunctionAvailable

    boolean isFunctionAvailable(String glFunctionName)

  Returns true if the specified OpenGL core- or extension-function can be used successfully through this GL instance given the current host (OpenGL client) and display (OpenGL server) configuration.

  By "successfully" we mean that the function is both callable on the machine running the program and available on the current display.

  In order to call a function successfully, the function must be both callable on the machine running the program and available on the display device that is rendering the output (note: on non-networked, single-display machines these two conditions are identical; on networked and/or multi-display machines this becomes more complicated). These conditions are met if the function is either part of the core OpenGL version supported by both the host and display, or it is an OpenGL extension function that both the host and display support.

  A GL function is callable if it is successfully linked at runtime, hence the GLContext must be made current at least once.

  Parameters:
    `glFunctionName` - the name of the OpenGL function (e.g., use "glBindRenderbufferEXT" or "glBindRenderbuffer" to check if `#glBindRenderbuffer(int,int)` is available).

### isExtensionAvailable

    boolean isExtensionAvailable(String glExtensionName)

  Returns true if the specified OpenGL extension can be used successfully through this GL instance given the current host (OpenGL client) and display (OpenGL server) configuration.

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

### setSwapInterval

    void setSwapInterval(int interval)

  Provides a platform-independent way to specify the minimum swap interval for buffer swaps. An argument of 0 disables sync-to-vertical-refresh completely, while an argument of 1 causes the application to wait until the next vertical refresh until swapping buffers. The default, which is platform-specific, is usually either 0 or 1. This function is not guaranteed to have an effect, and in particular only affects heavyweight onscreen components.

  Throws:
    `GLException` - if this context is not the current
  See Also:
    `getSwapInterval()`

### getSwapInterval

    int getSwapInterval()

  Provides a platform-independent way to get the swap interval set by `setSwapInterval(int)`.
  If the interval is not set by `setSwapInterval(int)` yet, -1 is returned, indicating that the platforms default is being used.

  See Also:
    `setSwapInterval(int)`

### getPlatformGLExtensions

    Object getPlatformGLExtensions()

  Returns an object through which platform-specific OpenGL extensions (EGL, GLX, WGL, etc.) may be accessed. The data type of the returned object and its associated capabilities are undefined. Most applications will never need to call this method. It is highly recommended that any applications which do call this method perform all accesses on the returned object reflectively to guard themselves against changes to the implementation.

### getExtension

    Object getExtension(String extensionName)

  Returns an object providing access to the specified OpenGL extension. This is intended to provide a mechanism for vendors who wish to provide access to new OpenGL extensions without changing the public API of the core package. For example, a user may request access to extension "GL_VENDOR_foo" and receive back an object which implements a vendor-specified interface which can call the OpenGL extension functions corresponding to that extension. It is up to the vendor to specify both the extension name and Java API for accessing it, including which class or interface contains the functions.

  Note: it is the intent to add new extensions as quickly as possible to the core GL API. Therefore it is unlikely that most vendors will use this extension mechanism, but it is being provided for completeness.

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright 2005 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.