From bfb10d309d97c19a33f9b6758f647186f8e0ddd6 Mon Sep 17 00:00:00 2001
From: Sven Gothel
- A sample implementation is available as
+ An implementation is available as
JOGL, a JogAmp module. The NativeWindow Protocol is included in JogAmp's implementation This package contains all Java bindings for all OpenGL profiles. See Inclusion Criteria explaining the OpenGL profile seperation. See OpenGL Runtime Requirements. The main OpenGL profile interfaces are: This interface contains all OpenGL [ 1.0 .. 3.0 ] methods,
+ as well as most of it's extensions defined at the time of this specification. OpenGL extensions whose functionality was incorporated into core OpenGL ≤ 3.0,
+ are subsumed into the core namespace. Future extensions will be added with a maintenance update This interface contains all core OpenGL [ 3.1 .. 3.3 ] methods,
+ as well as most of it's extensions defined at the time of this specification. Note: OpenGL [ 3.1 .. 3.3 ] core profile does not includes fixed point functionality. Future extensions will be added with a maintenance update This interface contains the OpenGL [ 3.1 .. 3.3 ] compatibility profile,
+ as well as most of it's extensions defined at the time of this specification. Note: OpenGL [ 3.1 .. 3.3 ] compatibility profile does includes fixed point functionality. Future extensions will be added with a maintenance update This interface contains all core OpenGL [ 4.0 .. 4.3 ] methods,
+ as well as most of it's extensions defined at the time of this specification. Note: OpenGL [ 4.0 .. 4.3 ] core profile does not includes fixed point functionality. Future extensions will be added with a maintenance update This interface contains the OpenGL [ 4.0 .. 4.3 ] compatibility profile,
+ as well as most of it's extensions defined at the time of this specification. Note: OpenGL [ 4.0 .. 4.3 ] compatibility profile does includes fixed point functionality. Future extensions will be added with a maintenance update This interface contains all core embedded OpenGL methods of ES [ 1.0 .. 1.1 ],
+ as well as most of it's extensions defined at the time of this specification. Future extensions will be added with a maintenance update This interface contains all core embedded OpenGL methods of ES 2.0,
+ as well as most of it's extensions defined at the time of this specification. Future extensions will be added with a maintenance update This interface contains all core embedded OpenGL methods of ES 3.0,
+ as well as most of it's extensions defined at the time of this specification. Future extensions will be added with a maintenance update Additionally the packages contains interfaces resembling intersecting common profiles.
+ These common profiles may be utilize for cross profile code supposed to either run
+ on desktop and mobile devices, or across GL profiles themselves: Common interface containing the profile type identification and conversion methods. Used to query which specialized profile class an instance of this object actually is and
+ offering a protocol to convert it to these types. Common interface containing the subset of all profiles, GL4bc, GL4, GL3bc, GL3, GL2, GLES1, GLES2 and GLES3. This interface reflects common data types, texture and framebuffer functionality. Interface containing the common subset of GL2 and GLES1. This interface reflects the fixed functionality of OpenGL, without the immediate mode API. Interface containing the common subset of GL2 and GLES2. This interface reflects the programmable shader functionality of desktop and embedded OpenGL up until GLES2. Interface containing the common subset of core GL4, core GL3, and GLES3. This interface reflects the programmable shader functionality of desktop and embedded OpenGL up until GLES3. Interface containing the common subset of core GL3 (OpenGL 3.1+) and GL2 (OpenGL 3.0),
+ also known as the OpenGL 3.0 forward compatible, non deprecated subset. This interface reflects only the programmable shader functionality of desktop OpenGL
This package contains bindings for the OpenGL Graphics System Utility (GLU)
Library version 1.3, inclusive, with the exception of the GLU NURBS routines
-which are not exposed.JSR 231 Specification Overview
+JOGL Specification Overview
Preface
This specification, an optional set of packages, describes the Java(TM)
bindings to the native OpenGL(R) 3D graphics library profiles:
-
- See Inclusion Criteria explaining the OpenGL profile seperation.
+ See Inclusion Criteria explaining the OpenGL profile separation.
See OpenGL Runtime Requirements.
Dependencies
This binding has dependencies to the following:
-
+
-
-
- The NativeWindow Protocol is included in JogAmp's sample implementation
OpenGL Profile Model
- OpenGL today is not just a single set of functionality, it offers many profiles for different
- purposes, e.g. ES1 and ES2 for mobile, etc.
- JOGL reflects these profiles with an OO abstraction model,
+ OpenGL today is not just a single set of functions, it offers many profiles for different
+ purposes, e.g. ES1, ES2 and ES3 for mobile, GL [ 3.1 .. 4.3 ] core for a programmable shader application, etc.
+ JOGL reflects these profiles with an OO abstraction model,
specifying interfaces encapsulating common subsets.
Package Structure
The packages defined by this specification include:
-
-
- This package contains all Java bindings for all OpenGL profiles.
- See Inclusion Criteria explaining the OpenGL profile seperation.
- See OpenGL Runtime Requirements.
- The main OpenGL profile interfaces are:
+
+
-
- Additionally the packages contains interfaces where the main profiles intersect each other.
- These interfaces purposes is to provide common subsets of profiles to be used
- on both, the desktop and the embedded device. These are:
-
- This interface contains all core desktop OpenGL methods through
-version 3.0, inclusive, as well as most of it's extensions defined at the
-time of this specification. OpenGL extensions whose functionality
-was incorporated into core OpenGL until version 3.1, inclusive, are subsumed into the core namespace.
- Note: OpenGL 3.0 is the last completly subsumed version in the specification.
- You need to use a {@link javax.media.opengl.GL3} OpenGL 3.1+ context to benefit
- from new functionality and versions.
- Note: Intersecting OpenGL 3.1 subsumed extensions are subsumed in GL2 as well, to offer the best common GL2GL3 intersection.
- See GL2 Inclusion Criteria.
- See GL2 Runtime Requirements.
- Future extensions will be added with a maintenance update
-
- This interface contains all core, forward compatible, OpenGL methods starting from 3.1,
-inclusive, as well as most of it's extensions defined at the time of this specification.
- Note: OpenGL 3.0 forward compatible, non deprecated functionality is included in the
- 3.1 specification, hence the {@link javax.media.opengl.GL2GL3} implemented interface.
- Note: OpenGL 3.1 forward compatible no more includes fixed point functionality.
- See GL3 Inclusion Criteria.
- See GL3 Runtime Requirements.
- Future extensions will be added with a maintenance update
-
- This interface contains the OpenGL 3.x compatibility profile,
- ie includes all methods as defined in {@link javax.media.opengl.GL2} and {@link javax.media.opengl.GL3}.
- Future extensions will be added with a maintenance update
-
- This interface contains all core embedded OpenGL methods of ES 1.x, with x >= 0,
-inclusive, as well as most of it's extensions defined at the
-time of this specification.
- Future extensions will be added with a maintenance update
-
- This interface contains all core embedded OpenGL methods of ES 2.x, with x >= 0,
-inclusive, as well as most of it's extensions defined at the
-time of this specification.
- Future extensions will be added with a maintenance update
+
-
-
- Common interface containing the profile type identification and conversion methods.
- Used to query which specialized profile class an instance of this object actually is and
- offering a protocol to convert it to these types.
-
- Common interface containing the subset of all profiles, GL3bc, GL3, GL2, GLES1 and GLES2.
- This interface reflects common data types, texture and framebuffer functionality.
-
- Interface containing the common subset of GL2 and GLES1.
- This interface reflects only the fixed functionality of OpenGL
-
- Interface containing the common subset of GL3, GL2 and GLES2.
- This interface reflects only the programmable shader functionality of desktop and embedded OpenGL
-
- Interface containing the common subset of core GL3 (OpenGL 3.1+) and GL2 (OpenGL 3.0),
- also known as the OpenGL 3.0 forward compatible, non deprecated subset.
- This interface reflects only the programmable shader functionality of desktop OpenGL
-
+
+which are not exposed.
The rules for creating the Java language binding are described in the following
sections. These rules should be followed as closely as possible for all future
-APIs that share the javax.media.opengl namespace.
+APIs that share the javax.media.opengl namespace.
Extension suffixes, such as EXT, ARB, and vendor-specific suffixes, are
-retained so as to match C conventions.
+retained so as to match C conventions.
Integer return values that can only be GL_TRUE or GL_FALSE are mapped to
-boolean.
+boolean.
OpenGL functions that take pointer arguments fall into several categories:
Functions that take a typed pointer (e.g., GLfloat *) argument for immediate
use are given two bindings. The first takes a Java primitive array with a
type that matches the C pointer type (i.e., GLfloat* maps to float[]). The
second takes a typed Buffer object (i.e., GLfloat* maps to FloatBuffer).
-An example of an OpenGL API in this category is glColor3fv.
-
+An example of an OpenGL API in this category is glColor3fv.
Functions that take an untyped (void*) pointer argument for deferred use
are given a single binding that takes a Buffer object. The Buffer may be of
any type allowable by the function (and compatible with the other arguments
@@ -216,24 +223,24 @@ into this category generally have names ending with the suffix "pointer."
An example of an OpenGL API in this category is glVertexPointer. Because these
functions do not consume the data located at the given pointer immediately,
but only at some unspecified later time, it is not possible to use a Java
-primitive array whose memory location may change.
-
+primitive array whose memory location may change.
Functions that take a typed (e.g., GLfloat*) pointer argument for deferred
use are given a single binding that takes a typed Buffer object (i.e., GLfloat*
maps to FloatBuffer). The Buffer must be direct. That is, it may not have
been created from a Java primitive array using the wrap method. An example
-of an OpenGL API in this category is glFeedbackBuffer.
-
+of an OpenGL API in this category is glFeedbackBuffer.
Methods that read or write a specific number of values from an array or
Buffer argument do not read or write any subsequent elements of the array
-or Buffer.
-
+or Buffer.
An outgoing C char* pointer, if representing a null-terminated, read-only
C string, maps to a Java String. An outgoing C char** pointer, if similarly
representing an array of read-only C strings, maps to a Java String[] (array
of String objects). All other char* pointers, including those representing
mutable C strings as used in some Get methods, are mapped to byte[] and ByteBuffer.
-
+
Also, methods that accept multiple Buffer arguments require all direct
or all non-direct Buffers. Direct and non-direct buffers should never be
-mixed within an API call by an application.
+mixed within an API call by an application.
This feature is known as "auto-slicing," as it mimics the effect of calling
-slice() on the Buffer object without the overhead of explicit object creation.
+slice() on the Buffer object without the overhead of explicit object creation.
In the interest of efficiency, the Java API does not generally throw exceptions.
However, running an application with the DebugGL composable pipeline, which
-is part of the API, will force an exception to be thrown at the point of failure.
-
+is part of the API, will force an exception to be thrown at the point of failure.
Many errors are defined by OpenGL merely to set the error code, rather
than throwing an exception. For example, passing a bad enumerated parameter
value may result in the error flag being set to GL.GL_INVALID_VALUE. Attempting
to check for such errors in the binding layer would require either replicating
the error-checking logic of the underlying engine, or querying the error state
after every function. This would greatly impact performance by inhibiting
-the ability of the hardware to pipeline work.
+the ability of the hardware to pipeline work.
An implementation should take care to validate arguments correctly before
invoking native methods that could potentially access memory illegally. In
particular, methods that validate the contents of an array (such as a list
of GL attributes) or a Buffer should take precautions against exploits in
which a separate thread attempts to alter the contents of the argument during
the time interval following validation but preceding passage of the argument
-to the underlying native engine.
+to the underlying native engine.
OpenGL functions and OpenGL extensions have been included in the Java bindings +according the following rules:
GL3/gl3.h
.GL/glcorearb.h
.GL_ARB_compatibility
, is chosen because:
Bindings for OpenGL extensions not covered in this specification may be
supplied by individual vendors or groups. Such bindings may be considered
-for inclusion in a future version of the JSR. In order to avoid fragmentation,
+for inclusion in a future version of this specification. In order to avoid fragmentation,
vendors creating extension bindings should expose new extensions using the
method GL.getExtension. This method 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.
-
+the public API of the core package.
Names for added extension methods and extension-defined constants and Java
-bindings for C parameters should follow the guidelines set forth in this specfication.
+bindings for C parameters should follow the guidelines set forth in this specification.
+ Therefore, any usage of these APIs is both platform and implementation specific.
- -The JOGL reference implementation require at least OpenGL version 1.1, +due to it's dynamical function binding starting with OpenGL 1.2.
+In future revisions of the API, this minimum standard may be raised.
+ ++JOGL provides {@link com.jogamp.opengl.JoglVersion} implementing {@link com.jogamp.common.util.JogampVersion}, +which provides users access to the specification and implementation version, +the build date and source code repository branch name and it's latest commit identifier. +
+ +http://www.jcp.org/en/jsr/detail?id=231-
-http://www.opengl.org/registry/doc/glspec41.core.20100725.withchanges.pdf-
-http://www.opengl.org/registry/doc/glspec41.compatibility.20100725.withchanges.pdf- -
-http://www.opengl.org/registry/doc/glspec30.20080923.pdf- -
-http://www.opengl.org/registry/doc/glspec21.20061201.pdf- -
http://www.opengl.org/registry/- - - -
-http://www.khronos.org/registry/gles/specs/2.0/es_full_spec_2.0.24.pdf- -
-http://www.khronos.org/registry/gles/specs/1.1/es_full_spec_1.1.12.pdf- -
-http://www.khronos.org/registry/gles/- -
http://www.opengl.org/documentation/specs/glu/glu1_3.pdf- -
http://www.opengl.org/about/arb/index.html- -
ClassJavadoc GL3ES3 * Interface containing the common subset of core GL3 (OpenGL 3.1+) and GLES3 (OpenGL ES 3.0).
ClassJavadoc GL3ES3 * This interface reflects only the programmable shader functionality of desktop and embedded OpenGL
-ClassJavadoc GL3ES3 * This interface is almost GLES3 complete, but lacks the GL_ARB_ES3_compatibility
extension.
+ClassJavadoc GL3ES3 * This interface is almost GLES3 complete, lacking GL_ARB_ES3_compatibility
extension.
ClassJavadoc GL3ES3 *
ClassJavadoc GL4ES3 * Interface containing the common subset of core GL4 (OpenGL 4.0+) and GLES3 (OpenGL ES 3.0).
ClassJavadoc GL4ES3 * This interface reflects only the programmable shader functionality of desktop and embedded OpenGL
-ClassJavadoc GL4ES3 * This interface is GLES3 complete.
+ClassJavadoc GL4ES3 * This interface is GLES3 complete w/o vendor extensions.
ClassJavadoc GL4ES3 *
-ClassJavadoc GL2GL3 * Interface containing the common subset of core GL3 (OpenGL 3.1) and GL2 (OpenGL 3.0),
+ClassJavadoc GL2GL3 * Interface containing the common subset of core GL3 (OpenGL 3.1+) and GL2,
ClassJavadoc GL2GL3 * also known as the OpenGL 3.0 forward compatible, non deprecated subset.
ClassJavadoc GL2GL3 * This interface reflects only the programmable shader functionality of desktop OpenGL
ClassJavadoc GL2GL3 *
-ClassJavadoc GL2 * This interface contains all core desktop OpenGL methods through
-ClassJavadoc GL2 * version 3.0, inclusive, as well as most of it's extensions defined at the
-ClassJavadoc GL2 * time of this specification. Early OpenGL extensions whose functionality
-ClassJavadoc GL2 * was incorporated into core OpenGL by version 3.0, inclusive, are specifically
-ClassJavadoc GL2 * excluded.
-ClassJavadoc GL2 * Note: OpenGL 3.0 is the last subsumed version in the specification.
-ClassJavadoc GL2 * You need to use a {@link GL3} or {@link GL3bc} OpenGL 3.1+ context to benefit
-ClassJavadoc GL2 * from new functionality and versions.
+ClassJavadoc GL2 * This interface contains all OpenGL [ 1.0 .. 3.0 ] methods,
+ClassJavadoc GL2 * as well as most of it's extensions defined at the time of this specification.
+ClassJavadoc GL2 *
+ClassJavadoc GL2 * OpenGL extensions whose functionality was incorporated into core OpenGL ≤ 3.0, +ClassJavadoc GL2 * are subsumed into the core namespace.
ClassJavadoc GL2 * ClassJavadoc GL2 */ ClassJavadoc GL3 /** -ClassJavadoc GL3 *
-ClassJavadoc GL3 * This interface contains the core, forward compatible, OpenGL methods of GL 3.x, with x >=1,
-ClassJavadoc GL3 * as well as most of it's extensions defined at the time of this specification.
-ClassJavadoc GL3 * Note: OpenGL 3.0 forward compatible, non deprecated functionality is included in the
-ClassJavadoc GL3 * 3.1 specification, hence the {@link GL2GL3} implemented interface.
-ClassJavadoc GL3 * Note: OpenGL 3.1 forward compatible, core profile abandoned fixed point functionality.
-ClassJavadoc GL3 *
This interface contains all OpenGL [ 3.1 .. 3.3 ] core methods, +ClassJavadoc GL3 * as well as most of it's extensions defined at the time of this specification.
+ClassJavadoc GL3 *Note: OpenGL [ 3.1 .. 3.3 ] core profile does not includes fixed point functionality.
ClassJavadoc GL3 */ ClassJavadoc GL3bc /** -ClassJavadoc GL3bc *
-ClassJavadoc GL3bc * This interface containing all core and compatibility OpenGL methods of GL 3.x, with x >= 1,
-ClassJavadoc GL3bc * as well as most of it's extensions defined at the time of this specification.
-ClassJavadoc GL3bc *
This interface contains all OpenGL [ 3.1 .. 3.3 ] compatibility methods, +ClassJavadoc GL3bc * as well as most of it's extensions defined at the time of this specification.
+ClassJavadoc GL3bc *Note: OpenGL [ 3.1 .. 3.3 ] compatibility profile does includes fixed point functionality.
ClassJavadoc GL3bc */ ClassJavadoc GL4 /** -ClassJavadoc GL4 *
-ClassJavadoc GL4 * This interface containing all core OpenGL methods of GL 4.x, with x >= 0,
-ClassJavadoc GL4 * as well as most of it's extensions defined at the time of this specification.
-ClassJavadoc GL4 *
This interface contains all OpenGL [ 4.0 .. 4.3 ] core methods, +ClassJavadoc GL4 * as well as most of it's extensions defined at the time of this specification.
+ClassJavadoc GL4 *Note: OpenGL [ 4.0 .. 4.3 ] core profile does not includes fixed point functionality.
ClassJavadoc GL4 */ ClassJavadoc GL4bc /** -ClassJavadoc GL4bc *
-ClassJavadoc GL4bc * This interface containing all core and compatibility OpenGL methods of GL 4.x, with x >= 0,
-ClassJavadoc GL4bc * as well as most of it's extensions defined at the time of this specification.
-ClassJavadoc GL4bc *
This interface contains all OpenGL [ 4.0 .. 4.3 ] compatibility profile, +ClassJavadoc GL4bc * as well as most of it's extensions defined at the time of this specification.
+ClassJavadoc GL4bc *Note: OpenGL [ 4.0 .. 4.3 ] compatibility profile does includes fixed point functionality.
ClassJavadoc GL4bc */ ClassJavadoc GLES1 /** -ClassJavadoc GLES1 *-ClassJavadoc GLES1 * This interface contains all core embedded OpenGL methods of ES 1.x, with x >= 0, -ClassJavadoc GLES1 * as well as most of it's extensions defined at the time of this specification. -ClassJavadoc GLES1 *
+ClassJavadoc GLES1 *This interface contains all OpenGL ES [ 1.0 .. 1.1 ] methods, +ClassJavadoc GLES1 * as well as most of it's extensions defined at the time of this specification.
ClassJavadoc GLES1 */ ClassJavadoc GLES2 /** -ClassJavadoc GLES2 *-ClassJavadoc GLES2 * This interface contains all core embedded OpenGL methods of ES 2.x, with x >= 0, -ClassJavadoc GLES2 * inclusive, as well as most of it's extensions defined at the time of this specification. -ClassJavadoc GLES2 *
+ClassJavadoc GLES2 *This interface contains all OpenGL ES 2.0 methods, +ClassJavadoc GLES2 * as well as most of it's extensions defined at the time of this specification.
ClassJavadoc GLES2 */ ClassJavadoc GLES3 /** -ClassJavadoc GLES3 *-ClassJavadoc GLES3 * This interface contains all core embedded OpenGL methods of ES 3.x, with x >= 0, -ClassJavadoc GLES3 * inclusive, as well as most of it's extensions defined at the time of this specification. -ClassJavadoc GLES3 *
+ClassJavadoc GLES3 *This interface contains all OpenGL ES 3.0 methods, +ClassJavadoc GLES3 * as well as most of it's extensions defined at the time of this specification.
ClassJavadoc GLES3 */ # Javadoc for the EGL class diff --git a/make/doc/jogl/spec-overview.html b/make/doc/jogl/spec-overview.html index 637b39a2e..07ac75462 100644 --- a/make/doc/jogl/spec-overview.html +++ b/make/doc/jogl/spec-overview.html @@ -74,7 +74,7 @@ bindings to the native OpenGL(R) 3D graphics library profiles:This interface contains all core OpenGL [ 3.1 .. 3.3 ] methods, +
This interface contains all OpenGL [ 3.1 .. 3.3 ] core methods, as well as most of it's extensions defined at the time of this specification.
Note: OpenGL [ 3.1 .. 3.3 ] core profile does not includes fixed point functionality.
@@ -83,40 +83,40 @@ bindings to the native OpenGL(R) 3D graphics library profiles:This interface contains the OpenGL [ 3.1 .. 3.3 ] compatibility profile, +
This interface contains all OpenGL [ 3.1 .. 3.3 ] compatibility methods, as well as most of it's extensions defined at the time of this specification.
Note: OpenGL [ 3.1 .. 3.3 ] compatibility profile does includes fixed point functionality.
Future extensions will be added with a maintenance update
This interface contains all core OpenGL [ 4.0 .. 4.3 ] methods, +
This interface contains all OpenGL [ 4.0 .. 4.3 ] core methods, as well as most of it's extensions defined at the time of this specification.
Note: OpenGL [ 4.0 .. 4.3 ] core profile does not includes fixed point functionality.
Future extensions will be added with a maintenance update
This interface contains the OpenGL [ 4.0 .. 4.3 ] compatibility profile, +
This interface contains all OpenGL [ 4.0 .. 4.3 ] compatibility profile, as well as most of it's extensions defined at the time of this specification.
Note: OpenGL [ 4.0 .. 4.3 ] compatibility profile does includes fixed point functionality.
Future extensions will be added with a maintenance update
This interface contains all core embedded OpenGL methods of ES [ 1.0 .. 1.1 ], +
This interface contains all OpenGL ES [ 1.0 .. 1.1 ] methods, as well as most of it's extensions defined at the time of this specification.
Future extensions will be added with a maintenance update
This interface contains all core embedded OpenGL methods of ES 2.0, +
This interface contains all OpenGL ES 2.0 methods, as well as most of it's extensions defined at the time of this specification.
Future extensions will be added with a maintenance update
This interface contains all core embedded OpenGL methods of ES 3.0, +
This interface contains all OpenGL ES 3.0 methods, as well as most of it's extensions defined at the time of this specification.
Future extensions will be added with a maintenance update
This interface reflects the fixed functionality of OpenGL, without the immediate mode API.
Interface containing the common subset of GL2 and GLES2.
+Interface containing the common subset of GL2 and GLES2. Interface is almost GLES2 complete.
This interface reflects the programmable shader functionality of desktop and embedded OpenGL up until GLES2.
Interface containing the common subset of core GL3 and GLES3. Interface is almost GLES3 complete, lacking GL_ARB_ES3_compatibility
extension.
This interface reflects the programmable shader functionality of desktop and embedded OpenGL up until GLES3.
Interface containing the common subset of core GL4, core GL3, and GLES3.
+Interface containing the common subset of core GL4 and GLES3. Interface is GLES3 complete w/o vendor extensions.
This interface reflects the programmable shader functionality of desktop and embedded OpenGL up until GLES3.
- JOGL provides full access to the APIs in the OpenGL 1.3 - 3.0, 3.1 - 3.3, ≥ 4.0, ES 1.x and ES 2.x specification
+ JOGL provides full access to the APIs in the OpenGL [ 1.0 .. 4.3 ], ES 1.x, ES 2.0 and ES 3.0 specification
as well as nearly all vendor extensions.
OpenGL Evolution & JOGL
(UML) gives you a brief overview of OpenGL,
--
cgit v1.2.3
From b5c42d4c04b2f750f1f64f4dfeaa91f3e66476fd Mon Sep 17 00:00:00 2001
From: Sven Gothel
- See Inclusion Criteria explaining the OpenGL profile separation.
- See OpenGL Runtime Requirements.
+
Inclusion Criteria explains the OpenGL profile separation.
+See OpenGL Runtime Requirements.
An implementation is available as JOGL, a JogAmp module.
@@ -49,9 +49,9 @@ bindings to the native OpenGL(R) 3D graphics library profiles:JOGL reflects these profiles with an OO abstraction model, + specifying interfaces encapsulating common subsets.
+See {@link javax.media.opengl.GLSharedContextSetter GLSharedContextSetter} interface +for details. +
+User needs to configure the interleaved segments via {@link #addFixedSubArray(int, int, int)}.
+ * + * @param comps The total number of all interleaved components. + * @param dataType The array index GL data type + * @param normalized Whether the data shall be normalized + * @param initialElementCount + * @param vboUsage {@link GL2ES2#GL_STREAM_DRAW}, {@link GL#GL_STATIC_DRAW} or {@link GL#GL_DYNAMIC_DRAW} + */ + public static GLArrayDataServer createFixedInterleaved(int comps, int dataType, boolean normalized, int stride, Buffer buffer, + int vboUsage) + throws GLException + { + GLArrayDataServer ads = new GLArrayDataServer(); + GLArrayHandler glArrayHandler = new GLArrayHandlerInterleaved(ads); + ads.init(GLPointerFuncUtil.mgl_InterleaveArray, -1, comps, dataType, normalized, stride, buffer, buffer.limit(), false, glArrayHandler, + 0, 0, vboUsage, GL.GL_ARRAY_BUFFER, false); + return ads; + } + /** * Configure a segment of this fixed function interleaved array (see {@link #createFixedInterleaved(int, int, boolean, int, int)}). *@@ -286,6 +308,29 @@ public class GLArrayDataServer extends GLArrayDataClient implements GLArrayDataE return ads; } + /** + * Create a VBO for GLSL interleaved array data + * starting with a given Buffer object incl it's stride + *
User needs to configure the interleaved segments via {@link #addGLSLSubArray(int, int, int)}.
+ * + * @param comps The total number of all interleaved components. + * @param dataType The array index GL data type + * @param normalized Whether the data shall be normalized + * @param stride + * @param buffer the user define data + * @param vboUsage {@link GL2ES2#GL_STREAM_DRAW}, {@link GL#GL_STATIC_DRAW} or {@link GL#GL_DYNAMIC_DRAW} + */ + public static GLArrayDataServer createGLSLInterleaved(int comps, int dataType, boolean normalized, int stride, Buffer buffer, + int vboUsage) + throws GLException + { + GLArrayDataServer ads = new GLArrayDataServer(); + GLArrayHandler glArrayHandler = new GLSLArrayHandlerInterleaved(ads); + ads.init(GLPointerFuncUtil.mgl_InterleaveArray, -1, comps, dataType, normalized, stride, buffer, buffer.limit(), false, glArrayHandler, + 0, 0, vboUsage, GL.GL_ARRAY_BUFFER, true); + return ads; + } + /** * Configure a segment of this GLSL interleaved array (see {@link #createGLSLInterleaved(int, int, boolean, int, int)}). *diff --git a/src/jogl/classes/javax/media/opengl/GLDrawableFactory.java b/src/jogl/classes/javax/media/opengl/GLDrawableFactory.java index 817dff8ad..98eb9bdde 100644 --- a/src/jogl/classes/javax/media/opengl/GLDrawableFactory.java +++ b/src/jogl/classes/javax/media/opengl/GLDrawableFactory.java @@ -675,8 +675,8 @@ public abstract class GLDrawableFactory { * The GLPbuffer drawable is realized and initialized eagerly. *
* - * See the note in the overview documentation on - * context sharing. + * See the note in the overview documentation in {@link GLSharedContextSetter} and on + * context sharing. * * @param device which {@link javax.media.nativewindow.AbstractGraphicsDevice#getConnection() connection} denotes the shared the target device, may benull
for the platform's default device.
* @param capabilities the requested capabilities
diff --git a/src/jogl/classes/javax/media/opengl/GLSharedContextSetter.java b/src/jogl/classes/javax/media/opengl/GLSharedContextSetter.java
index d5a10931e..8c2311329 100644
--- a/src/jogl/classes/javax/media/opengl/GLSharedContextSetter.java
+++ b/src/jogl/classes/javax/media/opengl/GLSharedContextSetter.java
@@ -31,7 +31,29 @@ package javax.media.opengl;
/**
* Adds capabilities to set a shared {@link GLContext} directly or via an {@link GLAutoDrawable}.
* - * Warning: Don't reference this interface directly, since it may end up in {@link GLAutoDrawable} + * Sharing of server-side OpenGL objects such as buffer objects, e.g. VBOs, + * and textures among OpenGL contexts is supported with this interface. + *
+ *+ * A master {@link GLContext} is the {@link GLContext} which is created first, + * shared {@link GLContext} w/ this master are referred as slave {@link GLContext}. + *
+ *
+ * Be aware that the master {@link GLContext} and related resources, i.e. the {@link GLAutoDrawable},
+ * shall not be destroyed before it's slave {@link GLContext} instances.
+ * Otherwise the OpenGL driver implementation may crash w/ SIGSEGV if shared resources are still used!
+ * Note that this is not specified within OpenGL and should work, however, some drivers
+ * do not seem to handle this situation well, i.e. they do not postpone resource destruction
+ * until the last reference is removed.
+ * Since pending destruction of {@link GLContext} and it's {@link GLDrawable} is complex and nearly impossible
+ * for us at the top level, considering the different windowing systems and {@link GLAutoDrawable} types,
+ * the user shall take care of proper destruction order.
+ *
+ * Users may use a {@link GLDrawableFactory#createDummyDrawable(javax.media.nativewindow.AbstractGraphicsDevice, boolean, GLProfile) dummy} + * {@link GLDrawable} and it's {@link GLContext} as the master of all shared slave {@link GLContext}. + * Same constraints as above apply, i.e. it shall be destroyed after all shared slaves. *
*/ public interface GLSharedContextSetter extends GLAutoDrawable { @@ -46,6 +68,9 @@ public interface GLSharedContextSetter extends GLAutoDrawable { * A set sharedContext will block context creation, i.e. {@link GLAutoDrawable#initialization GLAutoDrawable initialization}, * as long it is not {@link GLContext#isCreated() created natively}. * + *+ * See driver stability constraints. + *
* * @param sharedContext The OpenGL context to be shared by this {@link GLAutoDrawable}'s {@link GLContext}. * @throws IllegalStateException if a {@link #setSharedContext(GLContext) shared GLContext} @@ -67,6 +92,9 @@ public interface GLSharedContextSetter extends GLAutoDrawable { * as long it's {@link GLContext} isnull
* or has not been {@link GLContext#isCreated() created natively}.
*
+ * + * See driver stability constraints. + *
* * @param sharedContext The GLAutoDrawable, which OpenGL context shall be shared by this {@link GLAutoDrawable}'s {@link GLContext}. * @throws IllegalStateException if a {@link #setSharedContext(GLContext) shared GLContext} diff --git a/src/jogl/classes/javax/media/opengl/awt/GLCanvas.java b/src/jogl/classes/javax/media/opengl/awt/GLCanvas.java index c2d8e0535..439a5bd30 100644 --- a/src/jogl/classes/javax/media/opengl/awt/GLCanvas.java +++ b/src/jogl/classes/javax/media/opengl/awt/GLCanvas.java @@ -246,7 +246,7 @@ public class GLCanvas extends Canvas implements AWTGLAutoDrawable, WindowClosing textures, display lists and other OpenGL state, and may be null if sharing is not desired. See the note in the overview documentation on context + href="../../../spec-overview.html#SHARING">context sharing. The passed GraphicsDevice indicates the screen on which to create the GLCanvas; the GLDrawableFactory uses the default screen device of the local GraphicsEnvironment if null diff --git a/src/jogl/classes/javax/media/opengl/awt/GLJPanel.java b/src/jogl/classes/javax/media/opengl/awt/GLJPanel.java index faf00c19a..8b1467268 100644 --- a/src/jogl/classes/javax/media/opengl/awt/GLJPanel.java +++ b/src/jogl/classes/javax/media/opengl/awt/GLJPanel.java @@ -286,14 +286,7 @@ public class GLJPanel extends JPanel implements AWTGLAutoDrawable, WindowClosing default set of capabilities is used. The GLCapabilitiesChooser specifies the algorithm for selecting one of the available GLCapabilities for the component; a DefaultGLCapabilitesChooser - is used if null is passed for this argument. The passed - GLContext specifies an OpenGL context with which to share - textures, display lists and other OpenGL state, and may be null - if sharing is not desired. See the note in the overview documentation on - context sharing. -- Note: Sharing cannot be enabled using J2D OpenGL FBO sharing, - since J2D GL Context must be shared and we can only share one context. + is used if null is passed for this argument. * @throws GLException if no GLCapabilities are given and no default profile is available for the default desktop device. */ public GLJPanel(GLCapabilitiesImmutable userCapsRequest, GLCapabilitiesChooser chooser) @@ -311,7 +304,7 @@ public class GLJPanel extends JPanel implements AWTGLAutoDrawable, WindowClosing GLContext specifies an OpenGL context with which to share textures, display lists and other OpenGL state, and may be null if sharing is not desired. See the note in the overview documentation on - context sharing. + context sharing.
Note: Sharing cannot be enabled using J2D OpenGL FBO sharing,
since J2D GL Context must be shared and we can only share one context.
diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES1NEWT.java b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES1NEWT.java
index 05d060f0b..59bb13c87 100644
--- a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES1NEWT.java
+++ b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES1NEWT.java
@@ -104,7 +104,7 @@ public class TestSharedContextVBOES1NEWT extends UITestCase {
// init and render one frame, which will setup the Gears display lists
sharedDrawable.display();
final GLContext ctxM = sharedDrawable.getContext();
- Assert.assertTrue("Master ctx not created", AWTRobotUtil.waitForCreated(ctxM, true));
+ Assert.assertTrue("Master ctx not created", AWTRobotUtil.waitForContextCreated(sharedDrawable, true));
Assert.assertTrue("Master Ctx is shared before shared creation", !ctxM.isShared());
Assert.assertTrue("Master Gears is shared", !sharedGears.usesSharedGears());
}
@@ -136,7 +136,7 @@ public class TestSharedContextVBOES1NEWT extends UITestCase {
glWindow.setVisible(true);
Assert.assertTrue(AWTRobotUtil.waitForRealized(glWindow, true));
Assert.assertTrue(AWTRobotUtil.waitForVisible(glWindow, true));
- Assert.assertTrue(AWTRobotUtil.waitForCreated(glWindow.getContext(), true));
+ Assert.assertTrue(AWTRobotUtil.waitForContextCreated(glWindow, true));
System.err.println("Master Context: ");
MiscUtils.dumpSharedGLContext(sharedDrawable.getContext());
diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2AWT3.java b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2AWT3.java
index b2d88f8e0..5cf2e4b24 100644
--- a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2AWT3.java
+++ b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2AWT3.java
@@ -93,7 +93,17 @@ public class TestSharedContextVBOES2AWT3 extends UITestCase {
}
@Test
- public void test01SyncedCommonAnimatorSharedOffscreen() throws InterruptedException, InvocationTargetException {
+ public void test01SyncedOneAnimatorCleanDtorOrder() throws InterruptedException, InvocationTargetException {
+ syncedOneAnimator(true);
+ }
+
+ // Don't test erroneous test case !
+ // @Test
+ public void test02SyncedOneAnimatorDirtyDtorOrder() throws InterruptedException, InvocationTargetException {
+ syncedOneAnimator(false);
+ }
+
+ public void syncedOneAnimator(final boolean destroyCleanOrder) throws InterruptedException, InvocationTargetException {
final Frame f1 = new Frame();
final Animator animator = new Animator();
final GearsES2 g1 = new GearsES2(0);
@@ -128,17 +138,17 @@ public class TestSharedContextVBOES2AWT3 extends UITestCase {
Assert.assertTrue(AWTRobotUtil.waitForRealized(c1, true));
Assert.assertTrue(AWTRobotUtil.waitForVisible(c1, true));
- Assert.assertTrue(AWTRobotUtil.waitForCreated(c1.getContext(), true));
+ Assert.assertTrue(AWTRobotUtil.waitForContextCreated(c1, true));
Assert.assertTrue("Gears1 not initialized", g1.waitForInit(true));
Assert.assertTrue(AWTRobotUtil.waitForRealized(c2, true));
Assert.assertTrue(AWTRobotUtil.waitForVisible(c2, true));
- Assert.assertTrue(AWTRobotUtil.waitForCreated(c2.getContext(), true));
+ Assert.assertTrue(AWTRobotUtil.waitForContextCreated(c2, true));
Assert.assertTrue("Gears2 not initialized", g2.waitForInit(true));
Assert.assertTrue(AWTRobotUtil.waitForRealized(c3, true));
Assert.assertTrue(AWTRobotUtil.waitForVisible(c3, true));
- Assert.assertTrue(AWTRobotUtil.waitForCreated(c3.getContext(), true));
+ Assert.assertTrue(AWTRobotUtil.waitForContextCreated(c3, true));
Assert.assertTrue("Gears3 not initialized", g3.waitForInit(true));
final GLContext ctx1 = c1.getContext();
@@ -174,12 +184,45 @@ public class TestSharedContextVBOES2AWT3 extends UITestCase {
}
animator.stop();
+ if( destroyCleanOrder ) {
+ System.err.println("XXX Destroy in clean order NOW");
+ } else {
+ System.err.println("XXX Destroy in creation order NOW - Driver Impl. Ma trigger driver Bug i.e. not postponing GL ctx destruction after releasing all refs.");
+ }
+ javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
+ public void run() {
+ try {
+ if( destroyCleanOrder ) {
+ f3.dispose();
+ } else {
+ f1.dispose();
+ }
+ } catch (Throwable t) {
+ throw new RuntimeException(t);
+ }
+ }});
+
+ javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
+ public void run() {
+ try {
+ if( destroyCleanOrder ) {
+ f2.dispose();
+ } else {
+ f2.dispose();
+ }
+ } catch (Throwable t) {
+ throw new RuntimeException(t);
+ }
+ }});
+
javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
try {
- f1.dispose();
- f2.dispose();
- f3.dispose();
+ if( destroyCleanOrder ) {
+ f1.dispose();
+ } else {
+ f3.dispose();
+ }
} catch (Throwable t) {
throw new RuntimeException(t);
}
@@ -191,7 +234,17 @@ public class TestSharedContextVBOES2AWT3 extends UITestCase {
}
@Test
- public void test02AsyncEachWithAnimatorSharedOffscreen() throws InterruptedException, InvocationTargetException {
+ public void test11SyncEachAnimatorCleanDtorOrder() throws InterruptedException, InvocationTargetException {
+ syncedOneAnimator(true);
+ }
+
+ // Don't test erroneous test case !
+ // @Test
+ public void test12SyncEachAnimatorDirtyDtorOrder() throws InterruptedException, InvocationTargetException {
+ asyncEachOneAnimator(false);
+ }
+
+ public void asyncEachOneAnimator(final boolean destroyCleanOrder) throws InterruptedException, InvocationTargetException {
final Frame f1 = new Frame();
final Animator a1 = new Animator();
final GearsES2 g1 = new GearsES2(0);
@@ -237,17 +290,17 @@ public class TestSharedContextVBOES2AWT3 extends UITestCase {
Assert.assertTrue(AWTRobotUtil.waitForRealized(c1, true));
Assert.assertTrue(AWTRobotUtil.waitForVisible(c1, true));
- Assert.assertTrue(AWTRobotUtil.waitForCreated(c1.getContext(), true));
+ Assert.assertTrue(AWTRobotUtil.waitForContextCreated(c1, true));
Assert.assertTrue("Gears1 not initialized", g1.waitForInit(true));
Assert.assertTrue(AWTRobotUtil.waitForRealized(c2, true));
Assert.assertTrue(AWTRobotUtil.waitForVisible(c2, true));
- Assert.assertTrue(AWTRobotUtil.waitForCreated(c2.getContext(), true));
+ Assert.assertTrue(AWTRobotUtil.waitForContextCreated(c2, true));
Assert.assertTrue("Gears2 not initialized", g2.waitForInit(true));
Assert.assertTrue(AWTRobotUtil.waitForRealized(c3, true));
Assert.assertTrue(AWTRobotUtil.waitForVisible(c3, true));
- Assert.assertTrue(AWTRobotUtil.waitForCreated(c3.getContext(), true));
+ Assert.assertTrue(AWTRobotUtil.waitForContextCreated(c3, true));
Assert.assertTrue("Gears3 not initialized", g3.waitForInit(true));
final GLContext ctx1 = c1.getContext();
@@ -285,12 +338,45 @@ public class TestSharedContextVBOES2AWT3 extends UITestCase {
a2.stop();
a3.stop();
+ if( destroyCleanOrder ) {
+ System.err.println("XXX Destroy in clean order NOW");
+ } else {
+ System.err.println("XXX Destroy in creation order NOW - Driver Impl. Ma trigger driver Bug i.e. not postponing GL ctx destruction after releasing all refs.");
+ }
+ javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
+ public void run() {
+ try {
+ if( destroyCleanOrder ) {
+ f3.dispose();
+ } else {
+ f1.dispose();
+ }
+ } catch (Throwable t) {
+ throw new RuntimeException(t);
+ }
+ }});
+
+ javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
+ public void run() {
+ try {
+ if( destroyCleanOrder ) {
+ f2.dispose();
+ } else {
+ f2.dispose();
+ }
+ } catch (Throwable t) {
+ throw new RuntimeException(t);
+ }
+ }});
+
javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
try {
- f1.dispose();
- f2.dispose();
- f3.dispose();
+ if( destroyCleanOrder ) {
+ f1.dispose();
+ } else {
+ f3.dispose();
+ }
} catch (Throwable t) {
throw new RuntimeException(t);
}
diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2AWT3b.java b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2AWT3b.java
index fcfe4d512..07b9fd4eb 100644
--- a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2AWT3b.java
+++ b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2AWT3b.java
@@ -93,7 +93,7 @@ public class TestSharedContextVBOES2AWT3b extends UITestCase {
}
@Test
- public void test01SyncedCommonAnimatorSharedOffscreen() throws InterruptedException, InvocationTargetException {
+ public void test01SyncedOneAnimator() throws InterruptedException, InvocationTargetException {
final Frame f1 = new Frame();
final Animator animator = new Animator();
final GearsES2 g1 = new GearsES2(0);
@@ -128,17 +128,17 @@ public class TestSharedContextVBOES2AWT3b extends UITestCase {
Assert.assertTrue(AWTRobotUtil.waitForRealized(c1, true));
Assert.assertTrue(AWTRobotUtil.waitForVisible(c1, true));
- Assert.assertTrue(AWTRobotUtil.waitForCreated(c1.getContext(), true));
+ Assert.assertTrue(AWTRobotUtil.waitForContextCreated(c1, true));
Assert.assertTrue("Gears1 not initialized", g1.waitForInit(true));
Assert.assertTrue(AWTRobotUtil.waitForRealized(c2, true));
Assert.assertTrue(AWTRobotUtil.waitForVisible(c2, true));
- Assert.assertTrue(AWTRobotUtil.waitForCreated(c2.getContext(), true));
+ Assert.assertTrue(AWTRobotUtil.waitForContextCreated(c2, true));
Assert.assertTrue("Gears2 not initialized", g2.waitForInit(true));
Assert.assertTrue(AWTRobotUtil.waitForRealized(c3, true));
Assert.assertTrue(AWTRobotUtil.waitForVisible(c3, true));
- Assert.assertTrue(AWTRobotUtil.waitForCreated(c3.getContext(), true));
+ Assert.assertTrue(AWTRobotUtil.waitForContextCreated(c3, true));
Assert.assertTrue("Gears3 not initialized", g3.waitForInit(true));
final GLContext ctx1 = c1.getContext();
@@ -177,9 +177,9 @@ public class TestSharedContextVBOES2AWT3b extends UITestCase {
javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
try {
- f1.dispose();
- f2.dispose();
f3.dispose();
+ f2.dispose();
+ f1.dispose();
} catch (Throwable t) {
throw new RuntimeException(t);
}
@@ -191,7 +191,7 @@ public class TestSharedContextVBOES2AWT3b extends UITestCase {
}
@Test
- public void test02AsyncEachWithAnimatorSharedOffscreen() throws InterruptedException, InvocationTargetException {
+ public void test02AsyncEachAnimator() throws InterruptedException, InvocationTargetException {
final Frame f1 = new Frame();
final Animator a1 = new Animator();
final GearsES2 g1 = new GearsES2(0);
@@ -237,17 +237,17 @@ public class TestSharedContextVBOES2AWT3b extends UITestCase {
Assert.assertTrue(AWTRobotUtil.waitForRealized(c1, true));
Assert.assertTrue(AWTRobotUtil.waitForVisible(c1, true));
- Assert.assertTrue(AWTRobotUtil.waitForCreated(c1.getContext(), true));
+ Assert.assertTrue(AWTRobotUtil.waitForContextCreated(c1, true));
Assert.assertTrue("Gears1 not initialized", g1.waitForInit(true));
Assert.assertTrue(AWTRobotUtil.waitForRealized(c2, true));
Assert.assertTrue(AWTRobotUtil.waitForVisible(c2, true));
- Assert.assertTrue(AWTRobotUtil.waitForCreated(c2.getContext(), true));
+ Assert.assertTrue(AWTRobotUtil.waitForContextCreated(c2, true));
Assert.assertTrue("Gears2 not initialized", g2.waitForInit(true));
Assert.assertTrue(AWTRobotUtil.waitForRealized(c3, true));
Assert.assertTrue(AWTRobotUtil.waitForVisible(c3, true));
- Assert.assertTrue(AWTRobotUtil.waitForCreated(c3.getContext(), true));
+ Assert.assertTrue(AWTRobotUtil.waitForContextCreated(c3, true));
Assert.assertTrue("Gears3 not initialized", g3.waitForInit(true));
final GLContext ctx1 = c1.getContext();
@@ -288,9 +288,9 @@ public class TestSharedContextVBOES2AWT3b extends UITestCase {
javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
try {
- f1.dispose();
- f2.dispose();
f3.dispose();
+ f2.dispose();
+ f1.dispose();
} catch (Throwable t) {
throw new RuntimeException(t);
}
diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2NEWT0.java b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2NEWT0.java
index 76ae5c69d..a8c069f36 100644
--- a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2NEWT0.java
+++ b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestSharedContextVBOES2NEWT0.java
@@ -93,7 +93,7 @@ public class TestSharedContextVBOES2NEWT0 extends UITestCase {
Assert.assertTrue(AWTRobotUtil.waitForRealized(glWindow, true));
Assert.assertTrue(AWTRobotUtil.waitForVisible(glWindow, true));
glWindow.display();
- Assert.assertTrue(AWTRobotUtil.waitForCreated(glWindow.getContext(), true));
+ Assert.assertTrue(AWTRobotUtil.waitForContextCreated(glWindow, true));
Assert.assertTrue("Gears not initialized", gears.waitForInit(true));
return glWindow;
@@ -183,7 +183,7 @@ public class TestSharedContextVBOES2NEWT0 extends UITestCase {
f1.destroy();
Assert.assertTrue(AWTRobotUtil.waitForVisible(f1, false));
Assert.assertTrue(AWTRobotUtil.waitForRealized(f1, false));
- Assert.assertTrue(AWTRobotUtil.waitForCreated(f1.getContext(), false));
+ Assert.assertTrue(AWTRobotUtil.waitForContextCreated(f1, false));
{
final List