aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Bien <[email protected]>2009-08-08 21:43:30 +0200
committerMichael Bien <[email protected]>2009-08-08 21:43:30 +0200
commit8ef9d7364a942c19ec5e1f306e08193e83f4fea6 (patch)
tree6dcf95825d2933992199a7062b15e38d3f721c95
parent2a8e9876ca4567de3b08813c280d006f9b2c32e6 (diff)
parentfb3e50b4e7e11df911a83ab7966cf8f293c20da2 (diff)
Merge branch 'master' of ssh://[email protected]/jogl~jogl-git
-rwxr-xr-xCHANGELOG.txt4
-rwxr-xr-xREADME.txt23
-rw-r--r--doc/HowToBuild.html15
-rw-r--r--doc/TODO.txt11
-rw-r--r--doc/bouml/html/classdiagrams.html22
-rw-r--r--doc/bouml/html/classes.html41
-rw-r--r--doc/bouml/html/classes_list.html44
-rw-r--r--doc/bouml/html/fig128069.pngbin0 -> 67934 bytes
-rw-r--r--doc/bouml/html/fig128069.svg350
-rw-r--r--doc/bouml/html/index-withframe.html19
-rw-r--r--doc/bouml/html/index.html211
-rw-r--r--doc/bouml/html/index_65.html23
-rw-r--r--doc/bouml/html/index_67.html24
-rw-r--r--doc/bouml/html/index_71.html39
-rw-r--r--doc/bouml/html/index_74.html24
-rw-r--r--doc/bouml/html/index_78.html23
-rw-r--r--doc/bouml/html/index_79.html23
-rw-r--r--doc/bouml/html/index_82.html23
-rw-r--r--doc/bouml/html/navig.html17
-rw-r--r--doc/bouml/html/packages.html22
-rw-r--r--doc/bouml/html/style.css30
-rw-r--r--doc/bouml/jogl/128069.diagram224
-rw-r--r--doc/bouml/jogl/69.session11
-rw-r--r--doc/bouml/jogl/cpp_includes13
-rw-r--r--doc/bouml/jogl/generation_settings309
-rw-r--r--doc/bouml/jogl/idl_includes1
-rw-r--r--doc/bouml/jogl/java_imports1
-rw-r--r--doc/bouml/jogl/jogl.prj582
-rw-r--r--doc/bouml/jogl/python_imports1
-rw-r--r--doc/bouml/jogl/stereotypes58
-rw-r--r--doc/bouml/jogl/tools32
-rw-r--r--doc/userguide/index.html15
-rw-r--r--doxygen/doxygen-all-pub.cfg2
-rwxr-xr-xetc/profile.jogl14
-rw-r--r--make/build-jogl.xml175
-rw-r--r--make/build-nativewindow.xml70
-rw-r--r--make/build-newt.xml132
-rw-r--r--make/config/jogl/cgl-macosx.cfg4
-rwxr-xr-xmake/config/jogl/cglext.cfg4
-rw-r--r--make/config/jogl/egl-common.cfg46
-rwxr-xr-xmake/config/jogl/egl.cfg22
-rwxr-xr-xmake/config/jogl/eglext.cfg84
-rw-r--r--make/config/jogl/gl-common-extensions.cfg10
-rw-r--r--make/config/jogl/gl-common-gl2.cfg8
-rw-r--r--make/config/jogl/gl-common.cfg384
-rwxr-xr-xmake/config/jogl/gl-desktop.cfg3
-rwxr-xr-xmake/config/jogl/gl-es1.cfg12
-rwxr-xr-xmake/config/jogl/gl-es2.cfg6
-rw-r--r--make/config/jogl/gl-gl2.cfg21
-rw-r--r--make/config/jogl/gl-gl2es12.cfg8
-rw-r--r--make/config/jogl/gl-gl3-set.cfg14
-rw-r--r--make/config/jogl/gl-gl3.cfg23
-rwxr-xr-xmake/config/jogl/gl-headers.cfg4
-rw-r--r--make/config/jogl/gl-if-CustomJavaCode-gl.java67
-rw-r--r--make/config/jogl/gl-if-CustomJavaCode-gl2.java19
-rw-r--r--make/config/jogl/gl-if-CustomJavaCode-gl3.java8
-rw-r--r--make/config/jogl/gl-if-gl-ignores.cfg18
-rwxr-xr-xmake/config/jogl/gl-if-gl.cfg2
-rwxr-xr-xmake/config/jogl/gl-if-gl2_es1.cfg10
-rwxr-xr-xmake/config/jogl/gl-if-gl2_es2.cfg4
-rw-r--r--make/config/jogl/gl-if-gl2_gl3.cfg51
-rw-r--r--make/config/jogl/gl-impl-CustomJavaCode-gl2.java13
-rw-r--r--make/config/jogl/gl-impl-CustomJavaCode-gl2es12.java20
-rw-r--r--make/config/jogl/gl-impl-CustomJavaCode-gl3.java12
-rwxr-xr-xmake/config/jogl/gl-impl-CustomJavaCode-gles1.java22
-rwxr-xr-xmake/config/jogl/gl-impl-CustomJavaCode-gles2.java22
-rw-r--r--make/config/jogl/gl3-common.cfg24
-rwxr-xr-xmake/config/jogl/gl3-desktop.cfg1
-rwxr-xr-xmake/config/jogl/gl3-headers.cfg4
-rwxr-xr-xmake/config/jogl/glu-CustomJavaCode-base.java43
-rw-r--r--make/config/jogl/glu-common.cfg2
-rw-r--r--make/config/jogl/glx-x11.cfg5
-rwxr-xr-xmake/config/jogl/glxext.cfg7
-rw-r--r--make/config/jogl/wgl-win32.cfg7
-rw-r--r--make/config/jogl/wglext.cfg7
-rw-r--r--make/doc/jogl/spec-overview.html147
-rw-r--r--make/lsGL23_commons.sh18
-rw-r--r--make/lsGL23_unique.sh18
-rw-r--r--make/lsGL23toGL2ES1_commons.sh18
-rw-r--r--make/lsGL2toGL3_commons.sh16
-rw-r--r--make/make.jogl.all.linux-x86.sh12
-rw-r--r--make/make.jogl.all.linux-x86_64.sh13
-rw-r--r--make/make.jogl.all.win32.bat2
-rw-r--r--make/make.jogl.cdcfp.linux-x86.sh1
-rwxr-xr-xmake/stub_includes/egl/EGL/egl.h7
-rwxr-xr-xmake/stub_includes/egl/EGL/eglext.h58
-rw-r--r--make/stub_includes/opengl/GL/glext.h560
-rw-r--r--make/stub_includes/opengl/GL/glu.h19
-rw-r--r--make/stub_includes/opengl/GL/glx.h10
-rw-r--r--make/stub_includes/opengl/GL/glxext.h18
-rw-r--r--make/stub_includes/opengl/GL/wglext.h7
-rwxr-xr-xmake/stub_includes/opengl/GL3/gl3.h1136
-rw-r--r--make/stub_includes/opengl/GL3/gl3ext.h348
-rwxr-xr-xmake/stub_includes/opengl/GLES/gl.h10
-rwxr-xr-xmake/stub_includes/opengl/GLES/glext.h2
-rwxr-xr-xmake/stub_includes/opengl/GLES2/gl2.h8
-rwxr-xr-xmake/stub_includes/opengl/GLES2/gl2ext.h11
-rw-r--r--make/stub_includes/opengl/gl2es12.c5
-rw-r--r--make/stub_includes/opengl/gl3-64bit-types.h41
-rw-r--r--make/stub_includes/opengl/gl3.c4
-rw-r--r--make/stub_includes/opengl/glu-impl.c3
-rw-r--r--make/stub_includes/win32/wingdi.h9
-rw-r--r--src/jogl/classes/com/sun/opengl/impl/ExtensionAvailabilityCache.java175
-rw-r--r--src/jogl/classes/com/sun/opengl/impl/GLContextImpl.java46
-rw-r--r--src/jogl/classes/com/sun/opengl/impl/GLDrawableFactoryImpl.java2
-rw-r--r--src/jogl/classes/com/sun/opengl/impl/GLDrawableImpl.java15
-rw-r--r--src/jogl/classes/com/sun/opengl/impl/GLPbufferImpl.java4
-rwxr-xr-xsrc/jogl/classes/com/sun/opengl/impl/egl/EGLContext.java19
-rwxr-xr-xsrc/jogl/classes/com/sun/opengl/impl/egl/EGLDrawable.java38
-rwxr-xr-xsrc/jogl/classes/com/sun/opengl/impl/egl/EGLDrawableFactory.java2
-rwxr-xr-xsrc/jogl/classes/com/sun/opengl/impl/egl/EGLDynamicLookupHelper.java9
-rw-r--r--src/jogl/classes/com/sun/opengl/impl/egl/EGLGraphicsConfiguration.java20
-rw-r--r--src/jogl/classes/com/sun/opengl/impl/egl/EGLOnscreenDrawable.java2
-rw-r--r--src/jogl/classes/com/sun/opengl/impl/egl/EGLPbufferDrawable.java1
-rw-r--r--src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXCGLContext.java5
-rw-r--r--src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXOnscreenCGLContext.java2
-rw-r--r--src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXOnscreenCGLDrawable.java2
-rw-r--r--src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXPbufferCGLContext.java15
-rw-r--r--src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXPbufferCGLDrawable.java4
-rw-r--r--src/jogl/classes/com/sun/opengl/impl/macosx/cgl/awt/MacOSXJava2DCGLContext.java4
-rwxr-xr-xsrc/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsExternalWGLContext.java7
-rwxr-xr-xsrc/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsExternalWGLDrawable.java4
-rw-r--r--src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsOffscreenWGLDrawable.java2
-rw-r--r--src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsPbufferWGLDrawable.java14
-rw-r--r--src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsWGLContext.java121
-rw-r--r--src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsWGLDrawable.java63
-rw-r--r--src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsWGLGraphicsConfiguration.java149
-rw-r--r--src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsWGLGraphicsConfigurationFactory.java123
-rw-r--r--src/jogl/classes/com/sun/opengl/impl/x11/glx/X11GLXContext.java114
-rw-r--r--src/jogl/classes/com/sun/opengl/impl/x11/glx/X11GLXDrawable.java31
-rw-r--r--src/jogl/classes/com/sun/opengl/impl/x11/glx/X11GLXGraphicsConfiguration.java2
-rw-r--r--src/jogl/classes/com/sun/opengl/impl/x11/glx/X11GLXGraphicsConfigurationFactory.java46
-rw-r--r--src/jogl/classes/com/sun/opengl/impl/x11/glx/X11OffscreenGLXDrawable.java2
-rw-r--r--src/jogl/classes/com/sun/opengl/impl/x11/glx/X11PbufferGLXDrawable.java2
-rw-r--r--src/jogl/classes/com/sun/opengl/util/GLArrayDataClient.java10
-rw-r--r--src/jogl/classes/com/sun/opengl/util/GLArrayDataServer.java10
-rw-r--r--src/jogl/classes/com/sun/opengl/util/glsl/ShaderCode.java98
-rw-r--r--src/jogl/classes/com/sun/opengl/util/glsl/ShaderState.java14
-rw-r--r--src/jogl/classes/com/sun/opengl/util/glsl/ShaderUtil.java78
-rw-r--r--src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/FixedFuncUtil.java15
-rw-r--r--src/jogl/classes/javax/media/opengl/GLAutoDrawable.java5
-rw-r--r--src/jogl/classes/javax/media/opengl/GLBase.java163
-rw-r--r--src/jogl/classes/javax/media/opengl/GLContext.java4
-rw-r--r--src/jogl/classes/javax/media/opengl/GLDrawableFactory.java16
-rw-r--r--src/jogl/classes/javax/media/opengl/GLPipelineFactory.java194
-rw-r--r--src/jogl/classes/javax/media/opengl/GLProfile.java22
-rw-r--r--src/jogl/classes/javax/media/opengl/GLUniformData.java12
-rw-r--r--src/jogl/classes/javax/media/opengl/awt/GLCanvas.java4
-rw-r--r--src/jogl/classes/javax/media/opengl/awt/GLJPanel.java34
-rw-r--r--src/nativewindow/classes/com/sun/nativewindow/impl/NativeWindowFactoryImpl.java2
-rw-r--r--src/nativewindow/classes/com/sun/nativewindow/impl/NullWindow.java6
-rw-r--r--src/nativewindow/classes/com/sun/nativewindow/impl/jawt/JAWTWindow.java6
-rw-r--r--src/nativewindow/classes/javax/media/nativewindow/GraphicsConfigurationFactory.java2
-rw-r--r--src/nativewindow/classes/javax/media/nativewindow/NativeWindow.java18
-rwxr-xr-xsrc/newt/classes/com/sun/javafx/newt/Display.java2
-rwxr-xr-xsrc/newt/classes/com/sun/javafx/newt/NewtFactory.java2
-rwxr-xr-xsrc/newt/classes/com/sun/javafx/newt/Screen.java2
-rwxr-xr-xsrc/newt/classes/com/sun/javafx/newt/Window.java8
-rw-r--r--src/newt/classes/com/sun/javafx/newt/impl/NativeLibLoader.java3
-rw-r--r--src/newt/classes/com/sun/javafx/newt/opengl/GLWindow.java17
-rw-r--r--src/newt/classes/com/sun/javafx/newt/opengl/broadcom/BCEGLDisplay.java82
-rwxr-xr-xsrc/newt/classes/com/sun/javafx/newt/opengl/broadcom/BCEGLScreen.java64
-rwxr-xr-xsrc/newt/classes/com/sun/javafx/newt/opengl/broadcom/BCEGLWindow.java154
-rwxr-xr-xsrc/newt/classes/com/sun/javafx/newt/opengl/kd/KDWindow.java8
-rwxr-xr-xsrc/newt/classes/com/sun/javafx/newt/windows/WindowsWindow.java39
-rwxr-xr-xsrc/newt/classes/com/sun/javafx/newt/x11/X11Window.java6
-rwxr-xr-xsrc/newt/native/BroadcomEGL.c195
-rwxr-xr-xsrc/newt/native/KDWindow.c46
-rw-r--r--www/index.html453
169 files changed, 6858 insertions, 2131 deletions
diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 1455bec55..c976f68db 100755
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -1,3 +1,7 @@
+Changes between JOGL 1.1.1 and today:
+
+ - Please refere to the repository log file
+
Changes between JOGL 1.1.0 and 1.1.1:
- Fixed a bug in the checking of incoming buffers' sizes to
diff --git a/README.txt b/README.txt
index af17d6c20..924f6e438 100755
--- a/README.txt
+++ b/README.txt
@@ -1,16 +1,20 @@
Organization of the JOGL source tree
------------------------------------
-doc/ Build and user documentation
-make/ Ant build scripts
- Configuration files for glue code generation
- Header files for glue code generation
- See top of build.xml for brief invocation instructions
-src/ Java and native source code for JOGL
- (Currently also contains source code for GlueGen tool; in
- process of being split into its own project)
+doc/ Build and user documentation
+make/ Ant build scripts,
+ see top of build.xml for brief invocation instructions
+make/config Configuration files for glue code generation
+make/stub_includes Header files for glue code generation
+src/ Java and native source code for:
+src/jogl - JOGL
+src/nativewindow - NativeWindow Interface
+src/newt - NEWT
+
www/ Web pages and older Java Web Start binaries for JOGL
+NativeWindow and NEWT may be build seperately.
+
Acknowledgments
---------------
@@ -55,6 +59,9 @@ team to enable interoperability between Sun's OpenGL pipeline for
Java2D and JOGL in Java SE 6, and also co-authored the TextureIO
subsystem.
+Sven Gothel refactored the windowing subsystem layer to be generic,
+introduced the support for multiple GL profiles, realized NEWT and more..
+
The following individuals made significant contributions to various
areas of the project:
diff --git a/doc/HowToBuild.html b/doc/HowToBuild.html
index 8fab8bdbf..f0b381d74 100644
--- a/doc/HowToBuild.html
+++ b/doc/HowToBuild.html
@@ -58,12 +58,17 @@ build system, but are not officially supported.
<P>
Here are the steps that are required in order to build the JOGL OpenGL
binding from a fresh copy of the source distribution, which can be
-obtained either from <a
-href="https://jogl.dev.java.net/source/browse/jogl/">CVS</a> or a <a
-href="https://jogl.dev.java.net/servlets/ProjectDocumentList">release
-build</a>.
+obtained either from
+<a href="http://kenai.com/projects/jogl/sources/">GIT</a> or an
+<a href="http://download.java.net/media/jogl/builds/archive/">archived build</a>.
+</P>
+<P>
+JOGL depends on our GlueGen project, which can be optained either from
+<a href="http://kenai.com/projects/gluegen/sources/">GIT</a> or an
+<a href="http://download.java.net/media/gluegen/builds/archive/">archived build</a>.
</P>
+
<OL>
<LI> <B>Install the JDK:</B> <br> the JOGL build requires JDK 1.4.2 or later. On AMD64 platforms such as Linux/AMD64, Solaris/AMD64 and Windows/AMD64, the build requires the Sun JDK 5.0 or later, as the 1.4.2 releases did not have an AMD64-specific JVM. On these platforms, it is also currently necessary to have e.g. <code>bin/amd64/java</code> in your PATH, although from a technical standpoint this could be worked around in the build process.
<LI> <B>Install Ant:</B> <br> Download and unpack the latest version of Ant from <a href="http://ant.apache.org/">http://ant.apache.org</a> and add the <code>bin/</code> subdirectory to your PATH environment variable.
@@ -93,7 +98,7 @@ build</a>.
<LI> <B>Add JOGL and the GlueGen runtime to your CLASSPATH:</B> <br> To be able to use JOGL once built, you must add the build process' resulting jogl.jar (.../jogl/build/jogl.jar) and gluegen-rt.jar (.../gluegen/build/gluegen-rt.jar) to your CLASSPATH environment variable.
<LI> <B>Add JOGL and the GlueGen runtime to your PATH, LD_LIBRARY_PATH, or DYLD_LIBRARY_PATH:</B> <br> To be able to use JOGL once built, you must also add the build process's JNI code library directories (.../jogl/build/obj and .../gluegen/build/obj) to your PATH (on Windows), LD_LIBRARY_PATH (on most Unix platforms), or DYLD_LIBRARY_PATH (on Mac OS X) environment variable.
- <LI> <B>Test if everything's working:</B> <br> To test if everything went well, you should check out the source code for the <B>jogl-demos</B> project (available at <a href = "http://jogl-demos.dev.java.net/">http://jogl-demos.dev.java.net/</a>), build the demos using the supplied instructions, and run the Gears demo ("java demos.gears.Gears").
+ <LI> <B>Test if everything's working:</B> <br> To test if everything went well, you should check out the source code for the <B>jogl-demos</B> project (available at <a href = "http://download.java.net/media/jogl/demos/www/">http://download.java.net/media/jogl/demos/www/</a>), build the demos using the supplied instructions, and run the Gears demo ("java demos.gears.Gears").
<LI> <B>Build Javadoc:</B> <br> "ant javadoc" will produce the end-user documentation for JOGL along with some auxiliary utility packages. The developers' documentation, including that for the GlueGen tool, can be generated for your current platform using one of the following commands: "ant javadoc.dev.win32", "ant javadoc.dev.x11", or "ant javadoc.dev.macosx". (The javadoc for the Cg binding can be built by inserting <code>-Djogl.cg=1</code> into the command line as above.)
</OL>
diff --git a/doc/TODO.txt b/doc/TODO.txt
index 1fbb12616..8aa9e96ed 100644
--- a/doc/TODO.txt
+++ b/doc/TODO.txt
@@ -4,17 +4,6 @@ Random, somewhat old to-do list:
- Non-const array types must be properly released with JNI_COMMIT in
order to see side effects if the array was copied.
-- Figure out how to implement GLEventListener.displayChanged(bool,bool).
- I believe we need additional support in J2SE before this will be possible
- to detect and implement. The basic problem is that we need to find a way
- to determine when a GLCanvas has moved to a different
- display device, so we can re-load the GL function addresses using
- wgl/glXGetProcAddress. See comments at top of GLCanvas.java. Also need a
- way to determine with the display mode (e.g., bit depth) of the GLDrawable
- has changed. Once both of these problems are solved, we'll need to hook it
- into GLEventListener.displayChanged() and also be sure to reset the
- GLDrawable's glProcAddress table as appropriate.
-
- Think about e.g. protected access for Impl classes
- Fix glProgramStringARB and glGetProgramString{NV,ARB} so that they
diff --git a/doc/bouml/html/classdiagrams.html b/doc/bouml/html/classdiagrams.html
new file mode 100644
index 000000000..0763bd4c6
--- /dev/null
+++ b/doc/bouml/html/classdiagrams.html
@@ -0,0 +1,22 @@
+<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<title>Class Diagram Index</title>
+<link rel="stylesheet" href="style.css" type="text/css" />
+</head>
+
+<body bgcolor="#ffffff">
+
+<div class = "title">Class Diagram Index</div>
+<p></p>
+
+<!-- ============================================================= -->
+
+<table>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram128069" target = "projectFrame"><b>OpenGL Interfaces</b></a></td><td></td><td></td></tr>
+</table>
+</body>
+</html>
diff --git a/doc/bouml/html/classes.html b/doc/bouml/html/classes.html
new file mode 100644
index 000000000..79ae63a87
--- /dev/null
+++ b/doc/bouml/html/classes.html
@@ -0,0 +1,41 @@
+<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<title>Classes Index</title>
+<link rel="stylesheet" href="style.css" type="text/css" />
+</head>
+
+<body bgcolor="#ffffff">
+
+<div class = "title">Classes Index</div>
+<p></p>
+
+<!-- ============================================================= -->
+
+<table>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass131013" target = "projectFrame"><b>AbstractGraphicsConfiguration</b></a></td><td></td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass131269" target = "projectFrame"><b>Capabilities</b></a></td><td></td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass128069" target = "projectFrame"><b>GL</b></a></td><td>interface</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass128453" target = "projectFrame"><b>GL2</b></a></td><td>interface</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass128197" target = "projectFrame"><b>GL2ES1</b></a></td><td>interface</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass128581" target = "projectFrame"><b>GL2ES2</b></a></td><td>interface</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass128709" target = "projectFrame"><b>GL2GL3</b></a></td><td>interface</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass130373" target = "projectFrame"><b>GL2Impl</b></a></td><td>entity</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass128837" target = "projectFrame"><b>GL3</b></a></td><td>interface</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass130501" target = "projectFrame"><b>GL3Impl</b></a></td><td>entity</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass132549" target = "projectFrame"><b>GLBase</b></a></td><td>interface</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass131141" target = "projectFrame"><b>GLCapabilities</b></a></td><td></td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass130117" target = "projectFrame"><b>GLContext</b></a></td><td></td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass130245" target = "projectFrame"><b>GLDrawable</b></a></td><td></td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass128325" target = "projectFrame"><b>GLES1</b></a></td><td>interface</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass130757" target = "projectFrame"><b>GLES1Impl</b></a></td><td>entity</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass128965" target = "projectFrame"><b>GLES2</b></a></td><td>interface</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass130629" target = "projectFrame"><b>GLES2Impl</b></a></td><td>entity</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass131397" target = "projectFrame"><b>GLProfile</b></a></td><td></td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass130885" target = "projectFrame"><b>NativeWindow</b></a></td><td>interface</td><td></td></tr>
+</table>
+</body>
+</html>
diff --git a/doc/bouml/html/classes_list.html b/doc/bouml/html/classes_list.html
new file mode 100644
index 000000000..f59dad7f6
--- /dev/null
+++ b/doc/bouml/html/classes_list.html
@@ -0,0 +1,44 @@
+<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<title>Classes</title>
+<link rel="stylesheet" href="style.css" type="text/css" />
+</head>
+
+<body bgcolor="#ffffff">
+
+<div class = "title">Classes</div>
+<p></p>
+
+<!-- ============================================================= -->
+
+<table border="0" width="100%">
+<tr>
+<td nowrap><a href="index.html#refclass131013" target = "projectFrame"><b>AbstractGraphicsConfiguration</b></a><br />
+<a href="index.html#refclass131269" target = "projectFrame"><b>Capabilities</b></a><br />
+<a href="index.html#refclass128069" target = "projectFrame"><b>GL</b></a><br />
+<a href="index.html#refclass128453" target = "projectFrame"><b>GL2</b></a><br />
+<a href="index.html#refclass128197" target = "projectFrame"><b>GL2ES1</b></a><br />
+<a href="index.html#refclass128581" target = "projectFrame"><b>GL2ES2</b></a><br />
+<a href="index.html#refclass128709" target = "projectFrame"><b>GL2GL3</b></a><br />
+<a href="index.html#refclass130373" target = "projectFrame"><b>GL2Impl</b></a><br />
+<a href="index.html#refclass128837" target = "projectFrame"><b>GL3</b></a><br />
+<a href="index.html#refclass130501" target = "projectFrame"><b>GL3Impl</b></a><br />
+<a href="index.html#refclass132549" target = "projectFrame"><b>GLBase</b></a><br />
+<a href="index.html#refclass131141" target = "projectFrame"><b>GLCapabilities</b></a><br />
+<a href="index.html#refclass130117" target = "projectFrame"><b>GLContext</b></a><br />
+<a href="index.html#refclass130245" target = "projectFrame"><b>GLDrawable</b></a><br />
+<a href="index.html#refclass128325" target = "projectFrame"><b>GLES1</b></a><br />
+<a href="index.html#refclass130757" target = "projectFrame"><b>GLES1Impl</b></a><br />
+<a href="index.html#refclass128965" target = "projectFrame"><b>GLES2</b></a><br />
+<a href="index.html#refclass130629" target = "projectFrame"><b>GLES2Impl</b></a><br />
+<a href="index.html#refclass131397" target = "projectFrame"><b>GLProfile</b></a><br />
+<a href="index.html#refclass130885" target = "projectFrame"><b>NativeWindow</b></a><br />
+</td>
+</tr>
+</table>
+</body>
+</html>
diff --git a/doc/bouml/html/fig128069.png b/doc/bouml/html/fig128069.png
new file mode 100644
index 000000000..4958dbab3
--- /dev/null
+++ b/doc/bouml/html/fig128069.png
Binary files differ
diff --git a/doc/bouml/html/fig128069.svg b/doc/bouml/html/fig128069.svg
new file mode 100644
index 000000000..7d2f2a558
--- /dev/null
+++ b/doc/bouml/html/fig128069.svg
@@ -0,0 +1,350 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Bouml (http://bouml.free.fr/) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="1003" height="814" version="1.1" xmlns="http://www.w3.org/2000/svg">
+<g>
+ <rect fill="#ededed" stroke="black" stroke-width="1" stroke-opacity="1" x="5" y="193" width="234" height="609" />
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" text-anchor="middle" x="52" y="210">Fixed Function</text>
+ <line stroke="black" stroke-opacity="1" x1="5" y1="217" x2="98" y2="217" />
+ <line stroke="black" stroke-opacity="1" x1="98" y1="217" x2="110" y2="205" />
+ <line stroke="black" stroke-opacity="1" x1="110" y1="205" x2="110" y2="193" />
+</g>
+<g>
+ <line stroke="black" stroke-dasharray="20,4" stroke-opacity="1" x1="5" y1="392" x2="239" y2="392" />
+</g>
+<g>
+ <line stroke="black" stroke-dasharray="20,4" stroke-opacity="1" x1="5" y1="569" x2="239" y2="569" />
+</g>
+<g>
+ <line stroke="black" stroke-dasharray="20,4" stroke-opacity="1" x1="5" y1="304" x2="239" y2="304" />
+</g>
+<g>
+ <rect fill="#c0ffff" stroke="black" stroke-width="1" stroke-opacity="1" x="238" y="193" width="447" height="609" />
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" text-anchor="middle" x="306" y="210">Programmable Shader</text>
+ <line stroke="black" stroke-opacity="1" x1="238" y1="217" x2="374" y2="217" />
+ <line stroke="black" stroke-opacity="1" x1="374" y1="217" x2="386" y2="205" />
+ <line stroke="black" stroke-opacity="1" x1="386" y1="205" x2="386" y2="193" />
+</g>
+<g>
+ <line stroke="black" stroke-dasharray="20,4" stroke-opacity="1" x1="238" y1="392" x2="685" y2="392" />
+</g>
+<g>
+ <line stroke="black" stroke-dasharray="20,4" stroke-opacity="1" x1="238" y1="569" x2="685" y2="569" />
+</g>
+<g>
+ <line stroke="black" stroke-dasharray="20,4" stroke-opacity="1" x1="238" y1="304" x2="685" y2="304" />
+</g>
+<g>
+ <line stroke="black" stroke-opacity="1" x1="115" y1="225" x2="154" y2="178" />
+ <line stroke="black" stroke-opacity="1" x1="158" y1="174" x2="149" y2="174" />
+ <line stroke="black" stroke-opacity="1" x1="158" y1="174" x2="158" y2="182" />
+ <line stroke="black" stroke-opacity="1" x1="149" y1="174" x2="158" y2="182" />
+</g>
+<g>
+ <line stroke="black" stroke-opacity="1" x1="285" y1="225" x2="231" y2="177" />
+ <line stroke="black" stroke-opacity="1" x1="227" y1="174" x2="227" y2="182" />
+ <line stroke="black" stroke-opacity="1" x1="227" y1="174" x2="235" y2="173" />
+ <line stroke="black" stroke-opacity="1" x1="227" y1="182" x2="235" y2="173" />
+</g>
+<g>
+ <line stroke="black" stroke-opacity="1" x1="88" y1="400" x2="88" y2="294" />
+ <line stroke="black" stroke-opacity="1" x1="88" y1="288" x2="82" y2="294" />
+ <line stroke="black" stroke-opacity="1" x1="88" y1="288" x2="94" y2="294" />
+ <line stroke="black" stroke-opacity="1" x1="82" y1="294" x2="94" y2="294" />
+</g>
+<g>
+ <line stroke="black" stroke-opacity="1" x1="323" y1="400" x2="323" y2="294" />
+ <line stroke="black" stroke-opacity="1" x1="323" y1="288" x2="317" y2="294" />
+ <line stroke="black" stroke-opacity="1" x1="323" y1="288" x2="329" y2="294" />
+ <line stroke="black" stroke-opacity="1" x1="317" y1="294" x2="329" y2="294" />
+</g>
+<g>
+ <line stroke="black" stroke-opacity="1" x1="476" y1="624" x2="476" y2="382" />
+ <line stroke="black" stroke-opacity="1" x1="476" y1="376" x2="470" y2="382" />
+ <line stroke="black" stroke-opacity="1" x1="476" y1="376" x2="482" y2="382" />
+ <line stroke="black" stroke-opacity="1" x1="470" y1="382" x2="482" y2="382" />
+</g>
+<g>
+ <line stroke="black" stroke-opacity="1" x1="270" y1="624" x2="447" y2="380" />
+ <line stroke="black" stroke-opacity="1" x1="451" y1="376" x2="442" y2="377" />
+ <line stroke="black" stroke-opacity="1" x1="451" y1="376" x2="452" y2="384" />
+ <line stroke="black" stroke-opacity="1" x1="442" y1="377" x2="452" y2="384" />
+</g>
+<g>
+ <line stroke="black" stroke-opacity="1" x1="429" y1="317" x2="375" y2="286" />
+ <line stroke="black" stroke-opacity="1" x1="370" y1="284" x2="372" y2="292" />
+ <line stroke="black" stroke-opacity="1" x1="370" y1="284" x2="378" y2="281" />
+ <line stroke="black" stroke-opacity="1" x1="372" y1="292" x2="378" y2="281" />
+</g>
+<g>
+ <line stroke="black" stroke-opacity="1" x1="236" y1="624" x2="103" y2="293" />
+ <line stroke="black" stroke-opacity="1" x1="101" y1="288" x2="97" y2="295" />
+ <line stroke="black" stroke-opacity="1" x1="101" y1="288" x2="108" y2="291" />
+ <line stroke="black" stroke-opacity="1" x1="97" y1="295" x2="108" y2="291" />
+</g>
+<g>
+ <line stroke="black" stroke-opacity="1" x1="679" y1="115" x2="601" y2="62" />
+</g>
+<g>
+ <line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="88" y1="499" x2="88" y2="469" />
+ <line stroke="black" stroke-opacity="1" x1="88" y1="463" x2="82" y2="469" />
+ <line stroke="black" stroke-opacity="1" x1="88" y1="463" x2="94" y2="469" />
+ <line stroke="black" stroke-opacity="1" x1="82" y1="469" x2="94" y2="469" />
+</g>
+<g>
+ <line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="323" y1="499" x2="323" y2="469" />
+ <line stroke="black" stroke-opacity="1" x1="323" y1="463" x2="317" y2="469" />
+ <line stroke="black" stroke-opacity="1" x1="323" y1="463" x2="329" y2="469" />
+ <line stroke="black" stroke-opacity="1" x1="317" y1="469" x2="329" y2="469" />
+</g>
+<g>
+ <line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="476" y1="716" x2="476" y2="693" />
+ <line stroke="black" stroke-opacity="1" x1="476" y1="687" x2="470" y2="693" />
+ <line stroke="black" stroke-opacity="1" x1="476" y1="687" x2="482" y2="693" />
+ <line stroke="black" stroke-opacity="1" x1="470" y1="693" x2="482" y2="693" />
+</g>
+<g>
+ <line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="249" y1="716" x2="249" y2="693" />
+ <line stroke="black" stroke-opacity="1" x1="249" y1="687" x2="243" y2="693" />
+ <line stroke="black" stroke-opacity="1" x1="249" y1="687" x2="255" y2="693" />
+ <line stroke="black" stroke-opacity="1" x1="243" y1="693" x2="255" y2="693" />
+</g>
+<g>
+ <line stroke="black" stroke-opacity="1" x1="817" y1="450" x2="817" y2="429" />
+ <line stroke="black" stroke-opacity="1" x1="817" y1="423" x2="811" y2="429" />
+ <line stroke="black" stroke-opacity="1" x1="817" y1="423" x2="823" y2="429" />
+ <line stroke="black" stroke-opacity="1" x1="811" y1="429" x2="823" y2="429" />
+</g>
+<g>
+ <line stroke="black" stroke-opacity="1" x1="784" y1="328" x2="784" y2="382" />
+</g>
+<g>
+ <line stroke="black" stroke-opacity="1" x1="819" y1="287" x2="819" y2="250" />
+</g>
+<g>
+ <line stroke="black" stroke-opacity="1" x1="777" y1="187" x2="737" y2="156" />
+</g>
+<g>
+ <line stroke="black" stroke-opacity="1" x1="817" y1="531" x2="817" y2="491" />
+</g>
+<g>
+ <line stroke="black" stroke-opacity="1" x1="851" y1="382" x2="851" y2="328" />
+</g>
+<g>
+ <line stroke="black" stroke-opacity="1" x1="817" y1="531" x2="817" y2="491" />
+</g>
+<g>
+ <line stroke="black" stroke-opacity="1" x1="189" y1="111" x2="189" y2="80" />
+ <line stroke="black" stroke-opacity="1" x1="189" y1="74" x2="183" y2="80" />
+ <line stroke="black" stroke-opacity="1" x1="189" y1="74" x2="195" y2="80" />
+ <line stroke="black" stroke-opacity="1" x1="183" y1="80" x2="195" y2="80" />
+</g>
+<g>
+ <line stroke="black" stroke-opacity="1" x1="237" y1="42" x2="533" y2="42" />
+</g>
+<g>
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="232" y="116" width="3" height="57" />
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="146" y="170" width="89" height="3" />
+ <rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="142" y="112" width="90" height="58" />
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" text-anchor="middle" x="187" y="124">&lt;&lt;interface&gt;&gt;</text>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="187" y="145">GL</text>
+ <line stroke="black" stroke-opacity="1" x1="142" y1="154" x2="232" y2="154" />
+ <line stroke="black" stroke-opacity="1" x1="142" y1="162" x2="232" y2="162" />
+</g>
+<g>
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="132" y="230" width="3" height="57" />
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="46" y="284" width="89" height="3" />
+ <rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="42" y="226" width="90" height="58" />
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" text-anchor="middle" x="87" y="238">&lt;&lt;interface&gt;&gt;</text>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="87" y="259">GL2ES1</text>
+ <line stroke="black" stroke-opacity="1" x1="42" y1="268" x2="132" y2="268" />
+ <line stroke="black" stroke-opacity="1" x1="42" y1="276" x2="132" y2="276" />
+</g>
+<g>
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="292" y="629" width="3" height="57" />
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="206" y="683" width="89" height="3" />
+ <rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="202" y="625" width="90" height="58" />
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" text-anchor="middle" x="247" y="637">&lt;&lt;interface&gt;&gt;</text>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="247" y="658">GL2</text>
+ <line stroke="black" stroke-opacity="1" x1="202" y1="667" x2="292" y2="667" />
+ <line stroke="black" stroke-opacity="1" x1="202" y1="675" x2="292" y2="675" />
+</g>
+<g>
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="366" y="230" width="3" height="57" />
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="280" y="284" width="89" height="3" />
+ <rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="276" y="226" width="90" height="58" />
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" text-anchor="middle" x="321" y="238">&lt;&lt;interface&gt;&gt;</text>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="321" y="259">GL2ES2</text>
+ <line stroke="black" stroke-opacity="1" x1="276" y1="268" x2="366" y2="268" />
+ <line stroke="black" stroke-opacity="1" x1="276" y1="276" x2="366" y2="276" />
+</g>
+<g>
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="519" y="629" width="3" height="57" />
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="433" y="683" width="89" height="3" />
+ <rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="429" y="625" width="90" height="58" />
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" text-anchor="middle" x="474" y="637">&lt;&lt;interface&gt;&gt;</text>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="474" y="658">GL3</text>
+ <line stroke="black" stroke-opacity="1" x1="429" y1="667" x2="519" y2="667" />
+ <line stroke="black" stroke-opacity="1" x1="429" y1="675" x2="519" y2="675" />
+</g>
+<g>
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="367" y="405" width="3" height="57" />
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="281" y="459" width="89" height="3" />
+ <rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="277" y="401" width="90" height="58" />
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" text-anchor="middle" x="322" y="413">&lt;&lt;interface&gt;&gt;</text>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="322" y="434">GLES2</text>
+ <line stroke="black" stroke-opacity="1" x1="277" y1="443" x2="367" y2="443" />
+ <line stroke="black" stroke-opacity="1" x1="277" y1="451" x2="367" y2="451" />
+</g>
+<g>
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="606" y="26" width="3" height="35" />
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="538" y="58" width="71" height="3" />
+ <rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="534" y="22" width="72" height="36" />
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" font-weight="bold" font-style="italic" text-anchor="middle" x="570" y="34">GLContext</text>
+ <line stroke="black" stroke-opacity="1" x1="534" y1="43" x2="606" y2="43" />
+ <line stroke="black" stroke-opacity="1" x1="534" y1="51" x2="606" y2="51" />
+</g>
+<g>
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="748" y="120" width="3" height="35" />
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="670" y="152" width="81" height="3" />
+ <rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="666" y="116" width="82" height="36" />
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" font-weight="bold" font-style="italic" text-anchor="middle" x="707" y="128">GLDrawable</text>
+ <line stroke="black" stroke-opacity="1" x1="666" y1="137" x2="748" y2="137" />
+ <line stroke="black" stroke-opacity="1" x1="666" y1="145" x2="748" y2="145" />
+</g>
+<g>
+ <line stroke="black" stroke-opacity="1" x1="239" y1="737" x2="259" y2="737" />
+ <ellipse fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" cx="249" cy="727" rx="10" ry="10" />
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="249" y="749">GL2Impl</text>
+ <line stroke="black" stroke-opacity="1" x1="219" y1="758" x2="279" y2="758" />
+ <line stroke="black" stroke-opacity="1" x1="219" y1="766" x2="279" y2="766" />
+</g>
+<g>
+ <line stroke="black" stroke-opacity="1" x1="467" y1="737" x2="487" y2="737" />
+ <ellipse fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" cx="477" cy="727" rx="10" ry="10" />
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="477" y="749">GL3Impl</text>
+ <line stroke="black" stroke-opacity="1" x1="447" y1="758" x2="507" y2="758" />
+ <line stroke="black" stroke-opacity="1" x1="447" y1="766" x2="507" y2="766" />
+</g>
+<g>
+ <line stroke="black" stroke-opacity="1" x1="313" y1="520" x2="333" y2="520" />
+ <ellipse fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" cx="323" cy="510" rx="10" ry="10" />
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="323" y="532">GLES2Impl</text>
+ <line stroke="black" stroke-opacity="1" x1="284" y1="541" x2="362" y2="541" />
+ <line stroke="black" stroke-opacity="1" x1="284" y1="549" x2="362" y2="549" />
+</g>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="544" y="655">Desktop final public</text>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="544" y="673">OpenGL Interfaces</text>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="544" y="440">Mobile final public</text>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="544" y="458">OpenGL Interfaces</text>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="26" y="754">Private implementation (detail)</text>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="544" y="264">Desktop/Mobile</text>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="544" y="282">Common Interfaces</text>
+<g>
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="865" y="192" width="3" height="57" />
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="773" y="246" width="95" height="3" />
+ <rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="769" y="188" width="96" height="58" />
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" text-anchor="middle" x="817" y="200">&lt;&lt;interface&gt;&gt;</text>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="817" y="221">NativeWindow</text>
+ <line stroke="black" stroke-opacity="1" x1="769" y1="230" x2="865" y2="230" />
+ <line stroke="black" stroke-opacity="1" x1="769" y1="238" x2="865" y2="238" />
+</g>
+<g>
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="917" y="292" width="3" height="35" />
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="721" y="324" width="199" height="3" />
+ <rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="717" y="288" width="200" height="36" />
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" font-weight="bold" font-style="italic" text-anchor="middle" x="817" y="300">AbstractGraphicsConfiguration</text>
+ <line stroke="black" stroke-opacity="1" x1="717" y1="309" x2="917" y2="309" />
+ <line stroke="black" stroke-opacity="1" x1="717" y1="317" x2="917" y2="317" />
+</g>
+<g>
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="864" y="455" width="3" height="35" />
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="770" y="487" width="97" height="3" />
+ <rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="766" y="451" width="98" height="36" />
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="815" y="463">GLCapabilities</text>
+ <line stroke="black" stroke-opacity="1" x1="766" y1="472" x2="864" y2="472" />
+ <line stroke="black" stroke-opacity="1" x1="766" y1="480" x2="864" y2="480" />
+</g>
+<g>
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="849" y="536" width="3" height="35" />
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="787" y="568" width="65" height="3" />
+ <rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="783" y="532" width="66" height="36" />
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="816" y="544">GLProfile</text>
+ <line stroke="black" stroke-opacity="1" x1="783" y1="553" x2="849" y2="553" />
+ <line stroke="black" stroke-opacity="1" x1="783" y1="561" x2="849" y2="561" />
+</g>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="784" y="33">Lifecycle: From the lower right to</text>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="784" y="51">the top, left step where the</text>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="784" y="69">GLContext is created with a</text>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="784" y="87">suitable GL implementation</text>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="784" y="105">matching the GLProfile.</text>
+<g>
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="233" y="16" width="3" height="57" />
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="147" y="70" width="89" height="3" />
+ <rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="143" y="12" width="90" height="58" />
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" text-anchor="middle" x="188" y="24">&lt;&lt;interface&gt;&gt;</text>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="188" y="45">GLBase</text>
+ <line stroke="black" stroke-opacity="1" x1="143" y1="54" x2="233" y2="54" />
+ <line stroke="black" stroke-opacity="1" x1="143" y1="62" x2="233" y2="62" />
+</g>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="273" y="152">Common GL Stuff</text>
+<g>
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="131" y="405" width="3" height="57" />
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="45" y="459" width="89" height="3" />
+ <rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="41" y="401" width="90" height="58" />
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" text-anchor="middle" x="86" y="413">&lt;&lt;interface&gt;&gt;</text>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="86" y="434">GLES1</text>
+ <line stroke="black" stroke-opacity="1" x1="41" y1="443" x2="131" y2="443" />
+ <line stroke="black" stroke-opacity="1" x1="41" y1="451" x2="131" y2="451" />
+</g>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="544" y="341">Common Desktop</text>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="544" y="359">Profile</text>
+<g>
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="520" y="318" width="3" height="57" />
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="434" y="372" width="89" height="3" />
+ <rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="430" y="314" width="90" height="58" />
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" text-anchor="middle" x="475" y="326">&lt;&lt;interface&gt;&gt;</text>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="475" y="347">GL2GL3</text>
+ <line stroke="black" stroke-opacity="1" x1="430" y1="356" x2="520" y2="356" />
+ <line stroke="black" stroke-opacity="1" x1="430" y1="364" x2="520" y2="364" />
+</g>
+<g>
+ <line stroke="black" stroke-opacity="1" x1="78" y1="520" x2="98" y2="520" />
+ <ellipse fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" cx="88" cy="510" rx="10" ry="10" />
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="88" y="532">GLES1Impl</text>
+ <line stroke="black" stroke-opacity="1" x1="49" y1="541" x2="127" y2="541" />
+ <line stroke="black" stroke-opacity="1" x1="49" y1="549" x2="127" y2="549" />
+</g>
+<g>
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="856" y="387" width="3" height="35" />
+ <rect fill="#808080" stroke="none" stroke-opacity="1" x="780" y="419" width="79" height="3" />
+ <rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="776" y="383" width="80" height="36" />
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="816" y="395">Capabilities</text>
+ <line stroke="black" stroke-opacity="1" x1="776" y1="404" x2="856" y2="404" />
+ <line stroke="black" stroke-opacity="1" x1="776" y1="412" x2="856" y2="412" />
+</g>
+<g>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="585" y="76">0..1</text>
+</g>
+<g>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="652" y="116">1</text>
+</g>
+<g>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="794" y="370">chosen</text>
+</g>
+<g>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="767" y="370">1</text>
+</g>
+<g>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="861" y="370">requested</text>
+</g>
+<g>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="834" y="370">1</text>
+</g>
+<g>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="516" y="60">1</text>
+</g>
+<g>
+ <text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="247" y="60">1</text>
+</g>
+</svg>
diff --git a/doc/bouml/html/index-withframe.html b/doc/bouml/html/index-withframe.html
new file mode 100644
index 000000000..0be7077fc
--- /dev/null
+++ b/doc/bouml/html/index-withframe.html
@@ -0,0 +1,19 @@
+<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<title>/net/jordan/usr/local/projects/SUN/JOGL/jogl/doc/bouml/html/index-withframe</title>
+<link rel="stylesheet" href="style.css" type="text/css" />
+</head>
+<FRAMESET cols="20%,80%">
+ <FRAME src="classes_list.html" name="classesListFrame">
+ <FRAMESET rows="150,*">
+ <FRAME src="navig.html" name="navigFrame">
+ <FRAME src="index.html" name="projectFrame">
+ </FRAMESET>
+</FRAMESET>
+<NOFRAMES>
+<H2>Frame Alert</H2><P>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.<BR>Link to <A HREF="index.html">Non-frame version.</A></NOFRAMES></body>
+</html>
diff --git a/doc/bouml/html/index.html b/doc/bouml/html/index.html
new file mode 100644
index 000000000..4d8af75e6
--- /dev/null
+++ b/doc/bouml/html/index.html
@@ -0,0 +1,211 @@
+<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<title>jogl
+Documentation</title>
+<link rel="stylesheet" href="style.css" type="text/css" />
+</head>
+
+<body bgcolor="#ffffff">
+
+<div class = "title">jogl<br />Documentation</div>
+<p></p>
+
+<!-- ============================================================= -->
+
+<a name="refpackage129"></a>
+<p>Properties:<ul>
+<li>html dir:<br /><div class="sub">/net/jordan/usr/local/projects/SUN/JOGL/jogl/doc/bouml/html/</div></p></li>
+</ul></p>
+<a name="refclass view128069"></a>
+<h1 class ="view">1 Class View javax.media.opengl</h1>
+<div class="sub">
+<a name="refclass diagram128069"></a>
+<p align="center"><img src="fig128069.png" alt="" /></p>
+ <p align="center"><b>OpenGL Interfaces</b></p><p><br /></p><p><br /></p>
+<a name="refclass128069"></a>
+<h2 class ="class">1.1 Class GL</h2>
+<p>Declaration :</p><ul>
+<li>Java : public interface GL extends <a href="index.html#refclass132549"><b>GLBase</b></a> </li><li>Php : public interface GL </li></ul><p>Directly inherited by : <a href="index.html#refclass128197"><b>GL2ES1</b></a> <a href="index.html#refclass128581"><b>GL2ES2</b></a> </p>
+<p>Stereotype: interface</p>
+<div class="sub">
+<div class="sub">
+</div>
+</div>
+<a name="refclass128197"></a>
+<h2 class ="class">1.2 Class GL2ES1</h2>
+<p>Declaration :</p><ul>
+<li>Java : public interface GL2ES1 extends <a href="index.html#refclass128069"><b>GL</b></a> </li><li>Php : public interface GL2ES1 </li></ul><p>Directly inherited by : <a href="index.html#refclass128453"><b>GL2</b></a> <a href="index.html#refclass128325"><b>GLES1</b></a> </p>
+<p>Stereotype: interface</p>
+<div class="sub">
+<div class="sub">
+</div>
+</div>
+<a name="refclass128325"></a>
+<h2 class ="class">1.3 Class GLES1</h2>
+<p>Declaration :</p><ul>
+<li>Java : public interface GLES1 extends <a href="index.html#refclass128197"><b>GL2ES1</b></a> </li><li>Php : public interface GLES1 </li></ul><p>Directly inherited by : <a href="index.html#refclass130757"><b>GLES1Impl</b></a> </p>
+<p>Stereotype: interface</p>
+<div class="sub">
+<div class="sub">
+</div>
+</div>
+<a name="refclass128453"></a>
+<h2 class ="class">1.4 Class GL2</h2>
+<p>Declaration :</p><ul>
+<li>Java : public interface GL2 extends <a href="index.html#refclass128709"><b>GL2GL3</b></a> </li><li>Php : public interface GL2 </li></ul><p>Directly inherited by : <a href="index.html#refclass130373"><b>GL2Impl</b></a> </p>
+<p>Stereotype: interface</p>
+<div class="sub">
+<div class="sub">
+</div>
+</div>
+<a name="refclass128581"></a>
+<h2 class ="class">1.5 Class GL2ES2</h2>
+<p>Declaration :</p><ul>
+<li>Java : public interface GL2ES2 extends <a href="index.html#refclass128069"><b>GL</b></a> </li><li>Php : public interface GL2ES2 </li></ul><p>Directly inherited by : <a href="index.html#refclass128709"><b>GL2GL3</b></a> <a href="index.html#refclass128965"><b>GLES2</b></a> </p>
+<p>Stereotype: interface</p>
+<div class="sub">
+<div class="sub">
+</div>
+</div>
+<a name="refclass128709"></a>
+<h2 class ="class">1.6 Class GL2GL3</h2>
+<p>Declaration :</p><ul>
+<li>Java : public interface GL2GL3 extends <a href="index.html#refclass128581"><b>GL2ES2</b></a> </li><li>Php : public interface GL2GL3 </li></ul><p>Directly inherited by : <a href="index.html#refclass128453"><b>GL2</b></a> <a href="index.html#refclass128837"><b>GL3</b></a> </p>
+<p>Stereotype: interface</p>
+<div class="sub">
+<div class="sub">
+</div>
+</div>
+<a name="refclass128837"></a>
+<h2 class ="class">1.7 Class GL3</h2>
+<p>Declaration :</p><ul>
+<li>Java : public interface GL3 extends <a href="index.html#refclass128709"><b>GL2GL3</b></a> </li><li>Php : public interface GL3 </li></ul><p>Directly inherited by : <a href="index.html#refclass130501"><b>GL3Impl</b></a> </p>
+<p>Stereotype: interface</p>
+<div class="sub">
+<div class="sub">
+</div>
+</div>
+<a name="refclass128965"></a>
+<h2 class ="class">1.8 Class GLES2</h2>
+<p>Declaration :</p><ul>
+<li>Java : public interface GLES2 extends <a href="index.html#refclass128581"><b>GL2ES2</b></a> </li><li>Php : public interface GLES2 </li></ul><p>Directly inherited by : <a href="index.html#refclass130629"><b>GLES2Impl</b></a> </p>
+<p>Stereotype: interface</p>
+<div class="sub">
+<div class="sub">
+</div>
+</div>
+<a name="refclass130117"></a>
+<h2 class ="class">1.9 Class GLContext</h2>
+<p>Declaration :</p><ul>
+<li>Java : package abstract class GLContext </li></ul><div class="sub">
+<div class="sub">
+<a name="refrelation130757"></a>
+<table><tr><td><div class="element">Relation <b>&lt;association&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : - : <a href="index.html#refclass130245"><b>GLDrawable</b></a>, multiplicity : 1</li><li>Java : private <a href="index.html#refclass130245"><b>GLDrawable</b></a> </li></ul><a name="refrelation134341"></a>
+<table><tr><td><div class="element">Relation <b>&lt;association&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : - : <a href="index.html#refclass132549"><b>GLBase</b></a>, multiplicity : 1</li><li>Java : private <a href="index.html#refclass132549"><b>GLBase</b></a> </li></ul></div>
+</div>
+<a name="refclass130245"></a>
+<h2 class ="class">1.10 Class GLDrawable</h2>
+<p>Declaration :</p><ul>
+<li>Java : package abstract class GLDrawable </li></ul><div class="sub">
+<div class="sub">
+<a name="refrelation130629"></a>
+<table><tr><td><div class="element">Relation <b>&lt;association&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : - : <a href="index.html#refclass130117"><b>GLContext</b></a>, multiplicity : 0..1</li><li>Java : private <a href="index.html#refclass130117"><b>GLContext</b></a> </li></ul><a name="refrelation132421"></a>
+<table><tr><td><div class="element">Relation <b>&lt;association&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : - : <a href="index.html#refclass130885"><b>NativeWindow</b></a></li><li>Java : private <a href="index.html#refclass130885"><b>NativeWindow</b></a> </li></ul></div>
+</div>
+<a name="refclass130373"></a>
+<h2 class ="class">1.11 Class GL2Impl</h2>
+<p>Declaration :</p><ul>
+<li>Java : private class GL2Impl implements <a href="index.html#refclass128453"><b>GL2</b></a> </li></ul><p>Stereotype: entity</p>
+<div class="sub">
+<div class="sub">
+</div>
+</div>
+<a name="refclass130501"></a>
+<h2 class ="class">1.12 Class GL3Impl</h2>
+<p>Declaration :</p><ul>
+<li>Java : private class GL3Impl implements <a href="index.html#refclass128837"><b>GL3</b></a> </li></ul><p>Stereotype: entity</p>
+<div class="sub">
+<div class="sub">
+</div>
+</div>
+<a name="refclass130629"></a>
+<h2 class ="class">1.13 Class GLES2Impl</h2>
+<p>Declaration :</p><ul>
+<li>Java : private class GLES2Impl implements <a href="index.html#refclass128965"><b>GLES2</b></a> </li></ul><p>Stereotype: entity</p>
+<div class="sub">
+<div class="sub">
+</div>
+</div>
+<a name="refclass130757"></a>
+<h2 class ="class">1.14 Class GLES1Impl</h2>
+<p>Declaration :</p><ul>
+<li>Java : private class GLES1Impl implements <a href="index.html#refclass128325"><b>GLES1</b></a> </li></ul><p>Stereotype: entity</p>
+<div class="sub">
+<div class="sub">
+</div>
+</div>
+<a name="refclass130885"></a>
+<h2 class ="class">1.15 Class NativeWindow</h2>
+<p>Declaration :</p><ul>
+<li>Java : package interface NativeWindow </li><li>Php : interface NativeWindow </li></ul><p>Stereotype: interface</p>
+<div class="sub">
+<div class="sub">
+<a name="refrelation132165"></a>
+<table><tr><td><div class="element">Relation <b>&lt;association&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : - : <a href="index.html#refclass131013"><b>AbstractGraphicsConfiguration</b></a></li><li>Java : private <a href="index.html#refclass131013"><b>AbstractGraphicsConfiguration</b></a> </li></ul><a name="refrelation132293"></a>
+<table><tr><td><div class="element">Relation <b>&lt;association&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : - : <a href="index.html#refclass130245"><b>GLDrawable</b></a></li><li>Java : private <a href="index.html#refclass130245"><b>GLDrawable</b></a> </li></ul></div>
+</div>
+<a name="refclass131013"></a>
+<h2 class ="class">1.16 Class AbstractGraphicsConfiguration</h2>
+<p>Declaration :</p><ul>
+<li>Java : package abstract class AbstractGraphicsConfiguration </li></ul><div class="sub">
+<div class="sub">
+<a name="refrelation131525"></a>
+<table><tr><td><div class="element">Relation <b>chosen (&lt;association&gt;)</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : - chosen : <a href="index.html#refclass131269"><b>Capabilities</b></a>, multiplicity : 1</li><li>Java : private <a href="index.html#refclass131269"><b>Capabilities</b></a> chosen</li></ul><a name="refrelation131909"></a>
+<table><tr><td><div class="element">Relation <b>&lt;association&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : - requested : <a href="index.html#refclass131269"><b>Capabilities</b></a>, multiplicity : 1</li><li>Java : private <a href="index.html#refclass131269"><b>Capabilities</b></a> requested</li></ul><a name="refrelation132037"></a>
+<table><tr><td><div class="element">Relation <b>&lt;association&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : - : <a href="index.html#refclass130885"><b>NativeWindow</b></a></li><li>Java : private <a href="index.html#refclass130885"><b>NativeWindow</b></a> </li></ul></div>
+</div>
+<a name="refclass131141"></a>
+<h2 class ="class">1.17 Class GLCapabilities</h2>
+<p>Declaration :</p><ul>
+<li>Java : package class GLCapabilities extends <a href="index.html#refclass131269"><b>Capabilities</b></a> </li></ul><div class="sub">
+<div class="sub">
+<a name="refrelation132677"></a>
+<table><tr><td><div class="element">Relation <b>&lt;association&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : - : <a href="index.html#refclass131397"><b>GLProfile</b></a></li><li>Java : private <a href="index.html#refclass131397"><b>GLProfile</b></a> </li></ul><a name="refrelation132933"></a>
+<table><tr><td><div class="element">Relation <b>&lt;association&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : - : <a href="index.html#refclass131397"><b>GLProfile</b></a></li><li>Java : private <a href="index.html#refclass131397"><b>GLProfile</b></a> </li></ul></div>
+</div>
+<a name="refclass131269"></a>
+<h2 class ="class">1.18 Class Capabilities</h2>
+<p>Declaration :</p><ul>
+<li>Java : package class Capabilities </li></ul><p>Directly inherited by : <a href="index.html#refclass131141"><b>GLCapabilities</b></a> </p>
+<div class="sub">
+<div class="sub">
+<a name="refrelation131653"></a>
+<table><tr><td><div class="element">Relation <b>&lt;association&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : - : <a href="index.html#refclass131013"><b>AbstractGraphicsConfiguration</b></a></li><li>Java : private <a href="index.html#refclass131013"><b>AbstractGraphicsConfiguration</b></a> </li></ul><a name="refrelation131781"></a>
+<table><tr><td><div class="element">Relation <b>&lt;association&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : - : <a href="index.html#refclass131013"><b>AbstractGraphicsConfiguration</b></a></li><li>Java : private <a href="index.html#refclass131013"><b>AbstractGraphicsConfiguration</b></a> </li></ul></div>
+</div>
+<a name="refclass131397"></a>
+<h2 class ="class">1.19 Class GLProfile</h2>
+<p>Declaration :</p><ul>
+<li>Java : package class GLProfile </li></ul><div class="sub">
+<div class="sub">
+<a name="refrelation132549"></a>
+<table><tr><td><div class="element">Relation <b>&lt;association&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : - : <a href="index.html#refclass131141"><b>GLCapabilities</b></a></li><li>Java : private <a href="index.html#refclass131141"><b>GLCapabilities</b></a> </li></ul><a name="refrelation132805"></a>
+<table><tr><td><div class="element">Relation <b>&lt;association&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : - : <a href="index.html#refclass131141"><b>GLCapabilities</b></a></li><li>Java : private <a href="index.html#refclass131141"><b>GLCapabilities</b></a> </li></ul></div>
+</div>
+<a name="refclass132549"></a>
+<h2 class ="class">1.20 Class GLBase</h2>
+<p>Declaration :</p><ul>
+<li>Java : public interface GLBase </li><li>Php : public interface GLBase </li></ul><p>Directly inherited by : <a href="index.html#refclass128069"><b>GL</b></a> </p>
+<p>Stereotype: interface</p>
+<div class="sub">
+<div class="sub">
+<a name="refrelation134213"></a>
+<table><tr><td><div class="element">Relation <b>&lt;association&gt;</b></div></td></tr></table><p>Declaration :</p><ul><li>Uml : - : <a href="index.html#refclass130117"><b>GLContext</b></a>, multiplicity : 1</li><li>Java : private <a href="index.html#refclass130117"><b>GLContext</b></a> </li></ul></div>
+</div>
+</div>
+</body>
+</html>
diff --git a/doc/bouml/html/index_65.html b/doc/bouml/html/index_65.html
new file mode 100644
index 000000000..12cff3a70
--- /dev/null
+++ b/doc/bouml/html/index_65.html
@@ -0,0 +1,23 @@
+<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<title>A</title>
+<link rel="stylesheet" href="style.css" type="text/css" />
+</head>
+
+<body bgcolor="#ffffff">
+
+<div class = "title">A</div>
+<p></p>
+
+<!-- ============================================================= -->
+
+<table>
+<tr bgcolor=#f0f0f0><td align=center><b>Name</b></td><td align=center><b>Kind</b></td><td align=center><b>Description</b></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass131013" target = "projectFrame"><b>AbstractGraphicsConfiguration</b></a></td><td>class</td><td></td></tr>
+</table>
+</body>
+</html>
diff --git a/doc/bouml/html/index_67.html b/doc/bouml/html/index_67.html
new file mode 100644
index 000000000..6c276a1e2
--- /dev/null
+++ b/doc/bouml/html/index_67.html
@@ -0,0 +1,24 @@
+<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<title>C</title>
+<link rel="stylesheet" href="style.css" type="text/css" />
+</head>
+
+<body bgcolor="#ffffff">
+
+<div class = "title">C</div>
+<p></p>
+
+<!-- ============================================================= -->
+
+<table>
+<tr bgcolor=#f0f0f0><td align=center><b>Name</b></td><td align=center><b>Kind</b></td><td align=center><b>Description</b></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass131269" target = "projectFrame"><b>Capabilities</b></a></td><td>class</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation131525" target = "projectFrame"><b>chosen</b></a></td><td>relation</td><td></td></tr>
+</table>
+</body>
+</html>
diff --git a/doc/bouml/html/index_71.html b/doc/bouml/html/index_71.html
new file mode 100644
index 000000000..dc1a0a051
--- /dev/null
+++ b/doc/bouml/html/index_71.html
@@ -0,0 +1,39 @@
+<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<title>G</title>
+<link rel="stylesheet" href="style.css" type="text/css" />
+</head>
+
+<body bgcolor="#ffffff">
+
+<div class = "title">G</div>
+<p></p>
+
+<!-- ============================================================= -->
+
+<table>
+<tr bgcolor=#f0f0f0><td align=center><b>Name</b></td><td align=center><b>Kind</b></td><td align=center><b>Description</b></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass128069" target = "projectFrame"><b>GL</b></a></td><td>class</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass128453" target = "projectFrame"><b>GL2</b></a></td><td>class</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass128197" target = "projectFrame"><b>GL2ES1</b></a></td><td>class</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass128581" target = "projectFrame"><b>GL2ES2</b></a></td><td>class</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass128709" target = "projectFrame"><b>GL2GL3</b></a></td><td>class</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass130373" target = "projectFrame"><b>GL2Impl</b></a></td><td>class</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass128837" target = "projectFrame"><b>GL3</b></a></td><td>class</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass130501" target = "projectFrame"><b>GL3Impl</b></a></td><td>class</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass132549" target = "projectFrame"><b>GLBase</b></a></td><td>class</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass131141" target = "projectFrame"><b>GLCapabilities</b></a></td><td>class</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass130117" target = "projectFrame"><b>GLContext</b></a></td><td>class</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass130245" target = "projectFrame"><b>GLDrawable</b></a></td><td>class</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass128325" target = "projectFrame"><b>GLES1</b></a></td><td>class</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass130757" target = "projectFrame"><b>GLES1Impl</b></a></td><td>class</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass128965" target = "projectFrame"><b>GLES2</b></a></td><td>class</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass130629" target = "projectFrame"><b>GLES2Impl</b></a></td><td>class</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass131397" target = "projectFrame"><b>GLProfile</b></a></td><td>class</td><td></td></tr>
+</table>
+</body>
+</html>
diff --git a/doc/bouml/html/index_74.html b/doc/bouml/html/index_74.html
new file mode 100644
index 000000000..9a970333e
--- /dev/null
+++ b/doc/bouml/html/index_74.html
@@ -0,0 +1,24 @@
+<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<title>J</title>
+<link rel="stylesheet" href="style.css" type="text/css" />
+</head>
+
+<body bgcolor="#ffffff">
+
+<div class = "title">J</div>
+<p></p>
+
+<!-- ============================================================= -->
+
+<table>
+<tr bgcolor=#f0f0f0><td align=center><b>Name</b></td><td align=center><b>Kind</b></td><td align=center><b>Description</b></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass view128069" target = "projectFrame"><b>javax.media.opengl</b></a></td><td>class view</td><td></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129" target = "projectFrame"><b>jogl</b></a></td><td>package</td><td></td></tr>
+</table>
+</body>
+</html>
diff --git a/doc/bouml/html/index_78.html b/doc/bouml/html/index_78.html
new file mode 100644
index 000000000..4165af58c
--- /dev/null
+++ b/doc/bouml/html/index_78.html
@@ -0,0 +1,23 @@
+<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<title>N</title>
+<link rel="stylesheet" href="style.css" type="text/css" />
+</head>
+
+<body bgcolor="#ffffff">
+
+<div class = "title">N</div>
+<p></p>
+
+<!-- ============================================================= -->
+
+<table>
+<tr bgcolor=#f0f0f0><td align=center><b>Name</b></td><td align=center><b>Kind</b></td><td align=center><b>Description</b></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass130885" target = "projectFrame"><b>NativeWindow</b></a></td><td>class</td><td></td></tr>
+</table>
+</body>
+</html>
diff --git a/doc/bouml/html/index_79.html b/doc/bouml/html/index_79.html
new file mode 100644
index 000000000..4eb8a76a5
--- /dev/null
+++ b/doc/bouml/html/index_79.html
@@ -0,0 +1,23 @@
+<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<title>O</title>
+<link rel="stylesheet" href="style.css" type="text/css" />
+</head>
+
+<body bgcolor="#ffffff">
+
+<div class = "title">O</div>
+<p></p>
+
+<!-- ============================================================= -->
+
+<table>
+<tr bgcolor=#f0f0f0><td align=center><b>Name</b></td><td align=center><b>Kind</b></td><td align=center><b>Description</b></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refclass diagram128069" target = "projectFrame"><b>OpenGL Interfaces</b></a></td><td>class diagram</td><td></td></tr>
+</table>
+</body>
+</html>
diff --git a/doc/bouml/html/index_82.html b/doc/bouml/html/index_82.html
new file mode 100644
index 000000000..984d8bf45
--- /dev/null
+++ b/doc/bouml/html/index_82.html
@@ -0,0 +1,23 @@
+<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<title>R</title>
+<link rel="stylesheet" href="style.css" type="text/css" />
+</head>
+
+<body bgcolor="#ffffff">
+
+<div class = "title">R</div>
+<p></p>
+
+<!-- ============================================================= -->
+
+<table>
+<tr bgcolor=#f0f0f0><td align=center><b>Name</b></td><td align=center><b>Kind</b></td><td align=center><b>Description</b></td></tr>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refrelation131909" target = "projectFrame"><b>requested</b></a></td><td>relation</td><td></td></tr>
+</table>
+</body>
+</html>
diff --git a/doc/bouml/html/navig.html b/doc/bouml/html/navig.html
new file mode 100644
index 000000000..5cbd746bd
--- /dev/null
+++ b/doc/bouml/html/navig.html
@@ -0,0 +1,17 @@
+<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<title>/net/jordan/usr/local/projects/SUN/JOGL/jogl/doc/bouml/html/navig</title>
+<link rel="stylesheet" href="style.css" type="text/css" />
+</head>
+<body bgcolor="#ffffff">
+<p><hr noshade></p>
+<p><a href="index.html" target = "projectFrame"><b> -Top- </b></a><a href="classes.html" target = "projectFrame"><b> -Classes- </b></a><a href="packages.html" target = "projectFrame"><b> -Packages- </b></a><a href="classdiagrams.html" target = "projectFrame"><b> -Class Diagrams- </b></a></p>
+<p>
+</p>
+<p><a href="index_65.html" target = "projectFrame"><b> A </b></a><a href="index_67.html" target = "projectFrame"><b> C </b></a><a href="index_71.html" target = "projectFrame"><b> G </b></a><a href="index_74.html" target = "projectFrame"><b> J </b></a><a href="index_78.html" target = "projectFrame"><b> N </b></a><a href="index_79.html" target = "projectFrame"><b> O </b></a><a href="index_82.html" target = "projectFrame"><b> R </b></a></p>
+</body>
+</html>
diff --git a/doc/bouml/html/packages.html b/doc/bouml/html/packages.html
new file mode 100644
index 000000000..50e1a6d9f
--- /dev/null
+++ b/doc/bouml/html/packages.html
@@ -0,0 +1,22 @@
+<!-- Documentation produced by the Html generator of Bouml (http://bouml.free.fr) -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<title>Packages Index</title>
+<link rel="stylesheet" href="style.css" type="text/css" />
+</head>
+
+<body bgcolor="#ffffff">
+
+<div class = "title">Packages Index</div>
+<p></p>
+
+<!-- ============================================================= -->
+
+<table>
+<tr bgcolor=#f0f0f0><td><a href="index.html#refpackage129" target = "projectFrame"><b>jogl</b></a></td><td></td><td></td></tr>
+</table>
+</body>
+</html>
diff --git a/doc/bouml/html/style.css b/doc/bouml/html/style.css
new file mode 100644
index 000000000..3a10a8149
--- /dev/null
+++ b/doc/bouml/html/style.css
@@ -0,0 +1,30 @@
+div.title { font-size: 150%; background: #87ceff; text-align: center; font-weight: bold; }
+
+div.sub { margin-left : 20px; }
+div.element { background: #d3d3d3; }
+
+h1.package { background: #ffe4c4; }
+h1.view { background: #98fb98; }
+
+h2.package { background: #ffe4c4; }
+h2.view { background: #98fb98; }
+h2.class { background: #87ceff; }
+h2.usecase { background: #87ceff; }
+h2.state { background: #87ceff; }
+h2.activity { background: #87ceff; }
+
+h3.package { background: #ffe4c4; }
+h3.view { background: #98fb98; }
+h3.class { background: #87ceff; }
+h3.usecase { background: #87ceff; }
+h3.state { background: #87ceff; }
+h3.stateregion { background: #87ceff; }
+h3.activity { background: #87ceff; }
+
+h4.package { background: #ffe4c4; }
+h4.view { background: #98fb98; }
+h4.class { background: #87ceff; }
+h4.usecase { background: #87ceff; }
+h4.state { background: #87ceff; }
+h4.stateregion { background: #87ceff; }
+h4.activity { background: #87ceff; }
diff --git a/doc/bouml/jogl/128069.diagram b/doc/bouml/jogl/128069.diagram
new file mode 100644
index 000000000..d467ebad4
--- /dev/null
+++ b/doc/bouml/jogl/128069.diagram
@@ -0,0 +1,224 @@
+format 62
+
+classcanvas 128069 class_ref 128069 // GL
+ draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_infonote default shadow default show_stereotype_properties default
+ xyz 142 112 2000
+end
+classcanvas 128197 class_ref 128197 // GL2ES1
+ draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_infonote default shadow default show_stereotype_properties default
+ xyz 42 226 2000
+end
+classcanvas 128325 class_ref 128325 // GLES1
+ draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_infonote default shadow default show_stereotype_properties default
+ xyz 41 401 2000
+end
+classcanvas 128453 class_ref 128453 // GL2
+ draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_infonote default shadow default show_stereotype_properties default
+ xyz 202 625 2000
+end
+classcanvas 128581 class_ref 128581 // GL2ES2
+ draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_infonote default shadow default show_stereotype_properties default
+ xyz 276 226 2000
+end
+classcanvas 128709 class_ref 128709 // GL2GL3
+ draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_infonote default shadow default show_stereotype_properties default
+ xyz 430 314 2005
+end
+classcanvas 128837 class_ref 128837 // GL3
+ draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_infonote default shadow default show_stereotype_properties default
+ xyz 429 625 2000
+end
+classcanvas 128965 class_ref 128965 // GLES2
+ draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_infonote default shadow default show_stereotype_properties default
+ xyz 277 401 2000
+end
+classcanvas 130245 class_ref 130117 // GLContext
+ draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_infonote default shadow default show_stereotype_properties default
+ xyz 534 22 2000
+end
+classcanvas 130501 class_ref 130245 // GLDrawable
+ draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_infonote default shadow default show_stereotype_properties default
+ xyz 666 116 2000
+end
+classcanvas 130757 class_ref 130373 // GL2Impl
+ draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_infonote default shadow default show_stereotype_properties default
+ xyz 219 717 2000
+end
+classcanvas 130885 class_ref 130501 // GL3Impl
+ draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_infonote default shadow default show_stereotype_properties default
+ xyz 447 717 2000
+end
+classcanvas 131013 class_ref 130629 // GLES2Impl
+ draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_infonote default shadow default show_stereotype_properties default
+ xyz 284 500 2000
+end
+classcanvas 131141 class_ref 130757 // GLES1Impl
+ draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_infonote default shadow default show_stereotype_properties default
+ xyz 49 500 2005
+end
+textcanvas 131781 "Desktop final public OpenGL Interfaces
+"
+ xyzwh 544 638 2000 135 37
+textcanvas 131909 "Mobile final public OpenGL Interfaces"
+ xyzwh 544 423 2000 125 38
+textcanvas 132037 "Private implementation (detail)"
+ xyzwh 26 737 2000 179 17
+textcanvas 132165 "Desktop/Mobile Common Interfaces"
+ xyzwh 544 247 2000 129 42
+classcanvas 132293 class_ref 130885 // NativeWindow
+ draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_infonote default shadow default show_stereotype_properties default
+ xyz 769 188 2000
+end
+classcanvas 132421 class_ref 131013 // AbstractGraphicsConfiguration
+ draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_infonote default shadow default show_stereotype_properties default
+ xyz 717 288 2000
+end
+classcanvas 132549 class_ref 131141 // GLCapabilities
+ draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_infonote default shadow default show_stereotype_properties default
+ xyz 766 451 2000
+end
+classcanvas 132677 class_ref 131269 // Capabilities
+ draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_infonote default shadow default show_stereotype_properties default
+ xyz 776 383 2005
+end
+classcanvas 132805 class_ref 131397 // GLProfile
+ draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_infonote default shadow default show_stereotype_properties default
+ xyz 783 532 2000
+end
+textcanvas 135749 "Lifecycle: From the lower right to the top, left step where the GLContext is created with a suitable GL implementation matching the GLProfile."
+ xyzwh 784 16 2000 208 93
+classcanvas 135877 class_ref 132549 // GLBase
+ draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_infonote default shadow default show_stereotype_properties default
+ xyz 143 12 2000
+end
+textcanvas 136261 "Common GL Stuff"
+ xyzwh 273 135 2000 108 17
+fragment 136517 "Programmable Shader"
+ color blue xyzwh 238 193 1994 448 610
+ separator 3275
+ separator 6177
+ separator 1832
+end
+fragment 136645 "Fixed Function"
+ color lightgray xyzwh 5 193 1989 235 610
+ separator 3278
+ separator 6177
+ separator 1821
+end
+textcanvas 136773 "Common Desktop Profile"
+ xyzwh 544 324 2000 115 39
+relationcanvas 129093 relation_ref 129221 // <generalisation>
+ from ref 128197 z 1999 to ref 128069
+ no_role_a no_role_b
+ no_multiplicity_a no_multiplicity_b
+end
+relationcanvas 129221 relation_ref 129349 // <generalisation>
+ from ref 128581 z 1999 to ref 128069
+ no_role_a no_role_b
+ no_multiplicity_a no_multiplicity_b
+end
+relationcanvas 129349 relation_ref 129477 // <generalisation>
+ from ref 128325 z 1999 to ref 128197
+ no_role_a no_role_b
+ no_multiplicity_a no_multiplicity_b
+end
+relationcanvas 129477 relation_ref 129605 // <generalisation>
+ from ref 128965 z 1999 to ref 128581
+ no_role_a no_role_b
+ no_multiplicity_a no_multiplicity_b
+end
+relationcanvas 129733 relation_ref 129861 // <generalisation>
+ from ref 128837 z 1999 to ref 128709
+ no_role_a no_role_b
+ no_multiplicity_a no_multiplicity_b
+end
+relationcanvas 129861 relation_ref 129989 // <generalisation>
+ from ref 128453 z 1999 to ref 128709
+ no_role_a no_role_b
+ no_multiplicity_a no_multiplicity_b
+end
+relationcanvas 129989 relation_ref 130117 // <generalisation>
+ from ref 128709 z 1999 to ref 128581
+ no_role_a no_role_b
+ no_multiplicity_a no_multiplicity_b
+end
+relationcanvas 130117 relation_ref 130245 // <generalisation>
+ from ref 128453 z 1999 to ref 128197
+ no_role_a no_role_b
+ no_multiplicity_a no_multiplicity_b
+end
+relationcanvas 130629 relation_ref 130501 // <association>
+ from ref 130501 z 1999 to ref 130245
+ no_role_a no_role_b
+ multiplicity_a_pos 585 66 3000 multiplicity_b_pos 652 106 3000
+end
+relationcanvas 131269 relation_ref 130629 // <realization>
+ from ref 131141 z 1999 to ref 128325
+ no_role_a no_role_b
+ no_multiplicity_a no_multiplicity_b
+end
+relationcanvas 131397 relation_ref 130757 // <realization>
+ from ref 131013 z 1999 to ref 128965
+ no_role_a no_role_b
+ no_multiplicity_a no_multiplicity_b
+end
+relationcanvas 131525 relation_ref 130885 // <realization>
+ from ref 130885 z 1999 to ref 128837
+ no_role_a no_role_b
+ no_multiplicity_a no_multiplicity_b
+end
+relationcanvas 131653 relation_ref 131013 // <realization>
+ from ref 130757 z 1999 to ref 128453
+ no_role_a no_role_b
+ no_multiplicity_a no_multiplicity_b
+end
+relationcanvas 132933 relation_ref 131141 // <generalisation>
+ from ref 132549 z 1999 to ref 132677
+ no_role_a no_role_b
+ no_multiplicity_a no_multiplicity_b
+end
+relationcanvas 133061 relation_ref 131269 // <association>
+ decenter_begin 331
+ decenter_end 105
+ from ref 132421 z 1999 to ref 132677
+ role_a_pos 794 360 3000 no_role_b
+ multiplicity_a_pos 767 360 3000 no_multiplicity_b
+end
+relationcanvas 133701 relation_ref 131525 // <association>
+ from ref 132421 z 1999 to ref 132293
+ no_role_a no_role_b
+ no_multiplicity_a no_multiplicity_b
+end
+relationcanvas 133829 relation_ref 131653 // <association>
+ from ref 132293 z 1999 to ref 130501
+ no_role_a no_role_b
+ no_multiplicity_a no_multiplicity_b
+end
+relationcanvas 134085 relation_ref 131909 // <association>
+ from ref 132805 z 1999 to ref 132549
+ no_role_a no_role_b
+ no_multiplicity_a no_multiplicity_b
+end
+relationcanvas 134213 relation_ref 131397 // <association>
+ decenter_begin 894
+ decenter_end 658
+ from ref 132677 z 1999 to ref 132421
+ no_role_a role_b_pos 861 360 3000
+ no_multiplicity_a multiplicity_b_pos 834 360 3000
+end
+relationcanvas 134725 relation_ref 131781 // <association>
+ from ref 132805 z 1999 to ref 132549
+ no_role_a no_role_b
+ no_multiplicity_a no_multiplicity_b
+end
+relationcanvas 136005 relation_ref 133061 // <generalisation>
+ from ref 128069 z 1999 to ref 135877
+ no_role_a no_role_b
+ no_multiplicity_a no_multiplicity_b
+end
+relationcanvas 136133 relation_ref 133189 // <association>
+ from ref 135877 z 1999 to ref 130245
+ no_role_a no_role_b
+ multiplicity_a_pos 516 50 3000 multiplicity_b_pos 247 50 3000
+end
+end
diff --git a/doc/bouml/jogl/69.session b/doc/bouml/jogl/69.session
new file mode 100644
index 000000000..3f44b3548
--- /dev/null
+++ b/doc/bouml/jogl/69.session
@@ -0,0 +1,11 @@
+window_sizes 1800 1050 450 1344 847 120
+diagrams
+ active classdiagram_ref 128069 // OpenGL Interfaces
+ 1135 830 100 18 0 0
+end
+show_stereotypes
+selected classdiagram_ref 128069 // OpenGL Interfaces
+open
+ classview_ref 128069 // javax.media.opengl
+end
+end
diff --git a/doc/bouml/jogl/cpp_includes b/doc/bouml/jogl/cpp_includes
new file mode 100644
index 000000000..531b86f76
--- /dev/null
+++ b/doc/bouml/jogl/cpp_includes
@@ -0,0 +1,13 @@
+// "a type" "needed cpp_includes"
+"vector" "#include <vector>
+using namespace std;"
+
+"list" "#include <list>
+using namespace std;"
+
+"map" "#include <map>
+using namespace std;"
+
+"string" "#include <string>
+using namespace std;"
+
diff --git a/doc/bouml/jogl/generation_settings b/doc/bouml/jogl/generation_settings
new file mode 100644
index 000000000..6e7065d11
--- /dev/null
+++ b/doc/bouml/jogl/generation_settings
@@ -0,0 +1,309 @@
+
+ java_default_defs
+ cpp_h_extension "h" cpp_src_extension "cpp" java_extension "java" php_extension "php" python_extension "py" idl_extension "idl"
+
+ type_forms 15 // uml cpp java idl cpp_in cpp_out cpp_inout cpp_return
+ "void" "void" "void" "void" "${type}" "${type} &" "${type}" "${type}"
+ "any" "void *" "Object" "any" "const ${type}" "${type}" "${type} &" "${type}"
+ "bool" "bool" "boolean" "boolean" "${type}" "${type} &" "${type} &" "${type}"
+ "char" "char" "char" "char" "${type}" "${type} &" "${type} &" "${type}"
+ "uchar" "unsigned char" "char" "octet" "${type}" "${type} &" "${type} &" "${type}"
+ "byte" "unsigned char" "byte" "octet" "${type}" "${type} &" "${type} &" "${type}"
+ "short" "short" "short" "short" "${type}" "${type} &" "${type} &" "${type}"
+ "ushort" "unsigned short" "short" "unsigned short" "${type}" "${type} &" "${type} &" "${type}"
+ "int" "int" "int" "long" "${type}" "${type} &" "${type} &" "${type}"
+ "uint" "unsigned int" "int" "unsigned long" "${type}" "${type} &" "${type} &" "${type}"
+ "long" "long" "long" "long" "${type}" "${type} &" "${type} &" "${type}"
+ "ulong" "unsigned long" "long" "unsigned long" "${type}" "${type} &" "${type} &" "${type}"
+ "float" "float" "float" "float" "${type}" "${type} &" "${type} &" "${type}"
+ "double" "double" "double" "double" "${type}" "${type} &" "${type} &" "${type}"
+ "string" "string" "String" "string" "${type}" "${type} &" "${type} &" "${type}"
+
+ relations_stereotypes 5 // uml cpp java pythonidl
+ "sequence" "vector" "Vector" "list" "sequence"
+ "vector" "vector" "Vector" "list" "sequence"
+ "list" "list" "List" "list" "sequence"
+ "set" "set" "Set" "set" "sequence"
+ "map" "map" "Map" "dict" "sequence"
+
+ classes_stereotypes 14 // uml cpp java php python idl
+ "class" "class" "class" "class" "class" "valuetype"
+ "interface" "class" "interface" "interface" "class" "interface"
+ "exception" "class" "class" "class" "class" "exception"
+ "enum" "enum" "enum" "enum" "enum" "enum"
+ "enum_pattern" "enum" "enum_pattern" "enum" "enum" "enum"
+ "struct" "struct" "class" "class" "class" "struct"
+ "union" "union" "class" "class" "class" "union"
+ "typedef" "typedef" "ignored" "ignored" "ignored" "typedef"
+ "boundary" "class" "class" "class" "class" "interface"
+ "control" "class" "class" "class" "class" "valuetype"
+ "entity" "class" "class" "class" "class" "valuetype"
+ "actor" "ignored" "ignored" "ignored" "ignored" "ignored"
+ "@interface" "ignored" "@interface" "ignored" "ignored" "ignored"
+ "stereotype" "ignored" "ignored" "ignored" "ignored" "ignored"
+
+ cpp_enum_default_type_forms "${type}" "${type} &" "${type} &" "${type}" // in out inout return
+ other_cpp_types_default_type_forms "const ${type} &" "${type} &" "${type} &" "${type}" // in out inout return
+
+ cpp_default_h_content "#ifndef ${NAMESPACE}_${NAME}_H
+#define ${NAMESPACE}_${NAME}_H
+
+${comment}
+${includes}
+${declarations}
+${namespace_start}
+${definition}
+${namespace_end}
+#endif
+"
+ cpp_default_src_content "${comment}
+${includes}
+${namespace_start}
+${members}
+${namespace_end}"
+ cpp_default_class_decl "${comment}${template}class ${name}${inherit} {
+${members}};
+${inlines}
+"
+ cpp_default_external_class_decl "${name}
+#include <${name}.h>
+"
+ cpp_default_struct_decl "${comment}${template}struct ${name}${inherit} {
+${members}};
+${inlines}
+"
+ cpp_default_union_decl "${comment}${template}union ${name} {
+${members}};
+${inlines}
+"
+ cpp_default_enum_decl "${comment}enum ${name} {
+${items}
+};
+"
+ cpp_default_typedef_decl "${comment}typedef ${type} ${name};
+"
+ cpp_default_attribute_declaration " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
+" // multiplicity 1
+ " ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type}> ${name}${value};
+" // multiplicity * a..b
+ " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${multiplicity}${value};
+" // multiplicity [..]
+ cpp_default_enum_item_declaration " ${name}${value},${comment}"
+ cpp_association_aggregation_declaration
+ " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
+" // multiplicity 1
+ " ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type} *> ${name}${value};
+" // multiplicity * a..b
+ " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${multiplicity}${value};
+" // multiplicity [..]
+ cpp_aggregation_by_value_declaration
+ " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
+" // multiplicity 1
+ " ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type}> ${name}${value};
+" // multiplicity * a..b
+ " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${multiplicity}${value};
+" // multiplicity [..]
+ cpp_get "get_${name}" inline const value_const public
+ cpp_set "set_${name}" public
+ cpp_default_operation_declaration " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
+"
+ cpp_default_operation_definition "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
+ ${body}}
+"
+ java_default_src_content "${comment}
+${package}
+${imports}
+${definition}"
+ java_default_class_decl "${comment}${@}${visibility}${final}${abstract}class ${name}${extends}${implements} {
+${members}}
+"
+ java_default_external_class_decl "${name}"
+ java_default_interface_decl "${comment}${@}${visibility}interface ${name}${extends} {
+${members}}
+"
+ java5_default_enum_decl "${comment}${@}${visibility}${final}${abstract}enum ${name}${implements} {
+${items};
+${members}}
+"
+ java_default_enum_decl "${comment}${@}${visibility}final class ${name} {
+${members}
+ private final int value;
+
+ public int value() {
+ return value;
+ }
+
+ public static ${name} fromInt(int value) {
+ switch (value) {
+${cases} default: throw new Error();
+ }
+
+ }
+ private ${name}(int v) { value = v; };
+}
+"
+ java_default_attribute_declaration " ${comment}${@}${visibility}${static}${final}${transient}${volatile}${type} ${name}${value};
+" // multiplicity 1
+ " ${comment}${@}${visibility}${static}${final}${transient}${volatile}${stereotype}<${type}> ${name}${value};
+" // multiplicity * a..b
+ " ${comment}${@}${visibility}${static}${final}${transient}${volatile}${type}${multiplicity} ${name}${value};
+" // multiplicity N
+ java5_default_enum_item_declaration " ${@}${name}${value},${comment}"
+ java_default_enum_item_declaration " ${comment}${@}public static final int _${name}${value};
+public static final ${class} ${name} = new ${class}(_${name});
+"
+ java_default_enum_case " case _${name}: return ${name};
+"
+ java_association_aggregation_declaration
+ " ${comment}${@}${visibility}${static}${final}${transient}${volatile}${type} ${name}${value};
+" // multiplicity 1
+ " ${comment}${@}${visibility}${static}${final}${transient}${volatile}${stereotype}<${type}> ${name}${value};
+" // multiplicity * a..b
+ " ${comment}${@}${visibility}${static}${final}${transient}${volatile}${type}${multiplicity} ${name}${value};
+" // multiplicity N
+ java_get "get${Name}" final public
+ java_set "set${Name}" public
+ java_default_operation_definition " ${comment}${@}${visibility}${final}${static}${abstract}${synchronized}${type} ${name}${(}${)}${throws}${staticnl}{
+ ${body}}
+"
+ php_default_src_content "<?php
+${comment}
+${definition}
+?>
+"
+ php_default_class_decl "${comment}${final}${visibility}${abstract}class ${name}${extends}${implements} {
+${members}}
+"
+ php_default_enum_decl "${comment}${visibility}final class ${name} {
+${items}}
+"
+ php_default_external_class_decl "${name}"
+ php_default_interface_decl "${comment}${visibility}interface ${name} {
+${members}}
+"
+ php_default_attribute_declaration " ${comment}${visibility}${const}${static}${var}${name}${value};
+"
+ php_default_enum_item_decl " const ${name}${value};${comment}
+"
+ php_default_relation_declaration" ${comment}${visibility}${const}${static}${var}${name}${value};
+"
+ php_get "get${Name}" final
+ php_set "set${Name}"
+ php_default_operation_definition " ${comment}${final}${visibility}${abstract}${static}function ${name}${(}${)}
+{
+ ${body}}
+"
+ python_2_2
+ python_indent_step " "
+ python_default_src_content "${comment}
+${import}
+${definition}"
+ python_default_class_decl "class ${name}${inherit}:
+${docstring}${members}
+"
+ python_default_enum_decl "class ${name}:
+${docstring}${members}
+"
+ python_default_external_class_decl "${name}"
+ python_default_attribute_declaration "${comment}${self}${name} = ${value}
+" // multiplicity 1
+ "${comment}${self}${name} = ${stereotype}()
+" // multiplicity != 1
+ python_default_enum_item_decl "${comment}${self}${name} = ${value}
+"
+ python_default_relation_declaration"${comment}${self}${name} = ${value}
+" // multiplicity 1
+ "${comment}${self}${name} = ${stereotype}()
+" // multiplicity != 1
+ python_default_composition_declaration"${comment}${self}${name} = ${type}()
+" // multiplicity 1
+ "${comment}${self}${name} = ${stereotype}()
+" // multiplicity != 1
+ python_default_operation_definition "${@}${static}${abstract}def ${name}${(}${)}:
+${docstring}${body}
+"
+ python_default_initoperation_definition "${@}${static}${abstract}def ${name}${(}${p0}${v0}${)}:
+${docstring}super(${class}, ${p0}).__init__()
+${body}
+"
+ python_get "get${Name}"
+ python_set "set${Name}"
+ idl_default_src_content "#ifndef ${MODULE}_${NAME}_H
+#define ${MODULE}_${NAME}_H
+
+${comment}
+${includes}
+${module_start}
+${definition}
+${module_end}
+#endif
+"
+ idl_default_interface_decl "${comment}${abstract}${local}interface ${name}${inherit} {
+${members}};
+"
+ idl_default_valuetype_decl "${comment}${abstract}${custom}valuetype ${name}${inherit} {
+${members}};
+"
+ idl_default_struct_decl "${comment}struct ${name} {
+${members}};
+"
+ idl_default_typedef_decl "${comment}typedef ${type} ${name};
+"
+ idl_default_exception_decl "${comment}exception ${name} {
+${members}};
+"
+ idl_default_union_decl "${comment}union ${name} switch(${switch}) {
+${members}};
+"
+ idl_default_enum_decl "${comment}enum ${name} {
+${items}};
+"
+ idl_default_external_class_decl "${name}
+#include \"${name}.idl\"
+"
+ idl_default_attribute_declaration " ${comment}${readonly}${attribute}${type} ${name};
+" // multiplicity 1
+ " ${comment}${readonly}${attribute}${stereotype}<${type}> ${name};
+" // multiplicity * a..b
+ " ${comment}${readonly}${attribute}${stereotype}<${type},${multiplicity}> ${name};
+" // multiplicity N
+ idl_default_valuetype_attribute_declaration " ${comment}${visibility}${type} ${name};
+" // multiplicity 1
+ " ${comment}${visibility}${stereotype}<${type}> ${name};
+" // multiplicity * a..b
+ " ${comment}${visibility}${stereotype}<${type},${multiplicity}> ${name};
+" // multiplicity N
+ idl_default_const_declaration " ${comment}const ${type} ${name}${value};
+" // multiplicity 1
+ " ${comment}const ${stereotype}<${type}> ${name}${value};
+" // multiplicity * a..b
+ " ${comment}const ${stereotype}<${type},${multiplicity}> ${name}${value};
+" // multiplicity N
+ idl_default_enum_item_declaration " ${name},${comment}"
+ idl_default_union_item_declaration " ${comment}case ${case} : ${readonly}${type} ${name};" // multiplicity 1
+ " ${comment}case ${case} : ${readonly}${stereotype}<${type}> ${name};" // multiplicity * a..b
+ " ${comment}case ${case} : ${readonly}${stereotype}<${type},${multiplicity}> ${name};" // multiplicity N
+ idl_association_aggregation_declaration
+ " ${comment}${readonly}${attribute}${type} ${name};
+" // multiplicity 1
+ " ${comment}${readonly}${attribute}${stereotype}<${type}> ${name};
+" // multiplicity * a..b
+ " ${comment}${readonly}${attribute}${stereotype}<${type},${multiplicity}> ${name};
+" // multiplicity N
+ idl_valuetype_association_aggregation_declaration
+ " ${comment}${visibility}${type} ${name};
+" // multiplicity 1
+ " ${comment}${visibility}${stereotype}<${type}> ${name};
+" // multiplicity * a..b
+ " ${comment}${visibility}${stereotype}<${type},${multiplicity}> ${name};
+" // multiplicity N
+ idl_union_association_aggregation_declaration
+ " ${comment}case ${case} : ${readonly}${type} ${name};" // multiplicity 1
+ " ${comment}case ${case} : ${readonly}${stereotype}<${type}> ${name};" // multiplicity * a..b
+ " ${comment}case ${case} : ${readonly}${stereotype}<${type},${multiplicity}> ${name};" // multiplicity N
+ idl_get "get_${name}"
+ idl_set "set_${name}" twoways
+ idl_default_operation_declaration " ${comment}${oneway}${type} ${name}${(}${)}${raisesnl}${raises};
+"
+ uml_get_name uml uml_set_name uml
+end
diff --git a/doc/bouml/jogl/idl_includes b/doc/bouml/jogl/idl_includes
new file mode 100644
index 000000000..fceab64b9
--- /dev/null
+++ b/doc/bouml/jogl/idl_includes
@@ -0,0 +1 @@
+// "a type" "needed idl_includes"
diff --git a/doc/bouml/jogl/java_imports b/doc/bouml/jogl/java_imports
new file mode 100644
index 000000000..bbd370acb
--- /dev/null
+++ b/doc/bouml/jogl/java_imports
@@ -0,0 +1 @@
+// "a type" "needed java_imports"
diff --git a/doc/bouml/jogl/jogl.prj b/doc/bouml/jogl/jogl.prj
new file mode 100644
index 000000000..532267ccf
--- /dev/null
+++ b/doc/bouml/jogl/jogl.prj
@@ -0,0 +1,582 @@
+format 67
+"jogl"
+ revision 5
+ modified_by 69 "sg215889"
+
+
+
+ // class settings
+ default_attribute_visibility private default_relation_visibility private default_operation_visibility public
+ //class diagram settings
+ draw_all_relations yes hide_attributes no hide_operations no show_members_full_definition no show_members_visibility no show_members_stereotype no show_members_multiplicity no show_members_initialization no show_attribute_modifiers no member_max_width 127 show_parameter_dir yes show_parameter_name yes package_name_in_tab no class_drawing_mode natural drawing_language uml show_context_mode no auto_label_position yes show_relation_modifiers no show_infonote no shadow yes show_stereotype_properties no
+ //use case diagram settings
+ package_name_in_tab no show_context no auto_label_position yes draw_all_relations yes class_drawing_mode actor shadow yes show_stereotype_properties no
+ //sequence diagram settings
+ show_full_operations_definition no write_horizontally yes class_drawing_mode natural drawing_language uml draw_all_relations yes shadow yes show_stereotype_properties no
+ //collaboration diagram settings
+ show_full_operations_definition no show_hierarchical_rank no write_horizontally yes drawing_language uml package_name_in_tab no show_context no draw_all_relations yes shadow yes show_stereotype_properties no
+ //object diagram settings
+ write_horizontally yes package_name_in_tab no show_context no auto_label_position yes draw_all_relations yes shadow yes show_stereotype_properties no
+ //component diagram settings
+ package_name_in_tab no show_context no auto_label_position yes draw_all_relations yes shadow yes
+ draw_component_as_icon no show_component_req_prov no show_component_rea no show_stereotype_properties no
+ //deployment diagram settings
+ package_name_in_tab no show_context no write_horizontally yes auto_label_position yes draw_all_relations yes shadow yes
+ draw_component_as_icon no show_component_req_prov no show_component_rea no show_stereotype_properties no
+ //state diagram settings
+ package_name_in_tab no show_context no auto_label_position yes write_trans_label_horizontally yes show_trans_definition no draw_all_relations yes shadow yes
+ show_activities yes region_horizontally yes drawing_language uml show_stereotype_properties no
+ //activity diagram settings
+ package_name_in_tab no show_context no show_opaque_action_definition no auto_label_position yes write_flow_label_horizontally no draw_all_relations yes shadow yes
+ show_infonote yes drawing_language uml show_stereotype_properties no
+
+ class_color yellow duration_color transparent continuation_color gray note_color blue fragment_color transparent subject_color transparent usecase_color yellow package_color transparent component_color green artifact_color green deploymentnode_color gray state_color yellow stateaction_color transparent activity_color transparent activityregion_color transparent activitypartition_color transparent activityaction_color transparent parameterpin_color white
+ font_size 10
+ diagram_format A4
+
+ mark_for_import
+
+ ncouples 1
+ key "html dir" value "/net/jordan/usr/local/projects/SUN/JOGL/jogl/doc/bouml/html/"
+ classview 128069 "javax.media.opengl"
+ //class diagram settings
+ draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_infonote default shadow default show_stereotype_properties default
+ //collaboration diagram settings
+ show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default show_stereotype_properties default
+ //object diagram settings
+ write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default show_stereotype_properties default
+ //sequence diagram settings
+ show_full_operations_definition default write_horizontally default class_drawing_mode default drawing_language default draw_all_relations default shadow default show_stereotype_properties default
+ //state diagram settings
+ package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default
+ show_activities default region_horizontally default drawing_language default show_stereotype_properties default
+ //class settings
+ //activity diagram settings
+ package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default
+ show_infonote default drawing_language default show_stereotype_properties default
+ classdiagram 128069 "OpenGL Interfaces"
+ draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_infonote default shadow default show_stereotype_properties default
+ size A4-Landscape
+ end
+
+ class 128069 "GL"
+ visibility public stereotype "interface"
+ cpp_decl ""
+ java_decl "${comment}${@}${visibility}interface ${name}${extends} {
+${members}}
+"
+ php_decl "${comment}${visibility}interface ${name} {
+${members}}
+"
+ python_2_2 python_decl ""
+ idl_decl "${comment}${abstract}${local}interface ${name}${inherit} {
+${members}};
+"
+ explicit_switch_type ""
+
+ classrelation 134085 // <generalisation>
+ relation 133061 ---|>
+ a public
+ java "${type}"
+ classrelation_ref 134085 // <generalisation>
+ b parent class_ref 132549 // GLBase
+ end
+ end
+
+ class 128197 "GL2ES1"
+ visibility public stereotype "interface"
+ cpp_decl ""
+ java_decl "${comment}${@}${visibility}interface ${name}${extends} {
+${members}}
+"
+ php_decl "${comment}${visibility}interface ${name} {
+${members}}
+"
+ python_2_2 python_decl ""
+ idl_decl "${comment}${abstract}${local}interface ${name}${inherit} {
+${members}};
+"
+ explicit_switch_type ""
+
+ classrelation 129221 // <generalisation>
+ relation 129221 ---|>
+ a public
+ java "${type}"
+ classrelation_ref 129221 // <generalisation>
+ b parent class_ref 128069 // GL
+ end
+ end
+
+ class 128325 "GLES1"
+ visibility public stereotype "interface"
+ cpp_decl ""
+ java_decl "${comment}${@}${visibility}interface ${name}${extends} {
+${members}}
+"
+ php_decl "${comment}${visibility}interface ${name} {
+${members}}
+"
+ python_2_2 python_decl ""
+ idl_decl "${comment}${abstract}${local}interface ${name}${inherit} {
+${members}};
+"
+ explicit_switch_type ""
+
+ classrelation 129477 // <generalisation>
+ relation 129477 ---|>
+ a public
+ java "${type}"
+ classrelation_ref 129477 // <generalisation>
+ b parent class_ref 128197 // GL2ES1
+ end
+ end
+
+ class 128453 "GL2"
+ visibility public stereotype "interface"
+ cpp_decl ""
+ java_decl "${comment}${@}${visibility}interface ${name}${extends} {
+${members}}
+"
+ php_decl "${comment}${visibility}interface ${name} {
+${members}}
+"
+ python_2_2 python_decl ""
+ idl_decl "${comment}${abstract}${local}interface ${name}${inherit} {
+${members}};
+"
+ explicit_switch_type ""
+
+ classrelation 129989 // <generalisation>
+ relation 129989 ---|>
+ a public
+ java "${type}"
+ classrelation_ref 129989 // <generalisation>
+ b parent class_ref 128709 // GL2GL3
+ end
+
+ classrelation 130245 // <generalisation>
+ relation 130245 ---|>
+ a public
+ java "${type}"
+ classrelation_ref 130245 // <generalisation>
+ b parent class_ref 128197 // GL2ES1
+ end
+ end
+
+ class 128581 "GL2ES2"
+ visibility public stereotype "interface"
+ cpp_decl ""
+ java_decl "${comment}${@}${visibility}interface ${name}${extends} {
+${members}}
+"
+ php_decl "${comment}${visibility}interface ${name} {
+${members}}
+"
+ python_2_2 python_decl ""
+ idl_decl "${comment}${abstract}${local}interface ${name}${inherit} {
+${members}};
+"
+ explicit_switch_type ""
+
+ classrelation 129349 // <generalisation>
+ relation 129349 ---|>
+ a public
+ java "${type}"
+ classrelation_ref 129349 // <generalisation>
+ b parent class_ref 128069 // GL
+ end
+ end
+
+ class 128709 "GL2GL3"
+ visibility public stereotype "interface"
+ cpp_decl ""
+ java_decl "${comment}${@}${visibility}interface ${name}${extends} {
+${members}}
+"
+ php_decl "${comment}${visibility}interface ${name} {
+${members}}
+"
+ python_2_2 python_decl ""
+ idl_decl "${comment}${abstract}${local}interface ${name}${inherit} {
+${members}};
+"
+ explicit_switch_type ""
+
+ classrelation 130117 // <generalisation>
+ relation 130117 ---|>
+ a public
+ java "${type}"
+ classrelation_ref 130117 // <generalisation>
+ b parent class_ref 128581 // GL2ES2
+ end
+ end
+
+ class 128837 "GL3"
+ visibility public stereotype "interface"
+ cpp_decl ""
+ java_decl "${comment}${@}${visibility}interface ${name}${extends} {
+${members}}
+"
+ php_decl "${comment}${visibility}interface ${name} {
+${members}}
+"
+ python_2_2 python_decl ""
+ idl_decl "${comment}${abstract}${local}interface ${name}${inherit} {
+${members}};
+"
+ explicit_switch_type ""
+
+ classrelation 129861 // <generalisation>
+ relation 129861 ---|>
+ a public
+ java "${type}"
+ classrelation_ref 129861 // <generalisation>
+ b parent class_ref 128709 // GL2GL3
+ end
+ end
+
+ class 128965 "GLES2"
+ visibility public stereotype "interface"
+ cpp_decl ""
+ java_decl "${comment}${@}${visibility}interface ${name}${extends} {
+${members}}
+"
+ php_decl "${comment}${visibility}interface ${name} {
+${members}}
+"
+ python_2_2 python_decl ""
+ idl_decl "${comment}${abstract}${local}interface ${name}${inherit} {
+${members}};
+"
+ explicit_switch_type ""
+
+ classrelation 129605 // <generalisation>
+ relation 129605 ---|>
+ a public
+ java "${type}"
+ classrelation_ref 129605 // <generalisation>
+ b parent class_ref 128581 // GL2ES2
+ end
+ end
+
+ class 130117 "GLContext"
+ abstract visibility package
+ cpp_decl ""
+ java_decl "${comment}${@}${visibility}${final}${abstract}class ${name}${extends}${implements} {
+${members}}
+"
+ php_decl ""
+ python_2_2 python_decl ""
+ idl_decl ""
+ explicit_switch_type ""
+
+ classrelation 130757 // <association>
+ relation_ref 130501 // <association>
+ end
+
+ classrelation 134341 // <association>
+ relation_ref 133189 // <association>
+ end
+ end
+
+ class 130245 "GLDrawable"
+ abstract visibility package
+ cpp_decl ""
+ java_decl "${comment}${@}${visibility}${final}${abstract}class ${name}${extends}${implements} {
+${members}}
+"
+ php_decl ""
+ python_2_2 python_decl ""
+ idl_decl ""
+ explicit_switch_type ""
+
+ classrelation 130629 // <association>
+ relation 130501 ----
+ a role_name "" multiplicity "0..1" private
+ java " ${comment}${@}${visibility}${static}${final}${transient}${volatile}${type} ${name}${value};
+"
+ classrelation_ref 130629 // <association>
+ b role_name "" multiplicity "1" private
+ java " ${comment}${@}${visibility}${static}${final}${transient}${volatile}${type} ${name}${value};
+"
+ classrelation_ref 130757 // <association>
+ end
+
+ classrelation 132421 // <association>
+ relation_ref 131653 // <association>
+ end
+ end
+
+ class 130373 "GL2Impl"
+ visibility private stereotype "entity"
+ cpp_decl ""
+ java_decl "${comment}${@}${visibility}${final}${abstract}class ${name}${extends}${implements} {
+${members}}
+"
+ php_decl ""
+ python_2_2 python_decl ""
+ idl_decl ""
+ explicit_switch_type ""
+
+ classrelation 131269 // <realization>
+ relation 131013 -_-|>
+ a public
+ java "${type}"
+ classrelation_ref 131269 // <realization>
+ b parent class_ref 128453 // GL2
+ end
+ end
+
+ class 130501 "GL3Impl"
+ visibility private stereotype "entity"
+ cpp_decl ""
+ java_decl "${comment}${@}${visibility}${final}${abstract}class ${name}${extends}${implements} {
+${members}}
+"
+ php_decl ""
+ python_2_2 python_decl ""
+ idl_decl ""
+ explicit_switch_type ""
+
+ classrelation 131141 // <realization>
+ relation 130885 -_-|>
+ a public
+ java "${type}"
+ classrelation_ref 131141 // <realization>
+ b parent class_ref 128837 // GL3
+ end
+ end
+
+ class 130629 "GLES2Impl"
+ visibility private stereotype "entity"
+ cpp_decl ""
+ java_decl "${comment}${@}${visibility}${final}${abstract}class ${name}${extends}${implements} {
+${members}}
+"
+ php_decl ""
+ python_2_2 python_decl ""
+ idl_decl ""
+ explicit_switch_type ""
+
+ classrelation 131013 // <realization>
+ relation 130757 -_-|>
+ a public
+ java "${type}"
+ classrelation_ref 131013 // <realization>
+ b parent class_ref 128965 // GLES2
+ end
+ end
+
+ class 130757 "GLES1Impl"
+ visibility private stereotype "entity"
+ cpp_decl ""
+ java_decl "${comment}${@}${visibility}${final}${abstract}class ${name}${extends}${implements} {
+${members}}
+"
+ php_decl ""
+ python_2_2 python_decl ""
+ idl_decl ""
+ explicit_switch_type ""
+
+ classrelation 130885 // <realization>
+ relation 130629 -_-|>
+ a public
+ java "${type}"
+ classrelation_ref 130885 // <realization>
+ b parent class_ref 128325 // GLES1
+ end
+ end
+
+ class 130885 "NativeWindow"
+ visibility package stereotype "interface"
+ cpp_decl ""
+ java_decl "${comment}${@}${visibility}interface ${name}${extends} {
+${members}}
+"
+ php_decl "${comment}${visibility}interface ${name} {
+${members}}
+"
+ python_2_2 python_decl ""
+ idl_decl "${comment}${abstract}${local}interface ${name}${inherit} {
+${members}};
+"
+ explicit_switch_type ""
+
+ classrelation 132165 // <association>
+ relation_ref 131525 // <association>
+ end
+
+ classrelation 132293 // <association>
+ relation 131653 ----
+ a role_name "" private
+ java " ${comment}${@}${visibility}${static}${final}${transient}${volatile}${type} ${name}${value};
+"
+ classrelation_ref 132293 // <association>
+ b role_name "" private
+ java " ${comment}${@}${visibility}${static}${final}${transient}${volatile}${type} ${name}${value};
+"
+ classrelation_ref 132421 // <association>
+ end
+ end
+
+ class 131013 "AbstractGraphicsConfiguration"
+ abstract visibility package
+ cpp_decl ""
+ java_decl "${comment}${@}${visibility}${final}${abstract}class ${name}${extends}${implements} {
+${members}}
+"
+ php_decl ""
+ python_2_2 python_decl ""
+ idl_decl ""
+ explicit_switch_type ""
+
+ classrelation 131525 // chosen (<association>)
+ relation 131269 ----
+ a role_name "chosen" multiplicity "1" private
+ java " ${comment}${@}${visibility}${static}${final}${transient}${volatile}${type} ${name}${value};
+"
+ classrelation_ref 131525 // chosen (<association>)
+ b role_name "" private
+ java " ${comment}${@}${visibility}${static}${final}${transient}${volatile}${type} ${name}${value};
+"
+ classrelation_ref 131653 // <association>
+ end
+
+ classrelation 131909 // <association>
+ relation_ref 131397 // <association>
+ end
+
+ classrelation 132037 // <association>
+ relation 131525 ----
+ a role_name "" private
+ java " ${comment}${@}${visibility}${static}${final}${transient}${volatile}${type} ${name}${value};
+"
+ classrelation_ref 132037 // <association>
+ b role_name "" private
+ java " ${comment}${@}${visibility}${static}${final}${transient}${volatile}${type} ${name}${value};
+"
+ classrelation_ref 132165 // <association>
+ end
+ end
+
+ class 131141 "GLCapabilities"
+ visibility package
+ cpp_decl ""
+ java_decl "${comment}${@}${visibility}${final}${abstract}class ${name}${extends}${implements} {
+${members}}
+"
+ php_decl ""
+ python_2_2 python_decl ""
+ idl_decl ""
+ explicit_switch_type ""
+
+ classrelation 131397 // <generalisation>
+ relation 131141 ---|>
+ a public
+ java "${type}"
+ classrelation_ref 131397 // <generalisation>
+ b parent class_ref 131269 // Capabilities
+ end
+
+ classrelation 132677 // <association>
+ relation_ref 131781 // <association>
+ end
+
+ classrelation 132933 // <association>
+ relation_ref 131909 // <association>
+ end
+ end
+
+ class 131269 "Capabilities"
+ visibility package
+ cpp_decl ""
+ java_decl "${comment}${@}${visibility}${final}${abstract}class ${name}${extends}${implements} {
+${members}}
+"
+ php_decl ""
+ python_2_2 python_decl ""
+ idl_decl ""
+ explicit_switch_type ""
+
+ classrelation 131653 // <association>
+ relation_ref 131269 // <association>
+ end
+
+ classrelation 131781 // <association>
+ relation 131397 ----
+ a role_name "" private
+ java " ${comment}${@}${visibility}${static}${final}${transient}${volatile}${type} ${name}${value};
+"
+ classrelation_ref 131781 // <association>
+ b role_name "requested" multiplicity "1" private
+ java " ${comment}${@}${visibility}${static}${final}${transient}${volatile}${type} ${name}${value};
+"
+ classrelation_ref 131909 // <association>
+ end
+ end
+
+ class 131397 "GLProfile"
+ visibility package
+ cpp_decl ""
+ java_decl "${comment}${@}${visibility}${final}${abstract}class ${name}${extends}${implements} {
+${members}}
+"
+ php_decl ""
+ python_2_2 python_decl ""
+ idl_decl ""
+ explicit_switch_type ""
+
+ classrelation 132549 // <association>
+ relation 131781 ----
+ a role_name "" private
+ java " ${comment}${@}${visibility}${static}${final}${transient}${volatile}${type} ${name}${value};
+"
+ classrelation_ref 132549 // <association>
+ b role_name "" private
+ java " ${comment}${@}${visibility}${static}${final}${transient}${volatile}${type} ${name}${value};
+"
+ classrelation_ref 132677 // <association>
+ end
+
+ classrelation 132805 // <association>
+ relation 131909 ----
+ a role_name "" private
+ java " ${comment}${@}${visibility}${static}${final}${transient}${volatile}${type} ${name}${value};
+"
+ classrelation_ref 132805 // <association>
+ b role_name "" private
+ java " ${comment}${@}${visibility}${static}${final}${transient}${volatile}${type} ${name}${value};
+"
+ classrelation_ref 132933 // <association>
+ end
+ end
+
+ class 132549 "GLBase"
+ visibility public stereotype "interface"
+ cpp_decl ""
+ java_decl "${comment}${@}${visibility}interface ${name}${extends} {
+${members}}
+"
+ php_decl "${comment}${visibility}interface ${name} {
+${members}}
+"
+ python_2_2 python_decl ""
+ idl_decl "${comment}${abstract}${local}interface ${name}${inherit} {
+${members}};
+"
+ explicit_switch_type ""
+
+ classrelation 134213 // <association>
+ relation 133189 ----
+ a role_name "" multiplicity "1" private
+ java " ${comment}${@}${visibility}${static}${final}${transient}${volatile}${type} ${name}${value};
+"
+ classrelation_ref 134213 // <association>
+ b role_name "" multiplicity "1" private
+ java " ${comment}${@}${visibility}${static}${final}${transient}${volatile}${type} ${name}${value};
+"
+ classrelation_ref 134341 // <association>
+ end
+ end
+ end
+end
diff --git a/doc/bouml/jogl/python_imports b/doc/bouml/jogl/python_imports
new file mode 100644
index 000000000..4a1bd3a85
--- /dev/null
+++ b/doc/bouml/jogl/python_imports
@@ -0,0 +1 @@
+// "a type" "needed python_imports"
diff --git a/doc/bouml/jogl/stereotypes b/doc/bouml/jogl/stereotypes
new file mode 100644
index 000000000..0ac476cf9
--- /dev/null
+++ b/doc/bouml/jogl/stereotypes
@@ -0,0 +1,58 @@
+
+ package_stereotypes 6 "facade" "framework" "model library" "stub" "toplevel" "profile"
+ -_-> 3 "access" "import" "from"
+ end
+
+ class_stereotypes 19 "actor" "auxiliary" "boundary" "control" "entity" "enum" "enum_pattern" "exception" "focus" "implementationClass" "interface" "@interface" "metaclass" "stereotype" "struct" "type" "typedef" "union" "utility"
+ ---- 4 "list" "set" "vector" "map"
+ ---> 4 "list" "set" "vector" "map"
+ ---|> 4 "{complete,disjoint}" "{incomplete,disjoint}" "{complete,overlapping}" "{incomplete,overlapping}"
+ o--- 4 "list" "set" "vector" "map"
+ *--- 4 "list" "set" "vector" "map"
+ o--> 4 "list" "set" "vector" "map"
+ *--> 4 "list" "set" "vector" "map"
+ -_-> 4 "friend" "from" "import" "instantiate"
+ -_-|> 1 "bind"
+ end
+
+ use_case_stereotypes 1 "realization"
+
+ ---|> 4 "{complete,disjoint}" "{incomplete,disjoint}" "{complete,overlapping}" "{incomplete,overlapping}"
+ -_-> 2 "include" "extend"
+ end
+
+ artifact_stereotypes 7 "document" "file" "script" "source" "text" "library" "executable"
+ -_-> 4 "deploy" "manifest" "import" "from"
+ end
+
+ attribute_stereotypes 4 "list" "set" "vector" "map"
+ operation_stereotypes 0
+ state_stereotypes 3 "machine" "submachine" "top"
+ activity_stereotypes 0
+ flow_stereotypes 3 "interrupt" "multicast" "multireceive"
+ interruptibleactivityregion_stereotypes 0
+ pseudostate_stereotypes 0
+ stateaction_stereotypes 2 "send-signal" "receive-signal"
+ parameter_stereotypes 0
+ parameterset_stereotypes 0
+ activitynode_stereotypes 0
+ activityaction_stereotypes 0
+ activityobject_stereotypes 2 "datastore" "centralBuffer"
+ expansionregion_stereotypes 0
+ activitypartition_stereotypes 0
+ pin_stereotypes 0
+ component_stereotypes 6 "buildComponent" "entity" "implement" "process" "service" "subsystem"
+ deploymentnode_stereotypes 3 "cpu" "device" "executionEnvironment"
+ classview_stereotypes 0
+ usecaseview_stereotypes 0
+ componentview_stereotypes 0
+ deploymentview_stereotypes 0
+ classdiagram_stereotypes 0
+ seqdiagram_stereotypes 0
+ coldiagram_stereotypes 0
+ usecasediagram_stereotypes 0
+ statediagram_stereotypes 0
+ activitydiagram_stereotypes 0
+ componentdiagram_stereotypes 0
+ deploymentdiagram_stereotypes 0
+end
diff --git a/doc/bouml/jogl/tools b/doc/bouml/jogl/tools
new file mode 100644
index 000000000..49867c0ba
--- /dev/null
+++ b/doc/bouml/jogl/tools
@@ -0,0 +1,32 @@
+// 'tool' "the executable" "displayed string" {target}+
+tool "HTML documentation" "ghtml" Class Operation Attribute Generalisation Realize Dependency Association DirectionalAssociation Aggregation AggregationByValue DirectionalAggregation DirectionalAggregationByValue ExtraMember ClassInstance
+tool "HTML doc. (flat)" "ghtml -flat" Class Operation Attribute Generalisation Realize Dependency Association DirectionalAssociation Aggregation AggregationByValue DirectionalAggregation DirectionalAggregationByValue ExtraMember ClassInstance
+tool "HTML doc. (svg)" "ghtml -svg" Class Operation Attribute Generalisation Realize Dependency Association DirectionalAssociation Aggregation AggregationByValue DirectionalAggregation DirectionalAggregationByValue ExtraMember ClassInstance
+tool "HTML doc. (flat, svg)" "ghtml -flat -svg" Class Operation Attribute Generalisation Realize Dependency Association DirectionalAssociation Aggregation AggregationByValue DirectionalAggregation DirectionalAggregationByValue ExtraMember ClassInstance
+tool "C++ utilities" "cpp_util" Class
+tool "Global Change" "global_change" Class
+tool "Uml projection" "uml_proj" Class Operation Attribute Generalisation Realize Dependency Association DirectionalAssociation Aggregation AggregationByValue DirectionalAggregation DirectionalAggregationByValue
+tool "HTML documentation" "ghtml" State Region StateAction Initial EntryPoint Final Terminate ExitPoint DeepHistory ShallowHistory Junction Choice Fork Join Transition
+tool "HTML doc. (flat)" "ghtml -flat" State Region StateAction Initial EntryPoint Final Terminate ExitPoint DeepHistory ShallowHistory Junction Choice Fork Join Transition
+tool "HTML doc. (svg)" "ghtml -svg" State Region StateAction Initial EntryPoint Final Terminate ExitPoint DeepHistory ShallowHistory Junction Choice Fork Join Transition
+tool "HTML doc. (flat, svg)" "ghtml -flat -svg" State Region StateAction Initial EntryPoint Final Terminate ExitPoint DeepHistory ShallowHistory Junction Choice Fork Join Transition
+tool "C++ state machine" "stmgen" State
+tool "HTML documentation" "ghtml" Activity InterruptibleActivityRegion ExpansionRegion ActivityObject ActivityAction Parameter ParameterSet Pin ExpansionNode InitialActivityNode FinalActivityNode ExitPointActivityNode DecisionActivityNode MergeActivityNode ForkActivityNode JoinActivityNode Flow
+tool "HTML doc. (flat)" "ghtml -flat" Activity InterruptibleActivityRegion ExpansionRegion ActivityObject ActivityAction Parameter ParameterSet Pin ExpansionNode InitialActivityNode FinalActivityNode ExitPointActivityNode DecisionActivityNode MergeActivityNode ForkActivityNode JoinActivityNode Flow
+tool "HTML doc. (svg)" "ghtml -svg" Activity InterruptibleActivityRegion ExpansionRegion ActivityObject ActivityAction Parameter ParameterSet Pin ExpansionNode InitialActivityNode FinalActivityNode ExitPointActivityNode DecisionActivityNode MergeActivityNode ForkActivityNode JoinActivityNode Flow
+tool "HTML doc. (flat, svg)" "ghtml -flat -svg" Activity InterruptibleActivityRegion ExpansionRegion ActivityObject ActivityAction Parameter ParameterSet Pin ExpansionNode InitialActivityNode FinalActivityNode ExitPointActivityNode DecisionActivityNode MergeActivityNode ForkActivityNode JoinActivityNode Flow
+tool "HTML documentation" "ghtml" Project Package UseCaseView ClassView ComponentView DeploymentView UseCaseDiagram SeqDiagram ColDiagram ClassDiagram ObjectDiagram StateDiagram ActivityDiagram ComponentDiagram DeploymentDiagram UseCase Component Node Artifact Inherit DependOn
+tool "HTML doc. (flat)" "ghtml -flat" Project Package UseCaseView ClassView ComponentView DeploymentView UseCaseDiagram SeqDiagram ColDiagram ClassDiagram ObjectDiagram StateDiagram ActivityDiagram ComponentDiagram DeploymentDiagram UseCase Component Node Artifact Inherit DependOn
+tool "HTML doc. (svg)" "ghtml -svg" Project Package UseCaseView ClassView ComponentView DeploymentView UseCaseDiagram SeqDiagram ColDiagram ClassDiagram ObjectDiagram StateDiagram ActivityDiagram ComponentDiagram DeploymentDiagram UseCase Component Node Artifact Inherit DependOn
+tool "HTML doc. (flat, svg)" "ghtml -flat -svg" Project Package UseCaseView ClassView ComponentView DeploymentView UseCaseDiagram SeqDiagram ColDiagram ClassDiagram ObjectDiagram StateDiagram ActivityDiagram ComponentDiagram DeploymentDiagram UseCase Component Node Artifact Inherit DependOn
+tool "Generate .pro" "gpro" Artifact
+tool "Import Rose" "irose" Project Package
+tool "Generate XMI 1.2" "gxmi" Project
+tool "Generate XMI 2.1" "gxmi2" Project
+tool "Import XMI 2.1" "ixmi2" Project Package
+tool "Use case wizard" "usecasewizard" UseCase
+tool "Check-in" "file_control ci" Project Package
+tool "Check-out" "file_control co" Project Package
+tool "Deploy classes" "deplcl" ClassView
+tool "Global Change" "global_change" Project Package ClassView DeploymentView
+tool "Uml projection" "uml_proj" Project Package ClassView
diff --git a/doc/userguide/index.html b/doc/userguide/index.html
index 233f6090a..64047cf8d 100644
--- a/doc/userguide/index.html
+++ b/doc/userguide/index.html
@@ -69,7 +69,7 @@ There are roughly 150 lines of handwritten C code in the entire Jogl
source base (100 of which work around bugs in older OpenGL drivers on
Windows); the rest of the native code is autogenerated during the
build process by a new tool called <a
-href="http://gluegen.dev.java.net/">GlueGen</a>, the source code of
+href="http://kenai.com/projects/gluegen/pages/Home/">GlueGen</a>, the source code of
which is available from its own java.net project.
</P>
@@ -92,11 +92,10 @@ the JSR has not yet been produced.
<P>
-Most developers using JOGL will download the most current <a
-href="https://jogl.dev.java.net/servlets/ProjectDocumentList">release
-build</a>. Separate instructions are available on how to <a
-href="https://jogl.dev.java.net/source/browse/*checkout*/jogl/trunk/doc/HowToBuild.html">build
-the source tree</a>.
+Most developers using JOGL will download the most current
+<a href="http://download.java.net/media/jogl/builds/archive/">release build</a>.
+Separate instructions are available on how to
+<a href="http://download.java.net/media/jogl/doc/HowToBuild.html">build the source tree</a>.
</P>
@@ -177,7 +176,7 @@ To reference JOGL within your application's JNLP file, simply place
the following line in the <code>&lt;resources&gt;</code> section:
<PRE>
- &lt;extension name="jogl" href="http://download.java.net/media/jogl/builds/archive/jsr-231-webstart-current/jogl.jnlp" /&gt;
+ &lt;extension name="jogl" href="http://download.java.net/media/jogl/jsr-231-2.x-webstart/jogl-all-awt.jnlp" /&gt;
</PRE>
This JNLP file points to the current JSR-231 unofficial development
@@ -771,7 +770,7 @@ distilled into documentation).
</P>
<P>
-The <A HREF="http://jogl-demos.dev.java.net/">JOGL demos</A> provide
+The <A HREF="http://download.java.net/media/jogl/demos/www/">JOGL demos</A> provide
several examples of usage of the library.
</P>
diff --git a/doxygen/doxygen-all-pub.cfg b/doxygen/doxygen-all-pub.cfg
index cd8dfb6a0..8bf4685cb 100644
--- a/doxygen/doxygen-all-pub.cfg
+++ b/doxygen/doxygen-all-pub.cfg
@@ -460,7 +460,7 @@ WARN_LOGFILE =
# with spaces.
INPUT = ../src/jogl/classes/javax
-INPUT += ../build/jogl/gensrc/classes/javax
+INPUT += ../build-x86_64/jogl/gensrc/classes/javax
INPUT += ../src/jogl/classes/com/sun/opengl/util
INPUT += ../src/newt/classes/com/sun/javafx/newt
diff --git a/etc/profile.jogl b/etc/profile.jogl
index c1daef85d..24cac910f 100755
--- a/etc/profile.jogl
+++ b/etc/profile.jogl
@@ -30,25 +30,25 @@ JOGL_AWT="jogl.awt.jar jogl.util.awt.jar newt.awt.jar nativewindow.awt.jar"
JOGL_CORE="nativewindow.core.jar nativewindow.x11.jar jogl.core.jar newt.core.jar newt.$OSS.jar newt.ogl.jar jogl.util.jar"
-JOGL_JAR_ALL="$JOGL_CORE jogl.gles1.jar jogl.gles1.dbg.jar jogl.gles2.jar jogl.gles2.dbg.jar jogl.egl.jar jogl.gl2es12.$OSS.jar jogl.gl2es12.dbg.jar jogl.gl2.$OSS.jar jogl.gl2.dbg.jar jogl.util.gl2.jar jogl.glu.tess.jar jogl.glu.mipmap.jar jogl.glu.gl2.jar jogl.util.gl2.jar jogl.util.fixedfuncemu.jar $JOGL_AWT jogl.cg.jar"
+JOGL_JAR_ALL="$JOGL_CORE jogl.gles1.jar jogl.gles1.dbg.jar jogl.gles2.jar jogl.gles2.dbg.jar jogl.egl.jar jogl.gl2es12.$OSS.jar jogl.gl2.$OSS.jar jogl.gl2.dbg.jar jogl.util.gl2.jar jogl.glu.tess.jar jogl.glu.mipmap.jar jogl.glu.gl2.jar jogl.util.gl2.jar jogl.util.fixedfuncemu.jar $JOGL_AWT jogl.cg.jar"
JOGL_LIB_ALL="libjogl_gl2.so libjogl_es1.so libjogl_es2.so libnewt.so libjogl_awt.so"
-JOGL_JAR_ES1_MIN="$JOGL_CORE jogl.gles1.jar jogl.egl.jar"
+JOGL_JAR_ES1_MIN="$JOGL_CORE jogl.gles1.jar jogl.gles1.dbg.jar jogl.egl.jar"
JOGL_JAR_ES1_MAX="$JOGL_CORE jogl.gles1.jar jogl.gles1.dbg.jar jogl.egl.jar jogl.glu.tess.jar jogl.glu.mipmap.jar $JOGL_AWT"
JOGL_LIB_ES1_MIN="libjogl_es1.so libnewt.so"
JOGL_LIB_ES1_MAX="libjogl_es1.so libnewt.so libjogl_awt.so libnativewindow_x11.so libnativewindow_awt.so"
-JOGL_JAR_ES2_MIN="$JOGL_CORE jogl.gles2.jar jogl.egl.jar jogl.util.fixedfuncemu.jar"
-JOGL_JAR_ES2_MAX="$JOGL_CORE jogl.gles2.jar jogl.egl.jar jogl.util.fixedfuncemu.jar jogl.glu.tess.jar $JOGL_AWT"
+JOGL_JAR_ES2_MIN="$JOGL_CORE jogl.gles2.jar jogl.gles2.dbg.jar jogl.egl.jar jogl.util.fixedfuncemu.jar"
+JOGL_JAR_ES2_MAX="$JOGL_CORE jogl.gles2.jar jogl.gles2.dbg.jar jogl.egl.jar jogl.util.fixedfuncemu.jar jogl.glu.tess.jar $JOGL_AWT"
JOGL_LIB_ES2_MIN="libjogl_es2.so libnewt.so"
JOGL_LIB_ES2_MAX="libjogl_es2.so libnewt.so libjogl_awt.so libnativewindow_x11.so libnativewindow_awt.so"
-JOGL_JAR_GL2ES12_MIN="$JOGL_CORE jogl.gl2es12.$OSS.jar jogl.util.fixedfuncemu.jar"
-JOGL_JAR_GL2ES12_MAX="$JOGL_CORE jogl.gl2es12.$OSS.jar jogl.util.fixedfuncemu.jar jogl.gl2es12.dbg.jar jogl.glu.tess.jar jogl.glu.mipmap.jar $JOGL_AWT"
+JOGL_JAR_GL2ES12_MIN="$JOGL_CORE jogl.gl2es12.$OSS.jar jogl.gles1.dbg.jar jogl.gles2.dbg.jar jogl.util.fixedfuncemu.jar"
+JOGL_JAR_GL2ES12_MAX="$JOGL_CORE jogl.gl2es12.$OSS.jar jogl.gles1.dbg.jar jogl.gles2.dbg.jar jogl.util.fixedfuncemu.jar jogl.gl2es12.dbg.jar jogl.glu.tess.jar jogl.glu.mipmap.jar $JOGL_AWT"
JOGL_LIB_GL2ES12_MIN="libjogl_gl2es12.so libnewt.so libnativewindow_x11.so libnativewindow_awt.so"
JOGL_LIB_GL2ES12_MAX="libjogl_gl2es12.so libnewt.so libnativewindow_x11.so libnativewindow_awt.so"
-JOGL_JAR_GL2_MIN="$JOGL_CORE jogl.gl2.$OSS.jar"
+JOGL_JAR_GL2_MIN="$JOGL_CORE jogl.gl2.$OSS.jar jogl.gl2.dbg.jar"
JOGL_JAR_GL2_MAX="$JOGL_CORE jogl.gl2.$OSS.jar jogl.gl2.dbg.jar jogl.glu.tess.jar jogl.glu.mipmap.jar jogl.glu.gl2.jar jogl.util.gl2.jar $JOGL_AWT jogl.cg.jar"
JOGL_LIB_GL2_MIN="libjogl_gl2.so libnewt.so libnativewindow_x11.so libnativewindow_awt.so"
JOGL_LIB_GL2_MAX="libjogl_gl2.so libnewt.so libnativewindow_x11.so libnativewindow_awt.so"
diff --git a/make/build-jogl.xml b/make/build-jogl.xml
index c48745da7..846779fed 100644
--- a/make/build-jogl.xml
+++ b/make/build-jogl.xml
@@ -51,8 +51,8 @@
-
- Some environment defs affecting compilation
- - setup.noAWT is set iff:
- !isWindows && !isOSX && !noX11
+ - setup.nodesktop is set iff:
+ !isWindows && !isOSX && !isX11
- Internal settings, may not be necessary to set them manually,
since all JAR archives are orthogonal.
@@ -75,9 +75,9 @@
<!--
- Base initialization and detection of operating system.
-->
- <target name="base.init">
+ <target name="base.init" depends="gluegen.cpptasks.detect.os">
- <condition property="setup.noAWT">
+ <condition property="setup.nodesktop">
<and>
<isfalse value="${isWindows}" />
<isfalse value="${isOSX}" />
@@ -86,25 +86,11 @@
</condition>
<condition property="setup.noall">
- <or>
- <isset property="noX11"/>
- <isset property="setup.noAWT"/>
- </or>
- </condition>
- <condition property="setup.noall-cdc">
- <or>
- <isset property="noX11"/>
- </or>
- </condition>
- <condition property="setup.nodesktop">
- <or>
- <isset property="noX11"/>
- </or>
+ <isset property="setup.noAWT"/>
</condition>
<echo message="setup.nodesktop: ${setup.nodesktop}" />
<echo message="setup.noall: ${setup.noall}" />
- <echo message="setup.noall-cdc: ${setup.noall-cdc}" />
<echo message="setup.noAWT: ${setup.noAWT}" />
<echo message="setup.noCDC: ${setup.noCDC}" />
@@ -157,7 +143,7 @@
value="com/sun/opengl/impl/**/gl2/**"/>
<property name="java.part.gl2.dbg"
- value="javax/media/opengl/TraceGL2.* javax/media/opengl/DebugGL2.*"/>
+ value="javax/media/opengl/TraceGL2.* javax/media/opengl/DebugGL2.* javax/media/opengl/TraceGL2GL3.* javax/media/opengl/DebugGL2GL3.*"/>
<property name="java.part.es1"
value="javax/media/opengl/**/es1/** com/sun/opengl/**/es1/**"/>
@@ -651,6 +637,25 @@
</gluegen>
</target>
+ <target name="java.generate.gl2_gl3_if">
+ <echo message="Generating GL2_GL3 interface" />
+ <antcall target="java.generate.copy2temp" inheritRefs="true" />
+ <gluegen src="${stub.includes.opengl}/gl3.c"
+ outputRootDir="${build}"
+ config="${config}/gl-gl3-set.cfg"
+ includeRefid="stub.includes.fileset.all.gl2"
+ emitter="com.sun.gluegen.opengl.GLEmitter">
+ <classpath refid="gluegen.classpath" />
+ </gluegen>
+ <gluegen src="${stub.includes.opengl}/gl2.c"
+ outputRootDir="${build}"
+ config="${config}/gl-if-gl2_gl3.cfg"
+ includeRefid="stub.includes.fileset.all.gl2"
+ emitter="com.sun.gluegen.opengl.GLEmitter">
+ <classpath refid="gluegen.classpath" />
+ </gluegen>
+ </target>
+
<target name="java.generate.gl2">
<echo message="Generating GL2 interface and implementation" />
<antcall target="java.generate.copy2temp" inheritRefs="true" />
@@ -711,7 +716,7 @@
</gluegen>
</target>
- <target name="java.generate.gl.all" depends="java.generate.gl_if, java.generate.gl2_es1_if, java.generate.gl2_es2_if, java.generate.gl2, java.generate.gl3, java.generate.gl2es12, java.generate.gles1, java.generate.gles2"/>
+ <target name="java.generate.gl.all" depends="java.generate.gl_if, java.generate.gl2_es1_if, java.generate.gl2_es2_if, java.generate.gl2_gl3_if, java.generate.gl2, java.generate.gl3, java.generate.gl2es12, java.generate.gles1, java.generate.gles2"/>
<!-- target name="java.generate.gl.nsig" if="gluegen.nsig">
<echo message="Generating GL interface and implementation" />
@@ -1033,9 +1038,14 @@
<arg value="${src.generated.java}/javax/media/opengl" />
<classpath refid="pipeline.classpath" />
</java>
+ <java classname="com.sun.gluegen.opengl.BuildComposablePipeline" fork="yes" failonerror="true">
+ <arg value="javax.media.opengl.GL2GL3" />
+ <arg value="${src.generated.java}/javax/media/opengl" />
+ <classpath refid="pipeline.classpath" />
+ </java>
<copy todir="${src.generated.java-cdc}">
<fileset dir="${src.generated.java}"
- includes="javax/media/opengl/DebugGL2.java javax/media/opengl/TraceGL2.java" />
+ includes="javax/media/opengl/DebugGL2.java javax/media/opengl/TraceGL2.java javax/media/opengl/DebugGL2GL3.java javax/media/opengl/TraceGL2GL3.java" />
</copy>
</target>
@@ -1098,7 +1108,7 @@
<!-- Perform the first pass Java compile. -->
<javac destdir="${classes}"
- includes="javax/media/opengl/fixedfunc/** javax/media/opengl/GLDrawableFactory.java javax/media/opengl/GLDrawable.java javax/media/opengl/GLContext.java javax/media/opengl/GL.java javax/media/opengl/GL2ES1.java javax/media/opengl/GL2ES2.java javax/media/opengl/GL2.java javax/media/opengl/GLES1.java javax/media/opengl/GLES2.java javax/media/opengl/GL3.java"
+ includes="javax/media/opengl/fixedfunc/** javax/media/opengl/GLDrawableFactory.java javax/media/opengl/GLDrawable.java javax/media/opengl/GLContext.java javax/media/opengl/GL.java javax/media/opengl/GL2ES1.java javax/media/opengl/GL2ES2.java javax/media/opengl/GL2GL3.java javax/media/opengl/GL2.java javax/media/opengl/GLES1.java javax/media/opengl/GLES2.java javax/media/opengl/GL3.java"
fork="yes"
memoryMaximumSize="${javac.memorymax}"
source="1.4" debug="${javacdebug}" debuglevel="${javacdebuglevel}">
@@ -1199,12 +1209,9 @@
<!-- linker configuration -->
- <linker id="linker.cfg.linux.jogl.x11" extends="linker.cfg.linux">
+ <linker id="linker.cfg.linux.jogl.gl2" extends="linker.cfg.linux">
<syslibset dir="/usr/X11R6/lib" libs="X11"/>
<syslibset dir="/usr/X11R6/lib" libs="Xxf86vm" />
- </linker>
-
- <linker id="linker.cfg.linux.jogl.gl2" extends="linker.cfg.linux.jogl.x11">
<syslibset dir="/usr/X11R6/lib" libs="GL"/>
</linker>
@@ -1289,8 +1296,6 @@
<target name="c.configure.win32.vc" if="isVCFamily">
<echo message="Win32.VC" />
<property name="compiler.cfg.id" value="compiler.cfg.win32.msvc" />
- <property name="linker.cfg.id.core" value="linker.cfg.win32.msvc" />
- <property name="linker.cfg.id.oswin" value="linker.cfg.win32.msvc.jogl" />
<property name="linker.cfg.id.gl2" value="linker.cfg.win32.msvc.jogl" />
<property name="linker.cfg.id.cg" value="linker.cfg.win32.msvc.jogl.cg" />
</target>
@@ -1298,8 +1303,6 @@
<target name="c.configure.win32.mingw" if="isMingW">
<echo message="Win32.MingW" />
<property name="compiler.cfg.id" value="compiler.cfg.win32.mingw" />
- <property name="linker.cfg.id.core" value="linker.cfg.win32.mingw" />
- <property name="linker.cfg.id.oswin" value="linker.cfg.win32.mingw.jogl" />
<property name="linker.cfg.id.gl2" value="linker.cfg.win32.mingw.jogl" />
<property name="linker.cfg.id.cg" value="linker.cfg.win32.mingw.jogl.cg" />
</target>
@@ -1307,8 +1310,6 @@
<target name="c.configure.linux.x86" if="isLinuxX86">
<echo message="Linux.x86" />
<property name="compiler.cfg.id" value="compiler.cfg.linux" />
- <property name="linker.cfg.id.core" value="linker.cfg.linux" />
- <property name="linker.cfg.id.oswin" value="linker.cfg.linux.jogl.x11" />
<property name="linker.cfg.id.gl2" value="linker.cfg.linux.jogl.gl2" />
<property name="linker.cfg.id.cg" value="linker.cfg.linux.jogl.cg" />
</target>
@@ -1316,8 +1317,6 @@
<target name="c.configure.linux.amd64" if="isLinuxAMD64">
<echo message="Linux.AMD64" />
<property name="compiler.cfg.id" value="compiler.cfg.linux.amd64" />
- <property name="linker.cfg.id.core" value="linker.cfg.linux.amd64" />
- <property name="linker.cfg.id.oswin" value="linker.cfg.linux.amd64.jogl.x11" />
<property name="linker.cfg.id.gl2" value="linker.cfg.linux.amd64.jogl.gl2" />
<property name="linker.cfg.id.cg" value="linker.cfg.linux.amd64.jogl.cg" />
</target>
@@ -1325,8 +1324,6 @@
<target name="c.configure.linux.ia64" if="isLinuxIA64">
<echo message="Linux.IA64" />
<property name="compiler.cfg.id" value="compiler.cfg.linux" />
- <property name="linker.cfg.id.core" value="linker.cfg.linux" />
- <property name="linker.cfg.id.oswin" value="linker.cfg.linux.jogl.x11" />
<property name="linker.cfg.id.gl2" value="linker.cfg.linux.jogl.gl2" />
<property name="linker.cfg.id.cg" value="linker.cfg.linux.jogl.cg" />
</target>
@@ -1336,8 +1333,6 @@
<target name="c.configure.solaris32" depends="c.configure.x11" if="isSolaris32Bit">
<echo message="Solaris" />
<property name="compiler.cfg.id" value="compiler.cfg.solaris" />
- <property name="linker.cfg.id.core" value="linker.cfg.solaris" />
- <property name="linker.cfg.id.oswin" value="linker.cfg.solaris.jogl.x11" />
<property name="linker.cfg.id.gl2" value="linker.cfg.solaris.jogl.gl2" />
<property name="linker.cfg.id.cg" value="linker.cfg.solaris.jogl.cg" />
</target>
@@ -1346,8 +1341,6 @@
<target name="c.configure.solaris.sparcv9" depends="c.configure.x11" if="isSolarisSparcv9">
<echo message="SolarisSparcv9" />
<property name="compiler.cfg.id" value="compiler.cfg.solaris.sparcv9" />
- <property name="linker.cfg.id.core" value="linker.cfg.solaris.sparcv9" />
- <property name="linker.cfg.id.oswin" value="linker.cfg.solaris.sparcv9.jogl.x11" />
<property name="linker.cfg.id.gl2" value="linker.cfg.solaris.sparcv9.jogl.gl2" />
<property name="linker.cfg.id.cg" value="linker.cfg.solaris.sparcv9.jogl.cg" />
</target>
@@ -1356,8 +1349,6 @@
<target name="c.configure.solaris.amd64" depends="c.configure.x11" if="isSolarisAMD64">
<echo message="SolarisAMD64" />
<property name="compiler.cfg.id" value="compiler.cfg.solaris.amd64" />
- <property name="linker.cfg.id.core" value="linker.cfg.solaris.amd64" />
- <property name="linker.cfg.id.oswin" value="linker.cfg.solaris.amd64.jogl.x11" />
<property name="linker.cfg.id.gl2" value="linker.cfg.solaris.amd64.jogl.gl2" />
<property name="linker.cfg.id.cg" value="linker.cfg.solaris.amd64.jogl.cg" />
</target>
@@ -1365,8 +1356,6 @@
<target name="c.configure.freebsd" depends="c.configure.x11" if="isFreeBSD">
<echo message="FreeBSD" />
<property name="compiler.cfg.id" value="compiler.cfg.freebsd.jogl" />
- <property name="linker.cfg.id.core" value="linker.cfg.linux" />
- <property name="linker.cfg.id.oswin" value="linker.cfg.linux.jogl.x11" />
<property name="linker.cfg.id.gl2" value="linker.cfg.linux.jogl.gl2" />
<property name="linker.cfg.id.cg" value="linker.cfg.linux.jogl.cg" />
</target>
@@ -1374,8 +1363,6 @@
<target name="c.configure.hpux" depends="c.configure.x11" if="isHPUX">
<echo message="HP-UX" />
<property name="compiler.cfg.id" value="compiler.cfg.hpux" />
- <property name="linker.cfg.id.core" value="linker.cfg.hpux" />
- <property name="linker.cfg.id.oswin" value="linker.cfg.hpux.jogl.x11" />
<property name="linker.cfg.id.gl2" value="linker.cfg.hpux.jogl.gl2" />
<property name="linker.cfg.id.cg" value="linker.cfg.hpux.jogl.cg" />
</target>
@@ -1386,8 +1373,6 @@
<target name="c.configure.macosx" if="isOSX">
<property name="compiler.cfg.id" value="compiler.cfg.macosx" />
- <property name="linker.cfg.id.core" value="linker.cfg.macosx" />
- <property name="linker.cfg.id.oswin" value="linker.cfg.macosx.jogl" />
<property name="linker.cfg.id.gl2" value="linker.cfg.macosx.jogl" />
<property name="linker.cfg.id.cg" value="linker.cfg.macosx.jogl.cg" />
</target>
@@ -1546,7 +1531,7 @@
</macrodef>
<target name="c.build.jogl.prepare.openMAX" if="useOpenMAX">
- <javah destdir="${build}/gensrc/native/openmax" classpath="${classes-cdc}" class="com.sun.openmax.OMXInstance" />
+ <javah destdir="${src.generated.c.openmax}" classpath="${classes-cdc}" class="com.sun.openmax.OMXInstance" />
</target>
<target name="c.build.jogl.prepare" depends="c.build.jogl.prepare.openMAX">
@@ -1606,12 +1591,12 @@
<target name="c.build.jogl" depends="c.configure,c.build.jogl.prepare,c.build.jogl.gl2es12,c.build.jogl.gl2,c.build.jogl.es2,c.build.jogl.es1,c.build.jogl.cg">
<antcall target="c.manifest" inheritRefs="true" />
<!-- Create the Java Web Start jar file for the built native code -->
- <jar destfile="${build}/jogl-natives-${os.and.arch}.jar">
+ <jar destfile="${build}/jogl-natives-${os.and.arch}.jar" filesonly="true">
<fileset dir="${obj}">
<include name="*.${native.library.suffix}" />
</fileset>
</jar>
- <jar destfile="${build}/jogl-natives-${os.and.arch}-cdc.jar">
+ <jar destfile="${build}/jogl-natives-${os.and.arch}-cdc.jar" filesonly="true">
<fileset dir="${obj}">
<include name="*_es1.${native.library.suffix-cdc}" />
<include name="*_es2.${native.library.suffix-cdc}" />
@@ -1675,24 +1660,24 @@
</target>
<target name="build-cg-jar" depends="setup-manifestfile" if="jogl.cg">
- <jar manifest="${build}/tempversion" destfile="${jogl.cg.jar}">
+ <jar manifest="${build}/tempversion" destfile="${jogl.cg.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.nv-cg}"/>
</jar>
</target>
<target name="build-jars-es-desktop" depends="setup-manifestfile" unless="setup.nodesktop">
- <jar manifest="${build}/tempversion" destfile="${jogl.gl2es12.x11.jar}">
+ <jar manifest="${build}/tempversion" destfile="${jogl.gl2es12.x11.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.glx}, ${java.part.gl2es12}, ${java.part.openmax}"
excludes="${java.part.glugl2}"/>
</jar>
- <jar manifest="${build}/tempversion" destfile="${jogl.gl2es12.win.jar}">
+ <jar manifest="${build}/tempversion" destfile="${jogl.gl2es12.win.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.wgl}, ${java.part.gl2es12}, ${java.part.openmax}"
excludes="${java.part.glugl2}"/>
</jar>
- <jar manifest="${build}/tempversion" destfile="${jogl.gl2es12.osx.jar}">
+ <jar manifest="${build}/tempversion" destfile="${jogl.gl2es12.osx.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.cgl}, ${java.part.gl2es12}, ${java.part.openmax}"
excludes="${java.part.glugl2}"/>
@@ -1700,43 +1685,43 @@
</target>
<target name="build-jars-es" depends="setup-manifestfile,build-jars-es-desktop">
- <jar manifest="${build}/tempversion" destfile="${jogl.egl.jar}">
+ <jar manifest="${build}/tempversion" destfile="${jogl.egl.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.egl}"
excludes="${java.part.awt}"/>
</jar>
- <jar manifest="${build}/tempversion" destfile="${jogl.gles1.jar}">
+ <jar manifest="${build}/tempversion" destfile="${jogl.gles1.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.es1}"
excludes="${java.part.es1.dbg}"/>
</jar>
- <jar manifest="${build}/tempversion" destfile="${jogl.gles1.dbg.jar}">
+ <jar manifest="${build}/tempversion" destfile="${jogl.gles1.dbg.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.es1.dbg}"/>
</jar>
- <jar manifest="${build}/tempversion" destfile="${jogl.gles2.jar}">
+ <jar manifest="${build}/tempversion" destfile="${jogl.gles2.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.es2}, ${java.part.openmax}"
excludes="${java.part.es2.dbg}"/>
</jar>
- <jar manifest="${build}/tempversion" destfile="${jogl.gles2.dbg.jar}">
+ <jar manifest="${build}/tempversion" destfile="${jogl.gles2.dbg.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.es2.dbg}"/>
</jar>
</target>
<target name="build-jars-es-desktop-cdc" depends="setup-manifestfile-cdc" unless="setup.nodesktop">
- <jar manifest="${build}/tempversion-cdc" destfile="${jogl.gl2es12.x11.cdc.jar}">
+ <jar manifest="${build}/tempversion-cdc" destfile="${jogl.gl2es12.x11.cdc.jar}" filesonly="true">
<fileset dir="${classes-cdc}"
includes="${java.part.glx}, ${java.part.gl2es12}, ${java.part.openmax}"
excludes="${java.part.glugl2}"/>
</jar>
- <jar manifest="${build}/tempversion-cdc" destfile="${jogl.gl2es12.win.cdc.jar}">
+ <jar manifest="${build}/tempversion-cdc" destfile="${jogl.gl2es12.win.cdc.jar}" filesonly="true">
<fileset dir="${classes-cdc}"
includes="${java.part.wgl}, ${java.part.gl2es12}, ${java.part.openmax}"
excludes="${java.part.glugl2}"/>
</jar>
- <jar manifest="${build}/tempversion-cdc" destfile="${jogl.gl2es12.osx.cdc.jar}">
+ <jar manifest="${build}/tempversion-cdc" destfile="${jogl.gl2es12.osx.cdc.jar}" filesonly="true">
<fileset dir="${classes-cdc}"
includes="${java.part.cgl}, ${java.part.gl2es12}, ${java.part.openmax}"
excludes="${java.part.glugl2}"/>
@@ -1744,44 +1729,44 @@
</target>
<target name="build-jars-es-cdc" depends="setup-manifestfile-cdc,build-jars-es-desktop-cdc" unless="setup.noCDC">
- <jar manifest="${build}/tempversion-cdc" destfile="${jogl.egl.cdc.jar}">
+ <jar manifest="${build}/tempversion-cdc" destfile="${jogl.egl.cdc.jar}" filesonly="true">
<fileset dir="${classes-cdc}"
includes="${java.part.egl}"
excludes="${java.part.awt}"/>
</jar>
- <jar manifest="${build}/tempversion-cdc" destfile="${jogl.gles1.cdc.jar}">
+ <jar manifest="${build}/tempversion-cdc" destfile="${jogl.gles1.cdc.jar}" filesonly="true">
<fileset dir="${classes-cdc}"
includes="${java.part.es1}"
excludes="${java.part.es1.dbg}"/>
</jar>
- <jar manifest="${build}/tempversion-cdc" destfile="${jogl.gles1.dbg.cdc.jar}">
+ <jar manifest="${build}/tempversion-cdc" destfile="${jogl.gles1.dbg.cdc.jar}" filesonly="true">
<fileset dir="${classes-cdc}"
includes="${java.part.es1.dbg}"/>
</jar>
- <jar manifest="${build}/tempversion-cdc" destfile="${jogl.gles2.cdc.jar}">
+ <jar manifest="${build}/tempversion-cdc" destfile="${jogl.gles2.cdc.jar}" filesonly="true">
<fileset dir="${classes-cdc}"
includes="${java.part.es2}, ${java.part.openmax}"
excludes="${java.part.es2.dbg}"/>
</jar>
- <jar manifest="${build}/tempversion-cdc" destfile="${jogl.gles2.dbg.cdc.jar}">
+ <jar manifest="${build}/tempversion-cdc" destfile="${jogl.gles2.dbg.cdc.jar}" filesonly="true">
<fileset dir="${classes-cdc}"
includes="${java.part.es2.dbg}"/>
</jar>
</target>
<target name="build-jars-awt" depends="setup-manifestfile" unless="setup.noAWT">
- <jar manifest="${build}/tempversion" destfile="${jogl.awt.jar}">
+ <jar manifest="${build}/tempversion" destfile="${jogl.awt.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.awt}" />
</jar>
- <jar manifest="${build}/tempversion" destfile="${jogl.util.awt.jar}">
+ <jar manifest="${build}/tempversion" destfile="${jogl.util.awt.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.util.awt}"/>
</jar>
</target>
<target name="build-jars-all" depends="setup-manifestfile" unless="setup.noall">
- <jar manifest="${build}/tempversion" destfile="${jogl.all.jar}">
+ <jar manifest="${build}/tempversion" destfile="${jogl.all.jar}" filesonly="true">
<fileset dir="${classes}">
<include name="javax/media/opengl/**" />
<include name="com/sun/gluegen/runtime/**" />
@@ -1791,11 +1776,11 @@
<include name="com/sun/javafx/**" />
</fileset>
<fileset dir="${src.java}"
- includes="${java.part.util.fixedfunc.shaders}"/>
+ includes="${java.part.util.fixedfuncemu.shadercode}"/>
</jar>
</target>
- <target name="build-jars-all-cdc" depends="setup-manifestfile" unless="setup.noall-cdc">
- <jar manifest="${build}/tempversion-cdc" destfile="${jogl.all.cdc.jar}">
+ <target name="build-jars-all-cdc" depends="setup-manifestfile">
+ <jar manifest="${build}/tempversion-cdc" destfile="${jogl.all.cdc.jar}" filesonly="true">
<fileset dir="${classes-cdc}"
includes="${java.part.core} ${java.part.egl} ${java.part.glutess} ${java.part.glumipmap} ${java.part.openmax} ${java.part.sdk} ${java.part.glx} ${java.part.cgl} ${java.part.gl2es12} ${java.part.wgl} ${java.part.es1} ${java.part.es1.dbg} ${java.part.es2} ${java.part.es2.dbg} ${java.part.util} ${java.part.util.glsl} ${java.part.util.fixedfuncemu}"
excludes="${java.excludes.cdcfp}"/>
@@ -1806,25 +1791,25 @@
<target name="build-jars-cdc" depends="setup-manifestfile-cdc, build-jars-es-cdc, build-jars-all-cdc" unless="setup.noCDC">
- <jar manifest="${build}/tempversion-cdc" destfile="${jogl.core.cdc.jar}">
+ <jar manifest="${build}/tempversion-cdc" destfile="${jogl.core.cdc.jar}" filesonly="true">
<fileset dir="${classes-cdc}"
includes="${java.part.core}"
excludes="${java.part.core.exclude}"/>
</jar>
- <jar manifest="${build}/tempversion-cdc" destfile="${jogl.glutess.cdc.jar}">
+ <jar manifest="${build}/tempversion-cdc" destfile="${jogl.glutess.cdc.jar}" filesonly="true">
<fileset dir="${classes-cdc}"
includes="${java.part.glutess}"/>
</jar>
- <jar manifest="${build}/tempversion-cdc" destfile="${jogl.glumipmap.cdc.jar}">
+ <jar manifest="${build}/tempversion-cdc" destfile="${jogl.glumipmap.cdc.jar}" filesonly="true">
<fileset dir="${classes-cdc}"
includes="${java.part.glumipmap}"/>
</jar>
- <jar manifest="${build}/tempversion-cdc" destfile="${jogl.util.cdc.jar}">
+ <jar manifest="${build}/tempversion-cdc" destfile="${jogl.util.cdc.jar}" filesonly="true">
<fileset dir="${classes-cdc}"
includes="${java.part.util} ${java.part.util.glsl}"
excludes="${java.part.util.awt} ${java.part.util.gl2} ${java.part.util.fixedfuncemu}"/>
</jar>
- <jar manifest="${build}/tempversion-cdc" destfile="${jogl.util.fixedfuncemu.cdc.jar}">
+ <jar manifest="${build}/tempversion-cdc" destfile="${jogl.util.fixedfuncemu.cdc.jar}" filesonly="true">
<fileset dir="${classes-cdc}"
includes="${java.part.util.fixedfuncemu}"/>
<fileset dir="${src.java}"
@@ -1833,30 +1818,30 @@
</target>
<target name="build-jars-desktop-javase" depends="setup-manifestfile" unless="setup.nodesktop">
- <jar manifest="${build}/tempversion" destfile="${jogl.gl2.x11.jar}">
+ <jar manifest="${build}/tempversion" destfile="${jogl.gl2.x11.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.glx}, ${java.part.gl2}, ${java.part.gl3}, ${java.part.openmax}"
- excludes="${java.part.gl2.dbg}, ${java.part.glugl2}"/>
+ excludes="${java.part.gl2.dbg}, ${java.part.gl3.dbg}, ${java.part.glugl2}"/>
</jar>
- <jar manifest="${build}/tempversion" destfile="${jogl.gl2.win.jar}">
+ <jar manifest="${build}/tempversion" destfile="${jogl.gl2.win.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.wgl}, ${java.part.gl2}, $${java.part.gl3}, {java.part.openmax}"
- excludes="${java.part.gl2.dbg}, ${java.part.glugl2}"/>
+ excludes="${java.part.gl2.dbg}, ${java.part.gl3.dbg}, ${java.part.glugl2}"/>
</jar>
- <jar manifest="${build}/tempversion" destfile="${jogl.gl2.osx.jar}">
+ <jar manifest="${build}/tempversion" destfile="${jogl.gl2.osx.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.cgl}, ${java.part.gl2}, $${java.part.gl3}, {java.part.openmax}"
- excludes="${java.part.gl2.dbg}, ${java.part.glugl2}"/>
+ excludes="${java.part.gl2.dbg}, ${java.part.gl3.dbg}, ${java.part.glugl2}"/>
</jar>
- <jar manifest="${build}/tempversion" destfile="${jogl.gl2.dbg.jar}">
+ <jar manifest="${build}/tempversion" destfile="${jogl.gl2.dbg.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.gl2.dbg} ${java.part.gl3.dbg}"/>
</jar>
- <jar manifest="${build}/tempversion" destfile="${jogl.glugl2.jar}">
+ <jar manifest="${build}/tempversion" destfile="${jogl.glugl2.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.glugl2}"/>
</jar>
- <jar manifest="${build}/tempversion" destfile="${jogl.util.gl2.jar}">
+ <jar manifest="${build}/tempversion" destfile="${jogl.util.gl2.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.util.gl2}"
excludes="com/sun/opengl/**/awt/**"/>
@@ -1864,29 +1849,29 @@
</target>
<target name="build-jars-javase" depends="setup-manifestfile, build-jars-es, build-jars-awt, build-cg-jar, build-jars-all, build-jars-desktop-javase">
- <jar manifest="${build}/tempversion" destfile="${jogl.core.jar}">
+ <jar manifest="${build}/tempversion" destfile="${jogl.core.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.core}"
excludes="${java.part.core.exclude}"/>
</jar>
- <jar manifest="${build}/tempversion" destfile="${jogl.sdk.jar}">
+ <jar manifest="${build}/tempversion" destfile="${jogl.sdk.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.sdk}"/>
</jar>
- <jar manifest="${build}/tempversion" destfile="${jogl.glutess.jar}">
+ <jar manifest="${build}/tempversion" destfile="${jogl.glutess.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.glutess}"/>
</jar>
- <jar manifest="${build}/tempversion" destfile="${jogl.glumipmap.jar}">
+ <jar manifest="${build}/tempversion" destfile="${jogl.glumipmap.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.glumipmap}"/>
</jar>
- <jar manifest="${build}/tempversion" destfile="${jogl.util.jar}">
+ <jar manifest="${build}/tempversion" destfile="${jogl.util.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.util} ${java.part.util.glsl}"
excludes="${java.part.util.awt} ${java.part.util.gl2} ${java.part.util.fixedfuncemu}"/>
</jar>
- <jar manifest="${build}/tempversion" destfile="${jogl.util.fixedfuncemu.jar}">
+ <jar manifest="${build}/tempversion" destfile="${jogl.util.fixedfuncemu.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.util.fixedfuncemu}"/>
<fileset dir="${src.java}"
diff --git a/make/build-nativewindow.xml b/make/build-nativewindow.xml
index 79e6b93ae..ce7081464 100644
--- a/make/build-nativewindow.xml
+++ b/make/build-nativewindow.xml
@@ -44,8 +44,8 @@
-
- Some environment defs affecting compilation
- - setup.noAWT is set iff:
- !isWindows && !isOSX && !noX11
+ - setup.nodesktop is set iff:
+ !isWindows && !isOSX && !isX11
- Internal settings, may not be necessary to set them manually,
since all JAR archives are orthogonal.
@@ -66,9 +66,9 @@
<!--
- Base initialization and detection of operating system.
-->
- <target name="base.init">
+ <target name="base.init" depends="gluegen.cpptasks.detect.os">
- <condition property="setup.noAWT">
+ <condition property="setup.nodesktop">
<and>
<isfalse value="${isWindows}" />
<isfalse value="${isOSX}" />
@@ -76,23 +76,23 @@
</and>
</condition>
- <condition property="setup.noall">
+ <condition property="setup.noNativeAWT">
<or>
- <isset property="noX11"/>
<isset property="setup.noAWT"/>
+ <isset property="setup.nodesktop"/>
</or>
</condition>
- <condition property="setup.noall-cdc">
- <or>
- <isset property="noX11"/>
- </or>
+
+ <condition property="setup.noall">
+ <isset property="setup.noAWT"/>
</condition>
<property name="javac.bootclasspath-cdc.jar" value="../../gluegen/make/lib/cdc_fp.jar" />
+ <echo message="setup.nodesktop: ${setup.nodesktop}" />
<echo message="setup.noall: ${setup.noall}" />
- <echo message="setup.noall-cdc: ${setup.noall-cdc}" />
<echo message="setup.noAWT: ${setup.noAWT}" />
+ <echo message="setup.noNativeAWT: ${setup.noNativeAWT}" />
<echo message="javac.bootclasspath-cdc.jar: ${javac.bootclasspath-cdc.jar}" />
<!-- partitioning -->
@@ -108,17 +108,12 @@
<!-- condition excludes -->
- <condition property="java.excludes.x11"
- value="${java.part.x11}">
- <isset property="noX11"/>
- </condition>
-
<condition property="java.excludes.awt"
value="${java.part.awt}">
<isset property="setup.noAWT"/>
</condition>
- <property name="java.excludes.all" value="${java.excludes.awt} ${java.excludes.x11}" />
+ <property name="java.excludes.all" value="${java.excludes.awt}" />
<echo message="java.excludes.all: ${java.excludes.all}" />
@@ -533,35 +528,30 @@
<target name="c.configure.win32.vc" if="isVCFamily">
<echo message="Win32.VC" />
<property name="compiler.cfg.id" value="compiler.cfg.win32.msvc" />
- <property name="linker.cfg.id.core" value="linker.cfg.win32.msvc" />
<property name="linker.cfg.id.oswin" value="linker.cfg.win32.msvc.nativewindow" />
</target>
<target name="c.configure.win32.mingw" if="isMingW">
<echo message="Win32.MingW" />
<property name="compiler.cfg.id" value="compiler.cfg.win32.mingw" />
- <property name="linker.cfg.id.core" value="linker.cfg.win32.mingw" />
<property name="linker.cfg.id.oswin" value="linker.cfg.win32.mingw.nativewindow" />
</target>
<target name="c.configure.linux.x86" if="isLinuxX86">
<echo message="Linux.x86" />
<property name="compiler.cfg.id" value="compiler.cfg.linux" />
- <property name="linker.cfg.id.core" value="linker.cfg.linux" />
<property name="linker.cfg.id.oswin" value="linker.cfg.linux.nativewindow.x11" />
</target>
<target name="c.configure.linux.amd64" if="isLinuxAMD64">
<echo message="Linux.AMD64" />
<property name="compiler.cfg.id" value="compiler.cfg.linux.amd64" />
- <property name="linker.cfg.id.core" value="linker.cfg.linux.amd64" />
<property name="linker.cfg.id.oswin" value="linker.cfg.linux.amd64.nativewindow.x11" />
</target>
<target name="c.configure.linux.ia64" if="isLinuxIA64">
<echo message="Linux.IA64" />
<property name="compiler.cfg.id" value="compiler.cfg.linux" />
- <property name="linker.cfg.id.core" value="linker.cfg.linux" />
<property name="linker.cfg.id.oswin" value="linker.cfg.linux.nativewindow.x11" />
</target>
@@ -570,7 +560,6 @@
<target name="c.configure.solaris32" depends="c.configure.x11" if="isSolaris32Bit">
<echo message="Solaris" />
<property name="compiler.cfg.id" value="compiler.cfg.solaris" />
- <property name="linker.cfg.id.core" value="linker.cfg.solaris" />
<property name="linker.cfg.id.oswin" value="linker.cfg.solaris.nativewindow.x11" />
</target>
@@ -578,7 +567,6 @@
<target name="c.configure.solaris.sparcv9" depends="c.configure.x11" if="isSolarisSparcv9">
<echo message="SolarisSparcv9" />
<property name="compiler.cfg.id" value="compiler.cfg.solaris.sparcv9" />
- <property name="linker.cfg.id.core" value="linker.cfg.solaris.sparcv9" />
<property name="linker.cfg.id.oswin" value="linker.cfg.solaris.sparcv9.nativewindow.x11" />
</target>
@@ -586,21 +574,18 @@
<target name="c.configure.solaris.amd64" depends="c.configure.x11" if="isSolarisAMD64">
<echo message="SolarisAMD64" />
<property name="compiler.cfg.id" value="compiler.cfg.solaris.amd64" />
- <property name="linker.cfg.id.core" value="linker.cfg.solaris.amd64" />
<property name="linker.cfg.id.oswin" value="linker.cfg.solaris.amd64.nativewindow.x11" />
</target>
<target name="c.configure.freebsd" depends="c.configure.x11" if="isFreeBSD">
<echo message="FreeBSD" />
<property name="compiler.cfg.id" value="compiler.cfg.freebsd.nativewindow" />
- <property name="linker.cfg.id.core" value="linker.cfg.linux" />
<property name="linker.cfg.id.oswin" value="linker.cfg.linux.nativewindow.x11" />
</target>
<target name="c.configure.hpux" depends="c.configure.x11" if="isHPUX">
<echo message="HP-UX" />
<property name="compiler.cfg.id" value="compiler.cfg.hpux" />
- <property name="linker.cfg.id.core" value="linker.cfg.hpux" />
<property name="linker.cfg.id.oswin" value="linker.cfg.hpux.nativewindow.x11" />
</target>
@@ -610,7 +595,6 @@
<target name="c.configure.macosx" if="isOSX">
<property name="compiler.cfg.id" value="compiler.cfg.macosx" />
- <property name="linker.cfg.id.core" value="linker.cfg.macosx" />
<property name="linker.cfg.id.oswin" value="linker.cfg.macosx.nativewindow" />
</target>
@@ -733,7 +717,7 @@
</sequential>
</macrodef>
- <target name="c.fixup.jawt.version.macosx" if="isOSX" unless="setup.noAWT">
+ <target name="c.fixup.jawt.version.macosx" if="isOSX" unless="setup.noNativeAWT">
<!-- Edit the link to the JAWT version in the resulting jnilib
file; this isn't strictly needed but seems to allow the
universal binaries to work on 10.3 machines as well, which
@@ -751,10 +735,10 @@
<c.build c.compiler.src.files="c.src.files.jvm"
output.lib.name="nativewindow_jvm"
compiler.cfg.id="${compiler.cfg.id}"
- linker.cfg.id="${linker.cfg.id.oswin}"/>
+ linker.cfg.id="${linker.cfg.id.base}"/>
</target>
- <target name="c.build.nativewindow.awt" unless="setup.noAWT">
+ <target name="c.build.nativewindow.awt" unless="setup.noNativeAWT">
<c.build c.compiler.src.files="c.src.files.awt"
c.compiler.use-jawt="true"
output.lib.name="nativewindow_awt"
@@ -781,12 +765,12 @@
<antcall target="c.fixup.jawt.version.macosx" inheritrefs="true" />
<antcall target="c.manifest" inheritRefs="true" />
<!-- Create the Java Web Start jar file for the built native code -->
- <jar destfile="${build}/nativewindow-natives-${os.and.arch}.jar">
+ <jar destfile="${build}/nativewindow-natives-${os.and.arch}.jar" filesonly="true">
<fileset dir="${obj}">
<include name="*.${native.library.suffix}" />
</fileset>
</jar>
- <jar destfile="${build}/nativewindow-natives-${os.and.arch}-cdc.jar">
+ <jar destfile="${build}/nativewindow-natives-${os.and.arch}-cdc.jar" filesonly="true">
<fileset dir="${obj}">
<include name="*_jvm.${native.library.suffix-cdc}" />
<include name="*_x11.${native.library.suffix-cdc}" />
@@ -846,28 +830,28 @@
<target name="build-jars-awt" depends="setup-manifestfile" unless="setup.noAWT">
- <jar manifest="tempversion" destfile="${nativewindow.awt.jar}">
+ <jar manifest="tempversion" destfile="${nativewindow.awt.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.awt}"
excludes="${java.excludes.awt}"/>
</jar>
</target>
- <target name="build-jars-x11" depends="setup-manifestfile" unless="noX11">
- <jar manifest="tempversion" destfile="${nativewindow.x11.jar}">
+ <target name="build-jars-x11" depends="setup-manifestfile">
+ <jar manifest="tempversion" destfile="${nativewindow.x11.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.x11}" />
</jar>
</target>
- <target name="build-jars-x11-cdc" depends="setup-manifestfile-cdc" unless="noX11">
- <jar manifest="tempversion-cdc" destfile="${nativewindow.x11.cdc.jar}">
+ <target name="build-jars-x11-cdc" depends="setup-manifestfile-cdc">
+ <jar manifest="tempversion-cdc" destfile="${nativewindow.x11.cdc.jar}" filesonly="true">
<fileset dir="${classes-cdc}"
includes="${java.part.x11}" />
</jar>
</target>
<target name="build-jars-all" depends="setup-manifestfile" unless="setup.noall">
- <jar manifest="tempversion" destfile="${nativewindow.all.jar}">
+ <jar manifest="tempversion" destfile="${nativewindow.all.jar}" filesonly="true">
<fileset dir="${classes}">
<include name="javax/media/nativewindow/**" />
<include name="com/sun/nativewindow/**" />
@@ -876,8 +860,8 @@
</fileset>
</jar>
</target>
- <target name="build-jars-all-cdc" depends="setup-manifestfile-cdc" unless="setup.noall-cdc">
- <jar manifest="tempversion-cdc" destfile="${nativewindow.all.cdc.jar}">
+ <target name="build-jars-all-cdc" depends="setup-manifestfile-cdc">
+ <jar manifest="tempversion-cdc" destfile="${nativewindow.all.cdc.jar}" filesonly="true">
<fileset dir="${classes-cdc}">
<include name="javax/media/nativewindow/**" />
<include name="com/sun/nativewindow/**" />
@@ -887,7 +871,7 @@
</target>
<target name="build-jars-javase" depends="setup-manifestfile,build-jars-awt,build-jars-x11,build-jars-all">
- <jar manifest="tempversion" destfile="${nativewindow.core.jar}">
+ <jar manifest="tempversion" destfile="${nativewindow.core.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.core}"
excludes="${java.part.awt} ${java.part.x11}"/>
@@ -896,7 +880,7 @@
</target>
<target name="build-jars-cdc" depends="setup-manifestfile-cdc,build-jars-x11-cdc,build-jars-all-cdc">
- <jar manifest="tempversion-cdc" destfile="${nativewindow.core.cdc.jar}">
+ <jar manifest="tempversion-cdc" destfile="${nativewindow.core.cdc.jar}" filesonly="true">
<fileset dir="${classes-cdc}"
includes="${java.part.core}"
excludes="${java.part.awt} ${java.part.x11}"/>
diff --git a/make/build-newt.xml b/make/build-newt.xml
index 8ef77c7c7..079d2e154 100644
--- a/make/build-newt.xml
+++ b/make/build-newt.xml
@@ -50,8 +50,8 @@
setup.noAWT
setup.noOpenGL
- - setup.noAWT is set iff:
- !isWindows && !isOSX && !noX11
+ - setup.nodesktop is set iff:
+ !isWindows && !isOSX && !isX11
-->
<project name="NEWT" basedir="." default="all">
@@ -69,41 +69,42 @@
<!--
- Base initialization and detection of operating system.
-->
- <target name="base.init">
+ <target name="base.init" depends="gluegen.cpptasks.detect.os">
<property name="javac.bootclasspath-cdc.jar" value="../../gluegen/make/lib/cdc_fp.jar"/>
- <condition property="setup.noAWT">
+ <condition property="setup.nodesktop">
<and>
<isfalse value="${isWindows}" />
<isfalse value="${isOSX}" />
<isfalse value="${isX11}" />
</and>
</condition>
+
<condition property="setup.noall">
- <or>
- <isset property="noX11"/>
- <isset property="setup.noAWT"/>
- </or>
- </condition>
- <condition property="setup.noall-cdc">
- <or>
- <isset property="noX11"/>
- </or>
+ <isset property="setup.noAWT"/>
</condition>
- <condition property="setup.nodesktop">
- <or>
- <isset property="noX11"/>
- </or>
+
+ <condition property="setup.nonatives">
+ <and>
+ <isfalse value="${isWindows}" />
+ <isfalse value="${isOSX}" />
+ <isfalse value="${isX11}" />
+ <isfalse value="${useKD}" />
+ <isfalse value="${useBroadcomEGL}" />
+ </and>
</condition>
+ <echo message="setup.nonatives: ${setup.nonatives}" />
<echo message="setup.nodesktop: ${setup.nodesktop}" />
<echo message="setup.noall: ${setup.noall}" />
- <echo message="setup.noall-cdc: ${setup.noall-cdc}" />
<echo message="setup.noCDC: ${setup.noCDC}" />
<echo message="setup.noAWT: ${setup.noAWT}" />
<echo message="setup.noOpenGL: ${setup.noOpenGL}" />
<echo message="javac.bootclasspath-cdc.jar: ${javac.bootclasspath-cdc.jar}" />
+ <echo message="isX11: ${isX11}" />
+ <echo message="useKD: ${useKD}" />
+ <echo message="useBroadcomEGL: ${useBroadcomEGL}" />
<!-- partitioning -->
@@ -122,6 +123,9 @@
<property name="java.part.opengl"
value="com/sun/javafx/newt/opengl/*, com/sun/javafx/newt/opengl/kd/*"/>
+ <property name="java.part.broadcomegl"
+ value="com/sun/javafx/newt/opengl/broadcom/*"/>
+
<property name="java.part.awt"
value="com/sun/javafx/newt/awt/*"/>
@@ -133,7 +137,7 @@
</condition>
<condition property="java.excludes.opengl"
- value="${java.part.opengl}">
+ value="${java.part.opengl} ${java.part.broadcomegl}">
<isset property="setup.noOpenGL"/>
</condition>
@@ -256,6 +260,7 @@
<property name="newt.win.jar" value="${build}/newt.win.jar" />
<property name="newt.osx.jar" value="${build}/newt.osx.jar" />
<property name="newt.ogl.jar" value="${build}/newt.ogl.jar" />
+ <property name="newt.broadcomegl.jar" value="${build}/newt.broadcomegl.jar" />
<property name="newt.awt.jar" value="${build}/newt.awt.jar" />
<property name="newt.all.jar" value="${build}/newt.all.jar" />
@@ -264,6 +269,7 @@
<property name="newt.win.cdc.jar" value="${build}/newt.win.cdc.jar" />
<property name="newt.osx.cdc.jar" value="${build}/newt.osx.cdc.jar" />
<property name="newt.ogl.cdc.jar" value="${build}/newt.ogl.cdc.jar" />
+ <property name="newt.broadcomegl.cdc.jar" value="${build}/newt.broadcomegl.cdc.jar" />
<property name="newt.all.cdc.jar" value="${build}/newt.all.cdc.jar" />
<!-- The javadoc dirs. -->
@@ -293,6 +299,7 @@
<mkdir dir="${src.generated.c}" />
<mkdir dir="${src.generated.c}/X11" />
<mkdir dir="${src.generated.c}/KD" />
+ <mkdir dir="${src.generated.c}/BroadcomEGL" />
<mkdir dir="${src.generated.c}/MacOSX" />
<mkdir dir="${src.generated.c}/Windows" />
<mkdir dir="${classes}" />
@@ -349,6 +356,11 @@
<!-- linker configuration -->
+ <linker id="linker.cfg.linux.newt.broadcom_egl" extends="linker.cfg.linux">
+ <syslibset dir="/nfsroot/lg/lib" libs="EGL"/>
+ <syslibset dir="/nfsroot/lg/lib" libs="GLES_CM"/>
+ </linker>
+
<linker id="linker.cfg.linux.newt.x11" extends="linker.cfg.linux">
<syslibset dir="/usr/X11R6/lib" libs="X11"/>
<syslibset dir="/usr/X11R6/lib" libs="Xxf86vm" />
@@ -408,7 +420,13 @@
<echo message="Linux.x86" />
<property name="compiler.cfg.id" value="compiler.cfg.linux" />
<property name="linker.cfg.id.core" value="linker.cfg.linux" />
- <property name="linker.cfg.id.oswin" value="linker.cfg.linux.newt.x11" />
+ <condition property="linker.cfg.id.oswin" value="linker.cfg.linux.newt.x11" >
+ <isset property="isX11" />
+ </condition>
+ <condition property="linker.cfg.id.oswin" value="linker.cfg.linux.newt.broadcom_egl" >
+ <isset property="useBroadcomEGL" />
+ </condition>
+ <echo message="linker.cfg.id.oswin ${linker.cfg.id.oswin}" />
</target>
<target name="c.configure.linux.amd64" if="isLinuxAMD64">
@@ -508,6 +526,7 @@
<include name="${rootrel.src.c}/*.m" if="isOSX"/>
<include name="${rootrel.src.c}/X11Window.c" if="isX11"/>
<include name="${rootrel.src.c}/KDWindow.c" if="useKD"/>
+ <include name="${rootrel.src.c}/BroadcomEGL.c" if="useBroadcomEGL"/>
</patternset>
<echo message="Compiling @{output.lib.name}" />
@@ -540,7 +559,8 @@
<includepath path="${src.generated.c}/X11" if="isX11"/>
<includepath path="${src.generated.c}/MacOSX" if="isOSX"/>
<includepath path="${src.generated.c}/Windows" if="isWindows"/>
- <includepath path="${src.generated.c}/KD"/>
+ <includepath path="${src.generated.c}/KD" if="useKD" />
+ <includepath path="${src.generated.c}/BroadcomEGL" if="useBroadcomEGL" />
<!-- This must come last to not override real include paths -->
<!-- includepath path="stub_includes/macosx" if="isOSX" / -->
@@ -569,19 +589,23 @@
</sequential>
</macrodef>
- <target name="c.build.newt.prepare.opengl" unless="setup.noOpenGL">
- <javah destdir="../${rootrel.build.newt}/gensrc/native/newt/KD" classpath="${classes}" class="com.sun.javafx.newt.opengl.kd.KDWindow" />
+ <target name="c.build.newt.prepare.KD" if="useKD">
+ <javah destdir="${src.generated.c}/KD" classpath="${classes}" class="com.sun.javafx.newt.opengl.kd.KDWindow" />
+ </target>
+
+ <target name="c.build.newt.prepare.BroadcomEGL" if="useBroadcomEGL">
+ <javah destdir="${src.generated.c}/BroadcomEGL" classpath="${classes}" class="com.sun.javafx.newt.opengl.broadcom.BCEGLWindow" />
</target>
<target name="c.build.newt.prepare.desktop" unless="setup.nodesktop">
- <javah destdir="../${rootrel.build.newt}/gensrc/native/newt/Windows" classpath="${classes}" class="com.sun.javafx.newt.windows.WindowsWindow" />
- <javah destdir="../${rootrel.build.newt}/gensrc/native/newt/MacOSX" classpath="${classes}" class="com.sun.javafx.newt.macosx.MacWindow" />
- <javah destdir="../${rootrel.build.newt}/gensrc/native/newt/X11" classpath="${classes}" class="com.sun.javafx.newt.x11.X11Window" />
+ <javah destdir="${src.generated.c}/Windows" classpath="${classes}" class="com.sun.javafx.newt.windows.WindowsWindow" />
+ <javah destdir="${src.generated.c}/MacOSX" classpath="${classes}" class="com.sun.javafx.newt.macosx.MacWindow" />
+ <javah destdir="${src.generated.c}/X11" classpath="${classes}" class="com.sun.javafx.newt.x11.X11Window" />
</target>
- <target name="c.build.newt.prepare" depends="c.build.newt.prepare.opengl,c.build.newt.prepare.desktop" />
+ <target name="c.build.newt.prepare" depends="c.build.newt.prepare.KD,c.build.newt.prepare.BroadcomEGL,c.build.newt.prepare.desktop" />
- <target name="c.build.newt.windowlib">
+ <target name="c.build.newt.windowlib" unless="setup.nonatives">
<c.build c.compiler.src.files="c.src.files.newt"
output.lib.name="newt"
compiler.cfg.id="${compiler.cfg.id}"
@@ -593,15 +617,18 @@
<msvc.manifest objdir="${obj}" dllname="newt" />
</target>
- <target name="c.build.newt" depends="c.configure,c.build.newt.prepare,c.build.newt.windowlib">
+ <target name="c.build.newt.natives" depends="c.build.newt.windowlib" unless="setup.nonatives">
+ </target>
+
+ <target name="c.build.newt" depends="c.configure,c.build.newt.prepare,c.build.newt.natives">
<antcall target="c.manifest" inheritRefs="true" />
<!-- Create the Java Web Start jar file for the built native code -->
- <jar destfile="${build}/newt-natives-${os.and.arch}.jar">
+ <jar destfile="${build}/newt-natives-${os.and.arch}.jar" filesonly="true">
<fileset dir="${obj}">
<include name="*.${native.library.suffix}" />
</fileset>
</jar>
- <jar destfile="${build}/newt-natives-${os.and.arch}-cdc.jar">
+ <jar destfile="${build}/newt-natives-${os.and.arch}-cdc.jar" filesonly="true">
<fileset dir="${obj}">
<include name="*.${native.library.suffix-cdc}" />
</fileset>
@@ -659,72 +686,81 @@
</target>
<target name="build-jars-awt" depends="setup-manifestfile" unless="setup.noAWT">
- <jar manifest="tempversion" destfile="${newt.awt.jar}">
+ <jar manifest="tempversion" destfile="${newt.awt.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.awt}"/>
</jar>
</target>
<target name="build-jars-opengl" depends="setup-manifestfile" unless="setup.noOpenGL">
- <jar manifest="tempversion" destfile="${newt.ogl.jar}">
+ <jar manifest="tempversion" destfile="${newt.ogl.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.opengl}"/>
</jar>
+ <jar manifest="tempversion" destfile="${newt.broadcomegl.jar}" filesonly="true">
+ <fileset dir="${classes}"
+ includes="${java.part.broadcomegl}"/>
+ </jar>
</target>
<target name="build-jars-opengl-cdc" depends="setup-manifestfile-cdc" unless="setup.noOpenGL">
- <jar manifest="tempversion-cdc" destfile="${newt.ogl.cdc.jar}">
+ <jar manifest="tempversion-cdc" destfile="${newt.ogl.cdc.jar}" filesonly="true">
<fileset dir="${classes-cdc}"
includes="${java.part.opengl}"/>
</jar>
+ <jar manifest="tempversion-cdc" destfile="${newt.broadcomegl.cdc.jar}" filesonly="true">
+ <fileset dir="${classes-cdc}"
+ includes="${java.part.broadcomegl}"/>
+ </jar>
</target>
<target name="build-jars-desktop" depends="setup-manifestfile" unless="setup.nodesktop">
- <jar manifest="tempversion" destfile="${newt.x11.jar}">
+ <jar manifest="tempversion" destfile="${newt.x11.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.x11}"/>
</jar>
- <jar manifest="tempversion" destfile="${newt.win.jar}">
+ <jar manifest="tempversion" destfile="${newt.win.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.windows}"/>
</jar>
- <jar manifest="tempversion" destfile="${newt.osx.jar}">
+ <jar manifest="tempversion" destfile="${newt.osx.jar}" filesonly="true">
<fileset dir="${classes}"
- includes="${java.part.osx}"/>
+ includes="${java.part.macosx}"/>
</jar>
</target>
<target name="build-jars-desktop-cdc" depends="setup-manifestfile-cdc" unless="setup.nodesktop">
- <jar manifest="tempversion-cdc" destfile="${newt.x11.cdc.jar}">
+ <jar manifest="tempversion-cdc" destfile="${newt.x11.cdc.jar}" filesonly="true">
<fileset dir="${classes-cdc}"
includes="${java.part.x11}"/>
</jar>
- <jar manifest="tempversion-cdc" destfile="${newt.win.cdc.jar}">
+ <jar manifest="tempversion-cdc" destfile="${newt.win.cdc.jar}" filesonly="true">
<fileset dir="${classes-cdc}"
includes="${java.part.windows}"/>
</jar>
- <jar manifest="tempversion-cdc" destfile="${newt.osx.cdc.jar}">
+ <jar manifest="tempversion-cdc" destfile="${newt.osx.cdc.jar}" filesonly="true">
<fileset dir="${classes-cdc}"
- includes="${java.part.osx}"/>
+ includes="${java.part.macosx}"/>
</jar>
</target>
<target name="build-jars-all" depends="setup-manifestfile" unless="setup.noall">
- <jar manifest="tempversion" destfile="${newt.all.jar}">
+ <jar manifest="tempversion" destfile="${newt.all.jar}" filesonly="true">
<fileset dir="${classes}"
includes="com/sun/javafx/newt/**" />
</jar>
</target>
- <target name="build-jars-all-cdc" depends="setup-manifestfile-cdc" unless="setup.noall-cdc">
- <jar manifest="tempversion-cdc" destfile="${newt.all.cdc.jar}">
+ <target name="build-jars-all-cdc" depends="setup-manifestfile-cdc">
+ <jar manifest="tempversion-cdc" destfile="${newt.all.cdc.jar}" filesonly="true">
<fileset dir="${classes-cdc}"
- includes="${java.part.core} ${java.part.opengl}"/>
+ includes="com/sun/javafx/newt/**"
+ excludes="${java.excludes.cdcfp}" />
</jar>
</target>
<target name="build-jars-javase" depends="setup-manifestfile,build-jars-awt,build-jars-opengl,build-jars-all,build-jars-desktop">
- <jar manifest="tempversion" destfile="${newt.core.jar}">
+ <jar manifest="tempversion" destfile="${newt.core.jar}" filesonly="true">
<fileset dir="${classes}"
includes="${java.part.core}"/>
</jar>
@@ -732,7 +768,7 @@
</target>
<target name="build-jars-cdc" depends="setup-manifestfile-cdc,build-jars-opengl-cdc,build-jars-all-cdc,build-jars-desktop-cdc" unless="setup.noCDC">
- <jar manifest="tempversion-cdc" destfile="${newt.core.cdc.jar}">
+ <jar manifest="tempversion-cdc" destfile="${newt.core.cdc.jar}" filesonly="true">
<fileset dir="${classes-cdc}"
includes="${java.part.core}"/>
</jar>
diff --git a/make/config/jogl/cgl-macosx.cfg b/make/config/jogl/cgl-macosx.cfg
index 780afcf5b..54b4be171 100644
--- a/make/config/jogl/cgl-macosx.cfg
+++ b/make/config/jogl/cgl-macosx.cfg
@@ -6,10 +6,12 @@ NativeOutputDir gensrc/native/jogl/MacOSX
Package com.sun.opengl.impl.macosx.cgl
JavaClass CGL
Style allstatic
-Include gl-common-gl2.cfg
+Include gl-common.cfg
Include gl-common-extensions.cfg
Include gl-desktop.cfg
+GLHeader GL/cglext.h
+
Opaque long void *
# Opaque directives for low-level CGL binding (for Java2D/JOGL bridge)
diff --git a/make/config/jogl/cglext.cfg b/make/config/jogl/cglext.cfg
index 4000ecb2b..3bd027c84 100755
--- a/make/config/jogl/cglext.cfg
+++ b/make/config/jogl/cglext.cfg
@@ -11,9 +11,11 @@ Style InterfaceAndImpl
JavaClass CGLExt
ImplPackage com.sun.opengl.impl.macosx.cgl
ImplJavaClass CGLExtImpl
-Include gl-common-gl2.cfg
+Include gl-common.cfg
Include gl-desktop.cfg
+GLHeader GL/cglext.h
+
EmitProcAddressTable true
ProcAddressTableClassName CGLExtProcAddressTable
GetProcAddressTableExpr _context.getCGLExtProcAddressTable()
diff --git a/make/config/jogl/egl-common.cfg b/make/config/jogl/egl-common.cfg
new file mode 100644
index 000000000..bcda00b07
--- /dev/null
+++ b/make/config/jogl/egl-common.cfg
@@ -0,0 +1,46 @@
+# Inform the glue code generator of the association between #defines
+# and functions and the extensions in which they are defined
+GLHeader EGL/egl.h
+GLHeader EGL/eglext.h
+
+# Imports needed by all glue code
+Import java.nio.*
+Import java.util.*
+Import javax.media.opengl.*
+Import javax.media.opengl.fixedfunc.*
+Import com.sun.opengl.impl.*
+
+# Treat all of the EGL types as opaque longs
+# Opaque long EGLConfig
+Opaque long EGLContext
+Opaque long EGLDisplay
+Opaque long EGLSurface
+Opaque long EGLNativeDisplayType
+Opaque long EGLNativeWindowType
+Opaque long EGLNativePixmapType
+Opaque long EGLClientBuffer
+Opaque long EGLImageKHR
+#Opaque long EGLPerfMonitorNV
+#Opaque long EGLPerfCounterNV
+#Opaque long EGLPerfMarkerNV
+Opaque long EGLSyncKHR
+Opaque long NativeSyncKHR
+Opaque boolean EGLBoolean
+
+# Make eglGetProcAddress return an opaque long
+Opaque long __EGLFuncPtr
+
+# Implement the first argument to eglGetProcAddress as String instead
+# of byte[]
+ArgumentIsString eglGetProcAddress 0
+ReturnsString eglQueryString
+
+# Force all of the methods to be emitted using dynamic linking so we
+# don't need to link against any emulation library on the desktop or
+# depend on the presence of an import library for a particular device
+ForceProcAddressGen __ALL__
+
+# Also force the calling conventions of the locally generated function
+# pointer typedefs for these routines to EGLAPIENTRY
+LocalProcAddressCallingConvention __ALL__ EGLAPIENTRY
+
diff --git a/make/config/jogl/egl.cfg b/make/config/jogl/egl.cfg
index 6457ab21a..26979fb6d 100755
--- a/make/config/jogl/egl.cfg
+++ b/make/config/jogl/egl.cfg
@@ -7,40 +7,20 @@ Package com.sun.opengl.impl.egl
JavaClass EGL
Style allstatic
# Shouldn't matter which one of these we pick up
+Include egl-common.cfg
HierarchicalNativeOutput false
-Include gl-common.cfg
# Use a ProcAddressTable so we dynamically look up the routines
EmitProcAddressTable true
ProcAddressTableClassName EGLProcAddressTable
GetProcAddressTableExpr _table
-# Translate EGLBoolean as Java boolean
-Opaque boolean EGLBoolean
-
# Implement the first argument to eglGetProcAddress as String instead
# of byte[]
ArgumentIsString eglGetProcAddress 0
ReturnsString eglQueryString
-# Make eglGetProcAddress return an opaque long
-Opaque long __EGLFuncPtr
-
-# Force all of the methods to be emitted using dynamic linking so we
-# don't need to link against any emulation library on the desktop or
-# depend on the presence of an import library for a particular device
-ForceProcAddressGen __ALL__
-
-# Treat all of the EGL types as opaque longs
-Opaque long EGLContext
-Opaque long EGLDisplay
-Opaque long EGLSurface
-Opaque long EGLNativeDisplayType
-Opaque long EGLNativeWindowType
-Opaque long EGLNativePixmapType
-Opaque long EGLClientBuffer
-
CustomCCode #include <EGL/egl.h>
Include ../intptr.cfg
diff --git a/make/config/jogl/eglext.cfg b/make/config/jogl/eglext.cfg
index bdd9a3655..fedff35e9 100755
--- a/make/config/jogl/eglext.cfg
+++ b/make/config/jogl/eglext.cfg
@@ -9,54 +9,17 @@ JavaClass EGLExt
ImplPackage com.sun.opengl.impl.egl
ImplJavaClass EGLExtImpl
# Shouldn't matter which one of these we pick up
+Include egl-common.cfg
+
+ExtendedInterfaceSymbolsIgnore ../build-temp/gensrc/classes/com/sun/opengl/impl/egl/EGL.java
-ExtendedInterfaceSymbols ../build-temp/gensrc/classes/com/sun/opengl/impl/egl/EGL.java
HierarchicalNativeOutput false
-Include gl-common.cfg
# Use a ProcAddressTable so we dynamically look up the routines
EmitProcAddressTable true
ProcAddressTableClassName EGLExtProcAddressTable
GetProcAddressTableExpr _context.getEGLExtProcAddressTable()
-# Translate EGLBoolean as Java boolean
-Opaque boolean EGLBoolean
-
-# Implement the first argument to eglGetProcAddress as String instead
-# of byte[]
-ArgumentIsString eglGetProcAddress 0
-ReturnsString eglQueryString
-
-# Make eglGetProcAddress return an opaque long
-Opaque long __EGLFuncPtr
-
-# Force all of the methods to be emitted using dynamic linking so we
-# don't need to link against any emulation library on the desktop or
-# depend on the presence of an import library for a particular device
-ForceProcAddressGen __ALL__
-
-# Also force the calling conventions of the locally generated function
-# pointer typedefs for these routines to EGLAPIENTRY
-LocalProcAddressCallingConvention __ALL__ EGLAPIENTRY
-
-# Treat all of the EGL types as opaque longs
-# Opaque long EGLConfig
-Opaque long EGLContext
-Opaque long EGLDisplay
-Opaque long EGLSurface
-Opaque long EGLNativeDisplayType
-Opaque long EGLNativeWindowType
-Opaque long EGLNativePixmapType
-Opaque long EGLClientBuffer
-Opaque long EGLImageKHR
-#Opaque long EGLPerfMonitorNV
-#Opaque long EGLPerfCounterNV
-#Opaque long EGLPerfMarkerNV
-Opaque long EGLSyncKHR
-Opaque long NativeSyncKHR
-
-# Opaque long EGLClientBuffer
-
CustomCCode /* Define EGL_EGLEXT_PROTOTYPES so that the EGL extension prototypes in
CustomCCode "eglext.h" are parsed. */
CustomCCode #define EGL_EGLEXT_PROTOTYPES
@@ -66,9 +29,14 @@ CustomCCode #include <EGL/eglext.h>
Include ../intptr.cfg
# There are some #defines in eglext.h that GlueGen and PCPP don't currently handle
+CustomJavaCode EGLExt /** Part of <code>EGL_KHR_image</code> */
CustomJavaCode EGLExt public static final long EGL_NO_IMAGE = 0;
+CustomJavaCode EGLExt /** Part of <code>EGL_NV_perfmon</code> */
CustomJavaCode EGLExt public static final long EGL_NO_PERFMONITOR = 0;
+CustomJavaCode EGLExt /** Part of <code>EGL_NV_perfmon</code> */
CustomJavaCode EGLExt public static final long EGL_DEFAULT_PERFMARKER = 0;
+CustomJavaCode EGLExt /** Part of <code>EGL_KHR_sync</code> */
+CustomJavaCode EGLExt public static final long EGL_FOREVER_KHR = 0xFFFFFFFFFFFFFFFFL ;
CustomJavaCode EGLExt public boolean isFunctionAvailable(String glFunctionName);
CustomJavaCode EGLExt public boolean isExtensionAvailable(String glExtensionName);
@@ -88,39 +56,3 @@ CustomJavaCode EGLExtImpl }
CustomJavaCode EGLExtImpl private EGLContext _context;
-# These Ignores cause the core EGL routines to be ignored from the
-# EGLExt interface and EGLExtImpl implementing class.
-Ignore eglBindAPI
-Ignore eglBindTexImage
-Ignore eglChooseConfig
-Ignore eglCopyBuffers
-Ignore eglCreateContext
-Ignore eglCreatePbufferFromClientBuffer
-Ignore eglCreatePbufferSurface
-Ignore eglCreatePixmapSurface
-Ignore eglCreateWindowSurface
-Ignore eglDestroyContext
-Ignore eglDestroySurface
-Ignore eglGetConfigAttrib
-Ignore eglGetConfigs
-Ignore eglGetCurrentContext
-Ignore eglGetCurrentDisplay
-Ignore eglGetCurrentSurface
-Ignore eglGetDisplay
-Ignore eglGetError
-Ignore eglGetProcAddress
-Ignore eglInitialize
-Ignore eglMakeCurrent
-Ignore eglQueryAPI
-Ignore eglQueryContext
-Ignore eglQueryString
-Ignore eglQuerySurface
-Ignore eglReleaseTexImage
-Ignore eglReleaseThread
-Ignore eglSurfaceAttrib
-Ignore eglSwapBuffers
-Ignore eglSwapInterval
-Ignore eglTerminate
-Ignore eglWaitClient
-Ignore eglWaitGL
-Ignore eglWaitNative
diff --git a/make/config/jogl/gl-common-extensions.cfg b/make/config/jogl/gl-common-extensions.cfg
index fb46e43ca..e28ff43c8 100644
--- a/make/config/jogl/gl-common-extensions.cfg
+++ b/make/config/jogl/gl-common-extensions.cfg
@@ -1,8 +1,8 @@
-# Note: we keep the Apple, ATI and NVidia extensions since they are generally
+# Note: we keep the Apple, AMD/ATI and NVidia extensions since they are generally
# the most useful and up-to-date
DropUniqVendorExtensions 3DFX
-DropUniqVendorExtensions AMD
+# DropUniqVendorExtensions AMD
# DropUniqVendorExtensions APPLE
# DropUniqVendorExtensions ATI
DropUniqVendorExtensions HP
@@ -51,11 +51,6 @@ IgnoreExtension GL_NV_present_video
IgnoreExtension GL_NV_coverage_sample
IgnoreExtension GL_NV_framebuffer_vertex_attrib_array
-# Remove extension suffixes from extensions which are common
-RenameExtensionIntoCore GL_ARB_framebuffer_object
-IgnoreExtension GL_EXT_framebuffer_object
-RenameExtensionIntoCore GL_OES_framebuffer_object
-
# Remove extension suffixes from extensions which are common between OpenGL and OpenGL ES
RenameExtensionIntoCore GL_ARB_half_float_pixel
RenameExtensionIntoCore GL_ARB_point_sprite
@@ -65,6 +60,7 @@ RenameExtensionIntoCore GL_OES_blend_subtract
RenameExtensionIntoCore GL_OES_compressed_paletted_texture
RenameExtensionIntoCore GL_OES_depth24
RenameExtensionIntoCore GL_OES_depth32
+RenameExtensionIntoCore GL_OES_framebuffer_object
RenameExtensionIntoCore GL_OES_mapbuffer
RenameExtensionIntoCore GL_OES_point_sprite
RenameExtensionIntoCore GL_OES_rgb8_rgba8
diff --git a/make/config/jogl/gl-common-gl2.cfg b/make/config/jogl/gl-common-gl2.cfg
deleted file mode 100644
index 4d86d74cd..000000000
--- a/make/config/jogl/gl-common-gl2.cfg
+++ /dev/null
@@ -1,8 +0,0 @@
-# This .cfg file provides common options used among all GL glue code
-# generated for Jogl on Windows.
-
-HierarchicalNativeOutput false
-Include gl-common.cfg
-
-# XID needs to be treated as a long for 32/64 bit compatibility
-Opaque long XID
diff --git a/make/config/jogl/gl-common.cfg b/make/config/jogl/gl-common.cfg
index 50c2ff004..4d3a05d63 100644
--- a/make/config/jogl/gl-common.cfg
+++ b/make/config/jogl/gl-common.cfg
@@ -1,6 +1,8 @@
# This .cfg file provides common options used among all glue code
# generated for Jogl on all platforms.
+HierarchicalNativeOutput false
+
# Raise GLException instead of RuntimeException in glue code
RuntimeExceptionType GLException
UnsupportedExceptionType GLException
@@ -20,16 +22,15 @@ Import com.sun.opengl.impl.*
# because we don't need them java-side.
Ignore GL_VERSION_.+
-# There are a few routines we don't handle yet
-Ignore glGetBufferPointerivNV
-Ignore glGetBufferPointerv
-
# Ignore GL functions that deal with explicit pointer values in such a
# way that we cannot implement the functionality in Java
Ignore glGetBufferPointerv
Ignore glGetBufferPointervARB
+Ignore glGetBufferPointerivNV
+Ignore glGetNamedBufferPointervEXT
Ignore glGetPointerv
Ignore glGetPointervEXT
+Ignore glGetPointerIndexedvEXT
Ignore glGetTexParameterPointervAPPLE
Ignore glGetVertexAttribPointerv
Ignore glGetVertexAttribPointervARB
@@ -39,7 +40,6 @@ Ignore glTracePointerRangeMESA
# Manually implement glMapBuffer as the size of the returned buffer
# can only be computed by calling another routine
ManuallyImplement glMapBuffer
-ManuallyImplement glMapBufferOES
# Ignore the ATI_map_object_buffer extension for now unless someone
# claims they need it, as it will undoubtedly require a similar
@@ -50,36 +50,6 @@ Ignore glUnmapObjectBufferATI
# Ignore some GL functions that have outgoing void** parameters; we cannot yet deal with them
Ignore glGetVariantPointervEXT
-# Don't output #defines of GL name strings as constants, because we
-# don't need them java-side.
-# Format of name strings is found at:
-# http://oss.sgi.com/projects/ogl-sample/registry/doc/template.txt
-
-Ignore (GL|GLU|GLX|WGL|AGL|CGL)_EXT_.+
-Ignore (GL|GLU|GLX|WGL|AGL|CGL)_ARB_.+
-Ignore (GL|GLU|GLX|WGL|AGL|CGL)_OES_.+
-Ignore (GL|GLU|GLX|WGL|AGL|CGL)_PGI_.+
-Ignore (GL|GLU|GLX|WGL|AGL|CGL)_SGI_.+
-Ignore (GL|GLU|GLX|WGL|AGL|CGL)_SGIS_.+
-Ignore (GL|GLU|GLX|WGL|AGL|CGL)_SGIX_.+
-Ignore (GL|GLU|GLX|WGL|AGL|CGL)_MESA_.+
-Ignore (GL|GLU|GLX|WGL|AGL|CGL)_HP_.+
-Ignore (GL|GLU|GLX|WGL|AGL|CGL)_ATI_.+
-Ignore (GL|GLU|GLX|WGL|AGL|CGL)_NV_.+
-Ignore (GL|GLU|GLX|WGL|AGL|CGL)_IBM_.+
-Ignore (GL|GLU|GLX|WGL|AGL|CGL)_WIN_.+
-Ignore (GL|GLU|GLX|WGL|AGL|CGL)_REND_.+
-Ignore (GL|GLU|GLX|WGL|AGL|CGL)_APPLE_.+
-Ignore (GL|GLU|GLX|WGL|AGL|CGL)_INTEL_.+
-Ignore (GL|GLU|GLX|WGL|AGL|CGL)_INGR_.+
-Ignore (GL|GLU|GLX|WGL|AGL|CGL)_SUN_.+
-Ignore (GL|GLU|GLX|WGL|AGL|CGL)_SUNX_.+
-Ignore (GL|GLU|GLX|WGL|AGL|CGL)_3DFX_.+
-Ignore (GL|GLU|GLX|WGL|AGL|CGL)_OML_.+
-Ignore (GL|GLU|GLX|WGL|AGL|CGL)_I3D_.+
-Ignore (GL|GLU|GLX|WGL|AGL|CGL)_S3_.+
-Ignore GL_KTX_buffer_region
-
# FIXME: these extensions require either a handle to a device context
# or take void** parameters or both. Until we think through the
# semantics of each of these individually we need to disable them.
@@ -133,6 +103,7 @@ IgnoreExtension GL_EXT_coordinate_frame
# Ignore discontinued extensions
IgnoreExtension GL_NV_element_array
+# >>> OpenGL 1.1
# Ignore extensions subsumed in OpenGL 1.1 (from OpenGL 1.1 spec, Appendix C)
IgnoreExtension GL_EXT_vertex_array
IgnoreExtension GL_EXT_blend_logic_op
@@ -141,7 +112,9 @@ IgnoreExtension GL_EXT_polygon_offset
IgnoreExtension GL_EXT_subtexture
IgnoreExtension GL_EXT_texture
IgnoreExtension GL_EXT_texture_object
+# <<< OpenGL 1.1
+# >>> OpenGL 1.2
# Ignore extensions subsumed in OpenGL 1.2 and 1.2.1 (from OpenGL 1.2.1 spec, Appendix D)
IgnoreExtension GL_EXT_bgra
IgnoreExtension GL_EXT_blend_color
@@ -163,7 +136,9 @@ IgnoreExtension GL_SGI_color_matrix
IgnoreExtension GL_SGI_color_table
IgnoreExtension GL_SGIS_texture_edge_clamp
IgnoreExtension GL_SGIS_texture_lod
+# <<< OpenGL 1.2
+# >>> OpenGL 1.3
# Ignore extensions subsumed in OpenGL 1.3 (from OpenGL 1.3 spec, Appendix F)
IgnoreExtension GL_ARB_multisample
IgnoreExtension GL_ARB_multitexture
@@ -179,7 +154,9 @@ IgnoreExtension GL_EXT_texture_env_add
IgnoreExtension GL_EXT_texture_env_combine
IgnoreExtension GL_EXT_texture_env_dot3
IgnoreExtension GL_SGIS_texture_border_clamp
+# <<< OpenGL 1.3
+# >>> OpenGL 1.4
# Ignore extensions subsumed in OpenGL 1.4 (from OpenGL 1.4 spec, Appendix G)
IgnoreExtension GL_ARB_depth_texture
IgnoreExtension GL_ARB_point_parameters
@@ -195,29 +172,113 @@ IgnoreExtension GL_EXT_secondary_color
IgnoreExtension GL_EXT_stencil_wrap
IgnoreExtension GL_NV_blend_square
IgnoreExtension GL_SGIS_generate_mipmap
+# <<< OpenGL 1.4
+# >>> OpenGL 1.5
# Ignore extensions subsumed in OpenGL 1.5 (from OpenGL 1.5 spec, Appendix H)
IgnoreExtension GL_ARB_occlusion_query
IgnoreExtension GL_ARB_vertex_buffer_object
IgnoreExtension GL_EXT_shadow_funcs
+# <<< OpenGL 1.5
+# >>> OpenGL 2.0
# Ignore extensions subsumed in OpenGL 2.0 (from OpenGL 2.0 spec, Appendix I)
# NOTE that GL_ARB_shader_objects is NOT ignored here, because the
# naming convention is too different for us to pick up the entry
# points automatically (e.g. glCreateShaderObjectARB was exposed as
# glCreateShader)
+# IgnoreExtension GL_ARB_shader_objects
IgnoreExtension GL_ARB_vertex_shader
IgnoreExtension GL_ARB_fragment_shader
-IgnoreExtension GL_ARB_draw_buffers
IgnoreExtension GL_ARB_texture_non_power_of_two
IgnoreExtension GL_ARB_point_sprite
+IgnoreExtension GL_ARB_draw_buffers
IgnoreExtension GL_EXT_blend_equation_separate
# Don't ignore the following one since the entry point is different from anything in the core
# IgnoreExtension GL_EXT_stencil_two_side
+# <<< OpenGL 2.0
+# >>> OpenGL 2.1
# Ignore extensions subsumed in OpenGL 2.1 (from OpenGL 2.1 spec, Appendix J)
IgnoreExtension GL_ARB_pixel_buffer_object
IgnoreExtension GL_EXT_texture_sRGB
+# <<< OpenGL 2.1
+
+# >>> OpenGL 3.0
+# Ignore/Rename extensions subsumed in OpenGL 3.0 (from OpenGL 3.0 spec, Appendix N)
+RenameExtensionIntoCore GL_EXT_gpu_shader4
+
+RenameExtensionIntoCore GL_NV_conditional_render
+
+RenameExtensionIntoCore GL_APPLE_flush_buffer_range
+
+RenameExtensionIntoCore GL_ARB_color_buffer_float
+# gl.h uses GL_ARB_depth_buffer_float
+RenameExtensionIntoCore GL_ARB_depth_buffer_float
+IgnoreExtension GL_NV_depth_buffer_float
+RenameExtensionIntoCore GL_ARB_texture_float
+RenameExtensionIntoCore GL_EXT_packed_float
+RenameExtensionIntoCore GL_EXT_texture_shared_exponent
+
+# gl.h uses GL_ARB_framebuffer_object
+# GL_*_geometry_shader4 is included here, due to a naming collision otherwise.
+# glFramebufferTextureLayerARB is ignored due to it's existence in GL_ARB_framebuffer_object and GL_ARB_geometry_shader4
+RenameExtensionIntoCore GL_ARB_framebuffer_object
+IgnoreExtension GL_EXT_framebuffer_object
+RenameExtensionIntoCore GL_ARB_geometry_shader4
+IgnoreExtension GL_EXT_geometry_shader4
+Ignore glFramebufferTextureLayerARB
+
+RenameExtensionIntoCore GL_NV_half_float
+RenameExtensionIntoCore GL_ARB_half_float_pixel
+
+RenameExtensionIntoCore GL_EXT_framebuffer_multisample
+RenameExtensionIntoCore GL_EXT_framebuffer_blit
+
+#Big gap of promoted tokens and functions: GL_EXT_texture_integer
+RenameExtensionIntoCore GL_EXT_texture_integer
+
+RenameExtensionIntoCore GL_EXT_texture_array
+
+RenameExtensionIntoCore GL_EXT_packed_depth_stencil
+
+RenameExtensionIntoCore GL_EXT_draw_buffers2
+
+# gl.h uses GL_ARB_texture_compression_rgtc
+RenameExtensionIntoCore GL_ARB_texture_compression_rgtc
+IgnoreExtension GL_EXT_texture_compression_rgtc
+
+RenameExtensionIntoCore GL_EXT_transform_feedback
+IgnoreExtension GL_NV_transform_feedback
+
+# gl.h uses GL_ARB_vertex_array_object
+RenameExtensionIntoCore GL_ARB_vertex_array_object
+IgnoreExtension GL_APPLE_vertex_array_object
+
+# gl.h uses GL_ARB_framebuffer_sRGB
+RenameExtensionIntoCore GL_ARB_framebuffer_sRGB
+IgnoreExtension GL_EXT_framebuffer_sRGB
+
+RenameExtensionIntoCore GL_ARB_map_buffer_range
+
+# <<< OpenGL 3.0
+
+# >>> OpenGL 3.1
+# Rename extension suffices (if exist) subsumed in OpenGL 3.1 (from OpenGL 3.1 spec, Appendix G.1)
+# We alias 3.1 subsumed extension even for GL2, due to the convenience of the common GL2GL3 profile!
+RenameExtensionIntoCore GL_ARB_draw_instanced
+IgnoreExtension GL_EXT_draw_instanced
+RenameExtensionIntoCore GL_ARB_copy_buffer
+RenameExtensionIntoCore GL_NV_primitive_restart
+RenameExtensionIntoCore GL_ARB_texture_buffer_object
+IgnoreExtension GL_EXT_texture_buffer_object
+# Actually GL_ARB_texture_rectangle, but let's be convenient
+RenameExtensionIntoCore GL_EXT_texture_rectangle
+IgnoreExtension GL_NV_texture_rectangle
+RenameExtensionIntoCore GL_ARB_uniform_buffer_object
+# <<< OpenGL 3.1
+
+
# Ignore a few obsolete versions of extensions that have been subsumed into the core or ARB extensions
IgnoreExtension GL_EXT_multisample
@@ -230,6 +291,7 @@ IgnoreExtension GL_EXT_texture_rectangle
Opaque boolean GLboolean
ReturnsString glGetString
+ReturnsString glGetStringi
# Experimental: Only NIO function, no arrays ..
# NIOOnly __ALL__
@@ -289,6 +351,14 @@ ReturnValueCapacity glXAllocateMemoryNV {0}
# Pass arguments to ARB_vertex_program, ARB_fragment_program,
# ARB_shader_objects, NV_vertex_program, NV_fragment_program, and
# ARB_vertex_shader as Strings
+ArgumentIsString glBindAttribLocation 2
+ArgumentIsString glBindAttribLocationARB 2
+ArgumentIsString glGetAttribLocation 1
+ArgumentIsString glGetAttribLocationARB 1
+ArgumentIsString glGetProgramNamedParameterfvNV 2
+ArgumentIsString glGetProgramNamedParameterdvNV 2
+ArgumentIsString glGetUniformLocation 1
+ArgumentIsString glGetUniformLocationARB 1
ArgumentIsString glLoadProgramNV 3
ArgumentIsString glProgramString 3
ArgumentIsString glProgramStringARB 3
@@ -296,16 +366,32 @@ ArgumentIsString glProgramNamedParameter4fNV 2
ArgumentIsString glProgramNamedParameter4dNV 2
ArgumentIsString glProgramNamedParameter4fvNV 2
ArgumentIsString glProgramNamedParameter4dvNV 2
-ArgumentIsString glGetProgramNamedParameterfvNV 2
-ArgumentIsString glGetProgramNamedParameterdvNV 2
ArgumentIsString glShaderSource 2
ArgumentIsString glShaderSourceARB 2
-ArgumentIsString glGetUniformLocation 1
-ArgumentIsString glGetUniformLocationARB 1
-ArgumentIsString glBindAttribLocation 2
-ArgumentIsString glBindAttribLocationARB 2
-ArgumentIsString glGetAttribLocation 1
-ArgumentIsString glGetAttribLocationARB 1
+
+ArgumentIsString glBindFragDataLocation 2
+ArgumentIsString glGetFragDataLocation 1
+ArgumentIsString glGetUniformIndices 2
+ArgumentIsString glGetUniformBlockIndex 1
+ArgumentIsString glTransformFeedbackVaryings 2
+
+# String output values:
+# ArgumentIsString glGetActiveAttrib 6
+# ArgumentIsString glGetActiveUniformBlockName 4
+# ArgumentIsString glGetActiveUniformName 4
+# ArgumentIsString glGetActiveUniform 6
+# ArgumentIsString glGetProgramInfoLog 3
+# ArgumentIsString glGetShaderInfoLog 3
+# ArgumentIsString glGetShaderSource 3
+# ArgumentIsString glGetTransformFeedbackVarying 6
+
+#
+# Use cached GL_EXTENSION if possible,
+# which also allows GL3 compatibility.
+#
+JavaPrologue glGetString if(GL.GL_EXTENSIONS==name && _context.isExtensionCacheInitialized()) {
+JavaPrologue glGetString return _context.getGLExtensions();
+JavaPrologue glGetString }
#
# Directives for Vertex Buffer Object and Pixel Buffer Object checking
@@ -481,70 +567,93 @@ RangeCheck glDeleteVertexArraysAPPLE 1 {0}
# Javadoc for the GL class
ClassJavadoc GL /**
-ClassJavadoc GL * <P> The basic interface to OpenGL, providing access to core
-ClassJavadoc GL * functionality up through the OpenGL 2.0 specification as well as
-ClassJavadoc GL * all vendor extensions. </P>
-ClassJavadoc GL *
-ClassJavadoc GL * <P> While the APIs for vendor extensions are unconditionally
-ClassJavadoc GL * exposed, the underlying functions may not be present. The method
-ClassJavadoc GL * {@link #isFunctionAvailable} should be used to query the
-ClassJavadoc GL * availability of any non-core function before it is used for the
-ClassJavadoc GL * first time; for example,
-ClassJavadoc GL * <code>gl.isFunctionAvailable("glProgramStringARB")</code>. On
-ClassJavadoc GL * certain platforms (Windows in particular), the most "core"
-ClassJavadoc GL * functionality is only OpenGL 1.1, so in theory any routines first
-ClassJavadoc GL * exposed in OpenGL 1.2, 1.3, and 1.4, 1.5, or 2.0 as well as vendor
-ClassJavadoc GL * extensions should all be queried. Calling an unavailable function
-ClassJavadoc GL * will cause a {@link GLException} to be raised. </P>
-ClassJavadoc GL *
-ClassJavadoc GL * {@link #isExtensionAvailable} may also be used to determine whether
-ClassJavadoc GL * a specific extension is available before calling the routines or
-ClassJavadoc GL * using the functionality it exposes: for example,
-ClassJavadoc GL * <code>gl.isExtensionAvailable("GL_ARB_vertex_program");</code>.
-ClassJavadoc GL * However, in this case it is up to the end user to know which
-ClassJavadoc GL * routines or functionality are associated with which OpenGL
-ClassJavadoc GL * extensions. It may also be used to test for the availability of a
-ClassJavadoc GL * particular version of OpenGL: for example,
-ClassJavadoc GL * <code>gl.isExtensionAvailable("GL_VERSION_1_5");</code>.
-ClassJavadoc GL *
-ClassJavadoc GL * <P> Exceptions to the window system extension naming rules:
-ClassJavadoc GL *
-ClassJavadoc GL * <UL>
-ClassJavadoc GL *
-ClassJavadoc GL * <LI> The memory allocators for the NVidia vertex_array_range (VAR)
-ClassJavadoc GL * extension, in particular <code>wglAllocateMemoryNV</code> /
-ClassJavadoc GL * <code>glXAllocateMemoryNV</code> and associated routines. {@link
-ClassJavadoc GL * #glAllocateMemoryNV} has been provided for window system-independent
-ClassJavadoc GL * access to VAR. {@link #isFunctionAvailable} will translate an argument
-ClassJavadoc GL * of "glAllocateMemoryNV" or "glFreeMemoryNV" into the appropriate
-ClassJavadoc GL * window system-specific name. </P>
-ClassJavadoc GL *
-ClassJavadoc GL * <LI> WGL_ARB_pbuffer, WGL_ARB_pixel_format, and other
-ClassJavadoc GL * platform-specific pbuffer functionality; the availability of
-ClassJavadoc GL * pbuffers can be queried on Windows, X11 and Mac OS X platforms by
-ClassJavadoc GL * querying {@link #isExtensionAvailable} with an argument of
-ClassJavadoc GL * "GL_ARB_pbuffer" or "GL_ARB_pixel_format".
-ClassJavadoc GL *
-ClassJavadoc GL * </UL> <P>
-ClassJavadoc GL *
+ClassJavadoc GL * <P> Common interface containing the subset of all profiles, GL3, GL2, GLES1 and GLES2.<br>
+ClassJavadoc GL * This interface reflects common data types, texture and framebuffer functionality.</P>
ClassJavadoc GL */
+ClassJavadoc GL2ES1 /**
+ClassJavadoc GL2ES1 * <P>
+ClassJavadoc GL2ES1 * Interface containing the common subset of GL2 and GLES1.<br>
+ClassJavadoc GL2ES1 * This interface reflects only the fixed functionality of OpenGL<br>
+ClassJavadoc GL2ES1 * </P>
+ClassJavadoc GL2ES1 */
+
+ClassJavadoc GL2ES2 /**
+ClassJavadoc GL2ES2 * <P>
+ClassJavadoc GL2ES2 * Interface containing the common subset of GL3, GL2 and GLES2.<br>
+ClassJavadoc GL2ES2 * This interface reflects only the programmable shader functionality of desktop and embedded OpenGL<br>
+ClassJavadoc GL2ES2 * </P>
+ClassJavadoc GL2ES2 */
+
+ClassJavadoc GL2GL3 /**
+ClassJavadoc GL2GL3 * <P>
+ClassJavadoc GL2GL3 * Interface containing the common subset of GL3 (OpenGL 3.1+) and GL2 (OpenGL 3.0),
+ClassJavadoc GL2GL3 * also known as the OpenGL 3.0 forward compatible, non deprecated subset.<br>
+ClassJavadoc GL2GL3 * This interface reflects only the programmable shader functionality of desktop OpenGL<br>
+ClassJavadoc GL2GL3 * </P>
+ClassJavadoc GL2GL3 */
+
+ClassJavadoc GL2 /**
+ClassJavadoc GL2 * <P>
+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.<br>
+ClassJavadoc GL2 * Note: OpenGL 3.0 is the last subsumed version in the specification.
+ClassJavadoc GL2 * You need to use a {@link GL3} OpenGL 3.1+ context to benefit
+ClassJavadoc GL2 * from new functionality and versions.
+ClassJavadoc GL2 * </P>
+ClassJavadoc GL2 */
+
+ClassJavadoc GL3 /**
+ClassJavadoc GL3 * <P>
+ClassJavadoc GL3 * This interface contains all core, forward compatible, OpenGL methods starting from 3.1,
+ClassJavadoc GL3 * inclusive, as well as most of it's extensions defined at the time of this specification.<br>
+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.<br>
+ClassJavadoc GL3 * Note: OpenGL 3.1 forward compatible no more includes fixed point functionality.
+ClassJavadoc GL3 * </P>
+ClassJavadoc GL3 */
+
+ClassJavadoc GLES1 /**
+ClassJavadoc GLES1 * <P>
+ClassJavadoc GLES1 * This interface contains all core embedded OpenGL methods of ES 1.x, with x >= 0,
+ClassJavadoc GLES1 * inclusive, as well as most of it's extensions defined at the
+ClassJavadoc GLES1 * time of this specification.
+ClassJavadoc GLES1 * </P>
+ClassJavadoc GLES1 */
+
+ClassJavadoc GLES2 /**
+ClassJavadoc GLES2 * <P>
+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
+ClassJavadoc GLES2 * time of this specification.
+ClassJavadoc GLES2 * </P>
+ClassJavadoc GLES2 */
+
+# Javadoc for the EGL class
+ClassJavadoc EGL /**
+ClassJavadoc EGL * Provides access to the embedded-specific OpenGL vendor extensions.
+ClassJavadoc EGL * See {@link GLBase} for more information.
+ClassJavadoc EGL */
+
# Javadoc for the WGL class
ClassJavadoc WGL /**
ClassJavadoc WGL * Provides access to the Windows-specific OpenGL vendor extensions.
-ClassJavadoc WGL * See {@link GL} for more information.
+ClassJavadoc WGL * See {@link GLBase} for more information.
ClassJavadoc WGL */
# Javadoc for the GLX class
ClassJavadoc GLX /**
ClassJavadoc GLX * Provides access to the X11-specific OpenGL vendor extensions.
-ClassJavadoc GLX * See {@link GL} for more information.
+ClassJavadoc GLX * See {@link GLBase} for more information.
ClassJavadoc GLX */
# Javadoc for the CGL class
ClassJavadoc CGL /**
ClassJavadoc CGL * Provides access to the MacOSX-specific OpenGL vendor extensions.
-ClassJavadoc CGL * See {@link GL} for more information.
+ClassJavadoc CGL * See {@link GLBase} for more information.
ClassJavadoc CGL */
# Javadoc for the XVisualInfo class
@@ -556,86 +665,9 @@ ClassJavadoc XVisualInfo */
# Custom code for querying extensions and exposing
# wglAllocateMemoryNV/glXAllocateMemoryNV
-CustomJavaCode GL /**
-CustomJavaCode GL * Returns true if the specified OpenGL core- or extension-function can be
-CustomJavaCode GL * used successfully through this GL instance given the current host (OpenGL
-CustomJavaCode GL * <i>client</i>) and display (OpenGL <i>server</i>) configuration.<P>
-CustomJavaCode GL * By "successfully" we mean that the function is both <i>callable</i>
-CustomJavaCode GL * on the machine running the program and <i>available</i> on the current
-CustomJavaCode GL * display.<P>
-CustomJavaCode GL *
-CustomJavaCode GL * In order to call a function successfully, the function must be both
-CustomJavaCode GL * <i>callable</i> on the machine running the program and <i>available</i> on
-CustomJavaCode GL * the display device that is rendering the output (note: on non-networked,
-CustomJavaCode GL * single-display machines these two conditions are identical; on networked and/or
-CustomJavaCode GL * multi-display machines this becomes more complicated). These conditions are
-CustomJavaCode GL * met if the function is either part of the core OpenGL version supported by
-CustomJavaCode GL * both the host and display, or it is an OpenGL extension function that both
-CustomJavaCode GL * the host and display support. <P>
-CustomJavaCode GL *
-CustomJavaCode GL * A GL function is <i>callable</i> if it is successfully linked at runtime,
-CustomJavaCode GL * hence the GLContext must be made current at least once.
-CustomJavaCode GL *
-CustomJavaCode GL * @param glFunctionName the name of the OpenGL function (e.g., use
-CustomJavaCode GL * "glBindRenderbufferEXT" or "glBindRenderbuffer" to check if {@link
-CustomJavaCode GL * #glBindRenderbuffer(int,int)} is available).
-CustomJavaCode GL */
-CustomJavaCode GL public boolean isFunctionAvailable(String glFunctionName);
-
-CustomJavaCode GL /**
-CustomJavaCode GL * Returns true if the specified OpenGL extension can be
-CustomJavaCode GL * used successfully through this GL instance given the current host (OpenGL
-CustomJavaCode GL * <i>client</i>) and display (OpenGL <i>server</i>) configuration.<P>
-CustomJavaCode GL *
-CustomJavaCode GL * @param glExtensionName the name of the OpenGL extension (e.g.,
-CustomJavaCode GL * "GL_ARB_vertex_program").
-CustomJavaCode GL */
-CustomJavaCode GL public boolean isExtensionAvailable(String glExtensionName);
-
-CustomJavaCode GL /**
-CustomJavaCode GL * Provides platform-independent access to the <code>wglAllocateMemoryNV</code> /
-CustomJavaCode GL * <code>glXAllocateMemoryNV</code> extension.
-CustomJavaCode GL */
-CustomJavaCode GL public java.nio.ByteBuffer glAllocateMemoryNV(int arg0, float arg1, float arg2, float arg3);
-
-CustomJavaCode GL /** Provides a platform-independent way to specify the minimum swap
-CustomJavaCode GL interval for buffer swaps. An argument of 0 disables
-CustomJavaCode GL sync-to-vertical-refresh completely, while an argument of 1
-CustomJavaCode GL causes the application to wait until the next vertical refresh
-CustomJavaCode GL until swapping buffers. The default, which is platform-specific,
-CustomJavaCode GL is usually either 0 or 1. This function is not guaranteed to
-CustomJavaCode GL have an effect, and in particular only affects heavyweight
-CustomJavaCode GL onscreen components. */
-CustomJavaCode GL public void setSwapInterval(int interval);
-
-CustomJavaCode GL /**
-CustomJavaCode GL * Returns an object through which platform-specific OpenGL extensions
-CustomJavaCode GL * (WGL, GLX, etc.) may be accessed. The data type of the returned
-CustomJavaCode GL * object and its associated capabilities are undefined. Most
-CustomJavaCode GL * applications will never need to call this method. It is highly
-CustomJavaCode GL * recommended that any applications which do call this method perform
-CustomJavaCode GL * all accesses on the returned object reflectively to guard
-CustomJavaCode GL * themselves against changes to the implementation.
-CustomJavaCode GL */
-CustomJavaCode GL public Object getPlatformGLExtensions();
-
-CustomJavaCode GL /**
-CustomJavaCode GL * Returns an object providing access to the specified OpenGL
-CustomJavaCode GL * extension. This is intended to provide a mechanism for vendors who
-CustomJavaCode GL * which to provide access to new OpenGL extensions without changing
-CustomJavaCode GL * the public API of the core package. For example, a user may request
-CustomJavaCode GL * access to extension "GL_VENDOR_foo" and receive back an object
-CustomJavaCode GL * which implements a vendor-specified interface which can call the
-CustomJavaCode GL * OpenGL extension functions corresponding to that extension. It is
-CustomJavaCode GL * up to the vendor to specify both the extension name and Java API
-CustomJavaCode GL * for accessing it, including which class or interface contains the
-CustomJavaCode GL * functions.
-CustomJavaCode GL *
-CustomJavaCode GL * <P>
-CustomJavaCode GL *
-CustomJavaCode GL * Note: it is the intent to add new extensions as quickly as possible
-CustomJavaCode GL * to the core GL API. Therefore it is unlikely that most vendors will
-CustomJavaCode GL * use this extension mechanism, but it is being provided for
-CustomJavaCode GL * completeness.
-CustomJavaCode GL */
-CustomJavaCode GL public Object getExtension(String extensionName);
+CustomJavaCode GL2GL3 /**
+CustomJavaCode GL2GL3 * Provides platform-independent access to the <code>wglAllocateMemoryNV</code> /
+CustomJavaCode GL2GL3 * <code>glXAllocateMemoryNV</code> extension.
+CustomJavaCode GL2GL3 */
+CustomJavaCode GL2GL3 public java.nio.ByteBuffer glAllocateMemoryNV(int arg0, float arg1, float arg2, float arg3);
+
diff --git a/make/config/jogl/gl-desktop.cfg b/make/config/jogl/gl-desktop.cfg
index d6a610c59..7e500a4f0 100755
--- a/make/config/jogl/gl-desktop.cfg
+++ b/make/config/jogl/gl-desktop.cfg
@@ -26,6 +26,9 @@ Opaque boolean BOOL
Opaque long PROC
Opaque long void **
+# XID needs to be treated as a long for 32/64 bit compatibility
+Opaque long XID
+
#
# Directives needed when processing cglext.h on MacOSX and other platforms
#
diff --git a/make/config/jogl/gl-es1.cfg b/make/config/jogl/gl-es1.cfg
index 02aae2860..35ea7f0ce 100755
--- a/make/config/jogl/gl-es1.cfg
+++ b/make/config/jogl/gl-es1.cfg
@@ -2,12 +2,12 @@
JavaOutputDir gensrc/classes
NativeOutputDir gensrc/native/jogl/es1
-ExtendedInterfaceSymbols ../build-temp/gensrc/classes/javax/media/opengl/GL.java
-ExtendedInterfaceSymbols ../build-temp/gensrc/classes/javax/media/opengl/GL2ES1.java
-ExtendedInterfaceSymbols ../src/jogl/classes/javax/media/opengl/GLBase.java
-ExtendedInterfaceSymbols ../src/jogl/classes/javax/media/opengl/fixedfunc/GLMatrixFunc.java
-ExtendedInterfaceSymbols ../src/jogl/classes/javax/media/opengl/fixedfunc/GLPointerFunc.java
-ExtendedInterfaceSymbols ../src/jogl/classes/javax/media/opengl/fixedfunc/GLLightingFunc.java
+ExtendedInterfaceSymbolsIgnore ../build-temp/gensrc/classes/javax/media/opengl/GL.java
+ExtendedInterfaceSymbolsIgnore ../build-temp/gensrc/classes/javax/media/opengl/GL2ES1.java
+ExtendedInterfaceSymbolsIgnore ../src/jogl/classes/javax/media/opengl/GLBase.java
+ExtendedInterfaceSymbolsIgnore ../src/jogl/classes/javax/media/opengl/fixedfunc/GLMatrixFunc.java
+ExtendedInterfaceSymbolsIgnore ../src/jogl/classes/javax/media/opengl/fixedfunc/GLPointerFunc.java
+ExtendedInterfaceSymbolsIgnore ../src/jogl/classes/javax/media/opengl/fixedfunc/GLLightingFunc.java
# There are a few routines we don't handle yet
Ignore glGetBufferPointervOES
diff --git a/make/config/jogl/gl-es2.cfg b/make/config/jogl/gl-es2.cfg
index 244f1944f..6a81c9376 100755
--- a/make/config/jogl/gl-es2.cfg
+++ b/make/config/jogl/gl-es2.cfg
@@ -2,9 +2,9 @@
JavaOutputDir gensrc/classes
NativeOutputDir gensrc/native/jogl/es2
-ExtendedInterfaceSymbols ../build-temp/gensrc/classes/javax/media/opengl/GL.java
-ExtendedInterfaceSymbols ../build-temp/gensrc/classes/javax/media/opengl/GL2ES2.java
-ExtendedInterfaceSymbols ../src/jogl/classes/javax/media/opengl/GLBase.java
+ExtendedInterfaceSymbolsIgnore ../build-temp/gensrc/classes/javax/media/opengl/GL.java
+ExtendedInterfaceSymbolsIgnore ../build-temp/gensrc/classes/javax/media/opengl/GL2ES2.java
+ExtendedInterfaceSymbolsIgnore ../src/jogl/classes/javax/media/opengl/GLBase.java
Package javax.media.opengl
Style InterfaceAndImpl
diff --git a/make/config/jogl/gl-gl2.cfg b/make/config/jogl/gl-gl2.cfg
index 8dfe76758..50574598a 100644
--- a/make/config/jogl/gl-gl2.cfg
+++ b/make/config/jogl/gl-gl2.cfg
@@ -2,13 +2,14 @@
JavaOutputDir gensrc/classes
NativeOutputDir gensrc/native/jogl/gl2
-ExtendedInterfaceSymbols ../build-temp/gensrc/classes/javax/media/opengl/GL.java
-ExtendedInterfaceSymbols ../build-temp/gensrc/classes/javax/media/opengl/GL2ES1.java
-ExtendedInterfaceSymbols ../build-temp/gensrc/classes/javax/media/opengl/GL2ES2.java
-ExtendedInterfaceSymbols ../src/jogl/classes/javax/media/opengl/GLBase.java
-ExtendedInterfaceSymbols ../src/jogl/classes/javax/media/opengl/fixedfunc/GLMatrixFunc.java
-ExtendedInterfaceSymbols ../src/jogl/classes/javax/media/opengl/fixedfunc/GLPointerFunc.java
-ExtendedInterfaceSymbols ../src/jogl/classes/javax/media/opengl/fixedfunc/GLLightingFunc.java
+ExtendedInterfaceSymbolsIgnore ../build-temp/gensrc/classes/javax/media/opengl/GL.java
+ExtendedInterfaceSymbolsIgnore ../build-temp/gensrc/classes/javax/media/opengl/GL2ES1.java
+ExtendedInterfaceSymbolsIgnore ../build-temp/gensrc/classes/javax/media/opengl/GL2ES2.java
+ExtendedInterfaceSymbolsIgnore ../build-temp/gensrc/classes/javax/media/opengl/GL2GL3.java
+ExtendedInterfaceSymbolsIgnore ../src/jogl/classes/javax/media/opengl/GLBase.java
+ExtendedInterfaceSymbolsIgnore ../src/jogl/classes/javax/media/opengl/fixedfunc/GLMatrixFunc.java
+ExtendedInterfaceSymbolsIgnore ../src/jogl/classes/javax/media/opengl/fixedfunc/GLPointerFunc.java
+ExtendedInterfaceSymbolsIgnore ../src/jogl/classes/javax/media/opengl/fixedfunc/GLLightingFunc.java
Package javax.media.opengl
Style InterfaceAndImpl
@@ -17,13 +18,15 @@ Extends GL2 GLBase
Extends GL2 GL
Extends GL2 GL2ES1
Extends GL2 GL2ES2
+Extends GL2 GL2GL3
ImplPackage com.sun.opengl.impl.gl2
ImplJavaClass GL2Impl
Implements GL2Impl GLBase
Implements GL2Impl GL
Implements GL2Impl GL2ES1
Implements GL2Impl GL2ES2
-Include gl-common-gl2.cfg
+Implements GL2Impl GL2GL3
+Include gl-common.cfg
Include gl-common-extensions.cfg
Include gl-desktop.cfg
@@ -40,6 +43,8 @@ IgnoreExtension GL_EXT_point_parameters
CustomJavaCode GL2 public boolean glIsPBOPackEnabled();
CustomJavaCode GL2 public boolean glIsPBOUnpackEnabled();
+IncludeAs CustomJavaCode GL2 gl-if-CustomJavaCode-gl2.java
+
CustomJavaCode GL2Impl public void glFrustumf(float left, float right, float bottom, float top, float zNear, float zFar) {
CustomJavaCode GL2Impl glFrustum((double)left, (double)right, (double)bottom, (double)top, (double)zNear, (double)zFar); }
diff --git a/make/config/jogl/gl-gl2es12.cfg b/make/config/jogl/gl-gl2es12.cfg
index c233ef4fd..9e36da2ea 100644
--- a/make/config/jogl/gl-gl2es12.cfg
+++ b/make/config/jogl/gl-gl2es12.cfg
@@ -13,12 +13,12 @@ ExtendedInterfaceSymbolsOnly ../src/jogl/classes/javax/media/opengl/fixedfunc/GL
Style ImplOnly
ImplPackage com.sun.opengl.impl.gl2es12
ImplJavaClass GL2ES12Impl
+Implements GL2ES12Impl GLBase
Implements GL2ES12Impl GL
Implements GL2ES12Impl GL2ES1
Implements GL2ES12Impl GL2ES2
-Implements GL2ES12Impl GLBase
-Include gl-common-gl2.cfg
+Include gl-common.cfg
Include gl-common-extensions.cfg
Include gl-desktop.cfg
@@ -32,6 +32,10 @@ ForceProcAddressGen glMapBuffer
# depend on the presence of an import library for a particular device
ForceProcAddressGen __ALL__
+# Also force the calling conventions of the locally generated function
+# pointer typedefs for these routines to APIENTRY
+LocalProcAddressCallingConvention __ALL__ APIENTRY
+
EmitProcAddressTable true
ProcAddressTableClassName GL2ES12ProcAddressTable
GetProcAddressTableExpr ((GL2ES12ProcAddressTable)_context.getGLProcAddressTable())
diff --git a/make/config/jogl/gl-gl3-set.cfg b/make/config/jogl/gl-gl3-set.cfg
new file mode 100644
index 000000000..ac1edac47
--- /dev/null
+++ b/make/config/jogl/gl-gl3-set.cfg
@@ -0,0 +1,14 @@
+# This .cfg file is used to generate the GL interface and implementing class.
+JavaOutputDir ../../build-temp/gluegen-set
+
+Package javax.media.opengl
+Style InterfaceOnly
+JavaClass GL3Set
+Include gl-common.cfg
+Include gl-common-extensions.cfg
+Include gl3-common.cfg
+Include gl3-desktop.cfg
+
+EmitProcAddressTable false
+ProcAddressTableClassName DontGenerateProcAddressTableStuff
+GetProcAddressTableExpr DontGenerateProcAddressTableStuff
diff --git a/make/config/jogl/gl-gl3.cfg b/make/config/jogl/gl-gl3.cfg
index 2b521e30a..576cd7cad 100644
--- a/make/config/jogl/gl-gl3.cfg
+++ b/make/config/jogl/gl-gl3.cfg
@@ -2,9 +2,10 @@
JavaOutputDir gensrc/classes
NativeOutputDir gensrc/native/jogl/gl3
-ExtendedInterfaceSymbols ../build-temp/gensrc/classes/javax/media/opengl/GL.java
-ExtendedInterfaceSymbols ../build-temp/gensrc/classes/javax/media/opengl/GL2ES2.java
-ExtendedInterfaceSymbols ../src/jogl/classes/javax/media/opengl/GLBase.java
+ExtendedInterfaceSymbolsIgnore ../build-temp/gensrc/classes/javax/media/opengl/GL.java
+ExtendedInterfaceSymbolsIgnore ../build-temp/gensrc/classes/javax/media/opengl/GL2ES2.java
+ExtendedInterfaceSymbolsIgnore ../build-temp/gensrc/classes/javax/media/opengl/GL2GL3.java
+ExtendedInterfaceSymbolsIgnore ../src/jogl/classes/javax/media/opengl/GLBase.java
Package javax.media.opengl
Style InterfaceAndImpl
@@ -12,19 +13,33 @@ JavaClass GL3
Extends GL3 GLBase
Extends GL3 GL
Extends GL3 GL2ES2
+Extends GL3 GL2GL3
ImplPackage com.sun.opengl.impl.gl3
ImplJavaClass GL3Impl
Implements GL3Impl GLBase
Implements GL3Impl GL
Implements GL3Impl GL2ES2
-Include gl-common-gl2.cfg
+Implements GL3Impl GL2GL3
+Include gl-common.cfg
Include gl-common-extensions.cfg
+Include gl3-common.cfg
Include gl3-desktop.cfg
+IncludeAs CustomJavaCode GL3 gl-if-CustomJavaCode-gl3.java
+
EmitProcAddressTable true
ProcAddressTableClassName GL3ProcAddressTable
GetProcAddressTableExpr ((GL3ProcAddressTable)_context.getGLProcAddressTable())
+# Force all of the methods to be emitted using dynamic linking so we
+# don't need to link against any emulation library on the desktop or
+# depend on the presence of an import library for a particular device
+ForceProcAddressGen __ALL__
+
+# Also force the calling conventions of the locally generated function
+# pointer typedefs for these routines to APIENTRY
+LocalProcAddressCallingConvention __ALL__ APIENTRY
+
# Pick up on-line OpenGL javadoc thanks to user cylab on javagaming.org forums
TagNativeBinding true
diff --git a/make/config/jogl/gl-headers.cfg b/make/config/jogl/gl-headers.cfg
index 1cc5bf05b..5a648b582 100755
--- a/make/config/jogl/gl-headers.cfg
+++ b/make/config/jogl/gl-headers.cfg
@@ -35,7 +35,3 @@ CustomCCode #include <GL/gl.h>
CustomCCode #include <GL/glx.h>
CustomCCode #include <GL/glxext.h>
CustomCCode #endif
-CustomCCode /* Provide GLES #define for locally generated function pointer typedefs */
-CustomCCode #ifndef GL_APIENTRY
-CustomCCode #define GL_APIENTRY GLAPIENTRY
-CustomCCode #endif
diff --git a/make/config/jogl/gl-if-CustomJavaCode-gl.java b/make/config/jogl/gl-if-CustomJavaCode-gl.java
index 28d24c072..20657ef9f 100644
--- a/make/config/jogl/gl-if-CustomJavaCode-gl.java
+++ b/make/config/jogl/gl-if-CustomJavaCode-gl.java
@@ -1,5 +1,70 @@
- public GLProfile getGLProfile();
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_AND = 0x1501;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_AND_INVERTED = 0x1504;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_AND_REVERSE = 0x1502;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_BLEND_DST = 0x0BE0;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_BLEND_SRC = 0x0BE1;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_BUFFER_ACCESS = 0x88BB;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_CLEAR = 0x1500;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_COLOR_LOGIC_OP = 0x0BF2;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_COPY = 0x1503;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_COPY_INVERTED = 0x150C;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_DEPTH_COMPONENT24 = 0x81A6;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_DEPTH_COMPONENT32 = 0x81A7;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_EQUIV = 0x1509;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_LINE_SMOOTH = 0x0B20;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_LINE_SMOOTH_HINT = 0x0C52;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_LOGIC_OP_MODE = 0x0BF0;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_MULTISAMPLE = 0x809D;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_NAND = 0x150E;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_NOOP = 0x1505;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_NOR = 0x1508;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_OR = 0x1507;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_OR_INVERTED = 0x150D;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_OR_REVERSE = 0x150B;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_POINT_FADE_THRESHOLD_SIZE = 0x8128;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_POINT_SIZE = 0x0B11;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_SAMPLE_ALPHA_TO_ONE = 0x809F;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_SET = 0x150F;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_SMOOTH_LINE_WIDTH_RANGE = 0x0B22;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_SMOOTH_POINT_SIZE_RANGE = 0x0B12;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_STENCIL_INDEX1 = 0x8D46;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_STENCIL_INDEX4 = 0x8D47;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_WRITE_ONLY = 0x88B9;
+ /** Common in ES1, GL2 and GL3 */
+ public static final int GL_XOR = 0x1506;
public void glClearDepth( double depth );
diff --git a/make/config/jogl/gl-if-CustomJavaCode-gl2.java b/make/config/jogl/gl-if-CustomJavaCode-gl2.java
new file mode 100644
index 000000000..4d1d0e048
--- /dev/null
+++ b/make/config/jogl/gl-if-CustomJavaCode-gl2.java
@@ -0,0 +1,19 @@
+
+/** Missed in the GL_EXT_gpu_shader4 promotion to 3.0 core */
+public static final int GL_SAMPLER_BUFFER_EXT = 0x8DC2;
+/** Missed in the GL_EXT_gpu_shader4 promotion to 3.0 core */
+public static final int GL_INT_SAMPLER_2D_RECT_EXT = 0x8DCD;
+/** Missed in the GL_EXT_gpu_shader4 promotion to 3.0 core */
+public static final int GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT = 0x8DD5;
+/** Missed in the GL_EXT_gpu_shader4 promotion to 3.0 core */
+public static final int GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT = 0x8DD8;
+/** Missed in the GL_EXT_gpu_shader4 promotion to 3.0 core */
+public static final int GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT = 0x88FD;
+
+/** Missed in the GL_EXT_packed_float promotion to 3.0 core */
+public static final int GL_RGBA_SIGNED_COMPONENTS_EXT = 0x8C3C;
+
+/** Missed in the GL_EXT_framebuffer_sRGB promotion to 3.0 core */
+public static final int GL_FRAMEBUFFER_SRGB_CAPABLE_EXT = 0x8DBA;
+
+
diff --git a/make/config/jogl/gl-if-CustomJavaCode-gl3.java b/make/config/jogl/gl-if-CustomJavaCode-gl3.java
new file mode 100644
index 000000000..1777c1557
--- /dev/null
+++ b/make/config/jogl/gl-if-CustomJavaCode-gl3.java
@@ -0,0 +1,8 @@
+
+/** Part of <code>GL_ARB_uniform_buffer_object</code> */
+public static final int GL_INVALID_INDEX = 0xFFFFFFFF ;
+
+/** Part of <code>GL_ARB_sync</code> */
+public static final long GL_TIMEOUT_IGNORED = 0xFFFFFFFFFFFFFFFFL ;
+
+
diff --git a/make/config/jogl/gl-if-gl-ignores.cfg b/make/config/jogl/gl-if-gl-ignores.cfg
index 1fa439702..5deb828e6 100644
--- a/make/config/jogl/gl-if-gl-ignores.cfg
+++ b/make/config/jogl/gl-if-gl-ignores.cfg
@@ -354,7 +354,7 @@ Ignore GL_WRITE_ONLY_OES
Ignore GL_XOR
Ignore glIsProgram
Ignore glIsShader
-Ignore glUnmapBufferOES
+#Ignore glUnmapBufferOES
Ignore glCreateProgram
Ignore glCreateShader
Ignore glGetAttribLocation
@@ -363,12 +363,12 @@ Ignore glAlphaFunc
Ignore glAttachShader
Ignore glBindAttribLocation
Ignore glBlendColor
-Ignore glBlendEquation
-Ignore glBlendEquationOES
-Ignore glBlendEquationSeparate
-Ignore glBlendEquationSeparateOES
-Ignore glBlendFuncSeparate
-Ignore glBlendFuncSeparateOES
+#Ignore glBlendEquation
+#Ignore glBlendEquationOES
+#Ignore glBlendEquationSeparate
+#Ignore glBlendEquationSeparateOES
+#Ignore glBlendFuncSeparate
+#Ignore glBlendFuncSeparateOES
Ignore glClearDepthfOES
Ignore glClientActiveTexture
Ignore glClipPlanef
@@ -401,8 +401,8 @@ Ignore glFogxvOES
Ignore glFramebufferVertexAttribArrayNV
Ignore glFrustumf
Ignore glFrustumfOES
-Ignore glGenerateMipmap
-Ignore glGenerateMipmapOES
+#Ignore glGenerateMipmap
+#Ignore glGenerateMipmapOES
Ignore glGetActiveAttrib
Ignore glGetActiveUniform
Ignore glGetAttachedShaders
diff --git a/make/config/jogl/gl-if-gl.cfg b/make/config/jogl/gl-if-gl.cfg
index 46e11fdd4..1bba846e7 100755
--- a/make/config/jogl/gl-if-gl.cfg
+++ b/make/config/jogl/gl-if-gl.cfg
@@ -4,7 +4,7 @@ Style InterfaceOnly
JavaClass GL
Extends GL GLBase
-ExtendedInterfaceSymbols ../src/jogl/classes/javax/media/opengl/GLBase.java
+ExtendedInterfaceSymbolsIgnore ../src/jogl/classes/javax/media/opengl/GLBase.java
HierarchicalNativeOutput false
Include gl-common.cfg
diff --git a/make/config/jogl/gl-if-gl2_es1.cfg b/make/config/jogl/gl-if-gl2_es1.cfg
index d09ebcb30..6fe6b4b90 100755
--- a/make/config/jogl/gl-if-gl2_es1.cfg
+++ b/make/config/jogl/gl-if-gl2_es1.cfg
@@ -8,11 +8,11 @@ Extends GL2ES1 GLMatrixFunc
Extends GL2ES1 GLPointerFunc
Extends GL2ES1 GLLightingFunc
-ExtendedInterfaceSymbols ../build-temp/gensrc/classes/javax/media/opengl/GL.java
-ExtendedInterfaceSymbols ../src/jogl/classes/javax/media/opengl/GLBase.java
-ExtendedInterfaceSymbols ../src/jogl/classes/javax/media/opengl/fixedfunc/GLMatrixFunc.java
-ExtendedInterfaceSymbols ../src/jogl/classes/javax/media/opengl/fixedfunc/GLPointerFunc.java
-ExtendedInterfaceSymbols ../src/jogl/classes/javax/media/opengl/fixedfunc/GLLightingFunc.java
+ExtendedInterfaceSymbolsIgnore ../build-temp/gensrc/classes/javax/media/opengl/GL.java
+ExtendedInterfaceSymbolsIgnore ../src/jogl/classes/javax/media/opengl/GLBase.java
+ExtendedInterfaceSymbolsIgnore ../src/jogl/classes/javax/media/opengl/fixedfunc/GLMatrixFunc.java
+ExtendedInterfaceSymbolsIgnore ../src/jogl/classes/javax/media/opengl/fixedfunc/GLPointerFunc.java
+ExtendedInterfaceSymbolsIgnore ../src/jogl/classes/javax/media/opengl/fixedfunc/GLLightingFunc.java
HierarchicalNativeOutput false
Include gl-common.cfg
diff --git a/make/config/jogl/gl-if-gl2_es2.cfg b/make/config/jogl/gl-if-gl2_es2.cfg
index 5345c3ba1..63f96d906 100755
--- a/make/config/jogl/gl-if-gl2_es2.cfg
+++ b/make/config/jogl/gl-if-gl2_es2.cfg
@@ -5,8 +5,8 @@ JavaClass GL2ES2
Extends GL2ES2 GLBase
Extends GL2ES2 GL
-ExtendedInterfaceSymbols ../build-temp/gensrc/classes/javax/media/opengl/GL.java
-ExtendedInterfaceSymbols ../src/jogl/classes/javax/media/opengl/GLBase.java
+ExtendedInterfaceSymbolsIgnore ../build-temp/gensrc/classes/javax/media/opengl/GL.java
+ExtendedInterfaceSymbolsIgnore ../src/jogl/classes/javax/media/opengl/GLBase.java
HierarchicalNativeOutput false
Include gl-common.cfg
Include gl-common-extensions.cfg
diff --git a/make/config/jogl/gl-if-gl2_gl3.cfg b/make/config/jogl/gl-if-gl2_gl3.cfg
new file mode 100644
index 000000000..7f6903dd6
--- /dev/null
+++ b/make/config/jogl/gl-if-gl2_gl3.cfg
@@ -0,0 +1,51 @@
+# This .cfg file is used to generate the GL interface and implementing class.
+Package javax.media.opengl
+Style InterfaceOnly
+JavaClass GL2GL3
+Extends GL2GL3 GLBase
+Extends GL2GL3 GL
+Extends GL2GL3 GL2ES2
+
+ExtendedInterfaceSymbolsIgnore ../build-temp/gensrc/classes/javax/media/opengl/GL.java
+ExtendedInterfaceSymbolsIgnore ../build-temp/gensrc/classes/javax/media/opengl/GL2ES2.java
+ExtendedInterfaceSymbolsIgnore ../src/jogl/classes/javax/media/opengl/GLBase.java
+
+ExtendedInterfaceSymbolsOnly ../build-temp/gluegen-set/javax/media/opengl/GL3Set.java
+
+HierarchicalNativeOutput false
+Include gl-common.cfg
+Include gl-common-extensions.cfg
+Include gl-desktop.cfg
+
+JavaOutputDir gensrc/classes
+NativeOutputDir gensrc/native/jogl
+
+#
+# Same name but different signature ..
+# No collisions found .. good!
+
+EmitProcAddressTable false
+ProcAddressTableClassName DontGenerateProcAddressTableStuff
+GetProcAddressTableExpr DontGenerateProcAddressTableStuff
+
+# Inform the glue code generator of the association between #defines
+# and functions and the extensions in which they are defined
+GLHeader GL/gl.h
+GLHeader GL/glext.h
+
+# Force all of the methods to be emitted using dynamic linking so we
+# don't need to link against any emulation library on the desktop or
+# depend on the presence of an import library for a particular device
+ForceProcAddressGen __ALL__
+
+# Also force the calling conventions of the locally generated function
+# pointer typedefs for these routines to APIENTRY
+LocalProcAddressCallingConvention __ALL__ APIENTRY
+
+# Pick up on-line OpenGL javadoc thanks to user cylab on javagaming.org forums
+TagNativeBinding true
+
+# Ignore extensions that are already picked up via the GL2ES1 interface
+IgnoreExtension GL_EXT_point_parameters
+
+Import java.io.PrintStream
diff --git a/make/config/jogl/gl-impl-CustomJavaCode-gl2.java b/make/config/jogl/gl-impl-CustomJavaCode-gl2.java
index b3410040b..5928b3a0b 100644
--- a/make/config/jogl/gl-impl-CustomJavaCode-gl2.java
+++ b/make/config/jogl/gl-impl-CustomJavaCode-gl2.java
@@ -15,6 +15,7 @@ public void setObjectTracker(GLObjectTracker tracker) {
*/
+
public GL2Impl(GLProfile glp, GLContextImpl context) {
this._context = context;
this.bufferSizeTracker = context.getBufferSizeTracker();
@@ -53,6 +54,10 @@ public final boolean isGL2ES2() {
return true;
}
+public final boolean isGL2GL3() {
+ return true;
+}
+
public final boolean hasGLSL() {
return true;
}
@@ -85,6 +90,10 @@ public final GL2ES2 getGL2ES2() throws GLException {
return this;
}
+public final GL2GL3 getGL2GL3() throws GLException {
+ return this;
+}
+
public boolean isFunctionAvailable(String glFunctionName) {
return _context.isFunctionAvailable(glFunctionName);
}
@@ -118,6 +127,10 @@ public void setSwapInterval(int interval) {
_context.setSwapInterval(interval);
}
+public int getSwapInterval() {
+ return _context.getSwapInterval();
+}
+
public Object getPlatformGLExtensions() {
return _context.getPlatformGLExtensions();
}
diff --git a/make/config/jogl/gl-impl-CustomJavaCode-gl2es12.java b/make/config/jogl/gl-impl-CustomJavaCode-gl2es12.java
index d7b3de789..3dfcf5908 100644
--- a/make/config/jogl/gl-impl-CustomJavaCode-gl2es12.java
+++ b/make/config/jogl/gl-impl-CustomJavaCode-gl2es12.java
@@ -56,6 +56,10 @@ public final boolean isGL2ES2() {
return isGL2ES2;
}
+public final boolean isGL2GL3() {
+ return false;
+}
+
public final boolean hasGLSL() {
return isGL2ES2;
}
@@ -94,6 +98,10 @@ public final GL2ES2 getGL2ES2() throws GLException {
throw new GLException("Not a GL2ES2 implementation");
}
+public final GL2GL3 getGL2GL3() throws GLException {
+ throw new GLException("Not a GL2GL3 implementation");
+}
+
public boolean isFunctionAvailable(String glFunctionName) {
return _context.isFunctionAvailable(glFunctionName);
}
@@ -115,18 +123,14 @@ public GLContext getContext() {
private GLContextImpl _context;
-/**
- * Provides platform-independent access to the wglAllocateMemoryNV /
- * glXAllocateMemoryNV extension.
- */
-public java.nio.ByteBuffer glAllocateMemoryNV(int arg0, float arg1, float arg2, float arg3) {
- return _context.glAllocateMemoryNV(arg0, arg1, arg2, arg3);
-}
-
public void setSwapInterval(int interval) {
_context.setSwapInterval(interval);
}
+public int getSwapInterval() {
+ return _context.getSwapInterval();
+}
+
public Object getPlatformGLExtensions() {
return _context.getPlatformGLExtensions();
}
diff --git a/make/config/jogl/gl-impl-CustomJavaCode-gl3.java b/make/config/jogl/gl-impl-CustomJavaCode-gl3.java
index aa1ef6575..9123f35c8 100644
--- a/make/config/jogl/gl-impl-CustomJavaCode-gl3.java
+++ b/make/config/jogl/gl-impl-CustomJavaCode-gl3.java
@@ -53,6 +53,10 @@ public final boolean isGL2ES2() {
return true;
}
+public final boolean isGL2GL3() {
+ return true;
+}
+
public final boolean hasGLSL() {
return true;
}
@@ -85,6 +89,10 @@ public final GL2ES2 getGL2ES2() throws GLException {
return this;
}
+public final GL2GL3 getGL2GL3() throws GLException {
+ return this;
+}
+
public boolean isFunctionAvailable(String glFunctionName) {
return _context.isFunctionAvailable(glFunctionName);
}
@@ -118,6 +126,10 @@ public void setSwapInterval(int interval) {
_context.setSwapInterval(interval);
}
+public int getSwapInterval() {
+ return _context.getSwapInterval();
+}
+
public Object getPlatformGLExtensions() {
return _context.getPlatformGLExtensions();
}
diff --git a/make/config/jogl/gl-impl-CustomJavaCode-gles1.java b/make/config/jogl/gl-impl-CustomJavaCode-gles1.java
index d349f8018..c5831f426 100755
--- a/make/config/jogl/gl-impl-CustomJavaCode-gles1.java
+++ b/make/config/jogl/gl-impl-CustomJavaCode-gles1.java
@@ -36,6 +36,10 @@ public final boolean isGL2ES2() {
return false;
}
+public final boolean isGL2GL3() {
+ return false;
+}
+
public final boolean hasGLSL() {
return false;
}
@@ -68,6 +72,10 @@ public final GL2ES2 getGL2ES2() throws GLException {
throw new GLException("Not a GL2ES2 implementation");
}
+public final GL2GL3 getGL2GL3() throws GLException {
+ throw new GLException("Not a GL2GL3 implementation");
+}
+
public boolean isFunctionAvailable(String glFunctionName) {
return _context.isFunctionAvailable(glFunctionName);
}
@@ -89,18 +97,14 @@ public GLContext getContext() {
private GLContextImpl _context;
-/**
- * Provides platform-independent access to the wglAllocateMemoryNV /
- * glXAllocateMemoryNV extension.
- */
-public java.nio.ByteBuffer glAllocateMemoryNV(int arg0, float arg1, float arg2, float arg3) {
- return _context.glAllocateMemoryNV(arg0, arg1, arg2, arg3);
-}
-
public void setSwapInterval(int interval) {
_context.setSwapInterval(interval);
}
+public int getSwapInterval() {
+ return _context.getSwapInterval();
+}
+
public Object getPlatformGLExtensions() {
return _context.getPlatformGLExtensions();
}
@@ -288,7 +292,7 @@ private Map/*<ARBVBOKey, ByteBuffer>*/ arbVBOCache = new HashMap();
/** Entry point to C language function: <br> <code> LPVOID glMapBuffer(GLenum target, GLenum access); </code> */
public java.nio.ByteBuffer glMapBuffer(int target, int access) {
- final long __addr_ = ((GLES1ProcAddressTable)_context.getGLProcAddressTable())._addressof_glMapBufferOES;
+ final long __addr_ = ((GLES1ProcAddressTable)_context.getGLProcAddressTable())._addressof_glMapBuffer;
if (__addr_ == 0) {
throw new GLException("Method \"glMapBuffer\" not available");
}
diff --git a/make/config/jogl/gl-impl-CustomJavaCode-gles2.java b/make/config/jogl/gl-impl-CustomJavaCode-gles2.java
index 28edd7a63..7e9b786b0 100755
--- a/make/config/jogl/gl-impl-CustomJavaCode-gles2.java
+++ b/make/config/jogl/gl-impl-CustomJavaCode-gles2.java
@@ -40,6 +40,10 @@ public final boolean isGL2ES2() {
return true;
}
+public final boolean isGL2GL3() {
+ return false;
+}
+
public final boolean hasGLSL() {
return true;
}
@@ -72,6 +76,10 @@ public final GL2ES2 getGL2ES2() throws GLException {
return this;
}
+public final GL2GL3 getGL2GL3() throws GLException {
+ throw new GLException("Not a GL2GL3 implementation");
+}
+
public boolean isFunctionAvailable(String glFunctionName) {
return _context.isFunctionAvailable(glFunctionName);
}
@@ -93,18 +101,14 @@ public GLContext getContext() {
private GLContextImpl _context;
-/**
- * Provides platform-independent access to the wglAllocateMemoryNV /
- * glXAllocateMemoryNV extension.
- */
-public java.nio.ByteBuffer glAllocateMemoryNV(int arg0, float arg1, float arg2, float arg3) {
- return _context.glAllocateMemoryNV(arg0, arg1, arg2, arg3);
-}
-
public void setSwapInterval(int interval) {
_context.setSwapInterval(interval);
}
+public int getSwapInterval() {
+ return _context.getSwapInterval();
+}
+
public Object getPlatformGLExtensions() {
return _context.getPlatformGLExtensions();
}
@@ -298,7 +302,7 @@ private Map/*<ARBVBOKey, ByteBuffer>*/ arbVBOCache = new HashMap();
/** Entry point to C language function: <br> <code> LPVOID glMapBuffer(GLenum target, GLenum access); </code> */
public java.nio.ByteBuffer glMapBuffer(int target, int access) {
- final long __addr_ = ((GLES2ProcAddressTable)_context.getGLProcAddressTable())._addressof_glMapBufferOES;
+ final long __addr_ = ((GLES2ProcAddressTable)_context.getGLProcAddressTable())._addressof_glMapBuffer;
if (__addr_ == 0) {
throw new GLException("Method \"glMapBuffer\" not available");
}
diff --git a/make/config/jogl/gl3-common.cfg b/make/config/jogl/gl3-common.cfg
new file mode 100644
index 000000000..fac8323bb
--- /dev/null
+++ b/make/config/jogl/gl3-common.cfg
@@ -0,0 +1,24 @@
+
+# >>> OpenGL 3.1
+# See gl-common.cfg !
+# <<< OpenGL 3.1
+
+# >>> OpenGL 3.2
+# Rename extension suffices (if exist) subsumed in OpenGL 3.2 (from OpenGL 3.2 spec, Appendix H.1)
+RenameExtensionIntoCore GL_ARB_vertex_array_bgra
+RenameExtensionIntoCore GL_ARB_draw_elements_base_vertex
+RenameExtensionIntoCore GL_ARB_fragment_coord_conventions
+RenameExtensionIntoCore GL_ARB_provoking_vertex
+RenameExtensionIntoCore GL_ARB_seamless_cube_map
+RenameExtensionIntoCore GL_ARB_texture_multisample
+RenameExtensionIntoCore GL_ARB_depth_clamp
+RenameExtensionIntoCore GL_ARB_geometry_shader4
+RenameExtensionIntoCore GL_ARB_sync
+# <<< OpenGL 3.2
+
+# Ignore GL functions that deal with explicit pointer values in such a
+# way that we cannot implement the functionality in Java
+Ignore glMultiDrawElementsBaseVertex
+
+Opaque long GLsync
+
diff --git a/make/config/jogl/gl3-desktop.cfg b/make/config/jogl/gl3-desktop.cfg
index 2d34ade30..c3dd180bb 100755
--- a/make/config/jogl/gl3-desktop.cfg
+++ b/make/config/jogl/gl3-desktop.cfg
@@ -8,7 +8,6 @@ GLHeader GL3/gl3ext.h
#Include gl-desktop-tracker.cfg
-
#
# Directives needed when processing wglext.h on Windows and other platforms
#
diff --git a/make/config/jogl/gl3-headers.cfg b/make/config/jogl/gl3-headers.cfg
index 282a91ec5..8af9157cf 100755
--- a/make/config/jogl/gl3-headers.cfg
+++ b/make/config/jogl/gl3-headers.cfg
@@ -23,7 +23,3 @@ CustomCCode #include <stdlib.h>
CustomCCode #include <X11/Xlib.h>
CustomCCode #include <GL3/gl3.h>
CustomCCode #endif
-CustomCCode /* Provide GLES #define for locally generated function pointer typedefs */
-CustomCCode #ifndef GL_APIENTRY
-CustomCCode #define GL_APIENTRY GLAPIENTRY
-CustomCCode #endif
diff --git a/make/config/jogl/glu-CustomJavaCode-base.java b/make/config/jogl/glu-CustomJavaCode-base.java
index 6949cfb68..78c067606 100755
--- a/make/config/jogl/glu-CustomJavaCode-base.java
+++ b/make/config/jogl/glu-CustomJavaCode-base.java
@@ -76,8 +76,19 @@ public boolean isFunctionAvailable(String gluFunctionName)
// Utility routines
//
-private static Class gl2Class;
-private static Class gl2es1Class;
+private static final Class gl2Class;
+private static final Class gl2es1Class;
+
+static {
+ Class _gl2Class=null;
+ Class _gl2es1Class=null;
+ try {
+ _gl2Class = Class.forName("javax.media.opengl.glu.gl2.GLUgl2");
+ _gl2es1Class = Class.forName("javax.media.opengl.glu.gl2es1.GLUgl2es1");
+ } catch (Throwable t) {}
+ gl2Class = _gl2Class;
+ gl2es1Class = _gl2es1Class;
+}
/**
* Instantiates a GLU implementation object in respect to the given GL profile
@@ -94,32 +105,20 @@ public static final GLU createGLU() throws GLException {
public static final GLU createGLU(GL gl) throws GLException {
try {
Class c = null;
- if(gl.isGL2()) {
- if (gl2Class == null) {
- gl2Class = Class.forName("javax.media.opengl.glu.gl2.GLUgl2");
- }
+ if(gl.isGL2() && null!=gl2Class) {
c = gl2Class;
- } else if (gl.isGL2ES1()) {
- if (gl2es1Class == null) {
- gl2es1Class = Class.forName("javax.media.opengl.glu.gl2es1.GLUgl2es1");
- }
+ } else if(gl.isGL2ES1() && null!=gl2es1Class) {
c = gl2es1Class;
+ /** There is no specialized ES 2 GLU at this time
+ } else if(gl.isGL2ES2() && null!=gl2es2Class) {
+ c = gl2es2Class; */
+ } else {
+ c = GLU.class;
}
- if (c != null) {
- return (GLU) c.newInstance();
- }
+ return (GLU) c.newInstance();
} catch (Exception e) {
throw new GLException(e);
}
- // There is no specialized ES 2 GLU at this time
- /*
- try {
- if(GLProfile.GL2ES12.equals(profile) || GLProfile.GL2.equals(profile) || GLProfile.GLES2.equals(profile)) {
- return (GLU) NWReflection.createInstance("javax.media.opengl.glu.gl2es2.GLUgl2es2");
- }
- } catch (GLException e) { e.printStackTrace(); }
- */
- return new GLU();
}
public GLU()
diff --git a/make/config/jogl/glu-common.cfg b/make/config/jogl/glu-common.cfg
index 3b5a1160a..df59175bb 100644
--- a/make/config/jogl/glu-common.cfg
+++ b/make/config/jogl/glu-common.cfg
@@ -1,3 +1,5 @@
+GLHeader GL/glu.h
+
# This .cfg file provides common options used among all GLU glue code
HierarchicalNativeOutput false
diff --git a/make/config/jogl/glx-x11.cfg b/make/config/jogl/glx-x11.cfg
index 3ef151c44..c9079b84f 100644
--- a/make/config/jogl/glx-x11.cfg
+++ b/make/config/jogl/glx-x11.cfg
@@ -6,10 +6,13 @@ NativeOutputDir gensrc/native/jogl/X11
Package com.sun.opengl.impl.x11.glx
JavaClass GLX
Style allstatic
-Include gl-common-gl2.cfg
+Include gl-common.cfg
Include gl-common-extensions.cfg
Include gl-desktop.cfg
+GLHeader GL/glx.h
+GLHeader GL/glxext.h
+
EmitProcAddressTable true
ProcAddressTableClassName GLXProcAddressTable
GetProcAddressTableExpr glxProcAddressTable
diff --git a/make/config/jogl/glxext.cfg b/make/config/jogl/glxext.cfg
index 9688a9436..39ba379c4 100755
--- a/make/config/jogl/glxext.cfg
+++ b/make/config/jogl/glxext.cfg
@@ -9,10 +9,13 @@ JavaClass GLXExt
ImplPackage com.sun.opengl.impl.x11.glx
ImplJavaClass GLXExtImpl
-ExtendedInterfaceSymbols ../build-temp/gensrc/classes/com/sun/opengl/impl/x11/glx/GLX.java
-Include gl-common-gl2.cfg
+ExtendedInterfaceSymbolsIgnore ../build-temp/gensrc/classes/com/sun/opengl/impl/x11/glx/GLX.java
+Include gl-common.cfg
Include gl-desktop.cfg
+GLHeader GL/glx.h
+GLHeader GL/glxext.h
+
EmitProcAddressTable true
ProcAddressTableClassName GLXExtProcAddressTable
GetProcAddressTableExpr _context.getGLXExtProcAddressTable()
diff --git a/make/config/jogl/wgl-win32.cfg b/make/config/jogl/wgl-win32.cfg
index f86f1adcc..6cd4fd412 100644
--- a/make/config/jogl/wgl-win32.cfg
+++ b/make/config/jogl/wgl-win32.cfg
@@ -6,10 +6,15 @@ NativeOutputDir gensrc/native/jogl/Windows
Package com.sun.opengl.impl.windows.wgl
JavaClass WGL
Style allstatic
-Include gl-common-gl2.cfg
+Include gl-common.cfg
Include gl-common-extensions.cfg
Include gl-desktop.cfg
+AllowNonGLExtensions true
+
+GLHeader wingdi.h
+GLHeader GL/wglext.h
+
# Implement the first argument to wglGetProcAddress as String instead
# of byte[]
ArgumentIsString wglGetProcAddress 0
diff --git a/make/config/jogl/wglext.cfg b/make/config/jogl/wglext.cfg
index af4430bbe..ea9a0257e 100644
--- a/make/config/jogl/wglext.cfg
+++ b/make/config/jogl/wglext.cfg
@@ -8,9 +8,14 @@ Style InterfaceAndImpl
JavaClass WGLExt
ImplPackage com.sun.opengl.impl.windows.wgl
ImplJavaClass WGLExtImpl
-Include gl-common-gl2.cfg
+Include gl-common.cfg
Include gl-desktop.cfg
+AllowNonGLExtensions true
+
+GLHeader wingdi.h
+GLHeader GL/wglext.h
+
EmitProcAddressTable true
ProcAddressTableClassName WGLExtProcAddressTable
GetProcAddressTableExpr _context.getWGLExtProcAddressTable()
diff --git a/make/doc/jogl/spec-overview.html b/make/doc/jogl/spec-overview.html
index 11074e601..26936e63e 100644
--- a/make/doc/jogl/spec-overview.html
+++ b/make/doc/jogl/spec-overview.html
@@ -11,11 +11,14 @@
This specification, an optional set of packages, describes the Java(TM)
bindings to the native OpenGL(R) 3D graphics library profiles:
<ul>
- <li> Desktop OpenGL 1.x, 2.y and 3.0, with x >= 5 and y >= 0 </li>
- <li> Desktop OpenGL 3.x, with x >= 1 </li>
+ <li> Desktop OpenGL 1.0 - 3.0 </li>
+ <li> Desktop OpenGL 3.x, with x >= 1, forward compatible, core profile </li>
<li> Embedded OpenGL ES 1.x, with x >= 0 </li>
<li> Embedded OpenGL ES 2.x, with x >= 0 </li>
</ul><br>
+ See <a href="#GLAPIInclusionCriteria">Inclusion Criteria</a> explaining the OpenGL profile seperation.<br>
+ See <a href="#GLRuntimeVersion">OpenGL Runtime Requirements</a>.<br>
+ <br>
A binding to the native OpenCL(R) library is not yet specified, but intended to be
included in a <a href="#maintenanceupdates">maintenance update</a>.
<br>
@@ -40,28 +43,45 @@ bindings to the native OpenGL(R) 3D graphics library profiles:
</ul>
<br>
+<h3>OpenGL Profile Model</h3>
+ 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.<br>
+ JOGL reflects these profiles <a href="../doc/bouml/html/">with an OO abstraction model</a>,
+ specifying interfaces encapsulating common subsets.<br>
+
<h3>Package Structure</h3>
The packages defined by this specification include:<br>
<ul>
<li>The <b>javax.media.opengl</b> package<br><br>
This package contains all Java bindings for all OpenGL profiles.<br>
+ See <a href="#GLAPIInclusionCriteria">Inclusion Criteria</a> explaining the OpenGL profile seperation.<br>
+ See <a href="#GLRuntimeVersion">OpenGL Runtime Requirements</a>.<br>
The main OpenGL profile interfaces are:<br><br>
<ul>
- <li> {@link javax.media.opengl.GL2 javax.media.opengl.GL2} interface<br>
+ <li> {@link javax.media.opengl.GL3 javax.media.opengl.GL3} interface<br>
<br>
- 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. Early OpenGL extensions whose functionality
-was incorporated into core OpenGL by version 2.0, inclusive, are specifically
-excluded.<br>
+ 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. <br>
+ 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.<br>
+ Note: OpenGL 3.1 forward compatible no more includes fixed point functionality.<br>
+ See <a href="#GL3InclusionCriteria">GL3 Inclusion Criteria</a>.<br>
+ See <a href="#GL3RuntimeVersion">GL3 Runtime Requirements</a>.<br>
Future extensions will be added with a <a href="#maintenanceupdates">maintenance update</a></li><br>
- <li> {@link javax.media.opengl.GL3 javax.media.opengl.GL3} interface<br>
+ <li> {@link javax.media.opengl.GL2 javax.media.opengl.GL2} interface<br>
<br>
- This interface contains all core desktop OpenGL methods starting from 3.1,
-inclusive, as well as most of it's extensions defined at the
-time of this specification. <br>
+ 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.<br>
+ 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.<br>
+ Note: Intersecting OpenGL 3.1 subsumed extensions are subsumed in GL2 as well, to offer the best common GL2GL3 intersection.<br>
+ See <a href="#GL2InclusionCriteria">GL2 Inclusion Criteria</a>.<br>
+ See <a href="#GL2RuntimeVersion">GL2 Runtime Requirements</a>.<br>
Future extensions will be added with a <a href="#maintenanceupdates">maintenance update</a></li><br>
<li> {@link javax.media.opengl.GLES1 javax.media.opengl.GLES1} interface<br>
@@ -101,7 +121,13 @@ time of this specification. <br>
<li> {@link javax.media.opengl.GL2ES2 javax.media.opengl.GL2ES2} interface<br>
<br>
Interface containing the common subset of GL3, GL2 and GLES2.<br>
- This interface reflects only the programmable shader functionality of OpenGL</li><br>
+ This interface reflects only the programmable shader functionality of desktop and embedded OpenGL</li><br>
+
+ <li> {@link javax.media.opengl.GL2GL3 javax.media.opengl.GL2GL3} interface<br>
+ <br>
+ Interface containing the common subset of GL3 (OpenGL 3.1+) and GL2 (OpenGL 3.0),
+ also known as the OpenGL 3.0 forward compatible, non deprecated subset.<br>
+ This interface reflects only the programmable shader functionality of desktop OpenGL</li><br>
</ul>
</li><br>
@@ -293,24 +319,57 @@ between two GLContexts associated with the same GLDrawable.
<h3>Criteria Used for Inclusion of APIs into the Java Bindings</h3>
+<a name="GLAPIInclusionCriteria"/>
<h4>OpenGL API Inclusion Criteria</h4>
OpenGL functions and OpenGL extensions have been included in the Java bindings
according the following rules: <br>
<ul>
- <li>
- <li>All functions in core OpenGL 2.0, inclusive, have been included.</li>
- <li>If the functionality of the OpenGL extension was subsumed into core
-OpenGL by version 2.0, then the extension was dropped from the Java bindings.
- However, if the core function name is not available in the native OpenGL implementation,
- the extension named equivalent is used instead, e.g. <i>GL_ARB_framebuffer_object</i>.</li>
- <li>Functions that deal with explicit pointer values in such a way that
+ <a name="GL3InclusionCriteria"/>
+ <li> {@link javax.media.opengl.GL3 javax.media.opengl.GL3} interface
+ <ul>
+ <li>All functions in core, forward compatible, OpenGL 3.1 - 3.2, inclusive, have been included,
+ as described in the header files <code>GL3/gl3.h</code>.</li>
+ <li>Reason for starting a new profile beginning with 3.1 are:
+ <ul>
+ <li> OpenGL 3.1 requires a new native context, incompatible with prior versions.</li>
+ <li> OpenGL 3.1 forward compatible profile drops fixed functionality.</li>
+ </ul></li>
+ <li>Forward compatibility, aka core, ie a context without <code>GL_ARB_compatibility</code>, is chosen because:
+ <ul>
+ <li> It shares a commont subset with ES2.x</li>
+ <li> It is not guaranteed to be provided by all vendors.</li>
+ <li> It is not guaranteed to be provided in future versions.</li>
+ <li> OpenGL 3.2 core profile is compatible with OpenGL 3.1 forward compatible spec.</li>
+ <li> OpenGL 3.2 Spec Appendix E.1: It is not possible to implement both core and compatibility profiles in a single GL context, ..</li>
+ </ul></li>
+ </ul></li>
+ <a name="GL2InclusionCriteria"/>
+ <li> {@link javax.media.opengl.GL2 javax.media.opengl.GL2} interface
+ <ul>
+ <li>All functions in core OpenGL 3.0, inclusive, have been included.</li>
+ <li>Reason for making the <em>cut</em> at OpenGL 3.0 are:
+ <ul>
+ <li>Availability of 3.0 with the same native context.</li>
+ <li>Availability of 3.0 via extensions.</li>
+ </ul></li>
+ <li>If the functionality of the OpenGL extension was subsumed into core
+ OpenGL by version 3.0, then the extension was dropped from the Java bindings.
+ However, if the core function name is not available in the native OpenGL implementation,
+ the extension named equivalent is used instead, e.g. <i>GL_ARB_framebuffer_object</i>.</li>
+ <li>In general the native method name will be looked up as follows
+ <ul>
+ <li> Try the interface name</li>
+ <li> Try the extension name: ARB, EXT, ..</li>
+ </ul></li>
+ </ul></li>
+ <li>Functions that deal with explicit pointer values in such a way that
they cannot be properly implemented in Java have been excluded.&nbsp; This
includes retrieval methods with a C void ** in the OpenGL signature like glGetBufferPointerv,
glGetPointerv, glGetVertexAttribPointerv, as well as functions that require
persistent pointer to pointer storage across function calls like vertex array
lists.</li>
- <li>If the extension is registered in the official OpenGL extension registry
+ <li>If the extension is registered in the official OpenGL extension registry
but the specification was never completed or was discontinued (as indicated
in the specification and/or lack of inclusion in SGI's official OpenGL header
files), then the extension was not included.&nbsp; Using these criteria, ARB
@@ -318,15 +377,14 @@ extensions through number 42 (GL_ARB_pixel_buffer_object), inclusive, and
non-ARB extensions through number 311 (GL_REMEDY_string_marker), inclusive,
have been included in the Java bindings according to the numbering scheme
found in the official OpenGL extension registry.</li>
- <li>Some bindings to several vendor-specific extensions have been included
+ <li>Some bindings to several vendor-specific extensions have been included
that are not found in the OpenGL extension registry.&nbsp; These extensions
were deemed popular enough and/or were specifically requested by users.</li>
- <li>Platform-specific extensions, such as those that begin with WGL, GLX,
+ <li>Platform-specific extensions, such as those that begin with WGL, GLX,
CGL, etc., have been excluded from the public API.&nbsp; See the section "Accessing
platform-specific extensions" for more information about accessing these
functions on certain implementations.<br>
- </li>
-
+ </li>
</ul>
<h4>OpenGL GLU API Inclusion Criteria</h4>
@@ -363,21 +421,30 @@ implementation.<br>
<br>
Therefore, any usage of these APIs is both platform and implementation specific.<br>
+<a name="GLRuntimeVersion"/>
<h3>OpenGL Version on Runtime System</h3>
+<a name="GL3RuntimeVersion"/>
+<h4> {@link javax.media.opengl.GL3 GL3} Desktop Requirements</h4>
+An OpenGL &ge; 3.1 version is required to instantiate a GL3 context.
+<br>
+<a name="GL2RuntimeVersion"/>
+<h4> {@link javax.media.opengl.GL2 GL2} Desktop Requirements</h4>
Even though OpenGL extensions whose functionality was included into core
-OpenGL by version 2.0, inclusive, are not included in the bindings, it should
-be noted that OpenGL version 2.0 is not an absolute requirement on the runtime
+OpenGL by version 3.0, inclusive, are not included in the bindings, it should
+be noted that OpenGL version 3.0 is not an absolute requirement on the runtime
system.&nbsp; This is because a user could query whether any particular function
is available before calling certain core APIs that might not be present.&nbsp;
Also, if the core function name is not available in the native OpenGL implementation,
the extension named equivalent is used instead, e.g. <i>GL_ARB_framebuffer_object</i>.&nbsp;
-However, in general, it is reasonable to expect at least OpenGL 2.0 to be
+However, in general, it is reasonable to expect at least OpenGL 1.5 to be
installed on the runtime system and an implementor of the API is free to require
-the presence of at least OpenGL 2.0 on the target system.<br>
+the presence of at least OpenGL 1.5 on the target system.<br>
+<b>The JOGL reference implementation require at least OpenGL version 1.1</b>,
+due to it's dynamical function binding starting with OpenGL 1.2.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<br>
In future revisions of the API, this minimum standard may be raised.<br>
-
+
<h3>Runtime Version Information</h3>
Any Java Bindings for OpenGL implementation should include version information
in its jar manifest file. &nbsp;This information can then easily be accessed
@@ -410,6 +477,15 @@ javax.media.opengl namespace via future maintenance updates to the API.<br>
http://www.khronos.org/registry/cl/</a></blockquote>
<ul>
+ <li>OpenGL 3.2 Core Specification</li>
+
+</ul>
+
+<blockquote><a
+ href="http://www.opengl.org/registry/doc/glspec32.core.20090803.pdf">
+http://www.opengl.org/registry/doc/glspec32.core.20090803.pdf</a></blockquote>
+
+<ul>
<li>OpenGL 3.1 Specification</li>
</ul>
@@ -419,6 +495,15 @@ http://www.khronos.org/registry/cl/</a></blockquote>
http://www.opengl.org/registry/doc/glspec31.20090324.pdf</a></blockquote>
<ul>
+ <li>OpenGL 3.0 Specification</li>
+
+</ul>
+
+<blockquote><a
+ href="http://www.opengl.org/registry/doc/glspec30.20080923.pdf">
+http://www.opengl.org/registry/doc/glspec30.20080923.pdf</a></blockquote>
+
+<ul>
<li>OpenGL 2.1 Specification</li>
</ul>
@@ -500,7 +585,7 @@ http://www.khronos.org/registry/gles/</a></blockquote>
<li> Proposed Final Draft Review, February/March 2006
<li> 1.0.0 Final Release, September 2006
<li> 1.1.0 Maintenance Release, April 2007
-<li> 1.2.0 Maintenance Release, June 2009
+<li> 2.0.0 Maintenance Release, July 2009
</ul>
<br>
<br>
diff --git a/make/lsGL23_commons.sh b/make/lsGL23_commons.sh
new file mode 100644
index 000000000..7c7161717
--- /dev/null
+++ b/make/lsGL23_commons.sh
@@ -0,0 +1,18 @@
+#! /bin/sh
+
+BUILDDIR=$1
+shift
+if [ -z "$BUILDDIR" ] ; then
+ echo "usage $0 <BUILDDIR>"
+ exit 1
+fi
+
+idir=$BUILDDIR/jogl/gensrc/classes/javax/media/opengl
+
+SOURCE="$idir/GL.java $idir/GL2ES1.java $idir/GL2ES2.java $idir/GLES1.java $idir/GLES2.java $idir/GL2GL3.java $idir/GL2.java $idir/GL3.java"
+
+echo GL GL2ES1 GL2ES2 GLES1 GLES2 GL2GL3 GL2 GL3 defines
+sort $SOURCE | uniq -d | grep GL_ | grep -v "Part of <code>"
+
+echo GL GL2ES1 GL2ES2 GLES1 GLES2 GL2GL3 GL2 GL3 functions
+sort $SOURCE | uniq -d | grep "public [a-z0-9_]* gl"
diff --git a/make/lsGL23_unique.sh b/make/lsGL23_unique.sh
new file mode 100644
index 000000000..e21112ecc
--- /dev/null
+++ b/make/lsGL23_unique.sh
@@ -0,0 +1,18 @@
+#! /bin/sh
+
+BUILDDIR=$1
+shift
+if [ -z "$BUILDDIR" ] ; then
+ echo "usage $0 <BUILDDIR>"
+ exit 1
+fi
+
+idir=$BUILDDIR/jogl/gensrc/classes/javax/media/opengl
+
+SOURCE="$idir/GL.java $idir/GLES2.java $idir/GL2ES2.java $idir/GL3.java $idir/GL2.java $idir/GL2GL3.java"
+
+echo GL2GL3 to GL2 GL3 Gl2ES2 GLES2 GL defines
+sort $SOURCE | uniq -u | grep GL_ | grep -v "Part of <code>" | awk ' { print $5 } '
+
+echo GL2GL3 to GL2 GL3 Gl2ES2 GLES2 GL functions
+sort $SOURCE | uniq -u | grep "public [a-z0-9_]* gl"
diff --git a/make/lsGL23toGL2ES1_commons.sh b/make/lsGL23toGL2ES1_commons.sh
new file mode 100644
index 000000000..83a543b3c
--- /dev/null
+++ b/make/lsGL23toGL2ES1_commons.sh
@@ -0,0 +1,18 @@
+#! /bin/sh
+
+BUILDDIR=$1
+shift
+if [ -z "$BUILDDIR" ] ; then
+ echo "usage $0 <BUILDDIR>"
+ exit 1
+fi
+
+idir=$BUILDDIR/jogl/gensrc/classes/javax/media/opengl
+
+echo GL2GL3 to GL2ES1 enums
+# sort $idir/GL2.java $idir/GL3.java $idir/GL2ES1.java $idir/GL2GL3.java | uniq -d | grep GL_ | awk ' { print $5 } '
+sort $idir/GL2.java $idir/GL3.java $idir/GL2ES1.java $idir/GL2GL3.java | uniq -d | grep GL_ | grep -v "Part of <code>"
+
+echo GL2GL3 to GL2ES1 functions
+# sort $idir/GL2.java $idir/GL3.java $idir/GL2ES1.java $idir/GL2GL3.java | uniq -d | grep "public [a-z0-9_]* gl"
+sort $idir/GL2.java $idir/GL3.java $idir/GL2ES1.java $idir/GL2GL3.java | uniq -d | grep "public [a-z0-9_]* gl"
diff --git a/make/lsGL2toGL3_commons.sh b/make/lsGL2toGL3_commons.sh
deleted file mode 100644
index cccfa734c..000000000
--- a/make/lsGL2toGL3_commons.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#! /bin/sh
-
-BUILDDIR=$1
-shift
-if [ -z "$BUILDDIR" ] ; then
- echo "usage $0 <BUILDDIR>"
- exit 1
-fi
-
-idir=$BUILDDIR/jogl/gensrc/classes/javax/media/opengl
-
-echo GL2 to GL3 enums
-sort $idir/GL2.java $idir/GL3.java $idir/GL2ES2.java | uniq -d | grep GL_ | awk ' { print $5 } '
-
-echo GL2 to GL3 functions
-sort $idir/GL2.java $idir/GL3.java $idir/GL2ES2.java | uniq -d | grep "public [a-z0-9_]* gl"
diff --git a/make/make.jogl.all.linux-x86.sh b/make/make.jogl.all.linux-x86.sh
index 2b791c6dd..081d8328b 100644
--- a/make/make.jogl.all.linux-x86.sh
+++ b/make/make.jogl.all.linux-x86.sh
@@ -9,16 +9,18 @@ fi
# -Dc.compiler.debug=true
# -DuseOpenMAX=true \
# -Dbuild.noarchives=true
+# -Dgluegen.cpptasks.detected.os=true \
+# -DisUnix=true \
+# -DisLinux=true \
+# -DisLinuxX86=true \
+# -DisX11=true \
+# -Djogl.cg=1 -Dx11.cg.lib=../../lib-linux-x86 \
ant \
-Dbuild.noarchives=true \
-Djogl.cg=1 -Dx11.cg.lib=../../lib-linux-x86 \
-Drootrel.build=build-x86 \
- -Dgluegen.cpptasks.detected.os=true \
- -DisUnix=true \
- -DisLinux=true \
- -DisLinuxX86=true \
- -DisX11=true \
+ -Dos.arch=x86 \
-DuseKD=true \
-DuseOpenMAX=true \
$* 2>&1 | tee make.jogl.all.linux-x86.log
diff --git a/make/make.jogl.all.linux-x86_64.sh b/make/make.jogl.all.linux-x86_64.sh
index b9e1d1789..90883f97c 100644
--- a/make/make.jogl.all.linux-x86_64.sh
+++ b/make/make.jogl.all.linux-x86_64.sh
@@ -8,14 +8,17 @@ fi
# -Dc.compiler.debug=true
# -Dbuild.noarchives=true
+# -Dgluegen.cpptasks.detected.os=true \
+# -DisUnix=true \
+# -DisLinux=true \
+# -DisLinuxAMD64=true \
+# -DisX11=true \
+
ant \
-Dbuild.noarchives=true \
-Djogl.cg=1 -Dx11.cg.lib=../../lib-linux-x86_64 \
-Dc.compiler.debug=true \
-Drootrel.build=build-x86_64 \
- -Dgluegen.cpptasks.detected.os=true \
- -DisUnix=true \
- -DisLinux=true \
- -DisLinuxAMD64=true \
- -DisX11=true \
+ -DuseKD=true \
+ -DuseOpenMAX=true \
$* 2>&1 | tee make.jogl.all.linux-x86_64.log
diff --git a/make/make.jogl.all.win32.bat b/make/make.jogl.all.win32.bat
index f4a52fa75..9ab77b051 100644
--- a/make/make.jogl.all.win32.bat
+++ b/make/make.jogl.all.win32.bat
@@ -9,4 +9,4 @@ REM -DuseOpenMAX=true
REM -DuseKD=true
REM -Djogl.cg=1 -D-Dwindows.cg.lib=C:\Cg-2.2
-ant -Drootrel.build=build-win32 -Djogl.cg=1 -Dwindows.cg.lib=C:\Cg-2.2\lib > make.jogl.all.win32.log 2>&1
+ant -Dbuild.noarchives=true -Dc.compiler.debug=true -Drootrel.build=build-win32 -Djogl.cg=1 -Dwindows.cg.lib=C:\Cg-2.2\lib > make.jogl.all.win32.log 2>&1
diff --git a/make/make.jogl.cdcfp.linux-x86.sh b/make/make.jogl.cdcfp.linux-x86.sh
index 67ef9fb65..4a2241669 100644
--- a/make/make.jogl.cdcfp.linux-x86.sh
+++ b/make/make.jogl.cdcfp.linux-x86.sh
@@ -23,7 +23,6 @@ ant -v \
-DisLinux=true \
-DisLinuxX86=true \
-DisX11=true \
- -DuseKD=true \
-DuseOpenMAX=true \
$* 2>&1 | tee make.jogl.cdcfp.linux-x86.log
diff --git a/make/stub_includes/egl/EGL/egl.h b/make/stub_includes/egl/EGL/egl.h
index 86ca4818f..fc6cc4c87 100755
--- a/make/stub_includes/egl/EGL/egl.h
+++ b/make/stub_includes/egl/EGL/egl.h
@@ -39,6 +39,8 @@ typedef void *EGLClientBuffer;
#define EGL_VERSION_1_3 1
#define EGL_VERSION_1_4 1
+#ifndef EGL_VERSION_1_X
+
/* EGL Enumerants. Bitmasks and other exceptional cases aside, most
* enums are assigned unique values starting at 0x3000.
*/
@@ -226,7 +228,10 @@ typedef void *EGLClientBuffer;
* a bug in Khronos Bugzilla against task "Registry".
*/
+#endif /* EGL_VERSION_1_X */
+#ifndef EGL_VERSION_1_X
+#define EGL_VERSION_1_X 1
/* EGL Functions */
@@ -300,6 +305,8 @@ EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface,
typedef void (* EGLAPIENTRY __EGLFuncPtr)(void);
EGLAPI __EGLFuncPtr eglGetProcAddress(const char *procname);
+#endif /* EGL_VERSION_1_X */
+
#ifdef __cplusplus
}
#endif
diff --git a/make/stub_includes/egl/EGL/eglext.h b/make/stub_includes/egl/EGL/eglext.h
index 5afa60118..7d7347e71 100755
--- a/make/stub_includes/egl/EGL/eglext.h
+++ b/make/stub_includes/egl/EGL/eglext.h
@@ -90,7 +90,7 @@ typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNLOCKSURFACEKHRPROC) (EGLDisplay display
#define EGL_KHR_image 1
#define EGL_NATIVE_PIXMAP_KHR 0x30B0 /* eglCreateImageKHR target */
typedef void *EGLImageKHR;
-#define EGL_NO_IMAGE_KHR ((EGLImageKHR)0)
+/* Manual: #define EGL_NO_IMAGE_KHR ((EGLImageKHR)0) */
#ifdef EGL_EGLEXT_PROTOTYPES
EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, EGLint *attr_list);
EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image);
@@ -160,8 +160,8 @@ typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGL
#define EGL_RAW_VALUE_NV 0x1239
#define EGL_PERCENTAGE_VALUE_NV 0x1240
#define EGL_BAD_CURRENT_PERFMONITOR_NV 0x1241
-#define EGL_NO_PERFMONITOR_NV ((EGLPerfMonitorNV)0)
-#define EGL_DEFAULT_PERFMARKER_NV ((EGLPerfMarkerNV)0)
+/* Manual: #define EGL_NO_PERFMONITOR_NV ((EGLPerfMonitorNV)0) */
+/* Manual: #define EGL_DEFAULT_PERFMARKER_NV ((EGLPerfMarkerNV)0) */
typedef void *EGLPerfMonitorNV;
typedef void *EGLPerfMarkerNV;
#ifdef USE_GLUEGEN
@@ -272,31 +272,10 @@ EGLAPI EGLBoolean EGLAPIENTRY eglNvmaOutputSurfacePbufferUnlock(EGLDisplay displ
#endif
-/* EGL_KHR_sync
+/**
+ * EGL_KHR_sync
*/
#ifndef EGL_KHR_sync
-#define EGL_KHR_sync 1
-typedef void* EGLSyncKHR;
-typedef void* NativeSyncKHR;
-typedef uint64_t EGLTimeKHR;
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLSyncKHR eglCreateFenceSyncKHR( EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list );
-NativeSyncKHR eglCreateNativeSyncKHR( EGLSyncKHR sync );
-EGLBoolean eglDestroySyncKHR( EGLSyncKHR sync );
-EGLBoolean eglFenceKHR( EGLSyncKHR sync );
-EGLint eglClientWaitSyncKHR( EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout );
-EGLBoolean eglSignalSyncKHR( EGLSyncKHR sync, EGLenum mode );
-EGLBoolean eglGetSyncAttribKHR( EGLSyncKHR sync, EGLint attribute, EGLint *value );
-#else
-typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATEFENCESYNCKHRPROC)( EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list );
-typedef NativeSyncKHR (EGLAPIENTRYP PFNEGLCREATENATIVESYNCKHRPROC)( EGLSyncKHR sync );
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC)( EGLSyncKHR sync );
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLFENCEKHRPROC)( EGLSyncKHR sync );
-typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC)( EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout );
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC)( EGLSyncKHR sync, EGLenum mode );
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC)( EGLSyncKHR sync, EGLint attribute, EGLint *value );
-#endif
-
/* !!!!! TODO: Get correct values for these defines !!!!
Do not rely on these values...THEY WILL CHANGE!
And it WILL BREAK binary compatibility when they do! */
@@ -306,7 +285,7 @@ typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC)( EGLSyncKHR sync, E
#define EGL_SIGNALED_KHR 0x3103
#define EGL_UNSIGNALED_KHR 0x3104
#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001
-#define EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFFull
+/* Manual: #define EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFFull */
#define EGL_ALREADY_SIGNALED_KHR 0x3105
#define EGL_TIMEOUT_EXPIRED_KHR 0x3106
#define EGL_CONDITION_SATISFIED_KHR 0x3107
@@ -314,9 +293,32 @@ typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC)( EGLSyncKHR sync, E
#define EGL_SYNC_CONDITION_KHR 0x3109
#define EGL_SYNC_FENCE_KHR 0x310A
#define EGL_NO_SYNC_KHR 0x0000
-#endif
+typedef void* EGLSyncKHR;
+typedef void* NativeSyncKHR;
+typedef uint64_t EGLTimeKHR;
+
+#endif
+#ifndef EGL_KHR_sync
+#define EGL_KHR_sync 1
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLSyncKHR eglCreateFenceSyncKHR( EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list );
+NativeSyncKHR eglCreateNativeSyncKHR( EGLSyncKHR sync );
+EGLBoolean eglDestroySyncKHR( EGLSyncKHR sync );
+EGLBoolean eglFenceKHR( EGLSyncKHR sync );
+EGLint eglClientWaitSyncKHR( EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout );
+EGLBoolean eglSignalSyncKHR( EGLSyncKHR sync, EGLenum mode );
+EGLBoolean eglGetSyncAttribKHR( EGLSyncKHR sync, EGLint attribute, EGLint *value );
+#endif
+typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATEFENCESYNCKHRPROC)( EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list );
+typedef NativeSyncKHR (EGLAPIENTRYP PFNEGLCREATENATIVESYNCKHRPROC)( EGLSyncKHR sync );
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC)( EGLSyncKHR sync );
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLFENCEKHRPROC)( EGLSyncKHR sync );
+typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC)( EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout );
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC)( EGLSyncKHR sync, EGLenum mode );
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC)( EGLSyncKHR sync, EGLint attribute, EGLint *value );
+#endif
/* EGL_NV_omx_il_sink
*/
diff --git a/make/stub_includes/opengl/GL/glext.h b/make/stub_includes/opengl/GL/glext.h
index e6c6fab40..b2c23a822 100644
--- a/make/stub_includes/opengl/GL/glext.h
+++ b/make/stub_includes/opengl/GL/glext.h
@@ -1185,6 +1185,13 @@ extern "C" {
#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8
#endif
+#ifndef GL_EXT_texture_rectangle
+#define GL_TEXTURE_RECTANGLE_EXT 0x84F5
+#define GL_TEXTURE_BINDING_RECTANGLE_EXT 0x84F6
+#define GL_PROXY_TEXTURE_RECTANGLE_EXT 0x84F7
+#define GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT 0x84F8
+#endif
+
#ifndef GL_ARB_color_buffer_float
#define GL_RGBA_FLOAT_MODE_ARB 0x8820
#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A
@@ -3150,16 +3157,6 @@ extern "C" {
#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED
#endif
-/* Support for GL_EXT_texture_rectangle on non-nVidia cards */
-#ifndef GL_EXT_texture_rectangle
-#define GL_EXT_texture_rectangle 1
-#define GL_TEXTURE_RECTANGLE_EXT 0x84F5
-#define GL_TEXTURE_BINDING_RECTANGLE_EXT 0x84F6
-#define GL_PROXY_TEXTURE_RECTANGLE_EXT 0x84F7
-#define GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT 0x84F8
-#endif /* GL_TEXTURE_RECTANGLE_EXT */
-
-
#ifndef GL_ATI_vertex_streams
#define GL_MAX_VERTEX_STREAMS_ATI 0x876B
#define GL_VERTEX_STREAM0_ATI 0x876C
@@ -3318,6 +3315,23 @@ extern "C" {
#define GL_MODULATE_SUBTRACT_ATI 0x8746
#endif
+#ifndef GL_APPLE_float_pixels
+#define GL_HALF_APPLE 0x140B
+#define GL_COLOR_FLOAT_APPLE 0x8A0F
+#define GL_RGBA_FLOAT32_APPLE 0x8814
+#define GL_RGB_FLOAT32_APPLE 0x8815
+#define GL_ALPHA_FLOAT32_APPLE 0x8816
+#define GL_INTENSITY_FLOAT32_APPLE 0x8817
+#define GL_LUMINANCE_FLOAT32_APPLE 0x8818
+#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819
+#define GL_RGBA_FLOAT16_APPLE 0x881A
+#define GL_RGB_FLOAT16_APPLE 0x881B
+#define GL_ALPHA_FLOAT16_APPLE 0x881C
+#define GL_INTENSITY_FLOAT16_APPLE 0x881D
+#define GL_LUMINANCE_FLOAT16_APPLE 0x881E
+#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F
+#endif
+
#ifndef GL_ATI_texture_float
#define GL_RGBA_FLOAT32_ATI 0x8814
#define GL_RGB_FLOAT32_ATI 0x8815
@@ -3549,8 +3563,8 @@ extern "C" {
#ifndef GL_EXT_framebuffer_blit
#define GL_READ_FRAMEBUFFER_EXT 0x8CA8
#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9
-#define GL_READ_FRAMEBUFFER_BINDING_EXT GL_FRAMEBUFFER_BINDING_EXT
-#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CAA
+#define GL_DRAW_FRAMEBUFFER_BINDING_EXT GL_FRAMEBUFFER_BINDING_EXT
+#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA
#endif
#ifndef GL_EXT_framebuffer_multisample
@@ -3792,7 +3806,7 @@ extern "C" {
#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6
#endif
-#ifndef NV_parameter_buffer_object
+#ifndef GL_NV_parameter_buffer_object
#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0
#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1
#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2
@@ -3810,9 +3824,9 @@ extern "C" {
#endif
#ifndef GL_EXT_texture_compression_rgtc
-#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB
-#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC
-#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD
+#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB
+#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC
+#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD
#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE
#endif
@@ -4475,7 +4489,7 @@ GLAPI void APIENTRY glEndTransformFeedback (void);
GLAPI void APIENTRY glBindBufferRange (GLenum, GLuint, GLuint, GLintptr, GLsizeiptr);
GLAPI void APIENTRY glBindBufferBase (GLenum, GLuint, GLuint);
GLAPI void APIENTRY glTransformFeedbackVaryings (GLuint, GLsizei, const GLchar **, GLenum);
-GLAPI void APIENTRY glGetTransformFeedbackVarying (GLuint, GLuint, GLint *);
+GLAPI void APIENTRY glGetTransformFeedbackVarying (GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *);
GLAPI void APIENTRY glClampColor (GLenum, GLenum);
GLAPI void APIENTRY glBeginConditionalRender (GLuint, GLenum);
GLAPI void APIENTRY glEndConditionalRender (void);
@@ -4534,7 +4548,7 @@ typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC) (void);
typedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
typedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer);
typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode);
-typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLint *location);
+typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
typedef void (APIENTRYP PFNGLCLAMPCOLORPROC) (GLenum target, GLenum clamp);
typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC) (GLuint id, GLenum mode);
typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERPROC) (void);
@@ -5142,6 +5156,10 @@ typedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs)
#define GL_ARB_texture_rectangle 1
#endif
+#ifndef GL_EXT_texture_rectangle
+#define GL_EXT_texture_rectangle 1
+#endif
+
#ifndef GL_ARB_color_buffer_float
#define GL_ARB_color_buffer_float 1
#ifdef GL_GLEXT_PROTOTYPES
@@ -5255,10 +5273,10 @@ typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divi
#ifndef GL_ARB_map_buffer_range
#define GL_ARB_map_buffer_range 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMapBufferRange (GLenum, GLintptr, GLsizeiptr, GLbitfield);
+GLAPI GLvoid* APIENTRY glMapBufferRange (GLenum, GLintptr, GLsizeiptr, GLbitfield);
GLAPI void APIENTRY glFlushMappedBufferRange (GLenum, GLintptr, GLsizeiptr);
#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (APIENTRYP PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
+typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length);
#endif
@@ -7329,6 +7347,10 @@ typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum *bufs)
#define GL_ATI_texture_env_combine3 1
#endif
+#ifndef GL_APPLE_float_pixels
+#define GL_APPLE_float_pixels 1
+#endif
+
#ifndef GL_ATI_texture_float
#define GL_ATI_texture_float 1
#endif
@@ -7970,14 +7992,493 @@ typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei
#define GL_EXT_texture_compression_rgtc 1
#endif
+#ifndef GL_NV_present_video
+#define GL_NV_present_video 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPresentFrameKeyedNV (GLuint video_slot,
+ GLuint64EXT minPresentTime,
+ GLuint beginPresentTimeId,
+ GLuint presentDurationId,
+ GLenum type,
+ GLenum target0, GLuint fill0, GLuint key0,
+ GLenum target1, GLuint fill1, GLuint key1);
+GLAPI void APIENTRY glPresentFrameDualFillNV (GLuint video_slot,
+ GLuint64EXT minPresentTime,
+ GLuint beginPresentTimeId,
+ GLuint presentDurationId,
+ GLenum type,
+ GLenum target0, GLuint fill0,
+ GLenum target1, GLuint fill1,
+ GLenum target2, GLuint fill2,
+ GLenum target3, GLuint fill3);
+GLAPI void APIENTRY glGetVideoivNV (GLuint video_slot, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVideouivNV (GLuint video_slot, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glGetVideoi64vNV (GLuint video_slot, GLenum pname, GLint64EXT *params);
+GLAPI void APIENTRY glGetVideoui64vNV (GLuint video_slot, GLenum pname, GLuint64EXT *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPRESENTFRAMEKEYEDNVPROC) (GLuint video_slot,
+ GLuint64EXT minPresentTime,
+ GLuint beginPresentTimeId,
+ GLuint presentDurationId,
+ GLenum type,
+ GLenum target0, GLuint fill0, GLuint key0,
+ GLenum target1, GLuint fill1, GLuint key1);
+typedef void (APIENTRYP PFNGLPRESENTFRAMEDUALFILLNVPROC) (GLuint video_slot,
+ GLuint64EXT minPresentTime,
+ GLuint beginPresentTimeId,
+ GLuint presentDurationId,
+ GLenum type,
+ GLenum target0, GLuint fill0,
+ GLenum target1, GLuint fill1,
+ GLenum target2, GLuint fill2,
+ GLenum target3, GLuint fill3);
+typedef void (APIENTRYP PFNGLGETVIDEOIVNVPROC) (GLuint video_slot, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETVIDEOUIVNVPROC) (GLuint video_slot, GLenum pname, GLuint *params);
+typedef void (APIENTRYP PFNGLGETVIDEOI64VNVPROC) (GLuint video_slot, GLenum pname, GLint64EXT *params);
+typedef void (APIENTRYP PFNGLGETVIDEOUI64VNVPROC) (GLuint video_slot, GLenum pname, GLuint64EXT *params);
+#endif
+
+#ifndef GL_NV_conditional_render
+#define GL_NV_conditional_render 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBeginConditionalRenderNV (GLuint id, GLenum mode);
+GLAPI void APIENTRY glEndConditionalRenderNV (void);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode);
+typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC) (void);
+#endif
+
+#ifndef GL_EXT_transform_feedback
+#define GL_EXT_transform_feedback 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBeginTransformFeedbackEXT (GLenum);
+GLAPI void APIENTRY glEndTransformFeedbackEXT (void);
+GLAPI void APIENTRY glBindBufferRangeEXT (GLenum, GLuint, GLuint, GLintptr, GLsizeiptr);
+GLAPI void APIENTRY glBindBufferOffsetEXT (GLenum, GLuint, GLuint, GLintptr);
+GLAPI void APIENTRY glBindBufferBaseEXT (GLenum, GLuint, GLuint);
+GLAPI void APIENTRY glTransformFeedbackVaryingsEXT (GLuint, GLsizei, const GLchar **, GLenum);
+GLAPI void APIENTRY glGetTransformFeedbackVaryingEXT (GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKEXTPROC) (GLenum primitiveMode);
+typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKEXTPROC) (void);
+typedef void (APIENTRYP PFNGLBINDBUFFERRANGEEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
+typedef void (APIENTRYP PFNGLBINDBUFFERBASEEXTPROC) (GLenum target, GLuint index, GLuint buffer);
+typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode);
+typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
+#endif
+
+#ifndef GL_EXT_direct_state_access
+#define GL_EXT_direct_state_access 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glClientAttribDefaultEXT (GLbitfield);
+GLAPI void APIENTRY glPushClientAttribDefaultEXT (GLbitfield);
+GLAPI void APIENTRY glMatrixLoadfEXT (GLenum, const GLfloat *);
+GLAPI void APIENTRY glMatrixLoaddEXT (GLenum, const GLdouble *);
+GLAPI void APIENTRY glMatrixMultfEXT (GLenum, const GLfloat *);
+GLAPI void APIENTRY glMatrixMultdEXT (GLenum, const GLdouble *);
+GLAPI void APIENTRY glMatrixLoadIdentityEXT (GLenum);
+GLAPI void APIENTRY glMatrixRotatefEXT (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glMatrixRotatedEXT (GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glMatrixScalefEXT (GLenum, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glMatrixScaledEXT (GLenum, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glMatrixTranslatefEXT (GLenum, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glMatrixTranslatedEXT (GLenum, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glMatrixFrustumEXT (GLenum, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glMatrixOrthoEXT (GLenum, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glMatrixPopEXT (GLenum);
+GLAPI void APIENTRY glMatrixPushEXT (GLenum);
+GLAPI void APIENTRY glMatrixLoadTransposefEXT (GLenum, const GLfloat *);
+GLAPI void APIENTRY glMatrixLoadTransposedEXT (GLenum, const GLdouble *);
+GLAPI void APIENTRY glMatrixMultTransposefEXT (GLenum, const GLfloat *);
+GLAPI void APIENTRY glMatrixMultTransposedEXT (GLenum, const GLdouble *);
+GLAPI void APIENTRY glTextureParameterfEXT (GLuint, GLenum, GLenum, GLfloat);
+GLAPI void APIENTRY glTextureParameterfvEXT (GLuint, GLenum, GLenum, const GLfloat *);
+GLAPI void APIENTRY glTextureParameteriEXT (GLuint, GLenum, GLenum, GLint);
+GLAPI void APIENTRY glTextureParameterivEXT (GLuint, GLenum, GLenum, const GLint *);
+GLAPI void APIENTRY glTextureImage1DEXT (GLuint, GLenum, GLint, GLenum, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glTextureImage2DEXT (GLuint, GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glTextureSubImage1DEXT (GLuint, GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glTextureSubImage2DEXT (GLuint, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glCopyTextureImage1DEXT (GLuint, GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint);
+GLAPI void APIENTRY glCopyTextureImage2DEXT (GLuint, GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint);
+GLAPI void APIENTRY glCopyTextureSubImage1DEXT (GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei);
+GLAPI void APIENTRY glCopyTextureSubImage2DEXT (GLuint, GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
+GLAPI void APIENTRY glGetTextureImageEXT (GLuint, GLenum, GLint, GLenum, GLenum, GLvoid *);
+GLAPI void APIENTRY glGetTextureParameterfvEXT (GLuint, GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetTextureParameterivEXT (GLuint, GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetTextureLevelParameterfvEXT (GLuint, GLenum, GLint, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetTextureLevelParameterivEXT (GLuint, GLenum, GLint, GLenum, GLint *);
+GLAPI void APIENTRY glTextureImage3DEXT (GLuint, GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glTextureSubImage3DEXT (GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glCopyTextureSubImage3DEXT (GLuint, GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
+GLAPI void APIENTRY glMultiTexParameterfEXT (GLenum, GLenum, GLenum, GLfloat);
+GLAPI void APIENTRY glMultiTexParameterfvEXT (GLenum, GLenum, GLenum, const GLfloat *);
+GLAPI void APIENTRY glMultiTexParameteriEXT (GLenum, GLenum, GLenum, GLint);
+GLAPI void APIENTRY glMultiTexParameterivEXT (GLenum, GLenum, GLenum, const GLint *);
+GLAPI void APIENTRY glMultiTexImage1DEXT (GLenum, GLenum, GLint, GLenum, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glMultiTexImage2DEXT (GLenum, GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glMultiTexSubImage1DEXT (GLenum, GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glMultiTexSubImage2DEXT (GLenum, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glCopyMultiTexImage1DEXT (GLenum, GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint);
+GLAPI void APIENTRY glCopyMultiTexImage2DEXT (GLenum, GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint);
+GLAPI void APIENTRY glCopyMultiTexSubImage1DEXT (GLenum, GLenum, GLint, GLint, GLint, GLint, GLsizei);
+GLAPI void APIENTRY glCopyMultiTexSubImage2DEXT (GLenum, GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
+GLAPI void APIENTRY glGetMultiTexImageEXT (GLenum, GLenum, GLint, GLenum, GLenum, GLvoid *);
+GLAPI void APIENTRY glGetMultiTexParameterfvEXT (GLenum, GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetMultiTexParameterivEXT (GLenum, GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetMultiTexLevelParameterfvEXT (GLenum, GLenum, GLint, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetMultiTexLevelParameterivEXT (GLenum, GLenum, GLint, GLenum, GLint *);
+GLAPI void APIENTRY glMultiTexImage3DEXT (GLenum, GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glMultiTexSubImage3DEXT (GLenum, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glCopyMultiTexSubImage3DEXT (GLenum, GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
+GLAPI void APIENTRY glBindMultiTextureEXT (GLenum, GLenum, GLuint);
+GLAPI void APIENTRY glEnableClientStateIndexedEXT (GLenum, GLuint);
+GLAPI void APIENTRY glDisableClientStateIndexedEXT (GLenum, GLuint);
+GLAPI void APIENTRY glMultiTexCoordPointerEXT (GLenum, GLint, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glMultiTexEnvfEXT (GLenum, GLenum, GLenum, GLfloat);
+GLAPI void APIENTRY glMultiTexEnvfvEXT (GLenum, GLenum, GLenum, const GLfloat *);
+GLAPI void APIENTRY glMultiTexEnviEXT (GLenum, GLenum, GLenum, GLint);
+GLAPI void APIENTRY glMultiTexEnvivEXT (GLenum, GLenum, GLenum, const GLint *);
+GLAPI void APIENTRY glMultiTexGendEXT (GLenum, GLenum, GLenum, GLdouble);
+GLAPI void APIENTRY glMultiTexGendvEXT (GLenum, GLenum, GLenum, const GLdouble *);
+GLAPI void APIENTRY glMultiTexGenfEXT (GLenum, GLenum, GLenum, GLfloat);
+GLAPI void APIENTRY glMultiTexGenfvEXT (GLenum, GLenum, GLenum, const GLfloat *);
+GLAPI void APIENTRY glMultiTexGeniEXT (GLenum, GLenum, GLenum, GLint);
+GLAPI void APIENTRY glMultiTexGenivEXT (GLenum, GLenum, GLenum, const GLint *);
+GLAPI void APIENTRY glGetMultiTexEnvfvEXT (GLenum, GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetMultiTexEnvivEXT (GLenum, GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetMultiTexGendvEXT (GLenum, GLenum, GLenum, GLdouble *);
+GLAPI void APIENTRY glGetMultiTexGenfvEXT (GLenum, GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetMultiTexGenivEXT (GLenum, GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetFloatIndexedvEXT (GLenum, GLuint, GLfloat *);
+GLAPI void APIENTRY glGetDoubleIndexedvEXT (GLenum, GLuint, GLdouble *);
+GLAPI void APIENTRY glGetPointerIndexedvEXT (GLenum, GLuint, GLvoid* *);
+GLAPI void APIENTRY glCompressedTextureImage3DEXT (GLuint, GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTextureImage2DEXT (GLuint, GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTextureImage1DEXT (GLuint, GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTextureSubImage3DEXT (GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTextureSubImage2DEXT (GLuint, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTextureSubImage1DEXT (GLuint, GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glGetCompressedTextureImageEXT (GLuint, GLenum, GLint, GLvoid *);
+GLAPI void APIENTRY glCompressedMultiTexImage3DEXT (GLenum, GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedMultiTexImage2DEXT (GLenum, GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedMultiTexImage1DEXT (GLenum, GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedMultiTexSubImage3DEXT (GLenum, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedMultiTexSubImage2DEXT (GLenum, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedMultiTexSubImage1DEXT (GLenum, GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glGetCompressedMultiTexImageEXT (GLenum, GLenum, GLint, GLvoid *);
+GLAPI void APIENTRY glNamedProgramStringEXT (GLuint, GLenum, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glNamedProgramLocalParameter4dEXT (GLuint, GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glNamedProgramLocalParameter4dvEXT (GLuint, GLenum, GLuint, const GLdouble *);
+GLAPI void APIENTRY glNamedProgramLocalParameter4fEXT (GLuint, GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glNamedProgramLocalParameter4fvEXT (GLuint, GLenum, GLuint, const GLfloat *);
+GLAPI void APIENTRY glGetNamedProgramLocalParameterdvEXT (GLuint, GLenum, GLuint, GLdouble *);
+GLAPI void APIENTRY glGetNamedProgramLocalParameterfvEXT (GLuint, GLenum, GLuint, GLfloat *);
+GLAPI void APIENTRY glGetNamedProgramivEXT (GLuint, GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetNamedProgramStringEXT (GLuint, GLenum, GLenum, GLvoid *);
+GLAPI void APIENTRY glNamedProgramLocalParameters4fvEXT (GLuint, GLenum, GLuint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glNamedProgramLocalParameterI4iEXT (GLuint, GLenum, GLuint, GLint, GLint, GLint, GLint);
+GLAPI void APIENTRY glNamedProgramLocalParameterI4ivEXT (GLuint, GLenum, GLuint, const GLint *);
+GLAPI void APIENTRY glNamedProgramLocalParametersI4ivEXT (GLuint, GLenum, GLuint, GLsizei, const GLint *);
+GLAPI void APIENTRY glNamedProgramLocalParameterI4uiEXT (GLuint, GLenum, GLuint, GLuint, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glNamedProgramLocalParameterI4uivEXT (GLuint, GLenum, GLuint, const GLuint *);
+GLAPI void APIENTRY glNamedProgramLocalParametersI4uivEXT (GLuint, GLenum, GLuint, GLsizei, const GLuint *);
+GLAPI void APIENTRY glGetNamedProgramLocalParameterIivEXT (GLuint, GLenum, GLuint, GLint *);
+GLAPI void APIENTRY glGetNamedProgramLocalParameterIuivEXT (GLuint, GLenum, GLuint, GLuint *);
+GLAPI void APIENTRY glTextureParameterIivEXT (GLuint, GLenum, GLenum, const GLint *);
+GLAPI void APIENTRY glTextureParameterIuivEXT (GLuint, GLenum, GLenum, const GLuint *);
+GLAPI void APIENTRY glGetTextureParameterIivEXT (GLuint, GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetTextureParameterIuivEXT (GLuint, GLenum, GLenum, GLuint *);
+GLAPI void APIENTRY glMultiTexParameterIivEXT (GLenum, GLenum, GLenum, const GLint *);
+GLAPI void APIENTRY glMultiTexParameterIuivEXT (GLenum, GLenum, GLenum, const GLuint *);
+GLAPI void APIENTRY glGetMultiTexParameterIivEXT (GLenum, GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetMultiTexParameterIuivEXT (GLenum, GLenum, GLenum, GLuint *);
+GLAPI void APIENTRY glProgramUniform1fEXT (GLuint, GLint, GLfloat);
+GLAPI void APIENTRY glProgramUniform2fEXT (GLuint, GLint, GLfloat, GLfloat);
+GLAPI void APIENTRY glProgramUniform3fEXT (GLuint, GLint, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glProgramUniform4fEXT (GLuint, GLint, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glProgramUniform1iEXT (GLuint, GLint, GLint);
+GLAPI void APIENTRY glProgramUniform2iEXT (GLuint, GLint, GLint, GLint);
+GLAPI void APIENTRY glProgramUniform3iEXT (GLuint, GLint, GLint, GLint, GLint);
+GLAPI void APIENTRY glProgramUniform4iEXT (GLuint, GLint, GLint, GLint, GLint, GLint);
+GLAPI void APIENTRY glProgramUniform1fvEXT (GLuint, GLint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glProgramUniform2fvEXT (GLuint, GLint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glProgramUniform3fvEXT (GLuint, GLint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glProgramUniform4fvEXT (GLuint, GLint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glProgramUniform1ivEXT (GLuint, GLint, GLsizei, const GLint *);
+GLAPI void APIENTRY glProgramUniform2ivEXT (GLuint, GLint, GLsizei, const GLint *);
+GLAPI void APIENTRY glProgramUniform3ivEXT (GLuint, GLint, GLsizei, const GLint *);
+GLAPI void APIENTRY glProgramUniform4ivEXT (GLuint, GLint, GLsizei, const GLint *);
+GLAPI void APIENTRY glProgramUniformMatrix2fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glProgramUniformMatrix3fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glProgramUniformMatrix4fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glProgramUniform1uiEXT (GLuint, GLint, GLuint);
+GLAPI void APIENTRY glProgramUniform2uiEXT (GLuint, GLint, GLuint, GLuint);
+GLAPI void APIENTRY glProgramUniform3uiEXT (GLuint, GLint, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glProgramUniform4uiEXT (GLuint, GLint, GLuint, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glProgramUniform1uivEXT (GLuint, GLint, GLsizei, const GLuint *);
+GLAPI void APIENTRY glProgramUniform2uivEXT (GLuint, GLint, GLsizei, const GLuint *);
+GLAPI void APIENTRY glProgramUniform3uivEXT (GLuint, GLint, GLsizei, const GLuint *);
+GLAPI void APIENTRY glProgramUniform4uivEXT (GLuint, GLint, GLsizei, const GLuint *);
+GLAPI void APIENTRY glNamedBufferDataEXT (GLuint, GLsizeiptr, const GLvoid *, GLenum);
+GLAPI void APIENTRY glNamedBufferSubDataEXT (GLuint, GLintptr, GLsizeiptr, const GLvoid *);
+GLAPI GLvoid* APIENTRY glMapNamedBufferEXT (GLuint, GLenum);
+GLAPI GLboolean APIENTRY glUnmapNamedBufferEXT (GLuint);
+GLAPI void APIENTRY glGetNamedBufferParameterivEXT (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetNamedBufferPointervEXT (GLuint, GLenum, GLvoid* *);
+GLAPI void APIENTRY glGetNamedBufferSubDataEXT (GLuint, GLintptr, GLsizeiptr, GLvoid *);
+GLAPI void APIENTRY glTextureBufferEXT (GLuint, GLenum, GLenum, GLuint);
+GLAPI void APIENTRY glMultiTexBufferEXT (GLenum, GLenum, GLenum, GLuint);
+GLAPI void APIENTRY glNamedRenderbufferStorageEXT (GLuint, GLenum, GLsizei, GLsizei);
+GLAPI void APIENTRY glGetNamedRenderbufferParameterivEXT (GLuint, GLenum, GLint *);
+GLAPI GLenum APIENTRY glCheckNamedFramebufferStatusEXT (GLuint, GLenum);
+GLAPI void APIENTRY glNamedFramebufferTexture1DEXT (GLuint, GLenum, GLenum, GLuint, GLint);
+GLAPI void APIENTRY glNamedFramebufferTexture2DEXT (GLuint, GLenum, GLenum, GLuint, GLint);
+GLAPI void APIENTRY glNamedFramebufferTexture3DEXT (GLuint, GLenum, GLenum, GLuint, GLint, GLint);
+GLAPI void APIENTRY glNamedFramebufferRenderbufferEXT (GLuint, GLenum, GLenum, GLuint);
+GLAPI void APIENTRY glGetNamedFramebufferAttachmentParameterivEXT (GLuint, GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGenerateTextureMipmapEXT (GLuint, GLenum);
+GLAPI void APIENTRY glGenerateMultiTexMipmapEXT (GLenum, GLenum);
+GLAPI void APIENTRY glFramebufferDrawBufferEXT (GLuint, GLenum);
+GLAPI void APIENTRY glFramebufferDrawBuffersEXT (GLuint, GLsizei, const GLenum *);
+GLAPI void APIENTRY glFramebufferReadBufferEXT (GLuint, GLenum);
+GLAPI void APIENTRY glGetFramebufferParameterivEXT (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleEXT (GLuint, GLsizei, GLenum, GLsizei, GLsizei);
+GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleCoverageEXT (GLuint, GLsizei, GLsizei, GLenum, GLsizei, GLsizei);
+GLAPI void APIENTRY glNamedFramebufferTextureEXT (GLuint, GLenum, GLuint, GLint);
+GLAPI void APIENTRY glNamedFramebufferTextureLayerEXT (GLuint, GLenum, GLuint, GLint, GLint);
+GLAPI void APIENTRY glNamedFramebufferTextureFaceEXT (GLuint, GLenum, GLuint, GLint, GLenum);
+GLAPI void APIENTRY glTextureRenderbufferEXT (GLuint, GLenum, GLuint);
+GLAPI void APIENTRY glMultiTexRenderbufferEXT (GLenum, GLenum, GLuint);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask);
+typedef void (APIENTRYP PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask);
+typedef void (APIENTRYP PFNGLMATRIXLOADFEXTPROC) (GLenum mode, const GLfloat *m);
+typedef void (APIENTRYP PFNGLMATRIXLOADDEXTPROC) (GLenum mode, const GLdouble *m);
+typedef void (APIENTRYP PFNGLMATRIXMULTFEXTPROC) (GLenum mode, const GLfloat *m);
+typedef void (APIENTRYP PFNGLMATRIXMULTDEXTPROC) (GLenum mode, const GLdouble *m);
+typedef void (APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum mode);
+typedef void (APIENTRYP PFNGLMATRIXROTATEFEXTPROC) (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLMATRIXROTATEDEXTPROC) (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLMATRIXSCALEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLMATRIXSCALEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+typedef void (APIENTRYP PFNGLMATRIXORTHOEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+typedef void (APIENTRYP PFNGLMATRIXPOPEXTPROC) (GLenum mode);
+typedef void (APIENTRYP PFNGLMATRIXPUSHEXTPROC) (GLenum mode);
+typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m);
+typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m);
+typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m);
+typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m);
+typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLGETTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
+typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLGETMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
+typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLBINDMULTITEXTUREEXTPROC) (GLenum texunit, GLenum target, GLuint texture);
+typedef void (APIENTRYP PFNGLENABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index);
+typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index);
+typedef void (APIENTRYP PFNGLMULTITEXCOORDPOINTEREXTPROC) (GLenum texunit, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLMULTITEXENVFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLMULTITEXENVIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLMULTITEXGENDEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble param);
+typedef void (APIENTRYP PFNGLMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params);
+typedef void (APIENTRYP PFNGLMULTITEXGENFEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLMULTITEXGENIEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETFLOATINDEXEDVEXTPROC) (GLenum target, GLuint index, GLfloat *data);
+typedef void (APIENTRYP PFNGLGETDOUBLEINDEXEDVEXTPROC) (GLenum target, GLuint index, GLdouble *data);
+typedef void (APIENTRYP PFNGLGETPOINTERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLvoid* *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *bits);
+typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint lod, GLvoid *img);
+typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *bits);
+typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *bits);
+typedef void (APIENTRYP PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint lod, GLvoid *img);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum format, GLsizei len, const GLvoid *string);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLdouble *params);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLfloat *params);
+typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble *params);
+typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMIVEXTPROC) (GLuint program, GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum pname, GLvoid *string);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC) (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLint *params);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLuint *params);
+typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params);
+typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLint *params);
+typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint *params);
+typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLuint *params);
+typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLuint *params);
+typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLuint *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLuint *params);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLsizeiptr size, const GLvoid *data, GLenum usage);
+typedef void (APIENTRYP PFNGLNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const GLvoid *data);
+typedef GLvoid* (APIENTRYP PFNGLMAPNAMEDBUFFEREXTPROC) (GLuint buffer, GLenum access);
+typedef GLboolean (APIENTRYP PFNGLUNMAPNAMEDBUFFEREXTPROC) (GLuint buffer);
+typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC) (GLuint buffer, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVEXTPROC) (GLuint buffer, GLenum pname, GLvoid* *params);
+typedef void (APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLvoid *data);
+typedef void (APIENTRYP PFNGLTEXTUREBUFFEREXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer);
+typedef void (APIENTRYP PFNGLMULTITEXBUFFEREXTPROC) (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer);
+typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC) (GLuint renderbuffer, GLenum pname, GLint *params);
+typedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC) (GLuint framebuffer, GLenum target);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGENERATETEXTUREMIPMAPEXTPROC) (GLuint texture, GLenum target);
+typedef void (APIENTRYP PFNGLGENERATEMULTITEXMIPMAPEXTPROC) (GLenum texunit, GLenum target);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC) (GLuint framebuffer, GLenum mode);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC) (GLuint framebuffer, GLsizei n, const GLenum *bufs);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERREADBUFFEREXTPROC) (GLuint framebuffer, GLenum mode);
+typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC) (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
+typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face);
+typedef void (APIENTRYP PFNGLTEXTURERENDERBUFFEREXTPROC) (GLuint texture, GLenum target, GLuint renderbuffer);
+typedef void (APIENTRYP PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenum target, GLuint renderbuffer);
+#endif
+
/*
* ------------------------------------------------
* Everything here and below was added manually
- * by ckline, kbr and yvg to the version of glext.h obtained from:
+ * to the version of glext.h obtained from:
* http://oss.sgi.com/projects/ogl-sample/registry/index.html
* ------------------------------------------------
*/
+
+/**
+ * http://www.opengl.org/registry/specs/AMD/vertex_shader_tessellator.txt
+ */
+
+#ifndef GL_AMD_vertex_shader_tessellator
+#define GL_SAMPLER_BUFFER_AMD 0x9001
+#define GL_INT_SAMPLER_BUFFER_AMD 0x9002
+#define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003
+#define GL_DISCRETE_AMD 0x9006
+#define GL_CONTINUOUS_AMD 0x9007
+#define GL_TESSELLATION_MODE_AMD 0x9004
+#define GL_TESSELLATION_FACTOR_AMD 0x9005
+#endif
+
+#ifndef GL_AMD_vertex_shader_tessellator
+#define GL_AMD_vertex_shader_tessellator 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glTessellationFactorAMD(GLfloat factor);
+GLAPI void APIENTRY glTessellationModeAMD(GLenum mode);
+#endif
+typedef void (APIENTRYP PFNGLTESSELLATIONFACTORAMDPROC) (GLfloat factor);
+typedef void (APIENTRYP PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode);
+#endif
+
#ifndef GL_NV_element_array
#define GL_ELEMENT_ARRAY_TYPE_NV 0x8769
#define GL_ELEMENT_ARRAY_POINTER_NV 0x876A
@@ -8044,23 +8545,6 @@ typedef void (APIENTRY * PFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei len
typedef void (APIENTRY * PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, GLenum pname, GLvoid **params);
#endif
-#ifndef GL_APPLE_float_pixels
-#define GL_HALF_APPLE 0x140B
-#define GL_COLOR_FLOAT_APPLE 0x8A0F
-#define GL_RGBA_FLOAT32_APPLE 0x8814
-#define GL_RGB_FLOAT32_APPLE 0x8815
-#define GL_ALPHA_FLOAT32_APPLE 0x8816
-#define GL_INTENSITY_FLOAT32_APPLE 0x8817
-#define GL_LUMINANCE_FLOAT32_APPLE 0x8818
-#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819
-#define GL_RGBA_FLOAT16_APPLE 0x881A
-#define GL_RGB_FLOAT16_APPLE 0x881B
-#define GL_ALPHA_FLOAT16_APPLE 0x881C
-#define GL_INTENSITY_FLOAT16_APPLE 0x881D
-#define GL_LUMINANCE_FLOAT16_APPLE 0x881E
-#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F
-#endif
-
#ifndef GL_APPLE_pixel_buffer
#define GL_MIN_PBUFFER_VIEWPORT_DIMS_APPLE 0x8A10
#endif
diff --git a/make/stub_includes/opengl/GL/glu.h b/make/stub_includes/opengl/GL/glu.h
index bccda7f8e..e3a16f304 100644
--- a/make/stub_includes/opengl/GL/glu.h
+++ b/make/stub_includes/opengl/GL/glu.h
@@ -62,6 +62,13 @@ extern "C" {
/*************************************************************/
+/* Version */
+#define GLU_VERSION_1_1 1
+#define GLU_VERSION_1_2 1
+#define GLU_VERSION_1_3 1
+
+#ifndef GLU_VERSION_1_X
+
/* Extensions */
#define GLU_EXT_object_space_tess 1
#define GLU_EXT_nurbs_tessellator 1
@@ -70,11 +77,6 @@ extern "C" {
#define GLU_FALSE 0
#define GLU_TRUE 1
-/* Version */
-#define GLU_VERSION_1_1 1
-#define GLU_VERSION_1_2 1
-#define GLU_VERSION_1_3 1
-
/* StringName */
#define GLU_VERSION 100800
#define GLU_EXTENSIONS 100801
@@ -280,6 +282,11 @@ typedef GLUtesselator GLUtriangulatorObj;
/* Internal convenience typedefs */
typedef void (GLAPIENTRY *_GLUfuncptr)();
+#endif /* GLX_VERSION_1_X */
+
+#ifndef GLU_VERSION_1_X
+#define GLU_VERSION_1_X 1
+
GLAPI void GLAPIENTRY gluBeginCurve (GLUnurbs* nurb);
GLAPI void GLAPIENTRY gluBeginPolygon (GLUtesselator* tess);
GLAPI void GLAPIENTRY gluBeginSurface (GLUnurbs* nurb);
@@ -401,6 +408,8 @@ typedef void (GLAPIENTRY * PFNGLUTESSVERTEXPROC) (GLUtesselator* tess, GLdouble
typedef GLint (GLAPIENTRY * PFNGLUUNPROJECTPROC) (GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* objX, GLdouble* objY, GLdouble* objZ);
typedef GLint (GLAPIENTRY * PFNGLUUNPROJECT4PROC) (GLdouble winX, GLdouble winY, GLdouble winZ, GLdouble clipW, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble nearVal, GLdouble farVal, GLdouble* objX, GLdouble* objY, GLdouble* objZ, GLdouble* objW);
+#endif /* GLU_VERSION_1_X */
+
#ifdef __cplusplus
}
#endif
diff --git a/make/stub_includes/opengl/GL/glx.h b/make/stub_includes/opengl/GL/glx.h
index 4032f45da..67225e043 100644
--- a/make/stub_includes/opengl/GL/glx.h
+++ b/make/stub_includes/opengl/GL/glx.h
@@ -66,9 +66,9 @@ extern "C" {
#define GLX_VERSION_1_4 1
*/
-#define GLX_EXTENSION_NAME "GLX"
-
+#ifndef GLX_VERSION_1_X
+#define GLX_EXTENSION_NAME "GLX"
/*
* Tokens for glXChooseVisual and glXGetConfig:
@@ -192,8 +192,12 @@ typedef XID GLXContextID;
typedef XID GLXWindow;
typedef XID GLXPbuffer;
+#endif /* GLX_VERSION_1_X */
+#ifndef GLX_VERSION_1_X
+#define GLX_VERSION_1_X 1
+
extern XVisualInfo* glXChooseVisual( Display *dpy, int screen,
int *attribList );
@@ -300,6 +304,8 @@ extern void glXGetSelectedEvent( Display *dpy, GLXDrawable drawable,
/* GLX 1.4 and later */
extern void (*glXGetProcAddress(const GLubyte *procname))();
+#endif /* GLX_VERSION_1_X */
+
#ifndef GLX_GLXEXT_LEGACY
#include <GL/glxext.h>
diff --git a/make/stub_includes/opengl/GL/glxext.h b/make/stub_includes/opengl/GL/glxext.h
index 2d6036bcd..ad580022e 100644
--- a/make/stub_includes/opengl/GL/glxext.h
+++ b/make/stub_includes/opengl/GL/glxext.h
@@ -77,11 +77,14 @@ extern "C" {
#endif
#ifndef GLX_ARB_create_context
-#define GLX_CONTEXT_DEBUG_BIT_ARB 0x00000001
-#define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002
+#define GLX_CONTEXT_DEBUG_BIT_ARB 0x00000001
+#define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002
+#define GLX_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001
+#define GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002
#define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091
#define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092
#define GLX_CONTEXT_FLAGS_ARB 0x2094
+#define GLX_CONTEXT_PROFILE_MASK_ARB 0x9126
#endif
#ifndef GLX_SGIS_multisample
@@ -263,16 +266,13 @@ extern "C" {
typedef void (*__GLXextFuncPtr)(void);
-#ifdef GLX_GLXEXT_PROTOTYPES
-extern __GLXextFuncPtr glXGetProcAddress (const GLubyte *);
-#endif /* GLX_GLXEXT_PROTOTYPES */
-typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSPROC) (const GLubyte *procName);
-
#ifndef GLX_ARB_get_proc_address
#define GLX_ARB_get_proc_address 1
#ifdef GLX_GLXEXT_PROTOTYPES
+extern __GLXextFuncPtr glXGetProcAddress (const GLubyte *);
extern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *);
#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSPROC) (const GLubyte *procName);
typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSARBPROC) (const GLubyte *procName);
#endif
@@ -865,9 +865,9 @@ typedef void ( * PFNGLXRELEASETEXIMAGEEXTPROC) (Display *dpy,
#endif
#ifndef GLX_NV_present_video
-#define GLX_NV_present_video
+#define GLX_NV_present_video 1
#ifdef GLX_GLXEXT_PROTOTYPES
-extern unsigned int *glXEnumerateVideoDevicesNV(Display *dpy,
+extern unsigned int* glXEnumerateVideoDevicesNV(Display *dpy,
int screen,
int *nelements);
extern int glXBindVideoDeviceNV(Display *dpy,
diff --git a/make/stub_includes/opengl/GL/wglext.h b/make/stub_includes/opengl/GL/wglext.h
index 6f367c09b..d581756c2 100644
--- a/make/stub_includes/opengl/GL/wglext.h
+++ b/make/stub_includes/opengl/GL/wglext.h
@@ -190,12 +190,15 @@ extern "C" {
#endif
#ifndef WGL_ARB_create_context
+#define WGL_CONTEXT_DEBUG_BIT_ARB 0x00000001
+#define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002
+#define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001
+#define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002
#define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091
#define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092
#define WGL_CONTEXT_LAYER_PLANE_ARB 0x2093
#define WGL_CONTEXT_FLAGS_ARB 0x2094
-#define WGL_CONTEXT_DEBUG_BIT_ARB 0x0001
-#define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x0002
+#define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126
#define ERROR_INVALID_VERSION_ARB 0x2095
#endif
diff --git a/make/stub_includes/opengl/GL3/gl3.h b/make/stub_includes/opengl/GL3/gl3.h
index e9123b43a..7db3851bd 100755
--- a/make/stub_includes/opengl/GL3/gl3.h
+++ b/make/stub_includes/opengl/GL3/gl3.h
@@ -77,15 +77,15 @@ extern "C" {
# else /* for use with static link lib build of Win32 edition only */
# define GLAPI extern
# endif /* _STATIC_MESA support */
-# define GLAPIENTRY __stdcall
+# define APIENTRY __stdcall
#else
/* non-Windows compilation */
# define GLAPI extern
-# define GLAPIENTRY
+# define APIENTRY
#endif /* WIN32 / CYGWIN bracket */
-#ifndef GLAPIENTRYP
-# define GLAPIENTRYP GLAPIENTRY*
+#ifndef APIENTRYP
+# define APIENTRYP APIENTRY*
#endif
#if (defined(__BEOS__) && defined(__POWERPC__)) || defined(__QUICKDRAW__)
@@ -113,14 +113,6 @@ extern "C" {
#pragma import on
#endif
-#ifndef APIENTRY
-#define APIENTRY GLAPIENTRY
-#endif
-
-#ifndef APIENTRY
-#define APIENTRY GLAPIENTRY
-#endif
-
#ifdef CENTERLINE_CLPP
#define signed
#endif
@@ -1067,7 +1059,7 @@ typedef void GLvoid;
#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44
#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45
#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46
-#define GL_INVALID_INDEX 0xFFFFFFFFu
+/** Manual: #define GL_INVALID_INDEX -1 == (int) 0xFFFFFFFFu */
#endif
#ifndef GL_ARB_copy_buffer
@@ -1111,458 +1103,456 @@ typedef unsigned short GLhalfARB;
typedef unsigned short GLhalfNV;
#endif
-#include "glext-64bit-types.h"
-
#ifndef GL_VERSION_1_0
#define GL_VERSION_1_0 1
#ifdef GL3_PROTOTYPES
-GLAPI void GLAPIENTRY glCullFace (GLenum);
-GLAPI void GLAPIENTRY glFrontFace (GLenum);
-GLAPI void GLAPIENTRY glHint (GLenum, GLenum);
-GLAPI void GLAPIENTRY glLineWidth (GLfloat);
-GLAPI void GLAPIENTRY glPointSize (GLfloat);
-GLAPI void GLAPIENTRY glPolygonMode (GLenum, GLenum);
-GLAPI void GLAPIENTRY glScissor (GLint, GLint, GLsizei, GLsizei);
-GLAPI void GLAPIENTRY glTexParameterf (GLenum, GLenum, GLfloat);
-GLAPI void GLAPIENTRY glTexParameterfv (GLenum, GLenum, const GLfloat *);
-GLAPI void GLAPIENTRY glTexParameteri (GLenum, GLenum, GLint);
-GLAPI void GLAPIENTRY glTexParameteriv (GLenum, GLenum, const GLint *);
-GLAPI void GLAPIENTRY glTexImage1D (GLenum, GLint, GLint, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
-GLAPI void GLAPIENTRY glTexImage2D (GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
-GLAPI void GLAPIENTRY glDrawBuffer (GLenum);
-GLAPI void GLAPIENTRY glClear (GLbitfield);
-GLAPI void GLAPIENTRY glClearColor (GLclampf, GLclampf, GLclampf, GLclampf);
-GLAPI void GLAPIENTRY glClearStencil (GLint);
-GLAPI void GLAPIENTRY glClearDepth (GLclampd);
-GLAPI void GLAPIENTRY glStencilMask (GLuint);
-GLAPI void GLAPIENTRY glColorMask (GLboolean, GLboolean, GLboolean, GLboolean);
-GLAPI void GLAPIENTRY glDepthMask (GLboolean);
-GLAPI void GLAPIENTRY glDisable (GLenum);
-GLAPI void GLAPIENTRY glEnable (GLenum);
-GLAPI void GLAPIENTRY glFinish (void);
-GLAPI void GLAPIENTRY glFlush (void);
-GLAPI void GLAPIENTRY glBlendFunc (GLenum, GLenum);
-GLAPI void GLAPIENTRY glLogicOp (GLenum);
-GLAPI void GLAPIENTRY glStencilFunc (GLenum, GLint, GLuint);
-GLAPI void GLAPIENTRY glStencilOp (GLenum, GLenum, GLenum);
-GLAPI void GLAPIENTRY glDepthFunc (GLenum);
-GLAPI void GLAPIENTRY glPixelStoref (GLenum, GLfloat);
-GLAPI void GLAPIENTRY glPixelStorei (GLenum, GLint);
-GLAPI void GLAPIENTRY glReadBuffer (GLenum);
-GLAPI void GLAPIENTRY glReadPixels (GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLvoid *);
-GLAPI void GLAPIENTRY glGetBooleanv (GLenum, GLboolean *);
-GLAPI void GLAPIENTRY glGetDoublev (GLenum, GLdouble *);
-GLAPI GLenum GLAPIENTRY glGetError (void);
-GLAPI void GLAPIENTRY glGetFloatv (GLenum, GLfloat *);
-GLAPI void GLAPIENTRY glGetIntegerv (GLenum, GLint *);
-GLAPI const GLubyte * GLAPIENTRY glGetString (GLenum);
-GLAPI void GLAPIENTRY glGetTexImage (GLenum, GLint, GLenum, GLenum, GLvoid *);
-GLAPI void GLAPIENTRY glGetTexParameterfv (GLenum, GLenum, GLfloat *);
-GLAPI void GLAPIENTRY glGetTexParameteriv (GLenum, GLenum, GLint *);
-GLAPI void GLAPIENTRY glGetTexLevelParameterfv (GLenum, GLint, GLenum, GLfloat *);
-GLAPI void GLAPIENTRY glGetTexLevelParameteriv (GLenum, GLint, GLenum, GLint *);
-GLAPI GLboolean GLAPIENTRY glIsEnabled (GLenum);
-GLAPI void GLAPIENTRY glDepthRange (GLclampd, GLclampd);
-GLAPI void GLAPIENTRY glViewport (GLint, GLint, GLsizei, GLsizei);
+GLAPI void APIENTRY glCullFace (GLenum);
+GLAPI void APIENTRY glFrontFace (GLenum);
+GLAPI void APIENTRY glHint (GLenum, GLenum);
+GLAPI void APIENTRY glLineWidth (GLfloat);
+GLAPI void APIENTRY glPointSize (GLfloat);
+GLAPI void APIENTRY glPolygonMode (GLenum, GLenum);
+GLAPI void APIENTRY glScissor (GLint, GLint, GLsizei, GLsizei);
+GLAPI void APIENTRY glTexParameterf (GLenum, GLenum, GLfloat);
+GLAPI void APIENTRY glTexParameterfv (GLenum, GLenum, const GLfloat *);
+GLAPI void APIENTRY glTexParameteri (GLenum, GLenum, GLint);
+GLAPI void APIENTRY glTexParameteriv (GLenum, GLenum, const GLint *);
+GLAPI void APIENTRY glTexImage1D (GLenum, GLint, GLint, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glTexImage2D (GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glDrawBuffer (GLenum);
+GLAPI void APIENTRY glClear (GLbitfield);
+GLAPI void APIENTRY glClearColor (GLclampf, GLclampf, GLclampf, GLclampf);
+GLAPI void APIENTRY glClearStencil (GLint);
+GLAPI void APIENTRY glClearDepth (GLclampd);
+GLAPI void APIENTRY glStencilMask (GLuint);
+GLAPI void APIENTRY glColorMask (GLboolean, GLboolean, GLboolean, GLboolean);
+GLAPI void APIENTRY glDepthMask (GLboolean);
+GLAPI void APIENTRY glDisable (GLenum);
+GLAPI void APIENTRY glEnable (GLenum);
+GLAPI void APIENTRY glFinish (void);
+GLAPI void APIENTRY glFlush (void);
+GLAPI void APIENTRY glBlendFunc (GLenum, GLenum);
+GLAPI void APIENTRY glLogicOp (GLenum);
+GLAPI void APIENTRY glStencilFunc (GLenum, GLint, GLuint);
+GLAPI void APIENTRY glStencilOp (GLenum, GLenum, GLenum);
+GLAPI void APIENTRY glDepthFunc (GLenum);
+GLAPI void APIENTRY glPixelStoref (GLenum, GLfloat);
+GLAPI void APIENTRY glPixelStorei (GLenum, GLint);
+GLAPI void APIENTRY glReadBuffer (GLenum);
+GLAPI void APIENTRY glReadPixels (GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLvoid *);
+GLAPI void APIENTRY glGetBooleanv (GLenum, GLboolean *);
+GLAPI void APIENTRY glGetDoublev (GLenum, GLdouble *);
+GLAPI GLenum APIENTRY glGetError (void);
+GLAPI void APIENTRY glGetFloatv (GLenum, GLfloat *);
+GLAPI void APIENTRY glGetIntegerv (GLenum, GLint *);
+GLAPI const GLubyte * APIENTRY glGetString (GLenum);
+GLAPI void APIENTRY glGetTexImage (GLenum, GLint, GLenum, GLenum, GLvoid *);
+GLAPI void APIENTRY glGetTexParameterfv (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetTexParameteriv (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetTexLevelParameterfv (GLenum, GLint, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetTexLevelParameteriv (GLenum, GLint, GLenum, GLint *);
+GLAPI GLboolean APIENTRY glIsEnabled (GLenum);
+GLAPI void APIENTRY glDepthRange (GLclampd, GLclampd);
+GLAPI void APIENTRY glViewport (GLint, GLint, GLsizei, GLsizei);
#endif /* GL3_PROTOTYPES */
-typedef void (GLAPIENTRYP PFNGLCULLFACEPROC) (GLenum mode);
-typedef void (GLAPIENTRYP PFNGLFRONTFACEPROC) (GLenum mode);
-typedef void (GLAPIENTRYP PFNGLHINTPROC) (GLenum target, GLenum mode);
-typedef void (GLAPIENTRYP PFNGLLINEWIDTHPROC) (GLfloat width);
-typedef void (GLAPIENTRYP PFNGLPOINTSIZEPROC) (GLfloat size);
-typedef void (GLAPIENTRYP PFNGLPOLYGONMODEPROC) (GLenum face, GLenum mode);
-typedef void (GLAPIENTRYP PFNGLSCISSORPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (GLAPIENTRYP PFNGLTEXPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat param);
-typedef void (GLAPIENTRYP PFNGLTEXPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
-typedef void (GLAPIENTRYP PFNGLTEXPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);
-typedef void (GLAPIENTRYP PFNGLTEXPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (GLAPIENTRYP PFNGLTEXIMAGE1DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
-typedef void (GLAPIENTRYP PFNGLTEXIMAGE2DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
-typedef void (GLAPIENTRYP PFNGLDRAWBUFFERPROC) (GLenum mode);
-typedef void (GLAPIENTRYP PFNGLCLEARPROC) (GLbitfield mask);
-typedef void (GLAPIENTRYP PFNGLCLEARCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-typedef void (GLAPIENTRYP PFNGLCLEARSTENCILPROC) (GLint s);
-typedef void (GLAPIENTRYP PFNGLCLEARDEPTHPROC) (GLclampd depth);
-typedef void (GLAPIENTRYP PFNGLSTENCILMASKPROC) (GLuint mask);
-typedef void (GLAPIENTRYP PFNGLCOLORMASKPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
-typedef void (GLAPIENTRYP PFNGLDEPTHMASKPROC) (GLboolean flag);
-typedef void (GLAPIENTRYP PFNGLDISABLEPROC) (GLenum cap);
-typedef void (GLAPIENTRYP PFNGLENABLEPROC) (GLenum cap);
-typedef void (GLAPIENTRYP PFNGLFINISHPROC) (void);
-typedef void (GLAPIENTRYP PFNGLFLUSHPROC) (void);
-typedef void (GLAPIENTRYP PFNGLBLENDFUNCPROC) (GLenum sfactor, GLenum dfactor);
-typedef void (GLAPIENTRYP PFNGLLOGICOPPROC) (GLenum opcode);
-typedef void (GLAPIENTRYP PFNGLSTENCILFUNCPROC) (GLenum func, GLint ref, GLuint mask);
-typedef void (GLAPIENTRYP PFNGLSTENCILOPPROC) (GLenum fail, GLenum zfail, GLenum zpass);
-typedef void (GLAPIENTRYP PFNGLDEPTHFUNCPROC) (GLenum func);
-typedef void (GLAPIENTRYP PFNGLPIXELSTOREFPROC) (GLenum pname, GLfloat param);
-typedef void (GLAPIENTRYP PFNGLPIXELSTOREIPROC) (GLenum pname, GLint param);
-typedef void (GLAPIENTRYP PFNGLREADBUFFERPROC) (GLenum mode);
-typedef void (GLAPIENTRYP PFNGLREADPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);
-typedef void (GLAPIENTRYP PFNGLGETBOOLEANVPROC) (GLenum pname, GLboolean *params);
-typedef void (GLAPIENTRYP PFNGLGETDOUBLEVPROC) (GLenum pname, GLdouble *params);
-typedef GLenum (GLAPIENTRYP PFNGLGETERRORPROC) (void);
-typedef void (GLAPIENTRYP PFNGLGETFLOATVPROC) (GLenum pname, GLfloat *params);
-typedef void (GLAPIENTRYP PFNGLGETINTEGERVPROC) (GLenum pname, GLint *params);
-typedef const GLubyte * (GLAPIENTRYP PFNGLGETSTRINGPROC) (GLenum name);
-typedef void (GLAPIENTRYP PFNGLGETTEXIMAGEPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
-typedef void (GLAPIENTRYP PFNGLGETTEXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
-typedef void (GLAPIENTRYP PFNGLGETTEXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (GLAPIENTRYP PFNGLGETTEXLEVELPARAMETERFVPROC) (GLenum target, GLint level, GLenum pname, GLfloat *params);
-typedef void (GLAPIENTRYP PFNGLGETTEXLEVELPARAMETERIVPROC) (GLenum target, GLint level, GLenum pname, GLint *params);
-typedef GLboolean (GLAPIENTRYP PFNGLISENABLEDPROC) (GLenum cap);
-typedef void (GLAPIENTRYP PFNGLDEPTHRANGEPROC) (GLclampd near_val, GLclampd far_val); /* MSVC can't handle near or far var names */
-typedef void (GLAPIENTRYP PFNGLVIEWPORTPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLCULLFACEPROC) (GLenum mode);
+typedef void (APIENTRYP PFNGLFRONTFACEPROC) (GLenum mode);
+typedef void (APIENTRYP PFNGLHINTPROC) (GLenum target, GLenum mode);
+typedef void (APIENTRYP PFNGLLINEWIDTHPROC) (GLfloat width);
+typedef void (APIENTRYP PFNGLPOINTSIZEPROC) (GLfloat size);
+typedef void (APIENTRYP PFNGLPOLYGONMODEPROC) (GLenum face, GLenum mode);
+typedef void (APIENTRYP PFNGLSCISSORPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLTEXPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLTEXPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLTEXPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLTEXPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLTEXIMAGE1DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLTEXIMAGE2DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLDRAWBUFFERPROC) (GLenum mode);
+typedef void (APIENTRYP PFNGLCLEARPROC) (GLbitfield mask);
+typedef void (APIENTRYP PFNGLCLEARCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+typedef void (APIENTRYP PFNGLCLEARSTENCILPROC) (GLint s);
+typedef void (APIENTRYP PFNGLCLEARDEPTHPROC) (GLclampd depth);
+typedef void (APIENTRYP PFNGLSTENCILMASKPROC) (GLuint mask);
+typedef void (APIENTRYP PFNGLCOLORMASKPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+typedef void (APIENTRYP PFNGLDEPTHMASKPROC) (GLboolean flag);
+typedef void (APIENTRYP PFNGLDISABLEPROC) (GLenum cap);
+typedef void (APIENTRYP PFNGLENABLEPROC) (GLenum cap);
+typedef void (APIENTRYP PFNGLFINISHPROC) (void);
+typedef void (APIENTRYP PFNGLFLUSHPROC) (void);
+typedef void (APIENTRYP PFNGLBLENDFUNCPROC) (GLenum sfactor, GLenum dfactor);
+typedef void (APIENTRYP PFNGLLOGICOPPROC) (GLenum opcode);
+typedef void (APIENTRYP PFNGLSTENCILFUNCPROC) (GLenum func, GLint ref, GLuint mask);
+typedef void (APIENTRYP PFNGLSTENCILOPPROC) (GLenum fail, GLenum zfail, GLenum zpass);
+typedef void (APIENTRYP PFNGLDEPTHFUNCPROC) (GLenum func);
+typedef void (APIENTRYP PFNGLPIXELSTOREFPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLPIXELSTOREIPROC) (GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLREADBUFFERPROC) (GLenum mode);
+typedef void (APIENTRYP PFNGLREADPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);
+typedef void (APIENTRYP PFNGLGETBOOLEANVPROC) (GLenum pname, GLboolean *params);
+typedef void (APIENTRYP PFNGLGETDOUBLEVPROC) (GLenum pname, GLdouble *params);
+typedef GLenum (APIENTRYP PFNGLGETERRORPROC) (void);
+typedef void (APIENTRYP PFNGLGETFLOATVPROC) (GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETINTEGERVPROC) (GLenum pname, GLint *params);
+typedef const GLubyte * (APIENTRYP PFNGLGETSTRINGPROC) (GLenum name);
+typedef void (APIENTRYP PFNGLGETTEXIMAGEPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
+typedef void (APIENTRYP PFNGLGETTEXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETTEXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERFVPROC) (GLenum target, GLint level, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERIVPROC) (GLenum target, GLint level, GLenum pname, GLint *params);
+typedef GLboolean (APIENTRYP PFNGLISENABLEDPROC) (GLenum cap);
+typedef void (APIENTRYP PFNGLDEPTHRANGEPROC) (GLclampd near_val, GLclampd far_val); /* MSVC can't handle near or far var names */
+typedef void (APIENTRYP PFNGLVIEWPORTPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
#endif
#ifndef GL_VERSION_1_1
#define GL_VERSION_1_1 1
#ifdef GL3_PROTOTYPES
-GLAPI void GLAPIENTRY glDrawArrays (GLenum, GLint, GLsizei);
-GLAPI void GLAPIENTRY glDrawElements (GLenum, GLsizei, GLenum, const GLvoid *);
-GLAPI void GLAPIENTRY glGetPointerv (GLenum, GLvoid* *);
-GLAPI void GLAPIENTRY glPolygonOffset (GLfloat, GLfloat);
-GLAPI void GLAPIENTRY glCopyTexImage1D (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint);
-GLAPI void GLAPIENTRY glCopyTexImage2D (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint);
-GLAPI void GLAPIENTRY glCopyTexSubImage1D (GLenum, GLint, GLint, GLint, GLint, GLsizei);
-GLAPI void GLAPIENTRY glCopyTexSubImage2D (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
-GLAPI void GLAPIENTRY glTexSubImage1D (GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void GLAPIENTRY glTexSubImage2D (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void GLAPIENTRY glBindTexture (GLenum, GLuint);
-GLAPI void GLAPIENTRY glDeleteTextures (GLsizei, const GLuint *);
-GLAPI void GLAPIENTRY glGenTextures (GLsizei, GLuint *);
-GLAPI GLboolean GLAPIENTRY glIsTexture (GLuint);
+GLAPI void APIENTRY glDrawArrays (GLenum, GLint, GLsizei);
+GLAPI void APIENTRY glDrawElements (GLenum, GLsizei, GLenum, const GLvoid *);
+GLAPI void APIENTRY glGetPointerv (GLenum, GLvoid* *);
+GLAPI void APIENTRY glPolygonOffset (GLfloat, GLfloat);
+GLAPI void APIENTRY glCopyTexImage1D (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint);
+GLAPI void APIENTRY glCopyTexImage2D (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint);
+GLAPI void APIENTRY glCopyTexSubImage1D (GLenum, GLint, GLint, GLint, GLint, GLsizei);
+GLAPI void APIENTRY glCopyTexSubImage2D (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
+GLAPI void APIENTRY glTexSubImage1D (GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glTexSubImage2D (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glBindTexture (GLenum, GLuint);
+GLAPI void APIENTRY glDeleteTextures (GLsizei, const GLuint *);
+GLAPI void APIENTRY glGenTextures (GLsizei, GLuint *);
+GLAPI GLboolean APIENTRY glIsTexture (GLuint);
#endif /* GL3_PROTOTYPES */
-typedef void (GLAPIENTRYP PFNGLDRAWARRAYSPROC) (GLenum mode, GLint first, GLsizei count);
-typedef void (GLAPIENTRYP PFNGLDRAWELEMENTSPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
-typedef void (GLAPIENTRYP PFNGLGETPOINTERVPROC) (GLenum pname, GLvoid* *params);
-typedef void (GLAPIENTRYP PFNGLPOLYGONOFFSETPROC) (GLfloat factor, GLfloat units);
-typedef void (GLAPIENTRYP PFNGLCOPYTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
-typedef void (GLAPIENTRYP PFNGLCOPYTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-typedef void (GLAPIENTRYP PFNGLCOPYTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-typedef void (GLAPIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (GLAPIENTRYP PFNGLTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
-typedef void (GLAPIENTRYP PFNGLTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
-typedef void (GLAPIENTRYP PFNGLBINDTEXTUREPROC) (GLenum target, GLuint texture);
-typedef void (GLAPIENTRYP PFNGLDELETETEXTURESPROC) (GLsizei n, const GLuint *textures);
-typedef void (GLAPIENTRYP PFNGLGENTEXTURESPROC) (GLsizei n, GLuint *textures);
-typedef GLboolean (GLAPIENTRYP PFNGLISTEXTUREPROC) (GLuint texture);
+typedef void (APIENTRYP PFNGLDRAWARRAYSPROC) (GLenum mode, GLint first, GLsizei count);
+typedef void (APIENTRYP PFNGLDRAWELEMENTSPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
+typedef void (APIENTRYP PFNGLGETPOINTERVPROC) (GLenum pname, GLvoid* *params);
+typedef void (APIENTRYP PFNGLPOLYGONOFFSETPROC) (GLfloat factor, GLfloat units);
+typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLBINDTEXTUREPROC) (GLenum target, GLuint texture);
+typedef void (APIENTRYP PFNGLDELETETEXTURESPROC) (GLsizei n, const GLuint *textures);
+typedef void (APIENTRYP PFNGLGENTEXTURESPROC) (GLsizei n, GLuint *textures);
+typedef GLboolean (APIENTRYP PFNGLISTEXTUREPROC) (GLuint texture);
#endif
#ifndef GL_VERSION_1_2
#define GL_VERSION_1_2 1
#ifdef GL3_PROTOTYPES
-GLAPI void GLAPIENTRY glBlendColor (GLclampf, GLclampf, GLclampf, GLclampf);
-GLAPI void GLAPIENTRY glBlendEquation (GLenum);
-GLAPI void GLAPIENTRY glDrawRangeElements (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *);
-GLAPI void GLAPIENTRY glTexImage3D (GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
-GLAPI void GLAPIENTRY glTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void GLAPIENTRY glCopyTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
+GLAPI void APIENTRY glBlendColor (GLclampf, GLclampf, GLclampf, GLclampf);
+GLAPI void APIENTRY glBlendEquation (GLenum);
+GLAPI void APIENTRY glDrawRangeElements (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *);
+GLAPI void APIENTRY glTexImage3D (GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glCopyTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
#endif /* GL3_PROTOTYPES */
-typedef void (GLAPIENTRYP PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-typedef void (GLAPIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
-typedef void (GLAPIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
-typedef void (GLAPIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
-typedef void (GLAPIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
-typedef void (GLAPIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
+typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
+typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
+typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
#endif
#ifndef GL_VERSION_1_3
#define GL_VERSION_1_3 1
#ifdef GL3_PROTOTYPES
-GLAPI void GLAPIENTRY glActiveTexture (GLenum);
-GLAPI void GLAPIENTRY glSampleCoverage (GLclampf, GLboolean);
-GLAPI void GLAPIENTRY glCompressedTexImage3D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
-GLAPI void GLAPIENTRY glCompressedTexImage2D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
-GLAPI void GLAPIENTRY glCompressedTexImage1D (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *);
-GLAPI void GLAPIENTRY glCompressedTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
-GLAPI void GLAPIENTRY glCompressedTexSubImage2D (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
-GLAPI void GLAPIENTRY glCompressedTexSubImage1D (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *);
-GLAPI void GLAPIENTRY glGetCompressedTexImage (GLenum, GLint, GLvoid *);
+GLAPI void APIENTRY glActiveTexture (GLenum);
+GLAPI void APIENTRY glSampleCoverage (GLclampf, GLboolean);
+GLAPI void APIENTRY glCompressedTexImage3D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTexImage2D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTexImage1D (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glGetCompressedTexImage (GLenum, GLint, GLvoid *);
#endif /* GL3_PROTOTYPES */
-typedef void (GLAPIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
-typedef void (GLAPIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert);
-typedef void (GLAPIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
-typedef void (GLAPIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
-typedef void (GLAPIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
-typedef void (GLAPIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
-typedef void (GLAPIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
-typedef void (GLAPIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
-typedef void (GLAPIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid *img);
+typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
+typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
+typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid *img);
#endif
#ifndef GL_VERSION_1_4
#define GL_VERSION_1_4 1
#ifdef GL3_PROTOTYPES
-GLAPI void GLAPIENTRY glBlendFuncSeparate (GLenum, GLenum, GLenum, GLenum);
-GLAPI void GLAPIENTRY glMultiDrawArrays (GLenum, GLint *, GLsizei *, GLsizei);
-GLAPI void GLAPIENTRY glMultiDrawElements (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei);
-GLAPI void GLAPIENTRY glPointParameterf (GLenum, GLfloat);
-GLAPI void GLAPIENTRY glPointParameterfv (GLenum, const GLfloat *);
-GLAPI void GLAPIENTRY glPointParameteri (GLenum, GLint);
-GLAPI void GLAPIENTRY glPointParameteriv (GLenum, const GLint *);
+GLAPI void APIENTRY glBlendFuncSeparate (GLenum, GLenum, GLenum, GLenum);
+GLAPI void APIENTRY glMultiDrawArrays (GLenum, GLint *, GLsizei *, GLsizei);
+GLAPI void APIENTRY glMultiDrawElements (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei);
+GLAPI void APIENTRY glPointParameterf (GLenum, GLfloat);
+GLAPI void APIENTRY glPointParameterfv (GLenum, const GLfloat *);
+GLAPI void APIENTRY glPointParameteri (GLenum, GLint);
+GLAPI void APIENTRY glPointParameteriv (GLenum, const GLint *);
#endif /* GL3_PROTOTYPES */
-typedef void (GLAPIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
-typedef void (GLAPIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount);
-typedef void (GLAPIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
-typedef void (GLAPIENTRYP PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param);
-typedef void (GLAPIENTRYP PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params);
-typedef void (GLAPIENTRYP PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param);
-typedef void (GLAPIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount);
+typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params);
#endif
#ifndef GL_VERSION_1_5
#define GL_VERSION_1_5 1
#ifdef GL3_PROTOTYPES
-GLAPI void GLAPIENTRY glGenQueries (GLsizei, GLuint *);
-GLAPI void GLAPIENTRY glDeleteQueries (GLsizei, const GLuint *);
-GLAPI GLboolean GLAPIENTRY glIsQuery (GLuint);
-GLAPI void GLAPIENTRY glBeginQuery (GLenum, GLuint);
-GLAPI void GLAPIENTRY glEndQuery (GLenum);
-GLAPI void GLAPIENTRY glGetQueryiv (GLenum, GLenum, GLint *);
-GLAPI void GLAPIENTRY glGetQueryObjectiv (GLuint, GLenum, GLint *);
-GLAPI void GLAPIENTRY glGetQueryObjectuiv (GLuint, GLenum, GLuint *);
-GLAPI void GLAPIENTRY glBindBuffer (GLenum, GLuint);
-GLAPI void GLAPIENTRY glDeleteBuffers (GLsizei, const GLuint *);
-GLAPI void GLAPIENTRY glGenBuffers (GLsizei, GLuint *);
-GLAPI GLboolean GLAPIENTRY glIsBuffer (GLuint);
-GLAPI void GLAPIENTRY glBufferData (GLenum, GLsizeiptr, const GLvoid *, GLenum);
-GLAPI void GLAPIENTRY glBufferSubData (GLenum, GLintptr, GLsizeiptr, const GLvoid *);
-GLAPI void GLAPIENTRY glGetBufferSubData (GLenum, GLintptr, GLsizeiptr, GLvoid *);
-GLAPI GLvoid* GLAPIENTRY glMapBuffer (GLenum, GLenum);
-GLAPI GLboolean GLAPIENTRY glUnmapBuffer (GLenum);
-GLAPI void GLAPIENTRY glGetBufferParameteriv (GLenum, GLenum, GLint *);
-GLAPI void GLAPIENTRY glGetBufferPointerv (GLenum, GLenum, GLvoid* *);
+GLAPI void APIENTRY glGenQueries (GLsizei, GLuint *);
+GLAPI void APIENTRY glDeleteQueries (GLsizei, const GLuint *);
+GLAPI GLboolean APIENTRY glIsQuery (GLuint);
+GLAPI void APIENTRY glBeginQuery (GLenum, GLuint);
+GLAPI void APIENTRY glEndQuery (GLenum);
+GLAPI void APIENTRY glGetQueryiv (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetQueryObjectiv (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetQueryObjectuiv (GLuint, GLenum, GLuint *);
+GLAPI void APIENTRY glBindBuffer (GLenum, GLuint);
+GLAPI void APIENTRY glDeleteBuffers (GLsizei, const GLuint *);
+GLAPI void APIENTRY glGenBuffers (GLsizei, GLuint *);
+GLAPI GLboolean APIENTRY glIsBuffer (GLuint);
+GLAPI void APIENTRY glBufferData (GLenum, GLsizeiptr, const GLvoid *, GLenum);
+GLAPI void APIENTRY glBufferSubData (GLenum, GLintptr, GLsizeiptr, const GLvoid *);
+GLAPI void APIENTRY glGetBufferSubData (GLenum, GLintptr, GLsizeiptr, GLvoid *);
+GLAPI GLvoid* APIENTRY glMapBuffer (GLenum, GLenum);
+GLAPI GLboolean APIENTRY glUnmapBuffer (GLenum);
+GLAPI void APIENTRY glGetBufferParameteriv (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetBufferPointerv (GLenum, GLenum, GLvoid* *);
#endif /* GL3_PROTOTYPES */
-typedef void (GLAPIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids);
-typedef void (GLAPIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids);
-typedef GLboolean (GLAPIENTRYP PFNGLISQUERYPROC) (GLuint id);
-typedef void (GLAPIENTRYP PFNGLBEGINQUERYPROC) (GLenum target, GLuint id);
-typedef void (GLAPIENTRYP PFNGLENDQUERYPROC) (GLenum target);
-typedef void (GLAPIENTRYP PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (GLAPIENTRYP PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint *params);
-typedef void (GLAPIENTRYP PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params);
-typedef void (GLAPIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
-typedef void (GLAPIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers);
-typedef void (GLAPIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);
-typedef GLboolean (GLAPIENTRYP PFNGLISBUFFERPROC) (GLuint buffer);
-typedef void (GLAPIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage);
-typedef void (GLAPIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data);
-typedef void (GLAPIENTRYP PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data);
-typedef GLvoid* (GLAPIENTRYP PFNGLMAPBUFFERPROC) (GLenum target, GLenum access);
-typedef GLboolean (GLAPIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target);
-typedef void (GLAPIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (GLAPIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, GLvoid* *params);
+typedef void (APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids);
+typedef void (APIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids);
+typedef GLboolean (APIENTRYP PFNGLISQUERYPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLBEGINQUERYPROC) (GLenum target, GLuint id);
+typedef void (APIENTRYP PFNGLENDQUERYPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params);
+typedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
+typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers);
+typedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);
+typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer);
+typedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage);
+typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data);
+typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data);
+typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERPROC) (GLenum target, GLenum access);
+typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, GLvoid* *params);
#endif
#ifndef GL_VERSION_2_0
#define GL_VERSION_2_0 1
#ifdef GL3_PROTOTYPES
-GLAPI void GLAPIENTRY glBlendEquationSeparate (GLenum, GLenum);
-GLAPI void GLAPIENTRY glDrawBuffers (GLsizei, const GLenum *);
-GLAPI void GLAPIENTRY glStencilOpSeparate (GLenum, GLenum, GLenum, GLenum);
-GLAPI void GLAPIENTRY glStencilFuncSeparate (GLenum, GLenum, GLint, GLuint);
-GLAPI void GLAPIENTRY glStencilMaskSeparate (GLenum, GLuint);
-GLAPI void GLAPIENTRY glAttachShader (GLuint, GLuint);
-GLAPI void GLAPIENTRY glBindAttribLocation (GLuint, GLuint, const GLchar *);
-GLAPI void GLAPIENTRY glCompileShader (GLuint);
-GLAPI GLuint GLAPIENTRY glCreateProgram (void);
-GLAPI GLuint GLAPIENTRY glCreateShader (GLenum);
-GLAPI void GLAPIENTRY glDeleteProgram (GLuint);
-GLAPI void GLAPIENTRY glDeleteShader (GLuint);
-GLAPI void GLAPIENTRY glDetachShader (GLuint, GLuint);
-GLAPI void GLAPIENTRY glDisableVertexAttribArray (GLuint);
-GLAPI void GLAPIENTRY glEnableVertexAttribArray (GLuint);
-GLAPI void GLAPIENTRY glGetActiveAttrib (GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *);
-GLAPI void GLAPIENTRY glGetActiveUniform (GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *);
-GLAPI void GLAPIENTRY glGetAttachedShaders (GLuint, GLsizei, GLsizei *, GLuint *);
-GLAPI GLint GLAPIENTRY glGetAttribLocation (GLuint, const GLchar *);
-GLAPI void GLAPIENTRY glGetProgramiv (GLuint, GLenum, GLint *);
-GLAPI void GLAPIENTRY glGetProgramInfoLog (GLuint, GLsizei, GLsizei *, GLchar *);
-GLAPI void GLAPIENTRY glGetShaderiv (GLuint, GLenum, GLint *);
-GLAPI void GLAPIENTRY glGetShaderInfoLog (GLuint, GLsizei, GLsizei *, GLchar *);
-GLAPI void GLAPIENTRY glGetShaderSource (GLuint, GLsizei, GLsizei *, GLchar *);
-GLAPI GLint GLAPIENTRY glGetUniformLocation (GLuint, const GLchar *);
-GLAPI void GLAPIENTRY glGetUniformfv (GLuint, GLint, GLfloat *);
-GLAPI void GLAPIENTRY glGetUniformiv (GLuint, GLint, GLint *);
-GLAPI void GLAPIENTRY glGetVertexAttribdv (GLuint, GLenum, GLdouble *);
-GLAPI void GLAPIENTRY glGetVertexAttribfv (GLuint, GLenum, GLfloat *);
-GLAPI void GLAPIENTRY glGetVertexAttribiv (GLuint, GLenum, GLint *);
-GLAPI void GLAPIENTRY glGetVertexAttribPointerv (GLuint, GLenum, GLvoid* *);
-GLAPI GLboolean GLAPIENTRY glIsProgram (GLuint);
-GLAPI GLboolean GLAPIENTRY glIsShader (GLuint);
-GLAPI void GLAPIENTRY glLinkProgram (GLuint);
-GLAPI void GLAPIENTRY glShaderSource (GLuint, GLsizei, const GLchar* *, const GLint *);
-GLAPI void GLAPIENTRY glUseProgram (GLuint);
-GLAPI void GLAPIENTRY glUniform1f (GLint, GLfloat);
-GLAPI void GLAPIENTRY glUniform2f (GLint, GLfloat, GLfloat);
-GLAPI void GLAPIENTRY glUniform3f (GLint, GLfloat, GLfloat, GLfloat);
-GLAPI void GLAPIENTRY glUniform4f (GLint, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void GLAPIENTRY glUniform1i (GLint, GLint);
-GLAPI void GLAPIENTRY glUniform2i (GLint, GLint, GLint);
-GLAPI void GLAPIENTRY glUniform3i (GLint, GLint, GLint, GLint);
-GLAPI void GLAPIENTRY glUniform4i (GLint, GLint, GLint, GLint, GLint);
-GLAPI void GLAPIENTRY glUniform1fv (GLint, GLsizei, const GLfloat *);
-GLAPI void GLAPIENTRY glUniform2fv (GLint, GLsizei, const GLfloat *);
-GLAPI void GLAPIENTRY glUniform3fv (GLint, GLsizei, const GLfloat *);
-GLAPI void GLAPIENTRY glUniform4fv (GLint, GLsizei, const GLfloat *);
-GLAPI void GLAPIENTRY glUniform1iv (GLint, GLsizei, const GLint *);
-GLAPI void GLAPIENTRY glUniform2iv (GLint, GLsizei, const GLint *);
-GLAPI void GLAPIENTRY glUniform3iv (GLint, GLsizei, const GLint *);
-GLAPI void GLAPIENTRY glUniform4iv (GLint, GLsizei, const GLint *);
-GLAPI void GLAPIENTRY glUniformMatrix2fv (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void GLAPIENTRY glUniformMatrix3fv (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void GLAPIENTRY glUniformMatrix4fv (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void GLAPIENTRY glValidateProgram (GLuint);
-GLAPI void GLAPIENTRY glVertexAttrib1d (GLuint, GLdouble);
-GLAPI void GLAPIENTRY glVertexAttrib1dv (GLuint, const GLdouble *);
-GLAPI void GLAPIENTRY glVertexAttrib1f (GLuint, GLfloat);
-GLAPI void GLAPIENTRY glVertexAttrib1fv (GLuint, const GLfloat *);
-GLAPI void GLAPIENTRY glVertexAttrib1s (GLuint, GLshort);
-GLAPI void GLAPIENTRY glVertexAttrib1sv (GLuint, const GLshort *);
-GLAPI void GLAPIENTRY glVertexAttrib2d (GLuint, GLdouble, GLdouble);
-GLAPI void GLAPIENTRY glVertexAttrib2dv (GLuint, const GLdouble *);
-GLAPI void GLAPIENTRY glVertexAttrib2f (GLuint, GLfloat, GLfloat);
-GLAPI void GLAPIENTRY glVertexAttrib2fv (GLuint, const GLfloat *);
-GLAPI void GLAPIENTRY glVertexAttrib2s (GLuint, GLshort, GLshort);
-GLAPI void GLAPIENTRY glVertexAttrib2sv (GLuint, const GLshort *);
-GLAPI void GLAPIENTRY glVertexAttrib3d (GLuint, GLdouble, GLdouble, GLdouble);
-GLAPI void GLAPIENTRY glVertexAttrib3dv (GLuint, const GLdouble *);
-GLAPI void GLAPIENTRY glVertexAttrib3f (GLuint, GLfloat, GLfloat, GLfloat);
-GLAPI void GLAPIENTRY glVertexAttrib3fv (GLuint, const GLfloat *);
-GLAPI void GLAPIENTRY glVertexAttrib3s (GLuint, GLshort, GLshort, GLshort);
-GLAPI void GLAPIENTRY glVertexAttrib3sv (GLuint, const GLshort *);
-GLAPI void GLAPIENTRY glVertexAttrib4Nbv (GLuint, const GLbyte *);
-GLAPI void GLAPIENTRY glVertexAttrib4Niv (GLuint, const GLint *);
-GLAPI void GLAPIENTRY glVertexAttrib4Nsv (GLuint, const GLshort *);
-GLAPI void GLAPIENTRY glVertexAttrib4Nub (GLuint, GLubyte, GLubyte, GLubyte, GLubyte);
-GLAPI void GLAPIENTRY glVertexAttrib4Nubv (GLuint, const GLubyte *);
-GLAPI void GLAPIENTRY glVertexAttrib4Nuiv (GLuint, const GLuint *);
-GLAPI void GLAPIENTRY glVertexAttrib4Nusv (GLuint, const GLushort *);
-GLAPI void GLAPIENTRY glVertexAttrib4bv (GLuint, const GLbyte *);
-GLAPI void GLAPIENTRY glVertexAttrib4d (GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void GLAPIENTRY glVertexAttrib4dv (GLuint, const GLdouble *);
-GLAPI void GLAPIENTRY glVertexAttrib4f (GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void GLAPIENTRY glVertexAttrib4fv (GLuint, const GLfloat *);
-GLAPI void GLAPIENTRY glVertexAttrib4iv (GLuint, const GLint *);
-GLAPI void GLAPIENTRY glVertexAttrib4s (GLuint, GLshort, GLshort, GLshort, GLshort);
-GLAPI void GLAPIENTRY glVertexAttrib4sv (GLuint, const GLshort *);
-GLAPI void GLAPIENTRY glVertexAttrib4ubv (GLuint, const GLubyte *);
-GLAPI void GLAPIENTRY glVertexAttrib4uiv (GLuint, const GLuint *);
-GLAPI void GLAPIENTRY glVertexAttrib4usv (GLuint, const GLushort *);
-GLAPI void GLAPIENTRY glVertexAttribPointer (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glBlendEquationSeparate (GLenum, GLenum);
+GLAPI void APIENTRY glDrawBuffers (GLsizei, const GLenum *);
+GLAPI void APIENTRY glStencilOpSeparate (GLenum, GLenum, GLenum, GLenum);
+GLAPI void APIENTRY glStencilFuncSeparate (GLenum, GLenum, GLint, GLuint);
+GLAPI void APIENTRY glStencilMaskSeparate (GLenum, GLuint);
+GLAPI void APIENTRY glAttachShader (GLuint, GLuint);
+GLAPI void APIENTRY glBindAttribLocation (GLuint, GLuint, const GLchar *);
+GLAPI void APIENTRY glCompileShader (GLuint);
+GLAPI GLuint APIENTRY glCreateProgram (void);
+GLAPI GLuint APIENTRY glCreateShader (GLenum);
+GLAPI void APIENTRY glDeleteProgram (GLuint);
+GLAPI void APIENTRY glDeleteShader (GLuint);
+GLAPI void APIENTRY glDetachShader (GLuint, GLuint);
+GLAPI void APIENTRY glDisableVertexAttribArray (GLuint);
+GLAPI void APIENTRY glEnableVertexAttribArray (GLuint);
+GLAPI void APIENTRY glGetActiveAttrib (GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *);
+GLAPI void APIENTRY glGetActiveUniform (GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *);
+GLAPI void APIENTRY glGetAttachedShaders (GLuint, GLsizei, GLsizei *, GLuint *);
+GLAPI GLint APIENTRY glGetAttribLocation (GLuint, const GLchar *);
+GLAPI void APIENTRY glGetProgramiv (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetProgramInfoLog (GLuint, GLsizei, GLsizei *, GLchar *);
+GLAPI void APIENTRY glGetShaderiv (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetShaderInfoLog (GLuint, GLsizei, GLsizei *, GLchar *);
+GLAPI void APIENTRY glGetShaderSource (GLuint, GLsizei, GLsizei *, GLchar *);
+GLAPI GLint APIENTRY glGetUniformLocation (GLuint, const GLchar *);
+GLAPI void APIENTRY glGetUniformfv (GLuint, GLint, GLfloat *);
+GLAPI void APIENTRY glGetUniformiv (GLuint, GLint, GLint *);
+GLAPI void APIENTRY glGetVertexAttribdv (GLuint, GLenum, GLdouble *);
+GLAPI void APIENTRY glGetVertexAttribfv (GLuint, GLenum, GLfloat *);
+GLAPI void APIENTRY glGetVertexAttribiv (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetVertexAttribPointerv (GLuint, GLenum, GLvoid* *);
+GLAPI GLboolean APIENTRY glIsProgram (GLuint);
+GLAPI GLboolean APIENTRY glIsShader (GLuint);
+GLAPI void APIENTRY glLinkProgram (GLuint);
+GLAPI void APIENTRY glShaderSource (GLuint, GLsizei, const GLchar* *, const GLint *);
+GLAPI void APIENTRY glUseProgram (GLuint);
+GLAPI void APIENTRY glUniform1f (GLint, GLfloat);
+GLAPI void APIENTRY glUniform2f (GLint, GLfloat, GLfloat);
+GLAPI void APIENTRY glUniform3f (GLint, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glUniform4f (GLint, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glUniform1i (GLint, GLint);
+GLAPI void APIENTRY glUniform2i (GLint, GLint, GLint);
+GLAPI void APIENTRY glUniform3i (GLint, GLint, GLint, GLint);
+GLAPI void APIENTRY glUniform4i (GLint, GLint, GLint, GLint, GLint);
+GLAPI void APIENTRY glUniform1fv (GLint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glUniform2fv (GLint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glUniform3fv (GLint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glUniform4fv (GLint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glUniform1iv (GLint, GLsizei, const GLint *);
+GLAPI void APIENTRY glUniform2iv (GLint, GLsizei, const GLint *);
+GLAPI void APIENTRY glUniform3iv (GLint, GLsizei, const GLint *);
+GLAPI void APIENTRY glUniform4iv (GLint, GLsizei, const GLint *);
+GLAPI void APIENTRY glUniformMatrix2fv (GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glUniformMatrix3fv (GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glUniformMatrix4fv (GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glValidateProgram (GLuint);
+GLAPI void APIENTRY glVertexAttrib1d (GLuint, GLdouble);
+GLAPI void APIENTRY glVertexAttrib1dv (GLuint, const GLdouble *);
+GLAPI void APIENTRY glVertexAttrib1f (GLuint, GLfloat);
+GLAPI void APIENTRY glVertexAttrib1fv (GLuint, const GLfloat *);
+GLAPI void APIENTRY glVertexAttrib1s (GLuint, GLshort);
+GLAPI void APIENTRY glVertexAttrib1sv (GLuint, const GLshort *);
+GLAPI void APIENTRY glVertexAttrib2d (GLuint, GLdouble, GLdouble);
+GLAPI void APIENTRY glVertexAttrib2dv (GLuint, const GLdouble *);
+GLAPI void APIENTRY glVertexAttrib2f (GLuint, GLfloat, GLfloat);
+GLAPI void APIENTRY glVertexAttrib2fv (GLuint, const GLfloat *);
+GLAPI void APIENTRY glVertexAttrib2s (GLuint, GLshort, GLshort);
+GLAPI void APIENTRY glVertexAttrib2sv (GLuint, const GLshort *);
+GLAPI void APIENTRY glVertexAttrib3d (GLuint, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glVertexAttrib3dv (GLuint, const GLdouble *);
+GLAPI void APIENTRY glVertexAttrib3f (GLuint, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glVertexAttrib3fv (GLuint, const GLfloat *);
+GLAPI void APIENTRY glVertexAttrib3s (GLuint, GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glVertexAttrib3sv (GLuint, const GLshort *);
+GLAPI void APIENTRY glVertexAttrib4Nbv (GLuint, const GLbyte *);
+GLAPI void APIENTRY glVertexAttrib4Niv (GLuint, const GLint *);
+GLAPI void APIENTRY glVertexAttrib4Nsv (GLuint, const GLshort *);
+GLAPI void APIENTRY glVertexAttrib4Nub (GLuint, GLubyte, GLubyte, GLubyte, GLubyte);
+GLAPI void APIENTRY glVertexAttrib4Nubv (GLuint, const GLubyte *);
+GLAPI void APIENTRY glVertexAttrib4Nuiv (GLuint, const GLuint *);
+GLAPI void APIENTRY glVertexAttrib4Nusv (GLuint, const GLushort *);
+GLAPI void APIENTRY glVertexAttrib4bv (GLuint, const GLbyte *);
+GLAPI void APIENTRY glVertexAttrib4d (GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
+GLAPI void APIENTRY glVertexAttrib4dv (GLuint, const GLdouble *);
+GLAPI void APIENTRY glVertexAttrib4f (GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
+GLAPI void APIENTRY glVertexAttrib4fv (GLuint, const GLfloat *);
+GLAPI void APIENTRY glVertexAttrib4iv (GLuint, const GLint *);
+GLAPI void APIENTRY glVertexAttrib4s (GLuint, GLshort, GLshort, GLshort, GLshort);
+GLAPI void APIENTRY glVertexAttrib4sv (GLuint, const GLshort *);
+GLAPI void APIENTRY glVertexAttrib4ubv (GLuint, const GLubyte *);
+GLAPI void APIENTRY glVertexAttrib4uiv (GLuint, const GLuint *);
+GLAPI void APIENTRY glVertexAttrib4usv (GLuint, const GLushort *);
+GLAPI void APIENTRY glVertexAttribPointer (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *);
#endif /* GL3_PROTOTYPES */
-typedef void (GLAPIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);
-typedef void (GLAPIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs);
-typedef void (GLAPIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
-typedef void (GLAPIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
-typedef void (GLAPIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask);
-typedef void (GLAPIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
-typedef void (GLAPIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name);
-typedef void (GLAPIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader);
-typedef GLuint (GLAPIENTRYP PFNGLCREATEPROGRAMPROC) (void);
-typedef GLuint (GLAPIENTRYP PFNGLCREATESHADERPROC) (GLenum type);
-typedef void (GLAPIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program);
-typedef void (GLAPIENTRYP PFNGLDELETESHADERPROC) (GLuint shader);
-typedef void (GLAPIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);
-typedef void (GLAPIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index);
-typedef void (GLAPIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
-typedef void (GLAPIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
-typedef void (GLAPIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
-typedef void (GLAPIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj);
-typedef GLint (GLAPIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name);
-typedef void (GLAPIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params);
-typedef void (GLAPIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-typedef void (GLAPIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);
-typedef void (GLAPIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
-typedef void (GLAPIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
-typedef GLint (GLAPIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name);
-typedef void (GLAPIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params);
-typedef void (GLAPIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params);
-typedef void (GLAPIENTRYP PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params);
-typedef void (GLAPIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params);
-typedef void (GLAPIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params);
-typedef void (GLAPIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, GLvoid* *pointer);
-typedef GLboolean (GLAPIENTRYP PFNGLISPROGRAMPROC) (GLuint program);
-typedef GLboolean (GLAPIENTRYP PFNGLISSHADERPROC) (GLuint shader);
-typedef void (GLAPIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program);
-typedef void (GLAPIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar* *string, const GLint *length);
-typedef void (GLAPIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program);
-typedef void (GLAPIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0);
-typedef void (GLAPIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1);
-typedef void (GLAPIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-typedef void (GLAPIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-typedef void (GLAPIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0);
-typedef void (GLAPIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1);
-typedef void (GLAPIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2);
-typedef void (GLAPIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-typedef void (GLAPIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (GLAPIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (GLAPIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (GLAPIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value);
-typedef void (GLAPIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (GLAPIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (GLAPIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (GLAPIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value);
-typedef void (GLAPIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (GLAPIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (GLAPIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (GLAPIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);
+typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs);
+typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
+typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
+typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask);
+typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
+typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name);
+typedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader);
+typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC) (void);
+typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC) (GLenum type);
+typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program);
+typedef void (APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader);
+typedef void (APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);
+typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index);
+typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
+typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
+typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
+typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj);
+typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name);
+typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
+typedef void (APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
+typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
+typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name);
+typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, GLvoid* *pointer);
+typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC) (GLuint program);
+typedef GLboolean (APIENTRYP PFNGLISSHADERPROC) (GLuint shader);
+typedef void (APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program);
+typedef void (APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar* *string, const GLint *length);
+typedef void (APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program);
+typedef void (APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0);
+typedef void (APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1);
+typedef void (APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+typedef void (APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+typedef void (APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0);
+typedef void (APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1);
+typedef void (APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2);
+typedef void (APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+typedef void (APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
#endif
#ifndef GL_VERSION_2_1
#define GL_VERSION_2_1 1
#ifdef GL3_PROTOTYPES
-GLAPI void GLAPIENTRY glUniformMatrix2x3fv (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void GLAPIENTRY glUniformMatrix3x2fv (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void GLAPIENTRY glUniformMatrix2x4fv (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void GLAPIENTRY glUniformMatrix4x2fv (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void GLAPIENTRY glUniformMatrix3x4fv (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void GLAPIENTRY glUniformMatrix4x3fv (GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glUniformMatrix2x3fv (GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glUniformMatrix3x2fv (GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glUniformMatrix2x4fv (GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glUniformMatrix4x2fv (GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glUniformMatrix3x4fv (GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glUniformMatrix4x3fv (GLint, GLsizei, GLboolean, const GLfloat *);
#endif /* GL3_PROTOTYPES */
-typedef void (GLAPIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (GLAPIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (GLAPIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (GLAPIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (GLAPIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
-typedef void (GLAPIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
#endif
#ifndef GL_VERSION_3_0
@@ -1572,83 +1562,83 @@ typedef void (GLAPIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei
/* ARB_map_buffer_range */
/* ARB_vertex_array_object */
#ifdef GL3_PROTOTYPES
-GLAPI void GLAPIENTRY glColorMaski (GLuint, GLboolean, GLboolean, GLboolean, GLboolean);
-GLAPI void GLAPIENTRY glGetBooleani_v (GLenum, GLuint, GLboolean *);
-GLAPI void GLAPIENTRY glGetIntegeri_v (GLenum, GLuint, GLint *);
-GLAPI void GLAPIENTRY glEnablei (GLenum, GLuint);
-GLAPI void GLAPIENTRY glDisablei (GLenum, GLuint);
-GLAPI GLboolean GLAPIENTRY glIsEnabledi (GLenum, GLuint);
-GLAPI void GLAPIENTRY glBeginTransformFeedback (GLenum);
-GLAPI void GLAPIENTRY glEndTransformFeedback (void);
-GLAPI void GLAPIENTRY glBindBufferRange (GLenum, GLuint, GLuint, GLintptr, GLsizeiptr);
-GLAPI void GLAPIENTRY glBindBufferBase (GLenum, GLuint, GLuint);
-GLAPI void GLAPIENTRY glTransformFeedbackVaryings (GLuint, GLsizei, const GLchar* *, GLenum);
-GLAPI void GLAPIENTRY glGetTransformFeedbackVarying (GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *);
-GLAPI void GLAPIENTRY glClampColor (GLenum, GLenum);
-GLAPI void GLAPIENTRY glBeginConditionalRender (GLuint, GLenum);
-GLAPI void GLAPIENTRY glEndConditionalRender (void);
-GLAPI void GLAPIENTRY glVertexAttribIPointer (GLuint, GLint, GLenum, GLsizei, const GLvoid *);
-GLAPI void GLAPIENTRY glGetVertexAttribIiv (GLuint, GLenum, GLint *);
-GLAPI void GLAPIENTRY glGetVertexAttribIuiv (GLuint, GLenum, GLuint *);
-GLAPI void GLAPIENTRY glGetUniformuiv (GLuint, GLint, GLuint *);
-GLAPI void GLAPIENTRY glBindFragDataLocation (GLuint, GLuint, const GLchar *);
-GLAPI GLint GLAPIENTRY glGetFragDataLocation (GLuint, const GLchar *);
-GLAPI void GLAPIENTRY glUniform1ui (GLint, GLuint);
-GLAPI void GLAPIENTRY glUniform2ui (GLint, GLuint, GLuint);
-GLAPI void GLAPIENTRY glUniform3ui (GLint, GLuint, GLuint, GLuint);
-GLAPI void GLAPIENTRY glUniform4ui (GLint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void GLAPIENTRY glUniform1uiv (GLint, GLsizei, const GLuint *);
-GLAPI void GLAPIENTRY glUniform2uiv (GLint, GLsizei, const GLuint *);
-GLAPI void GLAPIENTRY glUniform3uiv (GLint, GLsizei, const GLuint *);
-GLAPI void GLAPIENTRY glUniform4uiv (GLint, GLsizei, const GLuint *);
-GLAPI void GLAPIENTRY glTexParameterIiv (GLenum, GLenum, const GLint *);
-GLAPI void GLAPIENTRY glTexParameterIuiv (GLenum, GLenum, const GLuint *);
-GLAPI void GLAPIENTRY glGetTexParameterIiv (GLenum, GLenum, GLint *);
-GLAPI void GLAPIENTRY glGetTexParameterIuiv (GLenum, GLenum, GLuint *);
-GLAPI void GLAPIENTRY glClearBufferiv (GLenum, GLint, const GLint *);
-GLAPI void GLAPIENTRY glClearBufferuiv (GLenum, GLint, const GLuint *);
-GLAPI void GLAPIENTRY glClearBufferfv (GLenum, GLint, const GLfloat *);
-GLAPI void GLAPIENTRY glClearBufferfi (GLenum, GLint, GLfloat, GLint);
-GLAPI const GLubyte * GLAPIENTRY glGetStringi (GLenum, GLuint);
+GLAPI void APIENTRY glColorMaski (GLuint, GLboolean, GLboolean, GLboolean, GLboolean);
+GLAPI void APIENTRY glGetBooleani_v (GLenum, GLuint, GLboolean *);
+GLAPI void APIENTRY glGetIntegeri_v (GLenum, GLuint, GLint *);
+GLAPI void APIENTRY glEnablei (GLenum, GLuint);
+GLAPI void APIENTRY glDisablei (GLenum, GLuint);
+GLAPI GLboolean APIENTRY glIsEnabledi (GLenum, GLuint);
+GLAPI void APIENTRY glBeginTransformFeedback (GLenum);
+GLAPI void APIENTRY glEndTransformFeedback (void);
+GLAPI void APIENTRY glBindBufferRange (GLenum, GLuint, GLuint, GLintptr, GLsizeiptr);
+GLAPI void APIENTRY glBindBufferBase (GLenum, GLuint, GLuint);
+GLAPI void APIENTRY glTransformFeedbackVaryings (GLuint, GLsizei, const GLchar* *, GLenum);
+GLAPI void APIENTRY glGetTransformFeedbackVarying (GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *);
+GLAPI void APIENTRY glClampColor (GLenum, GLenum);
+GLAPI void APIENTRY glBeginConditionalRender (GLuint, GLenum);
+GLAPI void APIENTRY glEndConditionalRender (void);
+GLAPI void APIENTRY glVertexAttribIPointer (GLuint, GLint, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glGetVertexAttribIiv (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetVertexAttribIuiv (GLuint, GLenum, GLuint *);
+GLAPI void APIENTRY glGetUniformuiv (GLuint, GLint, GLuint *);
+GLAPI void APIENTRY glBindFragDataLocation (GLuint, GLuint, const GLchar *);
+GLAPI GLint APIENTRY glGetFragDataLocation (GLuint, const GLchar *);
+GLAPI void APIENTRY glUniform1ui (GLint, GLuint);
+GLAPI void APIENTRY glUniform2ui (GLint, GLuint, GLuint);
+GLAPI void APIENTRY glUniform3ui (GLint, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glUniform4ui (GLint, GLuint, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glUniform1uiv (GLint, GLsizei, const GLuint *);
+GLAPI void APIENTRY glUniform2uiv (GLint, GLsizei, const GLuint *);
+GLAPI void APIENTRY glUniform3uiv (GLint, GLsizei, const GLuint *);
+GLAPI void APIENTRY glUniform4uiv (GLint, GLsizei, const GLuint *);
+GLAPI void APIENTRY glTexParameterIiv (GLenum, GLenum, const GLint *);
+GLAPI void APIENTRY glTexParameterIuiv (GLenum, GLenum, const GLuint *);
+GLAPI void APIENTRY glGetTexParameterIiv (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGetTexParameterIuiv (GLenum, GLenum, GLuint *);
+GLAPI void APIENTRY glClearBufferiv (GLenum, GLint, const GLint *);
+GLAPI void APIENTRY glClearBufferuiv (GLenum, GLint, const GLuint *);
+GLAPI void APIENTRY glClearBufferfv (GLenum, GLint, const GLfloat *);
+GLAPI void APIENTRY glClearBufferfi (GLenum, GLint, GLfloat, GLint);
+GLAPI const GLubyte * APIENTRY glGetStringi (GLenum, GLuint);
#endif /* GL3_PROTOTYPES */
-typedef void (GLAPIENTRYP PFNGLCOLORMASKIPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
-typedef void (GLAPIENTRYP PFNGLGETBOOLEANI_VPROC) (GLenum target, GLuint index, GLboolean *data);
-typedef void (GLAPIENTRYP PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint *data);
-typedef void (GLAPIENTRYP PFNGLENABLEIPROC) (GLenum target, GLuint index);
-typedef void (GLAPIENTRYP PFNGLDISABLEIPROC) (GLenum target, GLuint index);
-typedef GLboolean (GLAPIENTRYP PFNGLISENABLEDIPROC) (GLenum target, GLuint index);
-typedef void (GLAPIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum primitiveMode);
-typedef void (GLAPIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC) (void);
-typedef void (GLAPIENTRYP PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
-typedef void (GLAPIENTRYP PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer);
-typedef void (GLAPIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint program, GLsizei count, const GLchar* *varyings, GLenum bufferMode);
-typedef void (GLAPIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
-typedef void (GLAPIENTRYP PFNGLCLAMPCOLORPROC) (GLenum target, GLenum clamp);
-typedef void (GLAPIENTRYP PFNGLBEGINCONDITIONALRENDERPROC) (GLuint id, GLenum mode);
-typedef void (GLAPIENTRYP PFNGLENDCONDITIONALRENDERPROC) (void);
-typedef void (GLAPIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
-typedef void (GLAPIENTRYP PFNGLGETVERTEXATTRIBIIVPROC) (GLuint index, GLenum pname, GLint *params);
-typedef void (GLAPIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint index, GLenum pname, GLuint *params);
-typedef void (GLAPIENTRYP PFNGLGETUNIFORMUIVPROC) (GLuint program, GLint location, GLuint *params);
-typedef void (GLAPIENTRYP PFNGLBINDFRAGDATALOCATIONPROC) (GLuint program, GLuint color, const GLchar *name);
-typedef GLint (GLAPIENTRYP PFNGLGETFRAGDATALOCATIONPROC) (GLuint program, const GLchar *name);
-typedef void (GLAPIENTRYP PFNGLUNIFORM1UIPROC) (GLint location, GLuint v0);
-typedef void (GLAPIENTRYP PFNGLUNIFORM2UIPROC) (GLint location, GLuint v0, GLuint v1);
-typedef void (GLAPIENTRYP PFNGLUNIFORM3UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);
-typedef void (GLAPIENTRYP PFNGLUNIFORM4UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-typedef void (GLAPIENTRYP PFNGLUNIFORM1UIVPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (GLAPIENTRYP PFNGLUNIFORM2UIVPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (GLAPIENTRYP PFNGLUNIFORM3UIVPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (GLAPIENTRYP PFNGLUNIFORM4UIVPROC) (GLint location, GLsizei count, const GLuint *value);
-typedef void (GLAPIENTRYP PFNGLTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, const GLint *params);
-typedef void (GLAPIENTRYP PFNGLTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, const GLuint *params);
-typedef void (GLAPIENTRYP PFNGLGETTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef void (GLAPIENTRYP PFNGLGETTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, GLuint *params);
-typedef void (GLAPIENTRYP PFNGLCLEARBUFFERIVPROC) (GLenum buffer, GLint drawbuffer, const GLint *value);
-typedef void (GLAPIENTRYP PFNGLCLEARBUFFERUIVPROC) (GLenum buffer, GLint drawbuffer, const GLuint *value);
-typedef void (GLAPIENTRYP PFNGLCLEARBUFFERFVPROC) (GLenum buffer, GLint drawbuffer, const GLfloat *value);
-typedef void (GLAPIENTRYP PFNGLCLEARBUFFERFIPROC) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
-typedef const GLubyte * (GLAPIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint index);
+typedef void (APIENTRYP PFNGLCOLORMASKIPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
+typedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC) (GLenum target, GLuint index, GLboolean *data);
+typedef void (APIENTRYP PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint *data);
+typedef void (APIENTRYP PFNGLENABLEIPROC) (GLenum target, GLuint index);
+typedef void (APIENTRYP PFNGLDISABLEIPROC) (GLenum target, GLuint index);
+typedef GLboolean (APIENTRYP PFNGLISENABLEDIPROC) (GLenum target, GLuint index);
+typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum primitiveMode);
+typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC) (void);
+typedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer);
+typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint program, GLsizei count, const GLchar* *varyings, GLenum bufferMode);
+typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
+typedef void (APIENTRYP PFNGLCLAMPCOLORPROC) (GLenum target, GLenum clamp);
+typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC) (GLuint id, GLenum mode);
+typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERPROC) (void);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC) (GLuint index, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint index, GLenum pname, GLuint *params);
+typedef void (APIENTRYP PFNGLGETUNIFORMUIVPROC) (GLuint program, GLint location, GLuint *params);
+typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC) (GLuint program, GLuint color, const GLchar *name);
+typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONPROC) (GLuint program, const GLchar *name);
+typedef void (APIENTRYP PFNGLUNIFORM1UIPROC) (GLint location, GLuint v0);
+typedef void (APIENTRYP PFNGLUNIFORM2UIPROC) (GLint location, GLuint v0, GLuint v1);
+typedef void (APIENTRYP PFNGLUNIFORM3UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);
+typedef void (APIENTRYP PFNGLUNIFORM4UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+typedef void (APIENTRYP PFNGLUNIFORM1UIVPROC) (GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLUNIFORM2UIVPROC) (GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLUNIFORM3UIVPROC) (GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLUNIFORM4UIVPROC) (GLint location, GLsizei count, const GLuint *value);
+typedef void (APIENTRYP PFNGLTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, const GLuint *params);
+typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, GLuint *params);
+typedef void (APIENTRYP PFNGLCLEARBUFFERIVPROC) (GLenum buffer, GLint drawbuffer, const GLint *value);
+typedef void (APIENTRYP PFNGLCLEARBUFFERUIVPROC) (GLenum buffer, GLint drawbuffer, const GLuint *value);
+typedef void (APIENTRYP PFNGLCLEARBUFFERFVPROC) (GLenum buffer, GLint drawbuffer, const GLfloat *value);
+typedef void (APIENTRYP PFNGLCLEARBUFFERFIPROC) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
+typedef const GLubyte * (APIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint index);
#endif
#ifndef GL_VERSION_3_1
@@ -1657,115 +1647,119 @@ typedef const GLubyte * (GLAPIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint i
/* ARB_copy_buffer */
/* ARB_uniform_buffer_object */
#ifdef GL3_PROTOTYPES
-GLAPI void GLAPIENTRY glDrawArraysInstanced (GLenum, GLint, GLsizei, GLsizei);
-GLAPI void GLAPIENTRY glDrawElementsInstanced (GLenum, GLsizei, GLenum, const GLvoid *, GLsizei);
-GLAPI void GLAPIENTRY glTexBuffer (GLenum, GLenum, GLuint);
-GLAPI void GLAPIENTRY glPrimitiveRestartIndex (GLuint);
+GLAPI void APIENTRY glDrawArraysInstanced (GLenum, GLint, GLsizei, GLsizei);
+GLAPI void APIENTRY glDrawElementsInstanced (GLenum, GLsizei, GLenum, const GLvoid *, GLsizei);
+GLAPI void APIENTRY glTexBuffer (GLenum, GLenum, GLuint);
+GLAPI void APIENTRY glPrimitiveRestartIndex (GLuint);
#endif /* GL3_PROTOTYPES */
-typedef void (GLAPIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
-typedef void (GLAPIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
-typedef void (GLAPIENTRYP PFNGLTEXBUFFERPROC) (GLenum target, GLenum internalformat, GLuint buffer);
-typedef void (GLAPIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint index);
+typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
+typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
+typedef void (APIENTRYP PFNGLTEXBUFFERPROC) (GLenum target, GLenum internalformat, GLuint buffer);
+typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint index);
#endif
#ifndef GL_ARB_framebuffer_object
#define GL_ARB_framebuffer_object 1
#ifdef GL3_PROTOTYPES
-GLAPI GLboolean GLAPIENTRY glIsRenderbuffer (GLuint);
-GLAPI void GLAPIENTRY glBindRenderbuffer (GLenum, GLuint);
-GLAPI void GLAPIENTRY glDeleteRenderbuffers (GLsizei, const GLuint *);
-GLAPI void GLAPIENTRY glGenRenderbuffers (GLsizei, GLuint *);
-GLAPI void GLAPIENTRY glRenderbufferStorage (GLenum, GLenum, GLsizei, GLsizei);
-GLAPI void GLAPIENTRY glGetRenderbufferParameteriv (GLenum, GLenum, GLint *);
-GLAPI GLboolean GLAPIENTRY glIsFramebuffer (GLuint);
-GLAPI void GLAPIENTRY glBindFramebuffer (GLenum, GLuint);
-GLAPI void GLAPIENTRY glDeleteFramebuffers (GLsizei, const GLuint *);
-GLAPI void GLAPIENTRY glGenFramebuffers (GLsizei, GLuint *);
-GLAPI GLenum GLAPIENTRY glCheckFramebufferStatus (GLenum);
-GLAPI void GLAPIENTRY glFramebufferTexture1D (GLenum, GLenum, GLenum, GLuint, GLint);
-GLAPI void GLAPIENTRY glFramebufferTexture2D (GLenum, GLenum, GLenum, GLuint, GLint);
-GLAPI void GLAPIENTRY glFramebufferTexture3D (GLenum, GLenum, GLenum, GLuint, GLint, GLint);
-GLAPI void GLAPIENTRY glFramebufferRenderbuffer (GLenum, GLenum, GLenum, GLuint);
-GLAPI void GLAPIENTRY glGetFramebufferAttachmentParameteriv (GLenum, GLenum, GLenum, GLint *);
-GLAPI void GLAPIENTRY glGenerateMipmap (GLenum);
-GLAPI void GLAPIENTRY glBlitFramebuffer (GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum);
-GLAPI void GLAPIENTRY glRenderbufferStorageMultisample (GLenum, GLsizei, GLenum, GLsizei, GLsizei);
-GLAPI void GLAPIENTRY glFramebufferTextureLayer (GLenum, GLenum, GLuint, GLint, GLint);
+GLAPI GLboolean APIENTRY glIsRenderbuffer (GLuint);
+GLAPI void APIENTRY glBindRenderbuffer (GLenum, GLuint);
+GLAPI void APIENTRY glDeleteRenderbuffers (GLsizei, const GLuint *);
+GLAPI void APIENTRY glGenRenderbuffers (GLsizei, GLuint *);
+GLAPI void APIENTRY glRenderbufferStorage (GLenum, GLenum, GLsizei, GLsizei);
+GLAPI void APIENTRY glGetRenderbufferParameteriv (GLenum, GLenum, GLint *);
+GLAPI GLboolean APIENTRY glIsFramebuffer (GLuint);
+GLAPI void APIENTRY glBindFramebuffer (GLenum, GLuint);
+GLAPI void APIENTRY glDeleteFramebuffers (GLsizei, const GLuint *);
+GLAPI void APIENTRY glGenFramebuffers (GLsizei, GLuint *);
+GLAPI GLenum APIENTRY glCheckFramebufferStatus (GLenum);
+GLAPI void APIENTRY glFramebufferTexture1D (GLenum, GLenum, GLenum, GLuint, GLint);
+GLAPI void APIENTRY glFramebufferTexture2D (GLenum, GLenum, GLenum, GLuint, GLint);
+GLAPI void APIENTRY glFramebufferTexture3D (GLenum, GLenum, GLenum, GLuint, GLint, GLint);
+GLAPI void APIENTRY glFramebufferRenderbuffer (GLenum, GLenum, GLenum, GLuint);
+GLAPI void APIENTRY glGetFramebufferAttachmentParameteriv (GLenum, GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glGenerateMipmap (GLenum);
+GLAPI void APIENTRY glBlitFramebuffer (GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum);
+GLAPI void APIENTRY glRenderbufferStorageMultisample (GLenum, GLsizei, GLenum, GLsizei, GLsizei);
+GLAPI void APIENTRY glFramebufferTextureLayer (GLenum, GLenum, GLuint, GLint, GLint);
#endif /* GL3_PROTOTYPES */
-typedef GLboolean (GLAPIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer);
-typedef void (GLAPIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer);
-typedef void (GLAPIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers);
-typedef void (GLAPIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers);
-typedef void (GLAPIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (GLAPIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
-typedef GLboolean (GLAPIENTRYP PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer);
-typedef void (GLAPIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer);
-typedef void (GLAPIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers);
-typedef void (GLAPIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers);
-typedef GLenum (GLAPIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target);
-typedef void (GLAPIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-typedef void (GLAPIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-typedef void (GLAPIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-typedef void (GLAPIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-typedef void (GLAPIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params);
-typedef void (GLAPIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target);
-typedef void (GLAPIENTRYP PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-typedef void (GLAPIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (GLAPIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer);
+typedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer);
+typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers);
+typedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers);
+typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer);
+typedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer);
+typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers);
+typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers);
+typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target);
+typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
#endif
#ifndef GL_ARB_map_buffer_range
#define GL_ARB_map_buffer_range 1
#ifdef GL3_PROTOTYPES
-GLAPI GLvoid* GLAPIENTRY glMapBufferRange (GLenum, GLintptr, GLsizeiptr, GLbitfield);
-GLAPI void GLAPIENTRY glFlushMappedBufferRange (GLenum, GLintptr, GLsizeiptr);
+GLAPI GLvoid* APIENTRY glMapBufferRange (GLenum, GLintptr, GLsizeiptr, GLbitfield);
+GLAPI void APIENTRY glFlushMappedBufferRange (GLenum, GLintptr, GLsizeiptr);
#endif /* GL3_PROTOTYPES */
-typedef GLvoid* (GLAPIENTRYP PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
-typedef void (GLAPIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length);
+typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
+typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length);
#endif
#ifndef GL_ARB_vertex_array_object
#define GL_ARB_vertex_array_object 1
#ifdef GL3_PROTOTYPES
-GLAPI void GLAPIENTRY glBindVertexArray (GLuint);
-GLAPI void GLAPIENTRY glDeleteVertexArrays (GLsizei, const GLuint *);
-GLAPI void GLAPIENTRY glGenVertexArrays (GLsizei, GLuint *);
-GLAPI GLboolean GLAPIENTRY glIsVertexArray (GLuint);
+GLAPI void APIENTRY glBindVertexArray (GLuint);
+GLAPI void APIENTRY glDeleteVertexArrays (GLsizei, const GLuint *);
+GLAPI void APIENTRY glGenVertexArrays (GLsizei, GLuint *);
+GLAPI GLboolean APIENTRY glIsVertexArray (GLuint);
#endif /* GL3_PROTOTYPES */
-typedef void (GLAPIENTRYP PFNGLBINDVERTEXARRAYPROC) (GLuint array);
-typedef void (GLAPIENTRYP PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays);
-typedef void (GLAPIENTRYP PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays);
-typedef GLboolean (GLAPIENTRYP PFNGLISVERTEXARRAYPROC) (GLuint array);
+typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC) (GLuint array);
+typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays);
+typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays);
+typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC) (GLuint array);
#endif
#ifndef GL_ARB_uniform_buffer_object
#define GL_ARB_uniform_buffer_object 1
#ifdef GL3_PROTOTYPES
-GLAPI void GLAPIENTRY glGetUniformIndices (GLuint, GLsizei, const GLchar* *, GLuint *);
-GLAPI void GLAPIENTRY glGetActiveUniformsiv (GLuint, GLsizei, const GLuint *, GLenum, GLint *);
-GLAPI void GLAPIENTRY glGetActiveUniformName (GLuint, GLuint, GLsizei, GLsizei *, GLchar *);
-GLAPI GLuint GLAPIENTRY glGetUniformBlockIndex (GLuint, const GLchar *);
-GLAPI void GLAPIENTRY glGetActiveUniformBlockiv (GLuint, GLuint, GLenum, GLint *);
-GLAPI void GLAPIENTRY glGetActiveUniformBlockName (GLuint, GLuint, GLsizei, GLsizei *, GLchar *);
-GLAPI void GLAPIENTRY glUniformBlockBinding (GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glGetUniformIndices (GLuint, GLsizei, const GLchar* *, GLuint *);
+GLAPI void APIENTRY glGetActiveUniformsiv (GLuint, GLsizei, const GLuint *, GLenum, GLint *);
+GLAPI void APIENTRY glGetActiveUniformName (GLuint, GLuint, GLsizei, GLsizei *, GLchar *);
+GLAPI GLuint APIENTRY glGetUniformBlockIndex (GLuint, const GLchar *);
+GLAPI void APIENTRY glGetActiveUniformBlockiv (GLuint, GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glGetActiveUniformBlockName (GLuint, GLuint, GLsizei, GLsizei *, GLchar *);
+GLAPI void APIENTRY glUniformBlockBinding (GLuint, GLuint, GLuint);
#endif /* GL3_PROTOTYPES */
-typedef void (GLAPIENTRYP PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar* *uniformNames, GLuint *uniformIndices);
-typedef void (GLAPIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
-typedef void (GLAPIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);
-typedef GLuint (GLAPIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar *uniformBlockName);
-typedef void (GLAPIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
-typedef void (GLAPIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
-typedef void (GLAPIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
+typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar* *uniformNames, GLuint *uniformIndices);
+typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);
+typedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar *uniformBlockName);
+typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
+typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
#endif
#ifndef GL_ARB_copy_buffer
#define GL_ARB_copy_buffer 1
#ifdef GL3_PROTOTYPES
-GLAPI void GLAPIENTRY glCopyBufferSubData (GLenum, GLenum, GLintptr, GLintptr, GLsizeiptr);
+GLAPI void APIENTRY glCopyBufferSubData (GLenum, GLenum, GLintptr, GLintptr, GLsizeiptr);
#endif /* GL3_PROTOTYPES */
-typedef void (GLAPIENTRYP PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
#endif
+/* Include Post-GL 3.1 changes and extensions */
+#include <GL3/gl3ext.h>
+
+
#ifdef __cplusplus
}
diff --git a/make/stub_includes/opengl/GL3/gl3ext.h b/make/stub_includes/opengl/GL3/gl3ext.h
index 2042a3acd..7d391921f 100644
--- a/make/stub_includes/opengl/GL3/gl3ext.h
+++ b/make/stub_includes/opengl/GL3/gl3ext.h
@@ -1,6 +1,354 @@
#ifndef __gl3ext_h_
#define __gl3ext_h_
+#include "gl3-64bit-types.h"
+
+/*
+ * ------------------------------------------------
+ * Everything here and below was added manually
+ * to the version of glext.h obtained from:
+ * http://oss.sgi.com/projects/ogl-sample/registry/index.html
+ * ------------------------------------------------
+ *
+ * Structure is:
+ * #ifndef GL_EXTENSION_NAME
+ * Add DEFINES here
+ * #endif
+ * #ifndef GL_EXTENSION_NAME
+ * Add TYPEDEFS here
+ * #endif
+ * #ifndef GL_EXTENSION_NAME
+ * #define GL_EXTENSION_NAME 1
+ * #ifdef GL_GL3EXT_PROTOTYPES
+ * Add FUNCTION DECLARATIONS here
+ * #endif
+ * FUNCTION POINTER DECLARATIONS NOT NEEDED
+ * #endif
+ */
+
+#ifndef GL_VERSION_3_2
+#define GL_VERSION_3_2 1
+/* OpenGL 3.2 also reuses entry points from these extensions: */
+/* ARB_vertex_array_bgra */
+/* ARB_draw_elements_base_vertex */
+/* ARB_fragment_coord_conventions */
+/* ARB_provoking_vertex */
+/* ARB_seamless_cube_map */
+/* ARB_texture_multisample */
+/* ARB_depth_clamp */
+/* ARB_geometry_shader4 */
+/* ARB_sync */
+#ifdef GL_GL3EXT_PROTOTYPES
+#endif /* GL3_PROTOTYPES */
+#endif
+
+/**
+ * http://www.opengl.org/registry/specs/ARB/vertex_array_bgra.txt
+ */
+#ifndef GL_ARB_vertex_array_bgra
+#define GL_BGRA 0x80E1
+#endif
+#ifndef GL_ARB_vertex_array_bgra
+#define GL_ARB_vertex_array_bgra 1
+#ifdef GL_GL3EXT_PROTOTYPES
+/* No FUNCTIONS */
+#endif
+/* No need for explicit function pointer: we force generation of ProcAddress .. */
+#endif
+
+/**
+ * http://www.opengl.org/registry/specs/ARB/draw_elements_base_vertex.txt
+ */
+#ifndef GL_ARB_draw_elements_base_vertex
+/* No TOKENS */
+#endif
+#ifndef GL_ARB_draw_elements_base_vertex
+#define GL_ARB_draw_elements_base_vertex 1
+#ifdef GL_GL3EXT_PROTOTYPES
+GLAPI void APIENTRY glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type,
+ GLvoid *indices, GLint basevertex);
+GLAPI void APIENTRY glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end,
+ GLsizei count, GLenum type, GLvoid *indices, GLint basevertex);
+GLAPI void APIENTRY glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count,
+ GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex);
+GLAPI void APIENTRY glMultiDrawElementsBaseVertex(GLenum mode, GLsizei *count, GLenum type,
+ GLvoid **indices, GLsizei primcount, GLint *basevertex);
+#endif
+/* No need for explicit function pointer: we force generation of ProcAddress .. */
+#endif
+
+/**
+ * http://www.opengl.org/registry/specs/ARB/fragment_coord_conventions.txt
+ */
+#ifndef GL_ARB_fragment_coord_conventions
+/* No Tokens */
+#endif
+#ifndef GL_ARB_fragment_coord_conventions
+#define GL_ARB_fragment_coord_conventions 1
+#ifdef GL_GL3EXT_PROTOTYPES
+/* No Functions */
+#endif
+/* No need for explicit function pointer: we force generation of ProcAddress .. */
+#endif
+
+/**
+ * http://www.opengl.org/registry/specs/ARB/provoking_vertex.txt
+ */
+#ifndef GL_ARB_provoking_vertex
+#define GL_FIRST_VERTEX_CONVENTION 0x8E4D
+#define GL_LAST_VERTEX_CONVENTION 0x8E4E
+#define GL_PROVOKING_VERTEX 0x8E4F
+#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C
+#endif
+#ifndef GL_ARB_provoking_vertex
+#define GL_ARB_provoking_vertex 1
+#ifdef GL_GL3EXT_PROTOTYPES
+GLAPI void APIENTRY glProvokingVertex(GLenum mode);
+#endif
+/* No need for explicit function pointer: we force generation of ProcAddress .. */
+#endif
+
+/**
+ * http://www.opengl.org/registry/specs/ARB/seamless_cube_map.txt
+ */
+#ifndef GL_ARB_seamless_cube_map
+#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F
+#endif
+#ifndef GL_ARB_seamless_cube_map
+#define GL_ARB_seamless_cube_map 1
+#ifdef GL_GL3EXT_PROTOTYPES
+/* No Functions */
+#endif
+/* No need for explicit function pointer: we force generation of ProcAddress .. */
+#endif
+
+/**
+ * http://www.opengl.org/registry/specs/ARB/texture_multisample.txt
+ */
+#ifndef GL_ARB_texture_multisample
+#define GL_SAMPLE_POSITION 0x8E50
+#define GL_SAMPLE_MASK 0x8E51
+#define GL_SAMPLE_MASK_VALUE 0x8E52
+#define GL_TEXTURE_2D_MULTISAMPLE 0x9100
+#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101
+#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102
+#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103
+#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59
+#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E
+#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F
+#define GL_MAX_INTEGER_SAMPLES 0x9110
+#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104
+#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105
+#define GL_TEXTURE_SAMPLES 0x9106
+#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107
+#define GL_SAMPLER_2D_MULTISAMPLE 0x9108
+#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109
+#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A
+#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B
+#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C
+#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D
+#endif
+#ifndef GL_ARB_texture_multisample
+#define GL_ARB_texture_multisample 1
+#ifdef GL_GL3EXT_PROTOTYPES
+GLAPI void APIENTRY glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat,
+ GLsizei width, GLsizei height,
+ GLboolean fixedsamplelocations);
+GLAPI void APIENTRY glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat,
+ GLsizei width, GLsizei height, GLsizei depth,
+ GLboolean fixedsamplelocations);
+GLAPI void APIENTRY glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val);
+GLAPI void APIENTRY glSampleMaski(GLuint index, GLbitfield mask);
+#endif
+/* No need for explicit function pointer: we force generation of ProcAddress .. */
+#endif
+
+/**
+ * http://www.opengl.org/registry/specs/ARB/depth_clamp.txt
+ */
+#ifndef GL_ARB_depth_clamp
+#define GL_DEPTH_CLAMP 0x864F
+#endif
+#ifndef GL_ARB_depth_clamp
+#define GL_ARB_depth_clamp 1
+#ifdef GL_GL3EXT_PROTOTYPES
+/* No FUNCTIONS */
+#endif
+/* No need for explicit function pointer: we force generation of ProcAddress .. */
+#endif
+
+/**
+ * http://www.opengl.org/registry/specs/ARB/geometry_shader4.txt
+ */
+#ifndef GL_ARB_geometry_shader4
+#define GL_LINES_ADJACENCY_ARB 0x000A
+#define GL_LINE_STRIP_ADJACENCY_ARB 0x000B
+#define GL_TRIANGLES_ADJACENCY_ARB 0x000C
+#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0x000D
+#define GL_PROGRAM_POINT_SIZE_ARB 0x8642
+#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29
+#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8
+#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9
+#define GL_GEOMETRY_SHADER_ARB 0x8DD9
+#define GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA
+#define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB
+#define GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC
+#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD
+#define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE
+#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF
+#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0
+#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1
+/* reuse GL_MAX_VARYING_COMPONENTS */
+/* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */
+#endif
+#ifndef GL_ARB_geometry_shader4
+#define GL_ARB_geometry_shader4 1
+#ifdef GL_GL3EXT_PROTOTYPES
+GLAPI void APIENTRY glProgramParameteriARB (GLuint, GLenum, GLint);
+GLAPI void APIENTRY glFramebufferTextureARB (GLenum, GLenum, GLuint, GLint);
+GLAPI void APIENTRY glFramebufferTextureLayerARB (GLenum, GLenum, GLuint, GLint, GLint);
+GLAPI void APIENTRY glFramebufferTextureFaceARB (GLenum, GLenum, GLuint, GLint, GLenum);
+#endif
+/* No need for explicit function pointer: we force generation of ProcAddress .. */
+#endif
+
+/**
+ * http://www.opengl.org/registry/specs/ARB/sync.txt
+ */
+#ifndef GL_ARB_sync
+#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111
+#define GL_OBJECT_TYPE 0x9112
+#define GL_SYNC_CONDITION 0x9113
+#define GL_SYNC_STATUS 0x9114
+#define GL_SYNC_FLAGS 0x9115
+#define GL_SYNC_FENCE 0x9116
+#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117
+#define GL_UNSIGNALED 0x9118
+#define GL_SIGNALED 0x9119
+#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001
+/* Manual: #define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFul */
+#define GL_ALREADY_SIGNALED 0x911A
+#define GL_TIMEOUT_EXPIRED 0x911B
+#define GL_CONDITION_SATISFIED 0x911C
+#define GL_WAIT_FAILED 0x911D
+#endif
+#ifndef GL_ARB_sync
+typedef int64_t GLint64;
+typedef uint64_t GLuint64;
+typedef struct __GLsync *GLsync;
+#endif
+#ifndef GL_ARB_sync
+#define GL_ARB_sync 1
+#ifdef GL_GL3EXT_PROTOTYPES
+GLAPI GLsync APIENTRY glFenceSync(GLenum condition, GLbitfield flags);
+GLAPI GLboolean APIENTRY glIsSync(GLsync sync);
+GLAPI void APIENTRY glDeleteSync(GLsync sync);
+GLAPI GLenum APIENTRY glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout);
+GLAPI void APIENTRY glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout);
+GLAPI void APIENTRY glGetInteger64v(GLenum pname, GLint64 *params);
+GLAPI void APIENTRY glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
+#endif
+/* No need for explicit function pointer: we force generation of ProcAddress .. */
+#endif
+
+/**
+ * Convenient names only .. actually subsumed into core
+ */
+#ifndef GL_ARB_texture_rectangle
+#define GL_TEXTURE_RECTANGLE_ARB 0x84F5
+#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6
+#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7
+#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8
+#endif
+
+#ifndef GL_ARB_texture_rectangle
+#define GL_ARB_texture_rectangle 1
+#endif
+
+/**
+ * http://www.opengl.org/registry/specs/AMD/vertex_shader_tessellator.txt
+ */
+#ifndef GL_AMD_vertex_shader_tessellator
+#define GL_SAMPLER_BUFFER_AMD 0x9001
+#define GL_INT_SAMPLER_BUFFER_AMD 0x9002
+#define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003
+#define GL_DISCRETE_AMD 0x9006
+#define GL_CONTINUOUS_AMD 0x9007
+#define GL_TESSELLATION_MODE_AMD 0x9004
+#define GL_TESSELLATION_FACTOR_AMD 0x9005
+#endif
+#ifndef GL_AMD_vertex_shader_tessellator
+#define GL_AMD_vertex_shader_tessellator 1
+#ifdef GL_GL3EXT_PROTOTYPES
+GLAPI void APIENTRY glTessellationFactorAMD(GLfloat factor);
+GLAPI void APIENTRY glTessellationModeAMD(GLenum mode);
+#endif
+typedef void (APIENTRYP PFNGLTESSELLATIONFACTORAMDPROC) (GLfloat factor);
+typedef void (APIENTRYP PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode);
+#endif
+
+#ifndef GL_APPLE_float_pixels
+#define GL_HALF_APPLE 0x140B
+#define GL_COLOR_FLOAT_APPLE 0x8A0F
+#define GL_RGBA_FLOAT32_APPLE 0x8814
+#define GL_RGB_FLOAT32_APPLE 0x8815
+#define GL_ALPHA_FLOAT32_APPLE 0x8816
+#define GL_INTENSITY_FLOAT32_APPLE 0x8817
+#define GL_LUMINANCE_FLOAT32_APPLE 0x8818
+#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819
+#define GL_RGBA_FLOAT16_APPLE 0x881A
+#define GL_RGB_FLOAT16_APPLE 0x881B
+#define GL_ALPHA_FLOAT16_APPLE 0x881C
+#define GL_INTENSITY_FLOAT16_APPLE 0x881D
+#define GL_LUMINANCE_FLOAT16_APPLE 0x881E
+#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F
+#endif
+
+#ifndef GL_APPLE_float_pixels
+#define GL_APPLE_float_pixels 1
+#endif
+
+#ifndef GL_ATI_texture_float
+#define GL_RGBA_FLOAT32_ATI 0x8814
+#define GL_RGB_FLOAT32_ATI 0x8815
+#define GL_ALPHA_FLOAT32_ATI 0x8816
+#define GL_INTENSITY_FLOAT32_ATI 0x8817
+#define GL_LUMINANCE_FLOAT32_ATI 0x8818
+#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819
+#define GL_RGBA_FLOAT16_ATI 0x881A
+#define GL_RGB_FLOAT16_ATI 0x881B
+#define GL_ALPHA_FLOAT16_ATI 0x881C
+#define GL_INTENSITY_FLOAT16_ATI 0x881D
+#define GL_LUMINANCE_FLOAT16_ATI 0x881E
+#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F
+#endif
+
+#ifndef GL_ATI_texture_float
+#define GL_ATI_texture_float 1
+#endif
+
+#ifndef GL_NV_float_buffer
+#define GL_FLOAT_R_NV 0x8880
+#define GL_FLOAT_RG_NV 0x8881
+#define GL_FLOAT_RGB_NV 0x8882
+#define GL_FLOAT_RGBA_NV 0x8883
+#define GL_FLOAT_R16_NV 0x8884
+#define GL_FLOAT_R32_NV 0x8885
+#define GL_FLOAT_RG16_NV 0x8886
+#define GL_FLOAT_RG32_NV 0x8887
+#define GL_FLOAT_RGB16_NV 0x8888
+#define GL_FLOAT_RGB32_NV 0x8889
+#define GL_FLOAT_RGBA16_NV 0x888A
+#define GL_FLOAT_RGBA32_NV 0x888B
+#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C
+#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D
+#define GL_FLOAT_RGBA_MODE_NV 0x888E
+#endif
+
+#ifndef GL_NV_float_buffer
+#define GL_NV_float_buffer 1
#endif
+#endif /* __gl3ext_h_ */
diff --git a/make/stub_includes/opengl/GLES/gl.h b/make/stub_includes/opengl/GLES/gl.h
index da71230b5..41afe2239 100755
--- a/make/stub_includes/opengl/GLES/gl.h
+++ b/make/stub_includes/opengl/GLES/gl.h
@@ -71,6 +71,8 @@ typedef int GLsizeiptr;
#define GL_VERSION_ES_CM_1_1 1
#define GL_VERSION_ES_CL_1_1 1
+#ifndef GL_VERSION_ES_1_0
+
/* ClearBufferMask */
#define GL_DEPTH_BUFFER_BIT 0x00000100
#define GL_STENCIL_BUFFER_BIT 0x00000400
@@ -576,6 +578,8 @@ typedef int GLsizeiptr;
#define GL_DOT3_RGB 0x86AE
#define GL_DOT3_RGBA 0x86AF
+#endif /* GL_VERSION_ES_1_0 */
+
/*------------------------------------------------------------------------*
* required OES extension tokens
*------------------------------------------------------------------------*/
@@ -617,6 +621,8 @@ typedef int GLsizeiptr;
/*************************************************************/
+#ifndef GL_VERSION_ES_CM
+#define GL_VERSION_ES_CM 1
/* Available only in Common profile */
GL_API void GL_APIENTRY glAlphaFunc (GLenum func, GLclampf ref);
GL_API void GL_APIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
@@ -658,7 +664,10 @@ GL_API void GL_APIENTRY glTexEnvfv (GLenum target, GLenum pname, const GLfloat *
GL_API void GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param);
GL_API void GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params);
GL_API void GL_APIENTRY glTranslatef (GLfloat x, GLfloat y, GLfloat z);
+#endif /* GL_VERSION_ES_CM */
+#ifndef GL_VERSION_ES_CL_CM
+#define GL_VERSION_ES_CL 1
/* Available in both Common and Common-Lite profiles */
GL_API void GL_APIENTRY glActiveTexture (GLenum texture);
GL_API void GL_APIENTRY glAlphaFuncx (GLenum func, GLclampx ref);
@@ -768,6 +777,7 @@ GL_API void GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffs
GL_API void GL_APIENTRY glTranslatex (GLfixed x, GLfixed y, GLfixed z);
GL_API void GL_APIENTRY glVertexPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
GL_API void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
+#endif /* GL_VERSION_ES_CL */
/*------------------------------------------------------------------------*
* Required OES extension functions
diff --git a/make/stub_includes/opengl/GLES/glext.h b/make/stub_includes/opengl/GLES/glext.h
index ee6ebae20..f9e181dd0 100755
--- a/make/stub_includes/opengl/GLES/glext.h
+++ b/make/stub_includes/opengl/GLES/glext.h
@@ -244,7 +244,6 @@ typedef void* GLeglImageOES;
#define GL_3DC_XY_AMD 0x87FA
#endif
-/* GL_AMD_compressed_ATC_texture */
#ifndef GL_AMD_compressed_ATC_texture
#define GL_ATC_RGB_AMD 0x8C92
#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93
@@ -634,7 +633,6 @@ typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum
#define GL_AMD_compressed_3DC_texture 1
#endif
-/* GL_AMD_compressed_ATC_texture */
#ifndef GL_AMD_compressed_ATC_texture
#define GL_AMD_compressed_ATC_texture 1
#endif
diff --git a/make/stub_includes/opengl/GLES2/gl2.h b/make/stub_includes/opengl/GLES2/gl2.h
index 9c68b1e7a..44338000e 100755
--- a/make/stub_includes/opengl/GLES2/gl2.h
+++ b/make/stub_includes/opengl/GLES2/gl2.h
@@ -99,8 +99,7 @@ typedef int GLclampx;
typedef int GLintptr;
typedef int GLsizeiptr;
-/* OpenGL ES core versions */
-#define GL_ES_VERSION_2_0 1
+#ifndef GL_ES_VERSION_2_0
/* ClearBufferMask */
#define GL_DEPTH_BUFFER_BIT 0x00000100
@@ -532,10 +531,14 @@ typedef int GLsizeiptr;
#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506
+#endif /* GL_ES_VERSION_2_0 */
+
/*-------------------------------------------------------------------------
* GL core functions.
*-----------------------------------------------------------------------*/
+#ifndef GL_ES_VERSION_2_0
+#define GL_ES_VERSION_2_0 1
GL_APICALL void GL_APIENTRY glActiveTexture (GLenum texture);
GL_APICALL void GL_APIENTRY glAttachShader (GLuint program, GLuint shader);
GL_APICALL void GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const char* name);
@@ -678,6 +681,7 @@ GL_APICALL void GL_APIENTRY glVertexAttrib4f (GLuint indx, GLfloat x, GL
GL_APICALL void GL_APIENTRY glVertexAttrib4fv (GLuint indx, const GLfloat* values);
GL_APICALL void GL_APIENTRY glVertexAttribPointer (GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* ptr);
GL_APICALL void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
+#endif /* GL_ES_VERSION_2_0 */
#ifdef __cplusplus
}
diff --git a/make/stub_includes/opengl/GLES2/gl2ext.h b/make/stub_includes/opengl/GLES2/gl2ext.h
index 8580e2bdf..e3bbede8a 100755
--- a/make/stub_includes/opengl/GLES2/gl2ext.h
+++ b/make/stub_includes/opengl/GLES2/gl2ext.h
@@ -61,9 +61,7 @@ extern "C" {
#define GL_NVIDIA_PLATFORM_BINARY_NV 0x890B
-#define GL_OES_EGL_image 1
-
-#ifdef GL_OES_EGL_image
+#ifndef GL_OES_EGL_image
/** sgothel: wrong defines and/or numbers:
*
#define GL_TEXTURE_2D_OES 0x1
@@ -76,12 +74,17 @@ extern "C" {
#define GL_RENDERBUFFER_OES 0x9
#define GL_TEXTURE_RECTANGLE_NV_OES 0xb
*/
+#endif /* GL_OES_EGL_image */
+#ifndef GL_OES_EGL_image
typedef void *GLeglImageOES;
+#endif /* GL_OES_EGL_image */
+
+#ifndef GL_OES_EGL_image
+#define GL_OES_EGL_image 1
GL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image);
#ifdef GL_GLEXT_PROTOTYPES
typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image);
-
#endif
#endif
diff --git a/make/stub_includes/opengl/gl2es12.c b/make/stub_includes/opengl/gl2es12.c
index 75cb4acfc..bc9d24ace 100644
--- a/make/stub_includes/opengl/gl2es12.c
+++ b/make/stub_includes/opengl/gl2es12.c
@@ -6,8 +6,3 @@
#include <GL/gl.h>
-// removed due to renaming and the fact that the renamed version is not included
-// in the super interfaces ..
-GLAPI void APIENTRY glWeightPointer (GLint, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glMatrixIndexPointer (GLint, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCurrentPaletteMatrix (GLint);
diff --git a/make/stub_includes/opengl/gl3-64bit-types.h b/make/stub_includes/opengl/gl3-64bit-types.h
new file mode 100644
index 000000000..fc8b4ce05
--- /dev/null
+++ b/make/stub_includes/opengl/gl3-64bit-types.h
@@ -0,0 +1,41 @@
+#ifndef __gl3_64bit_types_h_
+#define __gl3_64bit_types_h_
+
+#ifndef GL3_64_TYPES_DEFINED
+ /* This code block is duplicated in glext.h, so must be protected */
+ #define GL3_64_TYPES_DEFINED
+ /* Define int32_t, int64_t, and uint64_t types for UST/MSC */
+ /* (as used in the GL_EXT_timer_query extension). */
+ #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+ #include <inttypes.h>
+ #elif defined(__sun__)
+ #include <inttypes.h>
+ #if defined(__STDC__)
+ #if defined(__arch64__)
+ typedef long int int64_t;
+ typedef unsigned long int uint64_t;
+ #else
+ typedef long long int int64_t;
+ typedef unsigned long long int uint64_t;
+ #endif /* __arch64__ */
+ #endif /* __STDC__ */
+ #elif defined( __VMS )
+ #include <inttypes.h>
+ #elif defined(__SCO__) || defined(__USLC__)
+ #include <stdint.h>
+ #elif defined(__UNIXOS2__) || defined(__SOL64__)
+ typedef long int int32_t;
+ typedef long long int int64_t;
+ typedef unsigned long long int uint64_t;
+ #elif defined(WIN32) && defined(__GNUC__)
+ #include <stdint.h>
+ #elif defined(_WIN32)
+ typedef __int32 int32_t;
+ typedef __int64 int64_t;
+ typedef unsigned __int64 uint64_t;
+ #else
+ #include <inttypes.h> /* Fallback option */
+ #endif
+#endif
+
+#endif /* __gl3_64bit_types_h_ */
diff --git a/make/stub_includes/opengl/gl3.c b/make/stub_includes/opengl/gl3.c
index 3326c58ad..5e9d87ccd 100644
--- a/make/stub_includes/opengl/gl3.c
+++ b/make/stub_includes/opengl/gl3.c
@@ -4,4 +4,8 @@
// "gl3.h" are parsed.
#define GL3_PROTOTYPES
+// Define GL_GL3EXT_PROTOTYPES so that the OpenGL extension prototypes in
+// "gl3ext.h" are parsed.
+#define GL_GL3EXT_PROTOTYPES
+
#include <GL3/gl3.h>
diff --git a/make/stub_includes/opengl/glu-impl.c b/make/stub_includes/opengl/glu-impl.c
deleted file mode 100644
index 2328639d8..000000000
--- a/make/stub_includes/opengl/glu-impl.c
+++ /dev/null
@@ -1,3 +0,0 @@
-#include <GL/glu.h>
-
-
diff --git a/make/stub_includes/win32/wingdi.h b/make/stub_includes/win32/wingdi.h
index 4d980755b..46aeec2b6 100644
--- a/make/stub_includes/win32/wingdi.h
+++ b/make/stub_includes/win32/wingdi.h
@@ -6,6 +6,8 @@
*
*/
+#ifndef WGL_GDI_VERSION_1_X
+
typedef struct tagRGBQUAD {
BYTE rgbBlue;
BYTE rgbGreen;
@@ -163,6 +165,11 @@ typedef struct tagPIXELFORMATDESCRIPTOR
#define SW_FORCEMINIMIZE 11
#define SW_MAX 11
+#endif /* WGL_GDI_VERSION_1_X */
+
+#ifndef WGL_GDI_VERSION_1_X
+#define WGL_GDI_VERSION_1_X
+
// Windows routines
WINBASEAPI DWORD WINAPI GetLastError(VOID);
WINBASEAPI HMODULE WINAPI LoadLibraryA(LPCSTR lpLibFileName);
@@ -214,3 +221,5 @@ WINUSERAPI BOOL WINAPI DestroyWindow(HWND hWnd);
// Routines for changing gamma ramp of display device
WINGDIAPI BOOL WINAPI GetDeviceGammaRamp(HDC,LPVOID);
WINGDIAPI BOOL WINAPI SetDeviceGammaRamp(HDC,LPVOID);
+
+#endif /* WGL_GDI_VERSION_1_X */
diff --git a/src/jogl/classes/com/sun/opengl/impl/ExtensionAvailabilityCache.java b/src/jogl/classes/com/sun/opengl/impl/ExtensionAvailabilityCache.java
index eee308088..26072519e 100644
--- a/src/jogl/classes/com/sun/opengl/impl/ExtensionAvailabilityCache.java
+++ b/src/jogl/classes/com/sun/opengl/impl/ExtensionAvailabilityCache.java
@@ -65,7 +65,25 @@ public final class ExtensionAvailabilityCache {
*/
public void flush()
{
+ if(DEBUG) {
+ System.out.println("ExtensionAvailabilityCache: Flush availability OpenGL "+majorVersion+"."+minorVersion);
+ }
availableExtensionCache.clear();
+ initialized = false;
+ majorVersion = 1;
+ minorVersion = 0;
+ }
+
+ /**
+ * Flush the cache and rebuild the cache.
+ */
+ public void reset() {
+ flush();
+ initAvailableExtensions();
+ }
+
+ public boolean isInitialized() {
+ return initialized && !availableExtensionCache.isEmpty() ;
}
public boolean isExtensionAvailable(String glExtensionName) {
@@ -73,19 +91,101 @@ public final class ExtensionAvailabilityCache {
return availableExtensionCache.contains(mapGLExtensionName(glExtensionName));
}
- protected void initAvailableExtensions() {
+ public String getPlatformExtensionsString() {
+ initAvailableExtensions();
+ return glXExtensions;
+ }
+
+ public String getGLExtensions() {
+ initAvailableExtensions();
+ if(DEBUG) {
+ System.err.println("ExtensionAvailabilityCache: getGLExtensions() called");
+ }
+ return glExtensions;
+ }
+
+ public int getMajorVersion() {
+ initAvailableExtensions();
+ return majorVersion;
+ }
+
+ public int getMinorVersion() {
+ initAvailableExtensions();
+ return minorVersion;
+ }
+
+ private void initAvailableExtensions() {
// if hash is empty (meaning it was flushed), pre-cache it with the list
// of extensions that are in the GL_EXTENSIONS string
- if (availableExtensionCache.isEmpty()) {
+ if (availableExtensionCache.isEmpty() || !initialized) {
GL gl = context.getGL();
+
if (DEBUG) {
- System.err.println("!!! Pre-caching extension availability");
+ System.err.println("ExtensionAvailabilityCache: Pre-caching init "+gl+", GL_VERSION "+gl.glGetString(GL.GL_VERSION));
}
- String allAvailableExtensions =
- gl.glGetString(GL.GL_EXTENSIONS) + " " + context.getPlatformExtensionsString();
+
+ // Set version
+ Version version = new Version(gl.glGetString(GL.GL_VERSION));
+ if (version.isValid()) {
+ majorVersion = version.getMajor();
+ minorVersion = version.getMinor();
+
+ if( !gl.isGL3() &&
+ ( majorVersion > 3 ||
+ ( majorVersion == 3 && minorVersion >= 1 ) ) ) {
+ // downsize version to 3.0 in case we are not using GL3 (3.1)
+ majorVersion = 3;
+ minorVersion = 0;
+ }
+ }
+
+ boolean useGetStringi = false;
+
+ if ( majorVersion > 3 ||
+ ( majorVersion == 3 && minorVersion >= 0 ) ||
+ gl.isGL3() ) {
+ if ( ! gl.isGL2GL3() ) {
+ if(DEBUG) {
+ System.err.println("ExtensionAvailabilityCache: GL >= 3.1 usage, but no GL2GL3 interface: "+gl.getClass().getName());
+ }
+ } else if ( ! gl.isFunctionAvailable("glGetStringi") ) {
+ if(DEBUG) {
+ System.err.println("ExtensionAvailabilityCache: GL >= 3.1 usage, but no glGetStringi");
+ }
+ } else {
+ useGetStringi = true;
+ }
+ }
+
if (DEBUG) {
- System.err.println("!!! Available extensions: " + allAvailableExtensions);
- System.err.println("!!! GL vendor: " + gl.glGetString(GL.GL_VENDOR));
+ System.err.println("ExtensionAvailabilityCache: Pre-caching extension availability OpenGL "+majorVersion+"."+minorVersion+
+ ", use "+ ( useGetStringi ? "glGetStringi" : "glGetString" ) );
+ }
+
+ StringBuffer sb = new StringBuffer();
+ if(useGetStringi) {
+ GL2GL3 gl2gl3 = gl.getGL2GL3();
+ int[] numExtensions = { 0 } ;
+ gl2gl3.glGetIntegerv(gl2gl3.GL_NUM_EXTENSIONS, numExtensions, 0);
+ for (int i = 0; i < numExtensions[0]; i++) {
+ sb.append(gl2gl3.glGetStringi(gl2gl3.GL_EXTENSIONS, i));
+ if(i < numExtensions[0]) {
+ sb.append(" ");
+ }
+ }
+ } else {
+ sb.append(gl.glGetString(GL.GL_EXTENSIONS));
+ }
+ glExtensions = sb.toString();
+ glXExtensions = context.getPlatformExtensionsString();
+
+ sb.append(" ");
+ sb.append(glXExtensions);
+
+ String allAvailableExtensions = sb.toString();
+ if (DEBUG_AVAILABILITY) {
+ System.err.println("ExtensionAvailabilityCache: Available extensions: " + allAvailableExtensions);
+ System.err.println("ExtensionAvailabilityCache: GL vendor: " + gl.glGetString(GL.GL_VENDOR));
}
StringTokenizer tok = new StringTokenizer(allAvailableExtensions);
while (tok.hasMoreTokens()) {
@@ -93,42 +193,50 @@ public final class ExtensionAvailabilityCache {
availableExt = availableExt.intern();
availableExtensionCache.add(availableExt);
if (DEBUG_AVAILABILITY) {
- System.err.println("!!! Available: " + availableExt);
+ System.err.println("ExtensionAvailabilityCache: Available: " + availableExt);
}
}
// Put GL version strings in the table as well
- Version version = new Version(gl.glGetString(GL.GL_VERSION));
- if (version.isValid()) {
- int major = version.getMajor();
- int minor = version.getMinor();
- // FIXME: this needs to be adjusted when the major rev changes
- // beyond the known ones
- while (major > 0) {
- while (minor >= 0) {
- availableExtensionCache.add("GL_VERSION_" + major + "_" + minor);
- if (DEBUG) {
- System.err.println("!!! Added GL_VERSION_" + major + "_" + minor + " to known extensions");
- }
- --minor;
+ // FIXME: this needs to be adjusted when the major rev changes
+ // beyond the known ones
+ int major = majorVersion;
+ int minor = minorVersion;
+ while (major > 0) {
+ while (minor >= 0) {
+ availableExtensionCache.add("GL_VERSION_" + major + "_" + minor);
+ if (DEBUG) {
+ System.err.println("ExtensionAvailabilityCache: Added GL_VERSION_" + major + "_" + minor + " to known extensions");
}
+ --minor;
+ }
- switch (major) {
- case 2:
- // Restart loop at version 1.5
- minor = 5;
- break;
- case 1:
- break;
+ switch (major) {
+ case 3:
+ if(gl.isGL3()) {
+ // GL3 is a GL 3.1 forward compatible context,
+ // hence no 2.0, 1.0 - 1.5 GL versions are supported.
+ major=0;
}
-
- --major;
+ // Restart loop at version 2.1
+ minor = 1;
+ break;
+ case 2:
+ // Restart loop at version 1.5
+ minor = 5;
+ break;
+ case 1:
+ break;
}
+
+ --major;
}
// put a dummy var in here so that the cache is no longer empty even if
// no extensions are in the GL_EXTENSIONS string
availableExtensionCache.add("<INTERNAL_DUMMY_PLACEHOLDER>");
+
+ initialized = true;
}
}
@@ -146,6 +254,11 @@ public final class ExtensionAvailabilityCache {
// Internals only below this point
//
+ private boolean initialized = false;
+ private int majorVersion = 1;
+ private int minorVersion = 0;
+ private String glExtensions = null;
+ private String glXExtensions = null;
private HashSet availableExtensionCache = new HashSet(50);
private GLContextImpl context;
@@ -236,7 +349,7 @@ public final class ExtensionAvailabilityCache {
{
// FIXME: refactor desktop OpenGL dependencies and make this
// class work properly for OpenGL ES
- System.err.println("FunctionAvailabilityCache.Version.<init>: "+e);
+ System.err.println("ExtensionAvailabilityCache: FunctionAvailabilityCache.Version.<init>: "+e);
major = 1;
minor = 0;
/*
diff --git a/src/jogl/classes/com/sun/opengl/impl/GLContextImpl.java b/src/jogl/classes/com/sun/opengl/impl/GLContextImpl.java
index c60cccec6..16eb934bd 100644
--- a/src/jogl/classes/com/sun/opengl/impl/GLContextImpl.java
+++ b/src/jogl/classes/com/sun/opengl/impl/GLContextImpl.java
@@ -228,7 +228,7 @@ public abstract class GLContextImpl extends GLContext {
return gl;
}
- public void setGL(GL gl) {
+ public GL setGL(GL gl) {
if(DEBUG) {
String sgl1 = (null!=this.gl)?this.gl.getClass().toString()+", "+this.gl.toString():new String("<null>");
String sgl2 = (null!=gl)?gl.getClass().toString()+", "+gl.toString():new String("<null>");
@@ -236,6 +236,7 @@ public abstract class GLContextImpl extends GLContext {
e.printStackTrace();
}
this.gl = gl;
+ return gl;
}
public abstract Object getPlatformGLExtensions();
@@ -284,11 +285,23 @@ public abstract class GLContextImpl extends GLContext {
public abstract ByteBuffer glAllocateMemoryNV(int arg0, float arg1, float arg2, float arg3);
- /*
- * Sets the swap interval for onscreen OpenGL contexts. Has no
- * effect for offscreen contexts.
- */
public void setSwapInterval(final int interval) {
+ GLContext current = getCurrent();
+ if (current != this) {
+ throw new GLException("This context is not current. Current context: "+current+
+ ", this context "+this);
+ }
+ setSwapIntervalImpl(interval);
+ }
+
+ protected int currentSwapInterval = -1; // default: not set yet ..
+
+ public int getSwapInterval() {
+ return currentSwapInterval;
+ }
+
+ protected void setSwapIntervalImpl(final int interval) {
+ // nop per default ..
}
/** Maps the given "platform-independent" function name to a real function
@@ -342,7 +355,6 @@ public abstract class GLContextImpl extends GLContext {
if(null==this.gl) {
throw new GLException("setGLFunctionAvailability not called yet");
}
- extensionAvailability.flush();
if (DEBUG) {
System.err.println(getThreadName() + ": !!! Initializing OpenGL extension address table for " + this);
}
@@ -352,6 +364,8 @@ public abstract class GLContextImpl extends GLContext {
// share them among contexts with the same capabilities
}
resetProcAddressTable(getGLProcAddressTable());
+
+ extensionAvailability.reset();
}
/**
@@ -414,6 +428,26 @@ public abstract class GLContextImpl extends GLContext {
return extensionAvailability.isExtensionAvailable(mapToRealGLExtensionName(glExtensionName));
}
+ public String getPlatformExtensionsString() {
+ return extensionAvailability.getPlatformExtensionsString();
+ }
+
+ public String getGLExtensions() {
+ return extensionAvailability.getGLExtensions();
+ }
+
+ public int getMajorVersion() {
+ return extensionAvailability.getMajorVersion();
+ }
+
+ public int getMinorVersion() {
+ return extensionAvailability.getMinorVersion();
+ }
+
+ public boolean isExtensionCacheInitialized() {
+ return extensionAvailability.isInitialized();
+ }
+
/** Indicates which floating-point pbuffer implementation is in
use. Returns one of GLPbuffer.APPLE_FLOAT, GLPbuffer.ATI_FLOAT,
or GLPbuffer.NV_FLOAT. */
diff --git a/src/jogl/classes/com/sun/opengl/impl/GLDrawableFactoryImpl.java b/src/jogl/classes/com/sun/opengl/impl/GLDrawableFactoryImpl.java
index de911950a..0d540647a 100644
--- a/src/jogl/classes/com/sun/opengl/impl/GLDrawableFactoryImpl.java
+++ b/src/jogl/classes/com/sun/opengl/impl/GLDrawableFactoryImpl.java
@@ -69,7 +69,7 @@ public abstract class GLDrawableFactoryImpl extends GLDrawableFactory {
/**
* Returns the sole GLDrawableFactoryImpl instance.
*
- * @arg glProfile GLProfile to determine the factory type, ie EGLDrawableFactory,
+ * @param glProfile GLProfile to determine the factory type, ie EGLDrawableFactory,
* or one of the native GLDrawableFactory's, ie X11/GLX, Windows/WGL or MacOSX/CGL.
*/
public static GLDrawableFactoryImpl getFactoryImpl(GLProfile glp) {
diff --git a/src/jogl/classes/com/sun/opengl/impl/GLDrawableImpl.java b/src/jogl/classes/com/sun/opengl/impl/GLDrawableImpl.java
index c381f68f5..81fc0b78b 100644
--- a/src/jogl/classes/com/sun/opengl/impl/GLDrawableImpl.java
+++ b/src/jogl/classes/com/sun/opengl/impl/GLDrawableImpl.java
@@ -71,8 +71,17 @@ public abstract class GLDrawableImpl implements GLDrawable {
}
public void swapBuffers() throws GLException {
+ GLCapabilities caps = (GLCapabilities)component.getGraphicsConfiguration().getNativeGraphicsConfiguration().getChosenCapabilities();
+ if (caps.getDoubleBuffered()) {
+ if(!component.surfaceSwap()) {
+ swapBuffersImpl();
+ }
+ }
+ component.surfaceUpdated();
}
+ protected abstract void swapBuffersImpl();
+
public static String toHexString(long hex) {
return GLContextImpl.toHexString(hex);
}
@@ -131,10 +140,10 @@ public abstract class GLDrawableImpl implements GLDrawable {
public String toString() {
return getClass().getName()+"[realized "+getRealized()+
- ",\n\trequested "+getRequestedGLCapabilities()+
- ",\n\tchosen "+getChosenGLCapabilities()+
+ ",\n\tfactory "+getFactory()+
",\n\twindow "+getNativeWindow()+
- ",\n\tfactory "+getFactory()+"]";
+ ",\n\trequested "+getRequestedGLCapabilities()+
+ ",\n\tchosen "+getChosenGLCapabilities()+"]";
}
protected GLDrawableFactory factory;
diff --git a/src/jogl/classes/com/sun/opengl/impl/GLPbufferImpl.java b/src/jogl/classes/com/sun/opengl/impl/GLPbufferImpl.java
index e414fbc8e..8aba26fc6 100644
--- a/src/jogl/classes/com/sun/opengl/impl/GLPbufferImpl.java
+++ b/src/jogl/classes/com/sun/opengl/impl/GLPbufferImpl.java
@@ -129,8 +129,8 @@ public class GLPbufferImpl implements GLPbuffer {
return getContext().getGL();
}
- public void setGL(GL gl) {
- getContext().setGL(gl);
+ public GL setGL(GL gl) {
+ return getContext().setGL(gl);
}
public void setAutoSwapBufferMode(boolean onOrOff) {
diff --git a/src/jogl/classes/com/sun/opengl/impl/egl/EGLContext.java b/src/jogl/classes/com/sun/opengl/impl/egl/EGLContext.java
index 653bddb9d..cc4dafa4c 100755
--- a/src/jogl/classes/com/sun/opengl/impl/egl/EGLContext.java
+++ b/src/jogl/classes/com/sun/opengl/impl/egl/EGLContext.java
@@ -168,8 +168,15 @@ public abstract class EGLContext extends GLContextImpl {
throw new GLException("Error: attempted to create an OpenGL context without a graphics configuration");
}
- if(!EGL.eglBindAPI(EGL.EGL_OPENGL_ES_API)) {
- throw new GLException("eglBindAPI to ES failed , error 0x"+Integer.toHexString(EGL.eglGetError()));
+ try {
+ // might be unavailable on EGL < 1.2
+ if(!EGL.eglBindAPI(EGL.EGL_OPENGL_ES_API)) {
+ throw new GLException("eglBindAPI to ES failed , error 0x"+Integer.toHexString(EGL.eglGetError()));
+ }
+ } catch (GLException glex) {
+ if (DEBUG) {
+ glex.printStackTrace();
+ }
}
EGLContext other = (EGLContext) GLContextShareSet.getShareContext(this);
@@ -218,7 +225,6 @@ public abstract class EGLContext extends GLContextImpl {
}
protected void updateGLProcAddressTable() {
- super.updateGLProcAddressTable();
if (DEBUG) {
System.err.println(getThreadName() + ": !!! Initializing EGL extension address table");
}
@@ -228,6 +234,7 @@ public abstract class EGLContext extends GLContextImpl {
eglExtProcAddressTable = new EGLExtProcAddressTable();
}
resetProcAddressTable(getEGLExtProcAddressTable());
+ super.updateGLProcAddressTable();
}
public synchronized String getPlatformExtensionsString() {
@@ -254,6 +261,12 @@ public abstract class EGLContext extends GLContextImpl {
}
}
+ protected void setSwapIntervalImpl(int interval) {
+ if (EGL.eglSwapInterval(drawable.getDisplay(), interval)) {
+ currentSwapInterval = interval ;
+ }
+ }
+
public abstract void bindPbufferToTexture();
public abstract void releasePbufferFromTexture();
diff --git a/src/jogl/classes/com/sun/opengl/impl/egl/EGLDrawable.java b/src/jogl/classes/com/sun/opengl/impl/egl/EGLDrawable.java
index d2907c83d..aabc6f263 100755
--- a/src/jogl/classes/com/sun/opengl/impl/egl/EGLDrawable.java
+++ b/src/jogl/classes/com/sun/opengl/impl/egl/EGLDrawable.java
@@ -45,10 +45,10 @@ import javax.media.opengl.*;
public abstract class EGLDrawable extends GLDrawableImpl {
protected boolean ownEGLDisplay = false;
+ protected boolean ownEGLSurface = false;
private EGLGraphicsConfiguration eglConfig;
protected long eglDisplay;
protected long eglSurface;
- private int[] tmp = new int[1];
protected EGLDrawable(EGLDrawableFactory factory,
NativeWindow component) throws GLException {
@@ -78,13 +78,16 @@ public abstract class EGLDrawable extends GLDrawableImpl {
protected abstract long createSurface(long eglDpy, _EGLConfig eglNativeCfg);
private void recreateSurface() {
- if(EGL.EGL_NO_SURFACE!=eglSurface) {
- EGL.eglDestroySurface(eglDisplay, eglSurface);
- }
- eglSurface = createSurface(eglDisplay, eglConfig.getNativeConfig());
+ if(ownEGLSurface) {
+ // create a new EGLSurface ..
+ if(EGL.EGL_NO_SURFACE!=eglSurface) {
+ EGL.eglDestroySurface(eglDisplay, eglSurface);
+ }
+ eglSurface = createSurface(eglDisplay, eglConfig.getNativeConfig());
- if(DEBUG) {
- System.err.println("setSurface using component: handle 0x"+Long.toHexString(component.getWindowHandle())+" -> 0x"+Long.toHexString(eglSurface));
+ if(DEBUG) {
+ System.err.println("setSurface using component: handle 0x"+Long.toHexString(component.getWindowHandle())+" -> 0x"+Long.toHexString(eglSurface));
+ }
}
}
@@ -110,13 +113,28 @@ public abstract class EGLDrawable extends GLDrawableImpl {
if (null == eglConfig) {
throw new GLException("Null EGLGraphicsConfiguration from "+aConfig);
}
- eglConfig.updateGraphicsConfiguration();
+ int[] tmp = new int[1];
+ if (EGL.eglQuerySurface(eglDisplay, component.getWindowHandle(), EGL.EGL_CONFIG_ID, tmp, 0)) {
+ // component holds static EGLSurface
+ eglSurface = component.getWindowHandle();
+ if(DEBUG) {
+ System.err.println("setSurface re-using component's EGLSurface: handle 0x"+Long.toHexString(eglSurface));
+ }
+ } else {
+ // EGLSurface is ours ..
+ ownEGLSurface=true;
+
+ eglConfig.updateGraphicsConfiguration();
+ }
} else {
throw new GLException("EGLGraphicsConfiguration doesn't carry a EGLGraphicsDevice: "+aConfig);
}
} else {
// create a new EGL config ..
ownEGLDisplay=true;
+ // EGLSurface is ours ..
+ ownEGLSurface=true;
+
long nDisplay;
if( NativeWindowFactory.TYPE_WINDOWS.equals(NativeWindowFactory.getNativeWindowType(false)) ) {
nDisplay = component.getSurfaceHandle(); // don't even ask ..
@@ -153,7 +171,7 @@ public abstract class EGLDrawable extends GLDrawableImpl {
} finally {
unlockSurface();
}
- } else if (eglSurface != EGL.EGL_NO_SURFACE) {
+ } else if (ownEGLSurface && eglSurface != EGL.EGL_NO_SURFACE) {
// Destroy the window surface
if (!EGL.eglDestroySurface(eglDisplay, eglSurface)) {
throw new GLException("Error destroying window surface (eglDestroySurface)");
@@ -168,6 +186,7 @@ public abstract class EGLDrawable extends GLDrawableImpl {
}
public int getWidth() {
+ int[] tmp = new int[1];
if (!EGL.eglQuerySurface(eglDisplay, eglSurface, EGL.EGL_WIDTH, tmp, 0)) {
throw new GLException("Error querying surface width");
}
@@ -175,6 +194,7 @@ public abstract class EGLDrawable extends GLDrawableImpl {
}
public int getHeight() {
+ int[] tmp = new int[1];
if (!EGL.eglQuerySurface(eglDisplay, eglSurface, EGL.EGL_HEIGHT, tmp, 0)) {
throw new GLException("Error querying surface height");
}
diff --git a/src/jogl/classes/com/sun/opengl/impl/egl/EGLDrawableFactory.java b/src/jogl/classes/com/sun/opengl/impl/egl/EGLDrawableFactory.java
index 396580c1d..7af45d683 100755
--- a/src/jogl/classes/com/sun/opengl/impl/egl/EGLDrawableFactory.java
+++ b/src/jogl/classes/com/sun/opengl/impl/egl/EGLDrawableFactory.java
@@ -50,7 +50,7 @@ public class EGLDrawableFactory extends GLDrawableFactoryImpl {
new EGLGraphicsConfigurationFactory();
// Check for other underlying stuff ..
- if(NativeWindowFactory.TYPE_X11.equals(NativeWindowFactory.getNativeWindowType(false))) {
+ if(NativeWindowFactory.TYPE_X11.equals(NativeWindowFactory.getNativeWindowType(true))) {
try {
NWReflection.createInstance("com.sun.opengl.impl.x11.glx.X11GLXGraphicsConfigurationFactory");
} catch (Throwable t) {}
diff --git a/src/jogl/classes/com/sun/opengl/impl/egl/EGLDynamicLookupHelper.java b/src/jogl/classes/com/sun/opengl/impl/egl/EGLDynamicLookupHelper.java
index 8bed0eb35..02aed9788 100755
--- a/src/jogl/classes/com/sun/opengl/impl/egl/EGLDynamicLookupHelper.java
+++ b/src/jogl/classes/com/sun/opengl/impl/egl/EGLDynamicLookupHelper.java
@@ -42,6 +42,7 @@ import com.sun.opengl.impl.*;
import com.sun.nativewindow.impl.*;
import com.sun.gluegen.runtime.NativeLibrary;
import com.sun.gluegen.runtime.DynamicLookupHelper;
+import java.security.*;
/**
* Abstract implementation of the DynamicLookupHelper for EGL,
@@ -51,12 +52,16 @@ import com.sun.gluegen.runtime.DynamicLookupHelper;
*/
public abstract class EGLDynamicLookupHelper implements DynamicLookupHelper {
protected static final boolean DEBUG = com.sun.opengl.impl.Debug.debug("EGL");
+ protected static final boolean DEBUG_LOOKUP;
private static final EGLDynamicLookupHelper eglES1DynamicLookupHelper;
private static final EGLDynamicLookupHelper eglES2DynamicLookupHelper;
private List/*<NativeLibrary>*/ glesLibraries;
static {
+ AccessControlContext localACC=AccessController.getContext();
+ DEBUG_LOOKUP = com.sun.opengl.impl.Debug.isPropertyDefined("jogl.debug.DynamicLookup", true, localACC);
+
EGLDynamicLookupHelper tmp=null;
try {
tmp = new EGLES1DynamicLookupHelper();
@@ -190,7 +195,7 @@ public abstract class EGLDynamicLookupHelper implements DynamicLookupHelper {
addr = dynamicLookupFunctionOnLibsImpl(funcName);
}
}
- if(DEBUG) {
+ if(DEBUG_LOOKUP) {
if(0!=addr) {
System.err.println("Lookup-Native: "+glFuncName+" / "+funcName+" 0x"+Long.toHexString(addr));
} else {
@@ -236,7 +241,7 @@ public abstract class EGLDynamicLookupHelper implements DynamicLookupHelper {
}
long addr = EGL.eglGetProcAddress(eglGetProcAddressHandle, glFuncName);
- if(DEBUG) {
+ if(DEBUG_LOOKUP) {
if(0!=addr) {
System.err.println("Lookup-EGL: <"+glFuncName+"> 0x"+Long.toHexString(addr));
}
diff --git a/src/jogl/classes/com/sun/opengl/impl/egl/EGLGraphicsConfiguration.java b/src/jogl/classes/com/sun/opengl/impl/egl/EGLGraphicsConfiguration.java
index 4f04bb57a..574c3c8cf 100644
--- a/src/jogl/classes/com/sun/opengl/impl/egl/EGLGraphicsConfiguration.java
+++ b/src/jogl/classes/com/sun/opengl/impl/egl/EGLGraphicsConfiguration.java
@@ -37,6 +37,7 @@ package com.sun.opengl.impl.egl;
import java.util.*;
import javax.media.nativewindow.*;
+import javax.media.nativewindow.egl.*;
import javax.media.opengl.*;
import com.sun.opengl.impl.*;
import com.sun.gluegen.runtime.NativeLibrary;
@@ -52,15 +53,30 @@ public class EGLGraphicsConfiguration extends DefaultGraphicsConfiguration imple
return configID;
}
- public EGLGraphicsConfiguration(AbstractGraphicsScreen screen,
+ public EGLGraphicsConfiguration(AbstractGraphicsScreen absScreen,
GLCapabilities capsChosen, GLCapabilities capsRequested, GLCapabilitiesChooser chooser,
_EGLConfig cfg, int cfgID) {
- super(screen, capsChosen, capsRequested);
+ super(absScreen, capsChosen, capsRequested);
this.chooser = chooser;
_config = cfg;
configID = cfgID;
}
+ public static EGLGraphicsConfiguration create(GLCapabilities capsRequested, AbstractGraphicsScreen absScreen, int cfgID) {
+ AbstractGraphicsDevice absDevice = absScreen.getDevice();
+ if(null==absDevice || !(absDevice instanceof EGLGraphicsDevice)) {
+ throw new GLException("GraphicsDevice must be a valid EGLGraphicsDevice");
+ }
+ long dpy = absDevice.getHandle();
+ if (dpy == EGL.EGL_NO_DISPLAY) {
+ throw new GLException("Invalid EGL display: "+absDevice);
+ }
+ GLProfile glp = capsRequested.getGLProfile();
+ _EGLConfig _cfg = EGLConfigId2EGLConfig(glp, dpy, cfgID);
+ GLCapabilities caps = EGLConfig2Capabilities(glp, dpy, _cfg);
+ return new EGLGraphicsConfiguration(absScreen, caps, capsRequested, new DefaultGLCapabilitiesChooser(), _cfg, cfgID);
+ }
+
public Object clone() {
return super.clone();
}
diff --git a/src/jogl/classes/com/sun/opengl/impl/egl/EGLOnscreenDrawable.java b/src/jogl/classes/com/sun/opengl/impl/egl/EGLOnscreenDrawable.java
index c7c2bcab2..36117f059 100644
--- a/src/jogl/classes/com/sun/opengl/impl/egl/EGLOnscreenDrawable.java
+++ b/src/jogl/classes/com/sun/opengl/impl/egl/EGLOnscreenDrawable.java
@@ -64,7 +64,7 @@ public class EGLOnscreenDrawable extends EGLDrawable {
return surf;
}
- public void swapBuffers() throws GLException {
+ protected void swapBuffersImpl() {
boolean didLock = false;
try {
if ( !isSurfaceLocked() ) {
diff --git a/src/jogl/classes/com/sun/opengl/impl/egl/EGLPbufferDrawable.java b/src/jogl/classes/com/sun/opengl/impl/egl/EGLPbufferDrawable.java
index bcf3294c1..a792762a4 100644
--- a/src/jogl/classes/com/sun/opengl/impl/egl/EGLPbufferDrawable.java
+++ b/src/jogl/classes/com/sun/opengl/impl/egl/EGLPbufferDrawable.java
@@ -118,5 +118,6 @@ public class EGLPbufferDrawable extends EGLDrawable {
return new EGLPbufferContext(this, shareWith);
}
+ protected void swapBuffersImpl() { }
}
diff --git a/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXCGLContext.java b/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXCGLContext.java
index b424e9516..181efc8bb 100644
--- a/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXCGLContext.java
+++ b/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXCGLContext.java
@@ -320,7 +320,6 @@ public abstract class MacOSXCGLContext extends GLContextImpl
}
protected void updateGLProcAddressTable() {
- super.updateGLProcAddressTable();
if (DEBUG) {
System.err.println("!!! Initializing CGL extension address table");
}
@@ -330,6 +329,7 @@ public abstract class MacOSXCGLContext extends GLContextImpl
cglExtProcAddressTable = new CGLExtProcAddressTable();
}
resetProcAddressTable(getCGLExtProcAddressTable());
+ super.updateGLProcAddressTable();
}
public String getPlatformExtensionsString()
@@ -337,11 +337,12 @@ public abstract class MacOSXCGLContext extends GLContextImpl
return "";
}
- public void setSwapInterval(int interval) {
+ protected void setSwapIntervalImpl(int interval) {
if (nsContext == 0) {
throw new GLException("OpenGL context not current");
}
CGL.setSwapInterval(nsContext, interval);
+ currentSwapInterval = interval ;
}
public ByteBuffer glAllocateMemoryNV(int arg0, float arg1, float arg2, float arg3) {
diff --git a/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXOnscreenCGLContext.java b/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXOnscreenCGLContext.java
index f87cc150b..4a3e0a8eb 100644
--- a/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXOnscreenCGLContext.java
+++ b/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXOnscreenCGLContext.java
@@ -102,7 +102,7 @@ public class MacOSXOnscreenCGLContext extends MacOSXCGLContext {
}
}
- public void swapBuffers() throws GLException {
+ protected void swapBuffers() {
if (!CGL.flushBuffer(nsContext)) {
throw new GLException("Error swapping buffers");
}
diff --git a/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXOnscreenCGLDrawable.java b/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXOnscreenCGLDrawable.java
index 98687b5ef..56951ae10 100644
--- a/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXOnscreenCGLDrawable.java
+++ b/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXOnscreenCGLDrawable.java
@@ -78,7 +78,7 @@ public class MacOSXOnscreenCGLDrawable extends MacOSXCGLDrawable {
return component.getHeight();
}
- public void swapBuffers() throws GLException {
+ protected void swapBuffersImpl() {
for (Iterator iter = createdContexts.iterator(); iter.hasNext(); ) {
WeakReference ref = (WeakReference) iter.next();
MacOSXOnscreenCGLContext ctx = (MacOSXOnscreenCGLContext) ref.get();
diff --git a/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXPbufferCGLContext.java b/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXPbufferCGLContext.java
index d702150d3..0754c4b57 100644
--- a/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXPbufferCGLContext.java
+++ b/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXPbufferCGLContext.java
@@ -86,7 +86,7 @@ public class MacOSXPbufferCGLContext extends MacOSXCGLContext {
rect = false;
}
}
- textureTarget = (rect ? GL2.GL_TEXTURE_RECTANGLE_EXT: GL.GL_TEXTURE_2D);
+ textureTarget = (rect ? GL2.GL_TEXTURE_RECTANGLE : GL.GL_TEXTURE_2D);
int[] tmp = new int[1];
gl.glGenTextures(1, tmp, 0);
texture = tmp[0];
@@ -121,11 +121,12 @@ public class MacOSXPbufferCGLContext extends MacOSXCGLContext {
}
}
- public void setSwapInterval(int interval) {
+ protected void setSwapIntervalImpl(int interval) {
if (nsContext == 0) {
throw new GLException("OpenGL context not current");
}
impl.setSwapInterval(nsContext, interval);
+ currentSwapInterval = impl.getSwapInterval() ;
}
public int getFloatingPointMode() {
@@ -210,6 +211,7 @@ public class MacOSXPbufferCGLContext extends MacOSXCGLContext {
public boolean makeCurrent(long ctx);
public boolean release(long ctx);
public void setSwapInterval(long ctx, int interval);
+ public int getSwapInterval();
}
// NSOpenGLContext-based implementation
@@ -241,8 +243,14 @@ public class MacOSXPbufferCGLContext extends MacOSXCGLContext {
return CGL.clearCurrentContext(ctx);
}
+ private int currentSwapInterval = 0 ;
+
public void setSwapInterval(long ctx, int interval) {
CGL.setSwapInterval(ctx, interval);
+ currentSwapInterval = interval ;
+ }
+ public int getSwapInterval() {
+ return currentSwapInterval;
}
}
@@ -344,5 +352,8 @@ public class MacOSXPbufferCGLContext extends MacOSXCGLContext {
public void setSwapInterval(long ctx, int interval) {
// For now not supported (not really relevant for off-screen contexts anyway)
}
+ public int getSwapInterval() {
+ return 0;
+ }
}
}
diff --git a/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXPbufferCGLDrawable.java b/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXPbufferCGLDrawable.java
index 54101331d..2d7b3ea34 100644
--- a/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXPbufferCGLDrawable.java
+++ b/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXPbufferCGLDrawable.java
@@ -87,7 +87,7 @@ public class MacOSXPbufferCGLDrawable extends MacOSXCGLDrawable {
return pBuffer;
}
- public void swapBuffers() throws GLException {
+ protected void swapBuffersImpl() {
// FIXME: do we need to do anything if the pbuffer is double-buffered?
}
@@ -98,7 +98,7 @@ public class MacOSXPbufferCGLDrawable extends MacOSXCGLDrawable {
GLProfile glProfile = capabilities.getGLProfile();
int renderTarget;
if (glProfile.isGL2() && capabilities.getPbufferRenderToTextureRectangle()) {
- renderTarget = GL2.GL_TEXTURE_RECTANGLE_EXT;
+ renderTarget = GL2.GL_TEXTURE_RECTANGLE;
} else {
int w = getNextPowerOf2(getWidth());
int h = getNextPowerOf2(getHeight());
diff --git a/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/awt/MacOSXJava2DCGLContext.java b/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/awt/MacOSXJava2DCGLContext.java
index 4423f8da5..22b0ffe55 100644
--- a/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/awt/MacOSXJava2DCGLContext.java
+++ b/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/awt/MacOSXJava2DCGLContext.java
@@ -144,10 +144,6 @@ public class MacOSXJava2DCGLContext extends MacOSXCGLContext implements Java2DGL
}
}
- public void setSwapInterval(int interval) {
- // Not supported in this context implementation
- }
-
public void setOpenGLMode(int mode) {
if (mode != MacOSXCGLDrawable.CGL_MODE)
throw new GLException("OpenGL mode switching not supported for Java2D GLContexts");
diff --git a/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsExternalWGLContext.java b/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsExternalWGLContext.java
index b9fc80156..31e65fc8c 100755
--- a/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsExternalWGLContext.java
+++ b/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsExternalWGLContext.java
@@ -51,7 +51,7 @@ public class WindowsExternalWGLContext extends WindowsWGLContext {
private boolean created = true;
private GLContext lastContext;
- private WindowsExternalWGLContext(Drawable drawable, long hglrc) {
+ private WindowsExternalWGLContext(Drawable drawable, long hglrc, WindowsWGLGraphicsConfiguration cfg) {
super(drawable, null);
this.hglrc = hglrc;
if (DEBUG) {
@@ -59,6 +59,7 @@ public class WindowsExternalWGLContext extends WindowsWGLContext {
}
GLContextShareSet.contextCreated(this);
setGLFunctionAvailability(false);
+ cfg.updateCapabilitiesByWGL(this);
}
protected static WindowsExternalWGLContext create(GLDrawableFactory factory, GLProfile glp) {
@@ -76,12 +77,12 @@ public class WindowsExternalWGLContext extends WindowsWGLContext {
}
AbstractGraphicsScreen aScreen = DefaultGraphicsScreen.createDefault();
- WindowsWGLGraphicsConfiguration cfg = WindowsWGLGraphicsConfiguration.create(glp, aScreen, hdc, pfdID, true, true);
+ WindowsWGLGraphicsConfiguration cfg = WindowsWGLGraphicsConfiguration.create(hdc, pfdID, glp, aScreen, true, true);
NullWindow nw = new NullWindow(cfg);
nw.setSurfaceHandle(hdc);
- return new WindowsExternalWGLContext(new Drawable(factory, nw), hglrc);
+ return new WindowsExternalWGLContext(new Drawable(factory, nw), hglrc, cfg);
}
public int makeCurrent() throws GLException {
diff --git a/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsExternalWGLDrawable.java b/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsExternalWGLDrawable.java
index 706675893..9b87afc38 100755
--- a/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsExternalWGLDrawable.java
+++ b/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsExternalWGLDrawable.java
@@ -61,12 +61,12 @@ public class WindowsExternalWGLDrawable extends WindowsWGLDrawable {
}
AbstractGraphicsScreen aScreen = DefaultGraphicsScreen.createDefault();
- WindowsWGLGraphicsConfiguration cfg = WindowsWGLGraphicsConfiguration.create(glp, aScreen, hdc, pfdID, true, true);
+ WindowsWGLGraphicsConfiguration cfg = WindowsWGLGraphicsConfiguration.create(hdc, pfdID, glp, aScreen, true, true);
NullWindow nw = new NullWindow(cfg);
nw.setSurfaceHandle(hdc);
- // cfg.updateGraphicsConfiguration(factory, nw);
+ cfg.updateGraphicsConfiguration(factory, nw);
return new WindowsExternalWGLDrawable(factory, nw);
}
diff --git a/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsOffscreenWGLDrawable.java b/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsOffscreenWGLDrawable.java
index ecd4e1685..71d82e784 100644
--- a/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsOffscreenWGLDrawable.java
+++ b/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsOffscreenWGLDrawable.java
@@ -127,7 +127,7 @@ public class WindowsOffscreenWGLDrawable extends WindowsWGLDrawable {
}
}
- public void swapBuffers() throws GLException {
+ protected void swapBuffersImpl() {
}
}
diff --git a/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsPbufferWGLDrawable.java b/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsPbufferWGLDrawable.java
index 6a03406f9..20a891414 100644
--- a/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsPbufferWGLDrawable.java
+++ b/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsPbufferWGLDrawable.java
@@ -107,7 +107,7 @@ public class WindowsPbufferWGLDrawable extends WindowsWGLDrawable {
return floatMode;
}
- public void swapBuffers() throws GLException {
+ protected void swapBuffersImpl() {
}
private void createPbuffer(long parentHdc, WGLExt wglExt) {
@@ -290,12 +290,14 @@ public class WindowsPbufferWGLDrawable extends WindowsWGLDrawable {
GLCapabilities newCaps = WindowsWGLGraphicsConfiguration.AttribList2GLCapabilities(glProfile, iattributes, niattribs, ivalues, true, false, true);
PIXELFORMATDESCRIPTOR pfd = WindowsWGLGraphicsConfiguration.createPixelFormatDescriptor();
if (WGL.DescribePixelFormat(parentHdc, pformats[whichFormat], pfd.size(), pfd) == 0) {
- throw new GLException("Unable to describe pixel format " + pformats[whichFormat]);
+ if (DEBUG) {
+ System.err.println("Unable to describe pixel format (Continue: true) " + whichFormat + "/" + nformats + " pfdID " + pformats[whichFormat]+":\n\t"+newCaps);
+ }
}
if(newCaps.isOnscreen()) {
- throw new GLException("Error: Selected Onscreen Caps for PBuffer: "+newCaps);
+ throw new GLException("Error: Selected Onscreen Caps for PBuffer: "+newCaps+"\n\t"+newCaps);
}
- config.setCapsPFD(newCaps, pfd, pformats[whichFormat]);
+ config.setCapsPFD(newCaps, pfd, pformats[whichFormat], true);
} else {
PIXELFORMATDESCRIPTOR pfd = WindowsWGLGraphicsConfiguration.createPixelFormatDescriptor();
if (WGL.DescribePixelFormat(parentHdc, pformats[whichFormat], pfd.size(), pfd) == 0) {
@@ -303,9 +305,9 @@ public class WindowsPbufferWGLDrawable extends WindowsWGLDrawable {
}
GLCapabilities newCaps = WindowsWGLGraphicsConfiguration.PFD2GLCapabilities(glProfile, pfd, false, true);
if(newCaps.isOnscreen()) {
- throw new GLException("Error: Selected Onscreen Caps for PBuffer: "+newCaps);
+ throw new GLException("Error: Selected Onscreen Caps for PBuffer: "+newCaps+"\n\t"+newCaps);
}
- config.setCapsPFD(newCaps, pfd, pformats[whichFormat]);
+ config.setCapsPFD(newCaps, pfd, pformats[whichFormat], false);
}
}
diff --git a/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsWGLContext.java b/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsWGLContext.java
index 1bc3acada..9a3860ae2 100644
--- a/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsWGLContext.java
+++ b/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsWGLContext.java
@@ -147,20 +147,16 @@ public class WindowsWGLContext extends GLContextImpl {
throw new GLException("Unable to create temp OpenGL context for device context " + toHexString(drawable.getNativeWindow().getSurfaceHandle()));
} else {
if (!WGL.wglMakeCurrent(drawable.getNativeWindow().getSurfaceHandle(), temp_hglrc)) {
- throw new GLException("Error making temp context current: " + WGL.GetLastError());
+ throw new GLException("Error making temp context current: 0x" + Integer.toHexString(WGL.GetLastError()));
}
setGLFunctionAvailability(true);
if( !isFunctionAvailable("wglCreateContextAttribsARB") ||
!isExtensionAvailable("WGL_ARB_create_context") ) {
if(glCaps.getGLProfile().isGL3()) {
- if (!WGL.wglMakeCurrent(0, 0)) {
- throw new GLException("Error freeing temp OpenGL context: " + WGL.GetLastError());
- }
- if (!WGL.wglDeleteContext(temp_hglrc)) {
- throw new GLException("Unable to delete OpenGL context");
- }
- throw new GLException("Unable to create OpenGL 3.1 context (no WGL_ARB_create_context)");
+ WGL.wglMakeCurrent(0, 0);
+ WGL.wglDeleteContext(temp_hglrc);
+ throw new GLException("Unable to create OpenGL >= 3.1 context (no WGL_ARB_create_context)");
}
// continue with temp context for GL < 3.0
@@ -173,47 +169,70 @@ public class WindowsWGLContext extends GLContextImpl {
// preset with default values
int attribs[] = {
- WGLExt.WGL_CONTEXT_MAJOR_VERSION_ARB, 3,
- WGLExt.WGL_CONTEXT_MINOR_VERSION_ARB, 0,
- WGLExt.WGL_CONTEXT_FLAGS_ARB, 0,
- 0
+ /* 0 */ WGLExt.WGL_CONTEXT_MAJOR_VERSION_ARB, 3,
+ /* 2 */ WGLExt.WGL_CONTEXT_MINOR_VERSION_ARB, 0,
+ /* 4 */ WGLExt.WGL_CONTEXT_FLAGS_ARB, 0 /* WGLExt.WGL_CONTEXT_DEBUG_BIT_ARB */,
+ /* 6 */ 0, 0,
+ /* 8 */ 0
};
if(glCaps.getGLProfile().isGL3()) {
- attribs[1] |= 3;
- attribs[3] |= 1;
- // attribs[5] |= WGLExt.WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB ; // NVidia WGL driver doesn't support this one ..
- // attribs[5] |= WGLExt.WGL_CONTEXT_DEBUG_BIT_ARB ;
+ // Try >= 3.2 core first !
+ // In contrast to GLX no verify with a None drawable binding (default framebuffer) is necessary,
+ // if no 3.2 is available creation fails already!
+ attribs[0+1] = 3;
+ attribs[2+1] = 2;
+ attribs[6+0] = WGLExt.WGL_CONTEXT_PROFILE_MASK_ARB;
+ attribs[6+1] = WGLExt.WGL_CONTEXT_CORE_PROFILE_BIT_ARB;
+ hglrc = wglExt.wglCreateContextAttribsARB(drawable.getNativeWindow().getSurfaceHandle(), hglrc2, attribs, 0);
+ if(0==hglrc) {
+ if(DEBUG) {
+ System.err.println("WindowsWGLContext.createContext couldn't create >= 3.2 core context - fallback");
+ }
+ // Try >= 3.1 forward compatible - last resort for GL3 !
+ attribs[0+1] = 3;
+ attribs[2+1] = 1;
+ attribs[4+1] |= WGLExt.WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB;
+ attribs[6+0] = 0;
+ attribs[6+1] = 0;
+ } else if(DEBUG) {
+ System.err.println("WindowsWGLContext.createContext >= 3.2 available 0x"+Long.toHexString(hglrc));
+ }
+ }
+ if(0==hglrc) {
+ // 3.1 or 3.0 ..
+ hglrc = wglExt.wglCreateContextAttribsARB(drawable.getNativeWindow().getSurfaceHandle(), hglrc2, attribs, 0);
+ if(DEBUG) {
+ if(0==hglrc) {
+ System.err.println("WindowsWGLContext.createContext couldn't create >= 3.0 context - fallback");
+ } else {
+ System.err.println("WindowsWGLContext.createContext >= 3.0 available 0x"+Long.toHexString(hglrc));
+ }
+ }
}
- hglrc = wglExt.wglCreateContextAttribsARB(drawable.getNativeWindow().getSurfaceHandle(), hglrc2, attribs, 0);
if(0==hglrc) {
if(glCaps.getGLProfile().isGL3()) {
- if (!WGL.wglMakeCurrent(0, 0)) {
- throw new GLException("Error freeing temp OpenGL context: " + WGL.GetLastError());
- }
- if (!WGL.wglDeleteContext(temp_hglrc)) {
- throw new GLException("Unable to delete OpenGL context");
- }
- throw new GLException("Unable to create OpenGL 3.1 context (have WGL_ARB_create_context)");
+ WGL.wglMakeCurrent(0, 0);
+ WGL.wglDeleteContext(temp_hglrc);
+ throw new GLException("Unable to create OpenGL >= 3.1 context (have WGL_ARB_create_context)");
}
// continue with temp context for GL < 3.0
hglrc = temp_hglrc;
+ if (!WGL.wglMakeCurrent(drawable.getNativeWindow().getSurfaceHandle(), hglrc)) {
+ throw new GLException("Error making old context current: 0x" + Integer.toHexString(WGL.GetLastError()));
+ }
if(DEBUG) {
System.err.println("WindowsWGLContext.create done (old ctx < 3.0 - no 3.0) 0x"+Long.toHexString(hglrc));
}
} else {
hglrc2 = 0; // mark as shared ..
- if (!WGL.wglMakeCurrent(0, 0)) {
- throw new GLException("Error freeing temp OpenGL context: " + WGL.GetLastError());
- }
- if (!WGL.wglDeleteContext(temp_hglrc)) {
- throw new GLException("Unable to delete temp OpenGL context");
- }
+ WGL.wglMakeCurrent(0, 0);
+ WGL.wglDeleteContext(temp_hglrc);
if (!WGL.wglMakeCurrent(drawable.getNativeWindow().getSurfaceHandle(), hglrc)) {
- throw new GLException("Error making new context current: " + WGL.GetLastError());
+ throw new GLException("Error making new context current: 0x" + Integer.toHexString(WGL.GetLastError()));
}
updateGLProcAddressTable();
if(DEBUG) {
@@ -225,8 +244,8 @@ public class WindowsWGLContext extends GLContextImpl {
if(0!=hglrc2) {
if (!WGL.wglShareLists(hglrc2, hglrc)) {
throw new GLException("wglShareLists(" + toHexString(hglrc2) +
- ", " + toHexString(hglrc) + ") failed: error code " +
- WGL.GetLastError());
+ ", " + toHexString(hglrc) + ") failed: error code 0x" +
+ Integer.toHexString(WGL.GetLastError()));
}
}
GLContextShareSet.contextCreated(this);
@@ -253,7 +272,7 @@ public class WindowsWGLContext extends GLContextImpl {
if (WGL.wglGetCurrentContext() != hglrc) {
if (!WGL.wglMakeCurrent(drawable.getNativeWindow().getSurfaceHandle(), hglrc)) {
- throw new GLException("Error making context current: " + WGL.GetLastError());
+ throw new GLException("Error making context current: 0x" + Integer.toHexString(WGL.GetLastError()));
} else {
if (DEBUG && VERBOSE) {
System.err.println(getThreadName() + ": wglMakeCurrent(hdc " + toHexString(drawable.getNativeWindow().getSurfaceHandle()) +
@@ -264,6 +283,11 @@ public class WindowsWGLContext extends GLContextImpl {
if (created) {
setGLFunctionAvailability(false);
+
+ WindowsWGLGraphicsConfiguration config =
+ (WindowsWGLGraphicsConfiguration)drawable.getNativeWindow().getGraphicsConfiguration().getNativeGraphicsConfiguration();
+ config.updateCapabilitiesByWGL(this);
+
return CONTEXT_CURRENT_NEW;
}
return CONTEXT_CURRENT;
@@ -271,7 +295,7 @@ public class WindowsWGLContext extends GLContextImpl {
protected void releaseImpl() throws GLException {
if (!WGL.wglMakeCurrent(0, 0)) {
- throw new GLException("Error freeing OpenGL context: " + WGL.GetLastError());
+ throw new GLException("Error freeing OpenGL context: 0x" + Integer.toHexString(WGL.GetLastError()));
}
}
@@ -308,7 +332,6 @@ public class WindowsWGLContext extends GLContextImpl {
}
protected void updateGLProcAddressTable() {
- super.updateGLProcAddressTable();
if (DEBUG) {
System.err.println(getThreadName() + ": !!! Initializing WGL extension address table for " + this);
}
@@ -318,6 +341,7 @@ public class WindowsWGLContext extends GLContextImpl {
wglExtProcAddressTable = new WGLExtProcAddressTable();
}
resetProcAddressTable(getWGLExtProcAddressTable());
+ super.updateGLProcAddressTable();
}
public String getPlatformExtensionsString() {
@@ -332,29 +356,12 @@ public class WindowsWGLContext extends GLContextImpl {
}
}
- public boolean isFunctionAvailable(String glFunctionName)
- {
- boolean available = super.isFunctionAvailable(glFunctionName);
-
- // Sanity check for implementations that use proc addresses for run-time
- // linking: if the function IS available, then make sure there's a proc
- // address for it if it's an extension or not part of the OpenGL 1.1 core
- // (post GL 1.1 functions are run-time linked on windows).
- /* FIXME:
- assert(!available ||
- (getGLProcAddressTable().getAddressFor(mapToRealGLFunctionName(glFunctionName)) != 0 ||
- FunctionAvailabilityCache.isPartOfGLCore("1.1", mapToRealGLFunctionName(glFunctionName)))
- ); */
-
- return available;
- }
-
- public void setSwapInterval(int interval) {
- // FIXME: make the context current first? Currently assumes that
- // will not be necessary. Make the caller do this?
+ protected void setSwapIntervalImpl(int interval) {
WGLExt wglExt = getWGLExt();
if (wglExt.isExtensionAvailable("WGL_EXT_swap_control")) {
- wglExt.wglSwapIntervalEXT(interval);
+ if ( wglExt.wglSwapIntervalEXT(interval) ) {
+ currentSwapInterval = interval ;
+ }
}
}
diff --git a/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsWGLDrawable.java b/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsWGLDrawable.java
index 3017d258b..01e259665 100644
--- a/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsWGLDrawable.java
+++ b/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsWGLDrawable.java
@@ -82,44 +82,41 @@ public abstract class WindowsWGLDrawable extends GLDrawableImpl {
}
}
- public void swapBuffers() throws GLException {
- GLCapabilities caps = (GLCapabilities)getNativeWindow().getGraphicsConfiguration().getNativeGraphicsConfiguration().getChosenCapabilities();
- if (caps.getDoubleBuffered()) {
- boolean didLock = false;
+ protected void swapBuffersImpl() {
+ boolean didLock = false;
- try {
- if ( !isSurfaceLocked() ) {
- // Usually the surface shall be locked within [makeCurrent .. swap .. release]
- if (lockSurface() == NativeWindow.LOCK_SURFACE_NOT_READY) {
- return;
- }
- didLock = true;
+ try {
+ if ( !isSurfaceLocked() ) {
+ // Usually the surface shall be locked within [makeCurrent .. swap .. release]
+ if (lockSurface() == NativeWindow.LOCK_SURFACE_NOT_READY) {
+ return;
}
+ didLock = true;
+ }
- long startTime = 0;
- if (PROFILING) {
- startTime = System.currentTimeMillis();
- }
+ long startTime = 0;
+ if (PROFILING) {
+ startTime = System.currentTimeMillis();
+ }
- if (!WGL.SwapBuffers(getNativeWindow().getSurfaceHandle()) && (WGL.GetLastError() != 0)) {
- throw new GLException("Error swapping buffers");
- }
+ if (!WGL.SwapBuffers(getNativeWindow().getSurfaceHandle()) && (WGL.GetLastError() != 0)) {
+ throw new GLException("Error swapping buffers");
+ }
- if (PROFILING) {
- long endTime = System.currentTimeMillis();
- profilingSwapBuffersTime += (endTime - startTime);
- int ticks = PROFILING_TICKS;
- if (++profilingSwapBuffersTicks == ticks) {
- System.err.println("SwapBuffers calls: " + profilingSwapBuffersTime + " ms / " + ticks + " calls (" +
- ((float) profilingSwapBuffersTime / (float) ticks) + " ms/call)");
- profilingSwapBuffersTime = 0;
- profilingSwapBuffersTicks = 0;
- }
- }
- } finally {
- if (didLock) {
- unlockSurface();
- }
+ if (PROFILING) {
+ long endTime = System.currentTimeMillis();
+ profilingSwapBuffersTime += (endTime - startTime);
+ int ticks = PROFILING_TICKS;
+ if (++profilingSwapBuffersTicks == ticks) {
+ System.err.println("SwapBuffers calls: " + profilingSwapBuffersTime + " ms / " + ticks + " calls (" +
+ ((float) profilingSwapBuffersTime / (float) ticks) + " ms/call)");
+ profilingSwapBuffersTime = 0;
+ profilingSwapBuffersTicks = 0;
+ }
+ }
+ } finally {
+ if (didLock) {
+ unlockSurface();
}
}
}
diff --git a/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsWGLGraphicsConfiguration.java b/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsWGLGraphicsConfiguration.java
index 1a8d45465..844e72841 100644
--- a/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsWGLGraphicsConfiguration.java
+++ b/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsWGLGraphicsConfiguration.java
@@ -49,6 +49,7 @@ public class WindowsWGLGraphicsConfiguration extends DefaultGraphicsConfiguratio
private int pixelfmtID;
private boolean isChosen = false;
private GLCapabilitiesChooser chooser;
+ private boolean choosenByWGLPixelFormat=false;
public WindowsWGLGraphicsConfiguration(AbstractGraphicsScreen screen, GLCapabilities capsChosen, GLCapabilities capsRequested,
PIXELFORMATDESCRIPTOR pixelfmt, int pixelfmtID, GLCapabilitiesChooser chooser) {
@@ -58,17 +59,26 @@ public class WindowsWGLGraphicsConfiguration extends DefaultGraphicsConfiguratio
this.pixelfmtID = pixelfmtID;
}
- public static WindowsWGLGraphicsConfiguration create(GLProfile glp, AbstractGraphicsScreen screen, long hdc, int pfdID, boolean onscreen, boolean usePBuffer) {
- PIXELFORMATDESCRIPTOR pfd = createPixelFormatDescriptor();
- if (WGL.DescribePixelFormat(hdc, pfdID, pfd.size(), pfd) == 0) {
- throw new GLException("Unable to describe pixel format " + pfdID);
+ public static WindowsWGLGraphicsConfiguration create(long hdc, int pfdID,
+ GLProfile glp, AbstractGraphicsScreen screen, boolean onscreen, boolean usePBuffer)
+ {
+ if(pfdID<=0) {
+ throw new GLException("Invalid pixelformat id "+pfdID);
}
if(null==glp) {
glp = GLProfile.getDefault();
}
+ PIXELFORMATDESCRIPTOR pfd = createPixelFormatDescriptor();
+ if (WGL.DescribePixelFormat(hdc, pfdID, pfd.size(), pfd) == 0) {
+ throw new GLException("Unable to describe pixel format " + pfdID);
+ }
+
GLCapabilities caps = PFD2GLCapabilities(glp, pfd, onscreen, usePBuffer);
+ if(null==caps) {
+ throw new GLException("Couldn't choose Capabilities by: HDC 0x"+Long.toHexString(hdc)+", pfdID "+pfdID);
+ }
WindowsWGLGraphicsConfiguration cfg = new WindowsWGLGraphicsConfiguration(screen, caps, caps, pfd, pfdID, new DefaultGLCapabilitiesChooser());
- cfg.setCapsPFD(caps, pfd, pfdID);
+ cfg.setCapsPFD(caps, pfd, pfdID, false);
return cfg;
}
@@ -77,15 +87,40 @@ public class WindowsWGLGraphicsConfiguration extends DefaultGraphicsConfiguratio
return super.clone();
}
+ /** Update config - before having a valid context */
protected void updateGraphicsConfiguration(GLDrawableFactory factory, NativeWindow nativeWindow) {
WindowsWGLGraphicsConfigurationFactory.updateGraphicsConfiguration(chooser, factory, nativeWindow);
}
- protected void setCapsPFD(GLCapabilities caps, PIXELFORMATDESCRIPTOR pfd, int pfdID) {
- // FIXME: setScreen ( .. )
+
+ /** Update config - after having a valid and current context */
+ protected void updateCapabilitiesByWGL(GLContextImpl context) {
+ if(choosenByWGLPixelFormat) return; // already done ..
+
+ GLCapabilities capabilities = (GLCapabilities) getRequestedCapabilities();
+ boolean onscreen = capabilities.isOnscreen();
+ boolean usePBuffer = capabilities.isPBuffer();
+ GLProfile glp = capabilities.getGLProfile();
+
+ WGLExt wglExt = (WGLExt) context.getPlatformGLExtensions();
+ GLDrawable drawable = context.getGLDrawable();
+ NativeWindow nativeWindow = drawable.getNativeWindow();
+ long hdc = nativeWindow.getSurfaceHandle();
+
+ GLCapabilities[] caps = HDC2GLCapabilities(wglExt, hdc, getPixelFormatID(), glp, true, onscreen, usePBuffer);
+ if(null!=caps && null!=caps[0]) {
+ setCapsPFD(caps[0], getPixelFormat(), getPixelFormatID(), true);
+ }
+ }
+
+ protected void setCapsPFD(GLCapabilities caps, PIXELFORMATDESCRIPTOR pfd, int pfdID, boolean choosenByWGLPixelFormat) {
this.pixelfmt = pfd;
this.pixelfmtID = pfdID;
setChosenCapabilities(caps);
- isChosen=true;
+ this.isChosen=true;
+ this.choosenByWGLPixelFormat=choosenByWGLPixelFormat;
+ if (DEBUG) {
+ System.err.println("*** setCapsPFD: WGL-Choosen "+choosenByWGLPixelFormat+", pfdID "+pfdID+", "+caps);
+ }
}
public boolean getCapabilitiesChosen() {
@@ -94,6 +129,102 @@ public class WindowsWGLGraphicsConfiguration extends DefaultGraphicsConfiguratio
public PIXELFORMATDESCRIPTOR getPixelFormat() { return pixelfmt; }
public int getPixelFormatID() { return pixelfmtID; }
+ public boolean isChoosenByWGL() { return choosenByWGLPixelFormat; }
+
+ private static int haveWGLChoosePixelFormatARB = -1;
+ private static int haveWGLARBMultisample = -1;
+
+ public static GLCapabilities[] HDC2GLCapabilities(WGLExt wglExt, long hdc, int pfdIDOnly,
+ GLProfile glp, boolean relaxed, boolean onscreen, boolean usePBuffer) {
+
+ if(haveWGLChoosePixelFormatARB<0) {
+ haveWGLChoosePixelFormatARB = wglExt.isExtensionAvailable("WGL_ARB_pixel_format")?1:0;
+ }
+ if(haveWGLARBMultisample<0) {
+ haveWGLARBMultisample = wglExt.isExtensionAvailable("WGL_ARB_multisample")?1:0;
+ }
+ if (0==haveWGLChoosePixelFormatARB) {
+ return null;
+ }
+
+ // Produce a list of GLCapabilities to give to the
+ // GLCapabilitiesChooser.
+ // Use wglGetPixelFormatAttribivARB instead of
+ // DescribePixelFormat to get higher-precision information
+ // about the pixel format (should make the GLCapabilities
+ // more precise as well...i.e., remove the
+ // "HardwareAccelerated" bit, which is basically
+ // meaningless, and put in whether it can render to a
+ // window, to a pbuffer, or to a pixmap)
+ GLCapabilities[] availableCaps = null;
+ int numFormats = 0;
+ int niattribs = 0;
+ int[] iattributes = new int [2*MAX_ATTRIBS];
+ int[] iresults = new int [2*MAX_ATTRIBS];
+
+ iattributes[0] = WGLExt.WGL_NUMBER_PIXEL_FORMATS_ARB;
+ if (wglExt.wglGetPixelFormatAttribivARB(hdc, 0, 0, 1, iattributes, 0, iresults, 0)) {
+ numFormats = iresults[0];
+
+ if (DEBUG) {
+ System.err.println("wglGetPixelFormatAttribivARB reported WGL_NUMBER_PIXEL_FORMATS = " + numFormats);
+ }
+
+ if(pfdIDOnly>0 && pfdIDOnly>numFormats) {
+ throw new GLException("Invalid pixelformat ID " + pfdIDOnly + " (should be between 1 and " + numFormats + ")");
+ }
+
+ // Should we be filtering out the pixel formats which aren't
+ // applicable, as we are doing here?
+ // We don't have enough information in the GLCapabilities to
+ // represent those that aren't...
+ iattributes[niattribs++] = WGLExt.WGL_DRAW_TO_WINDOW_ARB;
+ iattributes[niattribs++] = WGLExt.WGL_ACCELERATION_ARB;
+ iattributes[niattribs++] = WGLExt.WGL_SUPPORT_OPENGL_ARB;
+ iattributes[niattribs++] = WGLExt.WGL_DEPTH_BITS_ARB;
+ iattributes[niattribs++] = WGLExt.WGL_STENCIL_BITS_ARB;
+ iattributes[niattribs++] = WGLExt.WGL_DOUBLE_BUFFER_ARB;
+ iattributes[niattribs++] = WGLExt.WGL_STEREO_ARB;
+ iattributes[niattribs++] = WGLExt.WGL_PIXEL_TYPE_ARB;
+ iattributes[niattribs++] = WGLExt.WGL_RED_BITS_ARB;
+ iattributes[niattribs++] = WGLExt.WGL_GREEN_BITS_ARB;
+ iattributes[niattribs++] = WGLExt.WGL_BLUE_BITS_ARB;
+ iattributes[niattribs++] = WGLExt.WGL_ALPHA_BITS_ARB;
+ iattributes[niattribs++] = WGLExt.WGL_ACCUM_RED_BITS_ARB;
+ iattributes[niattribs++] = WGLExt.WGL_ACCUM_GREEN_BITS_ARB;
+ iattributes[niattribs++] = WGLExt.WGL_ACCUM_BLUE_BITS_ARB;
+ iattributes[niattribs++] = WGLExt.WGL_ACCUM_ALPHA_BITS_ARB;
+ if (1==haveWGLARBMultisample) {
+ iattributes[niattribs++] = WGLExt.WGL_SAMPLE_BUFFERS_ARB;
+ iattributes[niattribs++] = WGLExt.WGL_SAMPLES_ARB;
+ }
+
+ if(pfdIDOnly>0) {
+ availableCaps = new GLCapabilities[1];
+ if (!wglExt.wglGetPixelFormatAttribivARB(hdc, pfdIDOnly, 0, niattribs, iattributes, 0, iresults, 0)) {
+ throw new GLException("Error getting pixel format attributes for pixel format " + pfdIDOnly + " of device context");
+ }
+ availableCaps[0] = AttribList2GLCapabilities(glp, iattributes, niattribs, iresults,
+ relaxed, onscreen, usePBuffer);
+ } else {
+ availableCaps = new GLCapabilities[numFormats];
+ for (int i = 0; i < numFormats; i++) {
+ if (!wglExt.wglGetPixelFormatAttribivARB(hdc, i+1, 0, niattribs, iattributes, 0, iresults, 0)) {
+ throw new GLException("Error getting pixel format attributes for pixel format " + (i + 1) + " of device context");
+ }
+ availableCaps[i] = AttribList2GLCapabilities(glp, iattributes, niattribs, iresults,
+ relaxed, onscreen, usePBuffer);
+ }
+ }
+ } else {
+ long lastErr = WGL.GetLastError();
+ // Intel Extreme graphics fails with a zero error code
+ if (lastErr != 0) {
+ throw new GLException("Unable to enumerate pixel formats of window using wglGetPixelFormatAttribivARB: error code " + WGL.GetLastError());
+ }
+ }
+ return availableCaps;
+ }
public static boolean GLCapabilities2AttribList(GLCapabilities caps,
int[] iattributes,
@@ -498,7 +629,7 @@ public class WindowsWGLGraphicsConfiguration extends DefaultGraphicsConfiguratio
}
public String toString() {
- return "WindowsWGLGraphicsConfiguration["+getScreen()+", pfdID " + pixelfmtID +
+ return "WindowsWGLGraphicsConfiguration["+getScreen()+", pfdID " + pixelfmtID + ", wglChoosen "+choosenByWGLPixelFormat+
",\n\trequested " + getRequestedCapabilities() +
",\n\tchosen " + getChosenCapabilities() +
"]";
diff --git a/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsWGLGraphicsConfigurationFactory.java b/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsWGLGraphicsConfigurationFactory.java
index f5974dc61..a7d7be349 100644
--- a/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsWGLGraphicsConfigurationFactory.java
+++ b/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsWGLGraphicsConfigurationFactory.java
@@ -99,6 +99,7 @@ public class WindowsWGLGraphicsConfigurationFactory extends GraphicsConfiguratio
throw new IllegalArgumentException("This NativeWindowFactory accepts only GLCapabilitiesChooser objects");
}
+ boolean choosenBywGLPixelFormat = false;
WindowsWGLGraphicsConfiguration config = (WindowsWGLGraphicsConfiguration) nativeWindow.getGraphicsConfiguration().getNativeGraphicsConfiguration();
GLCapabilities capabilities = (GLCapabilities) config.getRequestedCapabilities();
boolean onscreen = capabilities.isOnscreen();
@@ -113,7 +114,7 @@ public class WindowsWGLGraphicsConfigurationFactory extends GraphicsConfiguratio
}
PIXELFORMATDESCRIPTOR pfd = null;
- int pixelFormat = -1;
+ int pixelFormat = -1; // 1-based pixel format
boolean pixelFormatSet = false;
GLCapabilities chosenCaps = null;
@@ -125,7 +126,7 @@ public class WindowsWGLGraphicsConfigurationFactory extends GraphicsConfiguratio
// - or the Java2D/OpenGL pipeline's configuration
if (DEBUG) {
System.err.println("!!!! NOTE: pixel format already chosen for HDC: 0x" + Long.toHexString(hdc)+
- ", pixelformat "+WGL.GetPixelFormat(hdc));
+ ", pixelformat "+pixelFormat);
}
pixelFormatSet = true;
}
@@ -138,27 +139,25 @@ public class WindowsWGLGraphicsConfigurationFactory extends GraphicsConfiguratio
WindowsWGLDrawable dummyDrawable = null;
GLContextImpl dummyContext = null;
WGLExt dummyWGLExt = null;
- dummyDrawable = new WindowsDummyWGLDrawable(factory);
- dummyContext = (GLContextImpl) dummyDrawable.createContext(null);
- if (dummyContext != null) {
- dummyContext.makeCurrent();
- dummyWGLExt = (WGLExt) dummyContext.getPlatformGLExtensions();
- }
- int recommendedPixelFormat = pixelFormat - 1;
+ if (capabilities.getSampleBuffers()) {
+ dummyDrawable = new WindowsDummyWGLDrawable(factory);
+ dummyContext = (GLContextImpl) dummyDrawable.createContext(null);
+ if (dummyContext != null) {
+ dummyContext.makeCurrent();
+ dummyWGLExt = (WGLExt) dummyContext.getPlatformGLExtensions();
+ }
+ }
+ int recommendedPixelFormat = pixelFormat; // 1-based pixel format
boolean haveWGLChoosePixelFormatARB = false;
- boolean haveWGLARBMultisample = false;
boolean gotAvailableCaps = false;
if (dummyWGLExt != null) {
try {
haveWGLChoosePixelFormatARB = dummyWGLExt.isExtensionAvailable("WGL_ARB_pixel_format");
if (haveWGLChoosePixelFormatARB) {
- haveWGLARBMultisample = dummyWGLExt.isExtensionAvailable("WGL_ARB_multisample");
-
- int[] iattributes = new int [2*WindowsWGLGraphicsConfiguration.MAX_ATTRIBS];
- int[] iresults = new int [2*WindowsWGLGraphicsConfiguration.MAX_ATTRIBS];
- float[] fattributes = new float[1];
-
if(pixelFormat<=0) {
+ int[] iattributes = new int [2*WindowsWGLGraphicsConfiguration.MAX_ATTRIBS];
+ float[] fattributes = new float[1];
+
if(WindowsWGLGraphicsConfiguration.GLCapabilities2AttribList(capabilities,
iattributes,
dummyWGLExt,
@@ -174,8 +173,7 @@ public class WindowsWGLGraphicsConfigurationFactory extends GraphicsConfiguratio
numFormatsTmp, 0)) {
numFormats = numFormatsTmp[0];
if (recommendedPixelFormat<=0 && numFormats > 0) {
- // Remove one-basing of pixel format (added on later)
- recommendedPixelFormat = pformats[0] - 1;
+ recommendedPixelFormat = pformats[0];
if (DEBUG) {
System.err.println(getThreadName() + ": Used wglChoosePixelFormatARB to recommend pixel format " + recommendedPixelFormat);
}
@@ -187,7 +185,7 @@ public class WindowsWGLGraphicsConfigurationFactory extends GraphicsConfiguratio
}
}
if (DEBUG) {
- if (recommendedPixelFormat < 0) {
+ if (recommendedPixelFormat <= 0) {
System.err.print(getThreadName() + ": wglChoosePixelFormatARB didn't recommend a pixel format");
if (capabilities.getSampleBuffers()) {
System.err.print(" for multisampled GLCapabilities");
@@ -198,65 +196,9 @@ public class WindowsWGLGraphicsConfigurationFactory extends GraphicsConfiguratio
}
}
- // Produce a list of GLCapabilities to give to the
- // GLCapabilitiesChooser.
- // Use wglGetPixelFormatAttribivARB instead of
- // DescribePixelFormat to get higher-precision information
- // about the pixel format (should make the GLCapabilities
- // more precise as well...i.e., remove the
- // "HardwareAccelerated" bit, which is basically
- // meaningless, and put in whether it can render to a
- // window, to a pbuffer, or to a pixmap)
- int niattribs = 0;
- iattributes[0] = WGLExt.WGL_NUMBER_PIXEL_FORMATS_ARB;
- if (dummyWGLExt.wglGetPixelFormatAttribivARB(hdc, 0, 0, 1, iattributes, 0, iresults, 0)) {
- numFormats = iresults[0];
-
- if (DEBUG) {
- System.err.println("wglGetPixelFormatAttribivARB reported WGL_NUMBER_PIXEL_FORMATS = " + numFormats);
- }
-
- // Should we be filtering out the pixel formats which aren't
- // applicable, as we are doing here?
- // We don't have enough information in the GLCapabilities to
- // represent those that aren't...
- iattributes[niattribs++] = WGLExt.WGL_DRAW_TO_WINDOW_ARB;
- iattributes[niattribs++] = WGLExt.WGL_ACCELERATION_ARB;
- iattributes[niattribs++] = WGLExt.WGL_SUPPORT_OPENGL_ARB;
- iattributes[niattribs++] = WGLExt.WGL_DEPTH_BITS_ARB;
- iattributes[niattribs++] = WGLExt.WGL_STENCIL_BITS_ARB;
- iattributes[niattribs++] = WGLExt.WGL_DOUBLE_BUFFER_ARB;
- iattributes[niattribs++] = WGLExt.WGL_STEREO_ARB;
- iattributes[niattribs++] = WGLExt.WGL_PIXEL_TYPE_ARB;
- iattributes[niattribs++] = WGLExt.WGL_RED_BITS_ARB;
- iattributes[niattribs++] = WGLExt.WGL_GREEN_BITS_ARB;
- iattributes[niattribs++] = WGLExt.WGL_BLUE_BITS_ARB;
- iattributes[niattribs++] = WGLExt.WGL_ALPHA_BITS_ARB;
- iattributes[niattribs++] = WGLExt.WGL_ACCUM_RED_BITS_ARB;
- iattributes[niattribs++] = WGLExt.WGL_ACCUM_GREEN_BITS_ARB;
- iattributes[niattribs++] = WGLExt.WGL_ACCUM_BLUE_BITS_ARB;
- iattributes[niattribs++] = WGLExt.WGL_ACCUM_ALPHA_BITS_ARB;
- if (haveWGLARBMultisample) {
- iattributes[niattribs++] = WGLExt.WGL_SAMPLE_BUFFERS_ARB;
- iattributes[niattribs++] = WGLExt.WGL_SAMPLES_ARB;
- }
-
- availableCaps = new GLCapabilities[numFormats];
- for (int i = 0; i < numFormats; i++) {
- if (!dummyWGLExt.wglGetPixelFormatAttribivARB(hdc, i+1, 0, niattribs, iattributes, 0, iresults, 0)) {
- throw new GLException("Error getting pixel format attributes for pixel format " + (i + 1) + " of device context");
- }
- availableCaps[i] = WindowsWGLGraphicsConfiguration.AttribList2GLCapabilities(glProfile, iattributes, niattribs, iresults,
- pixelFormatSet, onscreen, usePBuffer);
- }
- gotAvailableCaps = true;
- } else {
- long lastErr = WGL.GetLastError();
- // Intel Extreme graphics fails with a zero error code
- if (lastErr != 0) {
- throw new GLException("Unable to enumerate pixel formats of window using wglGetPixelFormatAttribivARB: error code " + WGL.GetLastError());
- }
- }
+ availableCaps = WindowsWGLGraphicsConfiguration.HDC2GLCapabilities(dummyWGLExt, hdc, -1, glProfile, pixelFormatSet, onscreen, usePBuffer);
+ gotAvailableCaps = null!=availableCaps ;
+ choosenBywGLPixelFormat = gotAvailableCaps ;
}
} finally {
dummyContext.release();
@@ -265,7 +207,6 @@ public class WindowsWGLGraphicsConfigurationFactory extends GraphicsConfiguratio
}
}
- // Fallback path for older cards, in particular Intel Extreme motherboard graphics
if (!gotAvailableCaps) {
if (DEBUG) {
if (!capabilities.getSampleBuffers()) {
@@ -279,8 +220,6 @@ public class WindowsWGLGraphicsConfigurationFactory extends GraphicsConfiguratio
if (DEBUG) {
System.err.println(getThreadName() + ": Recommended pixel format = " + recommendedPixelFormat);
}
- // Remove one-basing of pixel format (added on later)
- recommendedPixelFormat -= 1;
numFormats = WGL.DescribePixelFormat(hdc, 1, 0, null);
if (numFormats == 0) {
@@ -305,19 +244,27 @@ public class WindowsWGLGraphicsConfigurationFactory extends GraphicsConfiguratio
if(null!=chooser) {
// Supply information to chooser
try {
- pixelFormat = chooser.chooseCapabilities(capabilities, availableCaps, recommendedPixelFormat);
+ pixelFormat = chooser.chooseCapabilities(capabilities, availableCaps, recommendedPixelFormat) + 1;
} catch (NativeWindowException e) {
- throw new GLException(e);
+ if(DEBUG) {
+ e.printStackTrace();
+ }
+ pixelFormat = -1;
}
} else {
pixelFormat = recommendedPixelFormat;
}
- if ((pixelFormat < 0) || (pixelFormat >= numFormats)) {
+ if (pixelFormat <= 0) {
+ // keep on going ..
+ if(DEBUG) {
+ System.err.println("WindowsWGLGraphicsConfigurationFactory.updateGraphicsConfiguration .. unable to choose config, using first");
+ }
+ pixelFormat = 1; // default ..
+ } else if ( pixelFormat > numFormats ) {
throw new GLException("Invalid result " + pixelFormat +
- " from GLCapabilitiesChooser (should be between 0 and " +
- (numFormats - 1) + ")");
+ " from GLCapabilitiesChooser (should be between 1 and " +
+ numFormats + ")");
}
- pixelFormat += 1; // one-base the index
}
chosenCaps = availableCaps[pixelFormat-1];
if (DEBUG) {
@@ -355,7 +302,7 @@ public class WindowsWGLGraphicsConfigurationFactory extends GraphicsConfiguratio
} else {
capabilities = WindowsWGLGraphicsConfiguration.PFD2GLCapabilities(glProfile, pfd, onscreen, usePBuffer);
}
- config.setCapsPFD(capabilities, pfd, pixelFormat);
+ config.setCapsPFD(capabilities, pfd, pixelFormat, choosenBywGLPixelFormat);
}
protected static String getThreadName() {
diff --git a/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11GLXContext.java b/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11GLXContext.java
index 57abcf588..d5a5f3433 100644
--- a/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11GLXContext.java
+++ b/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11GLXContext.java
@@ -142,7 +142,7 @@ public abstract class X11GLXContext extends GLContextImpl {
if(config.getFBConfigID()<0) {
// not able to use FBConfig
if(glCaps.getGLProfile().isGL3()) {
- throw new GLException("Unable to create OpenGL 3.1 context");
+ throw new GLException("Unable to create OpenGL >= 3.1 context");
}
context = GLX.glXCreateContext(display, config.getXVisualInfo(), share, direct);
if (context == 0) {
@@ -178,11 +178,9 @@ public abstract class X11GLXContext extends GLContextImpl {
if( !isFunctionAvailable("glXCreateContextAttribsARB") ||
!isExtensionAvailable("GLX_ARB_create_context") ) {
if(glCaps.getGLProfile().isGL3()) {
- if (!GLX.glXMakeContextCurrent(display, 0, 0, 0)) {
- throw new GLException("Error freeing temp OpenGL context");
- }
+ GLX.glXMakeContextCurrent(display, 0, 0, 0);
GLX.glXDestroyContext(display, temp_context);
- throw new GLException("Unable to create OpenGL 3.1 context (no GLX_ARB_create_context)");
+ throw new GLException("Unable to create OpenGL >= 3.1 context (no GLX_ARB_create_context)");
}
// continue with temp context for GL < 3.0
@@ -195,47 +193,99 @@ public abstract class X11GLXContext extends GLContextImpl {
// preset with default values
int attribs[] = {
- GLX.GLX_CONTEXT_MAJOR_VERSION_ARB, 3,
- GLX.GLX_CONTEXT_MINOR_VERSION_ARB, 0,
- GLX.GLX_CONTEXT_FLAGS_ARB, 0,
- GLX.GLX_RENDER_TYPE, GLX.GLX_RGBA_TYPE,
- 0
+ /* 0 */ GLX.GLX_CONTEXT_MAJOR_VERSION_ARB, 3,
+ /* 2 */ GLX.GLX_CONTEXT_MINOR_VERSION_ARB, 0,
+ /* 4 */ GLX.GLX_RENDER_TYPE, GLX.GLX_RGBA_TYPE,
+ /* 6 */ GLX.GLX_CONTEXT_FLAGS_ARB, 0 /* GLX.GLX_CONTEXT_DEBUG_BIT_ARB */,
+ /* 8 */ 0, 0,
+ /* 10 */ 0
};
if(glCaps.getGLProfile().isGL3()) {
- attribs[1] |= 3;
- attribs[3] |= 1;
- attribs[5] |= GLX.GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB /* | GLX.GLX_CONTEXT_DEBUG_BIT_ARB */;
+ // Try >= 3.2 core first
+ // and verify with a None drawable binding (default framebuffer)
+ attribs[0+1] = 3;
+ attribs[2+1] = 2;
+ // FIXME NV Bug: attribs[8+0] = GLX.GLX_CONTEXT_PROFILE_MASK_ARB;
+ // FIXME NV Bug: attribs[8+1] = GLX.GLX_CONTEXT_CORE_PROFILE_BIT_ARB;
+
+ context = glXExt.glXCreateContextAttribsARB(display, config.getFBConfig(), share, direct, attribs, 0);
+ if(0!=context) {
+ if (!GLX.glXMakeContextCurrent(display,
+ drawable.getNativeWindow().getSurfaceHandle(),
+ drawable.getNativeWindow().getSurfaceHandle(),
+ context)) {
+ if(DEBUG) {
+ System.err.println("X11GLXContext.createContext couldn't make >= 3.2 core context current - fallback");
+ }
+ GLX.glXMakeContextCurrent(display, 0, 0, 0);
+ GLX.glXDestroyContext(display, context);
+ context = 0;
+ } else if(DEBUG) {
+ System.err.println("X11GLXContext.createContext >= 3.2 available 0x"+Long.toHexString(context));
+ }
+ } else {
+ if(DEBUG) {
+ System.err.println("X11GLXContext.createContext couldn't create >= 3.2 core context - fallback");
+ }
+ }
+ if(0==context) {
+ // Try >= 3.1 forward compatible - last resort for GL3 !
+ attribs[0+1] = 3;
+ attribs[2+1] = 1;
+ attribs[6+1] |= GLX.GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB;
+ attribs[8+0] = 0;
+ attribs[8+1] = 0;
+ }
+ }
+ if(0==context) {
+ // 3.1 or 3.0 ..
+ context = glXExt.glXCreateContextAttribsARB(display, config.getFBConfig(), share, direct, attribs, 0);
+ if(0!=context) {
+ if (!GLX.glXMakeContextCurrent(display,
+ drawable.getNativeWindow().getSurfaceHandle(),
+ drawable.getNativeWindow().getSurfaceHandle(),
+ context)) {
+ if(DEBUG) {
+ System.err.println("X11GLXContext.createContext couldn't make >= 3.0 core context current - fallback");
+ }
+ GLX.glXMakeContextCurrent(display, 0, 0, 0);
+ GLX.glXDestroyContext(display, context);
+ context = 0;
+ } else if(DEBUG) {
+ System.err.println("X11GLXContext.createContext >= 3.0 available 0x"+Long.toHexString(context));
+ }
+ } else {
+ if(DEBUG) {
+ System.err.println("X11GLXContext.createContext couldn't create >= 3.0 core context - fallback");
+ }
+ }
}
- context = glXExt.glXCreateContextAttribsARB(display, config.getFBConfig(), share, direct, attribs, 0);
if(0==context) {
if(glCaps.getGLProfile().isGL3()) {
- if (!GLX.glXMakeContextCurrent(display, 0, 0, 0)) {
- throw new GLException("Error freeing temp OpenGL context");
- }
+ GLX.glXMakeContextCurrent(display, 0, 0, 0);
GLX.glXDestroyContext(display, temp_context);
- throw new GLException("Unable to create OpenGL 3.1 context (have GLX_ARB_create_context)");
+ throw new GLException("Unable to create OpenGL >= 3.1 context (have GLX_ARB_create_context)");
}
// continue with temp context for GL < 3.0
context = temp_context;
+ if (!GLX.glXMakeContextCurrent(display,
+ drawable.getNativeWindow().getSurfaceHandle(),
+ drawable.getNativeWindow().getSurfaceHandle(),
+ context)) {
+ GLX.glXMakeContextCurrent(display, 0, 0, 0);
+ GLX.glXDestroyContext(display, temp_context);
+ throw new GLException("Error making context (old) current: display 0x"+Long.toHexString(display)+", context 0x"+Long.toHexString(context)+", drawable "+drawable);
+ }
if(DEBUG) {
System.err.println("X11GLXContext.createContext done (old ctx < 3.0 - no 3.0) 0x"+Long.toHexString(context));
}
} else {
- if (!GLX.glXMakeContextCurrent(display, 0, 0, 0)) {
- throw new GLException("Error freeing temp OpenGL context");
- }
GLX.glXDestroyContext(display, temp_context);
// need to update the GL func table ..
- if (!GLX.glXMakeContextCurrent(display,
- drawable.getNativeWindow().getSurfaceHandle(),
- drawable.getNativeWindow().getSurfaceHandle(),
- context)) {
- throw new GLException("Error making context (new) current: display 0x"+Long.toHexString(display)+", context 0x"+Long.toHexString(context)+", drawable "+drawable);
- }
updateGLProcAddressTable();
if(DEBUG) {
System.err.println("X11GLXContext.createContext done (new ctx >= 3.0) 0x"+Long.toHexString(context));
@@ -349,7 +399,6 @@ public abstract class X11GLXContext extends GLContextImpl {
}
protected void updateGLProcAddressTable() {
- super.updateGLProcAddressTable();
if (DEBUG) {
System.err.println(getThreadName() + ": !!! Initializing GLX extension address table");
}
@@ -359,6 +408,7 @@ public abstract class X11GLXContext extends GLContextImpl {
glXExtProcAddressTable = new GLXExtProcAddressTable();
}
resetProcAddressTable(getGLXExtProcAddressTable());
+ super.updateGLProcAddressTable();
}
public synchronized String getPlatformExtensionsString() {
@@ -396,11 +446,9 @@ public abstract class X11GLXContext extends GLContextImpl {
private int hasSwapIntervalSGI = 0;
- public void setSwapInterval(int interval) {
+ protected void setSwapIntervalImpl(int interval) {
getDrawableImpl().getFactoryImpl().lockToolkit();
try {
- // FIXME: make the context current first? Currently assumes that
- // will not be necessary. Make the caller do this?
GLXExt glXExt = getGLXExt();
if(0==hasSwapIntervalSGI) {
try {
@@ -409,7 +457,9 @@ public abstract class X11GLXContext extends GLContextImpl {
}
if (hasSwapIntervalSGI>0) {
try {
- glXExt.glXSwapIntervalSGI(interval);
+ if( 0 == glXExt.glXSwapIntervalSGI(interval) ) {
+ currentSwapInterval = interval;
+ }
} catch (Throwable t) { hasSwapIntervalSGI=-1; }
}
} finally {
diff --git a/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11GLXDrawable.java b/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11GLXDrawable.java
index 738714ecb..1abc36c58 100644
--- a/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11GLXDrawable.java
+++ b/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11GLXDrawable.java
@@ -76,26 +76,23 @@ public abstract class X11GLXDrawable extends GLDrawableImpl {
}
}
- public void swapBuffers() throws GLException {
- GLCapabilities caps = (GLCapabilities)getNativeWindow().getGraphicsConfiguration().getNativeGraphicsConfiguration().getChosenCapabilities();
- if (caps.getDoubleBuffered()) {
- boolean didLock = false;
- try {
- if ( !isSurfaceLocked() ) {
- // Usually the surface shall be locked within [makeCurrent .. swap .. release]
- if (lockSurface() == NativeWindow.LOCK_SURFACE_NOT_READY) {
- return;
- }
- didLock=true;
+ protected void swapBuffersImpl() {
+ boolean didLock = false;
+ try {
+ if ( !isSurfaceLocked() ) {
+ // Usually the surface shall be locked within [makeCurrent .. swap .. release]
+ if (lockSurface() == NativeWindow.LOCK_SURFACE_NOT_READY) {
+ return;
}
+ didLock=true;
+ }
- GLX.glXSwapBuffers(component.getDisplayHandle(), component.getSurfaceHandle());
+ GLX.glXSwapBuffers(component.getDisplayHandle(), component.getSurfaceHandle());
- } finally {
- if(didLock) {
- unlockSurface();
- }
- }
+ } finally {
+ if(didLock) {
+ unlockSurface();
+ }
}
}
diff --git a/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11GLXGraphicsConfiguration.java b/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11GLXGraphicsConfiguration.java
index 4cd174bec..dbf69e865 100644
--- a/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11GLXGraphicsConfiguration.java
+++ b/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11GLXGraphicsConfiguration.java
@@ -198,7 +198,7 @@ public class X11GLXGraphicsConfiguration extends X11GraphicsConfiguration implem
String glXExtensions = GLX.glXQueryExtensionsString(display, screen);
if (glXExtensions == null ||
glXExtensions.indexOf("GLX_NV_float_buffer") < 0) {
- throw new GLException("Floating-point pbuffers on X11 currently require NVidia hardware");
+ throw new GLException("Floating-point pbuffers on X11 currently require NVidia hardware: "+glXExtensions);
}
res[idx++] = GLXExt.GLX_FLOAT_COMPONENTS_NV;
res[idx++] = GL.GL_TRUE;
diff --git a/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11GLXGraphicsConfigurationFactory.java b/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11GLXGraphicsConfigurationFactory.java
index 9cb7eac08..074fbda5f 100644
--- a/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11GLXGraphicsConfigurationFactory.java
+++ b/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11GLXGraphicsConfigurationFactory.java
@@ -89,7 +89,7 @@ public class X11GLXGraphicsConfigurationFactory extends GraphicsConfigurationFac
xvis = X11GLXGraphicsConfiguration.XVisualID2XVisualInfo(display, visID);
caps = X11GLXGraphicsConfiguration.XVisualInfo2GLCapabilities(glProfile, display, xvis, onscreen, usePBuffer, isMultisampleAvailable);
- int[] attribs = X11GLXGraphicsConfiguration.GLCapabilities2AttribList(caps, true, isMultisampleAvailable, 0, 0);
+ int[] attribs = X11GLXGraphicsConfiguration.GLCapabilities2AttribList(caps, true, isMultisampleAvailable, display, screen);
int[] count = { -1 };
PointerBuffer fbcfgsL = GLX.glXChooseFBConfigCopied(display, screen, attribs, 0, count, 0);
if (fbcfgsL == null || fbcfgsL.limit()<1) {
@@ -186,19 +186,19 @@ public class X11GLXGraphicsConfigurationFactory extends GraphicsConfigurationFac
AbstractGraphicsDevice absDevice = x11Screen.getDevice();
long display = absDevice.getHandle();
boolean isMultisampleAvailable = GLXUtil.isMultisampleAvailable(display);
- int[] attribs = X11GLXGraphicsConfiguration.GLCapabilities2AttribList(capabilities, true, isMultisampleAvailable, 0, 0);
+ int[] attribs = X11GLXGraphicsConfiguration.GLCapabilities2AttribList(capabilities, true, isMultisampleAvailable, display, screen);
int[] count = { -1 };
fbcfgsL = GLX.glXChooseFBConfigCopied(display, screen, attribs, 0, count, 0);
if (fbcfgsL == null || fbcfgsL.limit()<1) {
if(DEBUG) {
- System.err.println("X11GLXGraphicsConfiguration.chooseGraphicsConfigurationFBConfig: glXChooseFBConfig ("+x11Screen+","+capabilities+"): "+fbcfgsL+", "+count[0]);
+ System.err.println("X11GLXGraphicsConfiguration.chooseGraphicsConfigurationFBConfig: Failed glXChooseFBConfig ("+x11Screen+","+capabilities+"): "+fbcfgsL+", "+count[0]);
}
return null;
}
if( !X11GLXGraphicsConfiguration.GLXFBConfigValid( display, fbcfgsL.get(0) ) ) {
if(DEBUG) {
- System.err.println("X11GLXGraphicsConfiguration.chooseGraphicsConfigurationFBConfig: GLX FBConfig invalid: ("+x11Screen+","+capabilities+"): "+fbcfgsL+", fbcfg: 0x"+Long.toHexString(fbcfgsL.get(0)));
+ System.err.println("X11GLXGraphicsConfiguration.chooseGraphicsConfigurationFBConfig: Failed - GLX FBConfig invalid: ("+x11Screen+","+capabilities+"): "+fbcfgsL+", fbcfg: 0x"+Long.toHexString(fbcfgsL.get(0)));
}
return null;
}
@@ -215,11 +215,19 @@ public class X11GLXGraphicsConfigurationFactory extends GraphicsConfigurationFac
try {
chosen = chooser.chooseCapabilities(capabilities, caps, recommendedIndex);
} catch (NativeWindowException e) {
- throw new GLException(e);
+ if(DEBUG) {
+ e.printStackTrace();
+ }
+ chosen = -1;
}
}
-
- if (chosen < 0 || chosen >= caps.length) {
+ if (chosen < 0) {
+ // keep on going ..
+ if(DEBUG) {
+ System.err.println("X11GLXGraphicsConfiguration.chooseGraphicsConfigurationFBConfig Failed .. unable to choose config, using first");
+ }
+ chosen = 0; // default ..
+ } else if (chosen >= caps.length) {
throw new GLException("GLCapabilitiesChooser specified invalid index (expected 0.." + (caps.length - 1) + ")");
}
@@ -228,9 +236,12 @@ public class X11GLXGraphicsConfigurationFactory extends GraphicsConfigurationFac
retXVisualInfo = GLX.glXGetVisualFromFBConfigCopied(display, fbcfgsL.get(chosen));
if (retXVisualInfo==null) {
if(DEBUG) {
- System.err.println("X11GLXGraphicsConfiguration.chooseGraphicsConfigurationFBConfig: glXGetVisualFromFBConfig ("+x11Screen+", "+fbcfgsL.get(chosen) +": "+fbcfgsL);
+ System.err.println("X11GLXGraphicsConfiguration.chooseGraphicsConfigurationFBConfig: Failed glXGetVisualFromFBConfig ("+x11Screen+", "+fbcfgsL.get(chosen) +" (Continue: "+(false==caps[chosen].isOnscreen())+"):\n\t"+caps[chosen]);
+ }
+ if(caps[chosen].isOnscreen()) {
+ // Onscreen drawables shall have a XVisual ..
+ return null;
}
- return null;
}
} finally {
NativeWindowFactory.getDefaultFactory().getToolkitLock().unlock();
@@ -255,7 +266,7 @@ public class X11GLXGraphicsConfigurationFactory extends GraphicsConfigurationFac
GLCapabilities[] caps = null;
int recommendedIndex = -1;
XVisualInfo retXVisualInfo = null;
- int chosen;
+ int chosen=-1;
NativeWindowFactory.getDefaultFactory().getToolkitLock().lock();
try {
@@ -263,7 +274,7 @@ public class X11GLXGraphicsConfigurationFactory extends GraphicsConfigurationFac
AbstractGraphicsDevice absDevice = x11Screen.getDevice();
long display = absDevice.getHandle();
boolean isMultisampleAvailable = GLXUtil.isMultisampleAvailable(display);
- int[] attribs = X11GLXGraphicsConfiguration.GLCapabilities2AttribList(capabilities, false, isMultisampleAvailable, 0, 0);
+ int[] attribs = X11GLXGraphicsConfiguration.GLCapabilities2AttribList(capabilities, false, isMultisampleAvailable, display, screen);
XVisualInfo[] infos = null;
XVisualInfo recommendedVis = GLX.glXChooseVisualCopied(display, screen, attribs, 0);
@@ -293,9 +304,18 @@ public class X11GLXGraphicsConfigurationFactory extends GraphicsConfigurationFac
try {
chosen = chooser.chooseCapabilities(capabilities, caps, recommendedIndex);
} catch (NativeWindowException e) {
- throw new GLException(e);
+ if(DEBUG) {
+ e.printStackTrace();
+ }
+ chosen = -1;
}
- if (chosen < 0 || chosen >= caps.length) {
+ if (chosen < 0) {
+ // keep on going ..
+ if(DEBUG) {
+ System.err.println("X11GLXGraphicsConfiguration.chooseGraphicsConfigurationXVisual Failed .. unable to choose config, using first");
+ }
+ chosen = 0; // default ..
+ } else if (chosen >= caps.length) {
throw new GLException("GLCapabilitiesChooser specified invalid index (expected 0.." + (caps.length - 1) + ")");
}
if (infos[chosen] == null) {
diff --git a/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11OffscreenGLXDrawable.java b/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11OffscreenGLXDrawable.java
index 51938df5f..768f6b8e8 100644
--- a/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11OffscreenGLXDrawable.java
+++ b/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11OffscreenGLXDrawable.java
@@ -133,6 +133,6 @@ public class X11OffscreenGLXDrawable extends X11GLXDrawable {
getFactoryImpl().unlockToolkit();
}
}
- public void swapBuffers() throws GLException {
+ protected void swapBuffersImpl() {
}
}
diff --git a/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11PbufferGLXDrawable.java b/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11PbufferGLXDrawable.java
index eecd92a53..bee24fa47 100644
--- a/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11PbufferGLXDrawable.java
+++ b/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11PbufferGLXDrawable.java
@@ -148,6 +148,6 @@ public class X11PbufferGLXDrawable extends X11GLXDrawable {
return GLPbuffer.NV_FLOAT;
}
- public void swapBuffers() throws GLException {
+ protected void swapBuffersImpl() {
}
}
diff --git a/src/jogl/classes/com/sun/opengl/util/GLArrayDataClient.java b/src/jogl/classes/com/sun/opengl/util/GLArrayDataClient.java
index e05a77226..ec4c5e393 100644
--- a/src/jogl/classes/com/sun/opengl/util/GLArrayDataClient.java
+++ b/src/jogl/classes/com/sun/opengl/util/GLArrayDataClient.java
@@ -27,13 +27,13 @@ public class GLArrayDataClient extends GLArrayDataWrapper implements GLArrayData
}) != null;
/**
- * @arg index The GL array index
- * @arg name The optional custom name for the GL array index, maybe null.
+ * @param index The GL array index
+ * @param name The optional custom name for the GL array index, maybe null.
* If null, the default name mapping will be used, see 'getPredefinedArrayIndexName(int)'.
* This name might be used as the shader attribute name.
- * @arg comps The array component number
- * @arg dataType The array index GL data type
- * @arg normalized Wheather the data shall be normalized
+ * @param comps The array component number
+ * @param dataType The array index GL data type
+ * @param normalized Wheather the data shall be normalized
*
* @see javax.media.opengl.GLContext#getPredefinedArrayIndexName(int)
*/
diff --git a/src/jogl/classes/com/sun/opengl/util/GLArrayDataServer.java b/src/jogl/classes/com/sun/opengl/util/GLArrayDataServer.java
index e9a5e2754..dc233ce36 100644
--- a/src/jogl/classes/com/sun/opengl/util/GLArrayDataServer.java
+++ b/src/jogl/classes/com/sun/opengl/util/GLArrayDataServer.java
@@ -21,13 +21,13 @@ public class GLArrayDataServer extends GLArrayDataClient implements GLArrayDataE
* EnableVertexAttribArray and VertexAttribPointer calls,
* and a predefined vertex attribute variable name will be choosen.
*
- * @arg index The GL array index
- * @arg name The optional custom name for the GL array index, maybe null.
+ * @param index The GL array index
+ * @param name The optional custom name for the GL array index, maybe null.
* If null, the default name mapping will be used, see 'getPredefinedArrayIndexName(int)'.
* This name might be used as the shader attribute name.
- * @arg comps The array component number
- * @arg dataType The array index GL data type
- * @arg normalized Wheather the data shall be normalized
+ * @param comps The array component number
+ * @param dataType The array index GL data type
+ * @param normalized Wheather the data shall be normalized
*
* @see javax.media.opengl.GLContext#getPredefinedArrayIndexName(int)
*/
diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/ShaderCode.java b/src/jogl/classes/com/sun/opengl/util/glsl/ShaderCode.java
index 6e7512e6a..606d2e1b5 100644
--- a/src/jogl/classes/com/sun/opengl/util/glsl/ShaderCode.java
+++ b/src/jogl/classes/com/sun/opengl/util/glsl/ShaderCode.java
@@ -3,13 +3,18 @@ package com.sun.opengl.util.glsl;
import javax.media.opengl.*;
import com.sun.opengl.util.*;
+import com.sun.opengl.impl.Debug;
import java.util.*;
import java.nio.*;
import java.io.*;
import java.net.*;
+import java.security.*;
public class ShaderCode {
+ public static final boolean DEBUG = Debug.debug("GLSLCode");
+ public static final boolean DEBUG_CODE = Debug.isPropertyDefined("jogl.debug.GLSLCode", true, AccessController.getContext());
+
public static final String SUFFIX_VERTEX_SOURCE = "vp" ;
public static final String SUFFIX_VERTEX_BINARY = "bvp" ;
public static final String SUFFIX_FRAGMENT_SOURCE = "fp" ;
@@ -31,6 +36,11 @@ public class ShaderCode {
shaderType = type;
shader = BufferUtil.newIntBuffer(number);
id = getNextID();
+
+ if(DEBUG_CODE) {
+ System.out.println("Created: "+toString());
+ dumpShaderSource(System.out);
+ }
}
public ShaderCode(int type, int number, int binFormat, Buffer binary) {
@@ -134,61 +144,6 @@ public class ShaderCode {
return res;
}
- public static boolean createAndLoadShader(GL2ES2 gl, IntBuffer shader, int shaderType,
- int binFormat, java.nio.Buffer bin,
- PrintStream verboseOut)
- {
- int err = gl.glGetError(); // flush previous errors ..
- if(err!=GL.GL_NO_ERROR && null!=verboseOut) {
- verboseOut.println("createAndLoadShader: Pre GL Error: 0x"+Integer.toHexString(err));
- }
-
- ShaderUtil.createShader(gl, shaderType, shader);
- err = gl.glGetError();
- if(err!=GL.GL_NO_ERROR) {
- throw new GLException("createAndLoadShader: CreateShader failed, GL Error: 0x"+Integer.toHexString(err));
- }
-
-
- ShaderUtil.shaderBinary(gl, shader, binFormat, bin);
-
- err = gl.glGetError();
- if(err!=GL.GL_NO_ERROR && null!=verboseOut) {
- verboseOut.println("createAndLoadShader: ShaderBinary failed, GL Error: 0x"+Integer.toHexString(err));
- }
- return err == GL.GL_NO_ERROR;
- }
-
- public static boolean createAndCompileShader(GL2ES2 gl, IntBuffer shader, int shaderType,
- java.lang.String[][] sources,
- PrintStream verboseOut)
- {
- int err = gl.glGetError(); // flush previous errors ..
- if(err!=GL.GL_NO_ERROR && null!=verboseOut) {
- verboseOut.println("createAndCompileShader: Pre GL Error: 0x"+Integer.toHexString(err));
- }
-
- ShaderUtil.createShader(gl, shaderType, shader);
- err = gl.glGetError();
- if(err!=GL.GL_NO_ERROR) {
- throw new GLException("createAndCompileShader: CreateShader failed, GL Error: 0x"+Integer.toHexString(err));
- }
-
- ShaderUtil.shaderSource(gl, shader, sources);
- err = gl.glGetError();
- if(err!=GL.GL_NO_ERROR) {
- throw new GLException("createAndCompileShader: ShaderSource failed, GL Error: 0x"+Integer.toHexString(err));
- }
-
- ShaderUtil.compileShader(gl, shader);
- err = gl.glGetError();
- if(err!=GL.GL_NO_ERROR && null!=verboseOut) {
- verboseOut.println("createAndCompileShader: CompileShader failed, GL Error: 0x"+Integer.toHexString(err));
- }
-
- return ShaderUtil.isShaderStatusValid(gl, shader, gl.GL_COMPILE_STATUS, verboseOut) && err == GL.GL_NO_ERROR;
- }
-
/**
* returns the uniq shader id as an integer
* @see #key()
@@ -231,11 +186,11 @@ public class ShaderCode {
// Create & Compile the vertex/fragment shader objects
if(null!=shaderSource) {
- valid=createAndCompileShader(gl, shader, shaderType,
- shaderSource, verboseOut);
+ valid=ShaderUtil.createAndCompileShader(gl, shader, shaderType,
+ shaderSource, verboseOut);
} else if(null!=shaderBinary) {
- valid=createAndLoadShader(gl, shader, shaderType,
- shaderBinaryFormat, shaderBinary, verboseOut);
+ valid=ShaderUtil.createAndLoadShader(gl, shader, shaderType,
+ shaderBinaryFormat, shaderBinary, verboseOut);
} else {
throw new GLException("no code (source or binary)");
}
@@ -282,6 +237,31 @@ public class ShaderCode {
return buf.toString();
}
+ public void dumpShaderSource(PrintStream out) {
+ if(null==shaderSource) {
+ out.println("<no shader source>");
+ return;
+ }
+ int sourceNum = (null!=shaderSource)?shaderSource.length:0;
+ int shaderNum = (null!=shader)?shader.capacity():0;
+ for(int i=0; i<shaderNum; i++) {
+ out.println("");
+ out.println("Shader #"+i+"/"+shaderNum+" name "+shader.get(i));
+ out.println("--------------------------------------------------------------");
+ if(i>=sourceNum) {
+ out.println("<no shader source>");
+ } else {
+ String[] src = shaderSource[i];
+ for(int j=0; j<src.length; j++) {
+ out.println("Segment "+j+"/"+src.length+" :");
+ out.println(src[j]);
+ out.println("");
+ }
+ }
+ out.println("--------------------------------------------------------------");
+ }
+ }
+
public static void readShaderSource(ClassLoader context, String path, URL url, StringBuffer result) {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/ShaderState.java b/src/jogl/classes/com/sun/opengl/util/glsl/ShaderState.java
index bab9ef4f3..8712ac7e2 100644
--- a/src/jogl/classes/com/sun/opengl/util/glsl/ShaderState.java
+++ b/src/jogl/classes/com/sun/opengl/util/glsl/ShaderState.java
@@ -3,14 +3,17 @@ package com.sun.opengl.util.glsl;
import javax.media.opengl.*;
import com.sun.opengl.util.*;
+import com.sun.opengl.impl.Debug;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.nio.*;
import java.io.PrintStream;
+import java.security.*;
public class ShaderState {
+ public static final boolean DEBUG = Debug.isPropertyDefined("jogl.debug.GLSLState", true, AccessController.getContext());
public ShaderState() {
}
@@ -77,8 +80,10 @@ public class ShaderState {
int curId = (null!=shaderProgram)?shaderProgram.id():-1;
int newId = (null!=prog)?prog.id():-1;
System.err.println("Info: attachShaderProgram: "+curId+" -> "+newId+"\n\t"+shaderProgram+"\n\t"+prog);
- Throwable tX = new Throwable("Info: attachShaderProgram: Trace");
- tX.printStackTrace();
+ if(verbose) {
+ Throwable tX = new Throwable("Info: attachShaderProgram: Trace");
+ tX.printStackTrace();
+ }
}
if(null!=shaderProgram) {
if(shaderProgram.equals(prog)) {
@@ -313,7 +318,7 @@ public class ShaderState {
* Even if the attribute is not found in the current shader,
* it is stored in this state.
*
- * @arg data the GLArrayData's name must match the attributes one,
+ * @param data the GLArrayData's name must match the attributes one,
* it's index will be set with the attribute's location,
* if found.
*
@@ -544,7 +549,7 @@ public class ShaderState {
* Even if the uniform is not found in the current shader,
* it is stored in this state.
*
- * @arg data the GLUniforms's name must match the uniform one,
+ * @param data the GLUniforms's name must match the uniform one,
* it's index will be set with the uniforms's location,
* if found.
*
@@ -635,7 +640,6 @@ public class ShaderState {
return buf.toString();
}
- protected static final boolean DEBUG = false;
protected boolean verbose = false;
protected ShaderProgram shaderProgram=null;
protected HashMap attribMap2Idx = new HashMap();
diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/ShaderUtil.java b/src/jogl/classes/com/sun/opengl/util/glsl/ShaderUtil.java
index d1bb8b32b..390fb27c7 100644
--- a/src/jogl/classes/com/sun/opengl/util/glsl/ShaderUtil.java
+++ b/src/jogl/classes/com/sun/opengl/util/glsl/ShaderUtil.java
@@ -60,6 +60,14 @@ public class ShaderUtil {
public abstract void attachShader(GL gl, int program, IntBuffer shaders);
public abstract void detachShader(GL gl, int program, IntBuffer shaders);
public abstract void deleteShader(GL gl, IntBuffer shaders);
+
+ public abstract boolean createAndLoadShader(GL gl, IntBuffer shader, int shaderType,
+ int binFormat, java.nio.Buffer bin,
+ PrintStream verboseOut);
+
+ public abstract boolean createAndCompileShader(GL gl, IntBuffer shader, int shaderType,
+ java.lang.String[][] sources,
+ PrintStream verboseOut);
}
static class GL2ES2Impl extends Impl {
@@ -307,6 +315,64 @@ public class ShaderUtil {
}
}
+
+ public boolean createAndLoadShader(GL _gl, IntBuffer shader, int shaderType,
+ int binFormat, java.nio.Buffer bin,
+ PrintStream verboseOut)
+ {
+ GL2ES2 gl = _gl.getGL2ES2();
+ int err = gl.glGetError(); // flush previous errors ..
+ if(err!=GL.GL_NO_ERROR && null!=verboseOut) {
+ verboseOut.println("createAndLoadShader: Pre GL Error: 0x"+Integer.toHexString(err));
+ }
+
+ createShader(gl, shaderType, shader);
+ err = gl.glGetError();
+ if(err!=GL.GL_NO_ERROR) {
+ throw new GLException("createAndLoadShader: CreateShader failed, GL Error: 0x"+Integer.toHexString(err));
+ }
+
+
+ shaderBinary(gl, shader, binFormat, bin);
+
+ err = gl.glGetError();
+ if(err!=GL.GL_NO_ERROR && null!=verboseOut) {
+ verboseOut.println("createAndLoadShader: ShaderBinary failed, GL Error: 0x"+Integer.toHexString(err));
+ }
+ return err == GL.GL_NO_ERROR;
+ }
+
+ public boolean createAndCompileShader(GL _gl, IntBuffer shader, int shaderType,
+ java.lang.String[][] sources,
+ PrintStream verboseOut)
+ {
+ GL2ES2 gl = _gl.getGL2ES2();
+ int err = gl.glGetError(); // flush previous errors ..
+ if(err!=GL.GL_NO_ERROR && null!=verboseOut) {
+ verboseOut.println("createAndCompileShader: Pre GL Error: 0x"+Integer.toHexString(err));
+ }
+
+ createShader(gl, shaderType, shader);
+ err = gl.glGetError();
+ if(err!=GL.GL_NO_ERROR) {
+ throw new GLException("createAndCompileShader: CreateShader failed, GL Error: 0x"+Integer.toHexString(err));
+ }
+
+ shaderSource(gl, shader, sources);
+ err = gl.glGetError();
+ if(err!=GL.GL_NO_ERROR) {
+ throw new GLException("createAndCompileShader: ShaderSource failed, GL Error: 0x"+Integer.toHexString(err));
+ }
+
+ compileShader(gl, shader);
+ err = gl.glGetError();
+ if(err!=GL.GL_NO_ERROR && null!=verboseOut) {
+ verboseOut.println("createAndCompileShader: CompileShader failed, GL Error: 0x"+Integer.toHexString(err));
+ }
+
+ return isShaderStatusValid(gl, shader, gl.GL_COMPILE_STATUS, verboseOut) && err == GL.GL_NO_ERROR;
+ }
+
}
public static String getShaderInfoLog(GL gl, int shaderObj) {
@@ -385,6 +451,18 @@ public class ShaderUtil {
getImpl(gl).deleteShader(gl, shaders);
}
+ public static boolean createAndLoadShader(GL gl, IntBuffer shader, int shaderType,
+ int binFormat, java.nio.Buffer bin,
+ PrintStream verboseOut) {
+ return getImpl(gl).createAndLoadShader(gl, shader, shaderType, binFormat, bin, verboseOut);
+ }
+
+ public static boolean createAndCompileShader(GL gl, IntBuffer shader, int shaderType,
+ java.lang.String[][] sources,
+ PrintStream verboseOut) {
+ return getImpl(gl).createAndCompileShader(gl, shader, shaderType, sources, verboseOut);
+ }
+
private static Impl getImpl(GL _gl) {
GL2ES2 gl = _gl.getGL2ES2();
GLContext context = gl.getContext();
diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/FixedFuncUtil.java b/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/FixedFuncUtil.java
index 9c8a65173..4149aec69 100644
--- a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/FixedFuncUtil.java
+++ b/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/FixedFuncUtil.java
@@ -14,12 +14,12 @@ import com.sun.opengl.util.glsl.fixedfunc.impl.*;
*/
public class FixedFuncUtil {
/**
- * @return If gl is a GL2ES1, return the type cast object,
+ * @return If gl is a GL2ES1 and force is false, return the type cast object,
* otherwise create a fixed function emulation pipeline with the GL2ES2 impl.
* @throws GLException if the GL object is neither GL2ES1 nor GL2ES2
*/
- public static final GL2ES1 getFixedFuncImpl(GL gl) {
- if(gl.isGL2ES1()) {
+ public static final GL2ES1 getFixedFuncImpl(GL gl, boolean force) {
+ if(!force && gl.isGL2ES1()) {
return gl.getGL2ES1();
} else if(gl.isGL2ES2()) {
GL2ES2 es2 = gl.getGL2ES2();
@@ -32,6 +32,15 @@ public class FixedFuncUtil {
}
/**
+ * @return If gl is a GL2ES1, return the type cast object,
+ * otherwise create a fixed function emulation pipeline with the GL2ES2 impl.
+ * @throws GLException if the GL object is neither GL2ES1 nor GL2ES2
+ */
+ public static final GL2ES1 getFixedFuncImpl(GL gl) {
+ return getFixedFuncImpl(gl, false);
+ }
+
+ /**
* Mapping fixed function (client) array indices to
* GLSL array attribute names.
*
diff --git a/src/jogl/classes/javax/media/opengl/GLAutoDrawable.java b/src/jogl/classes/javax/media/opengl/GLAutoDrawable.java
index 43347c416..a94c14f33 100644
--- a/src/jogl/classes/javax/media/opengl/GLAutoDrawable.java
+++ b/src/jogl/classes/javax/media/opengl/GLAutoDrawable.java
@@ -208,6 +208,7 @@ public interface GLAutoDrawable extends GLDrawable {
This should only be called from within the GLEventListener's
callback methods, and usually only from within the init()
method, in order to install a composable pipeline. See the JOGL
- demos for examples. */
- public void setGL(GL gl);
+ demos for examples.
+ @return the set GL pipeline or null if not successful */
+ public GL setGL(GL gl);
}
diff --git a/src/jogl/classes/javax/media/opengl/GLBase.java b/src/jogl/classes/javax/media/opengl/GLBase.java
index efd2eedd1..92498077b 100644
--- a/src/jogl/classes/javax/media/opengl/GLBase.java
+++ b/src/jogl/classes/javax/media/opengl/GLBase.java
@@ -7,9 +7,53 @@ package javax.media.opengl;
import java.nio.*;
/**
- * The base interface from which all GL profiles derive, providing
- * checked conversion down to concrete profiles, and access to the
- * OpenGL context associated with the GL.
+ * <P>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.</P>
+ *
+ * <P> While the APIs for vendor extensions are unconditionally
+ * exposed, the underlying functions may not be present. The method
+ * {@link #isFunctionAvailable} should be used to query the
+ * availability of any non-core function before it is used for the
+ * first time; for example,
+ * <code>gl.isFunctionAvailable("glProgramStringARB")</code>. 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 {@link GLException} to be raised. </P>
+ *
+ * {@link #isExtensionAvailable} may also be used to determine whether
+ * a specific extension is available before calling the routines or
+ * using the functionality it exposes: for example,
+ * <code>gl.isExtensionAvailable("GL_ARB_vertex_program");</code>.
+ * 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,
+ * <code>gl.isExtensionAvailable("GL_VERSION_1_5");</code>.
+ *
+ * <P> Exceptions to the window system extension naming rules:
+ *
+ * <UL>
+ *
+ * <LI> The memory allocators for the NVidia vertex_array_range (VAR)
+ * extension, in particular <code>wglAllocateMemoryNV</code> /
+ * <code>glXAllocateMemoryNV</code> and associated routines. {@link
+ * #glAllocateMemoryNV} has been provided for window system-independent
+ * access to VAR. {@link #isFunctionAvailable} will translate an argument
+ * of "glAllocateMemoryNV" or "glFreeMemoryNV" into the appropriate
+ * window system-specific name. </P>
+ *
+ * <LI> 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 {@link #isExtensionAvailable} with an argument of
+ * "GL_ARB_pbuffer" or "GL_ARB_pixel_format".
+ *
+ * </UL> <P>
+ *
*/
public interface GLBase {
@@ -63,6 +107,12 @@ public interface GLBase {
*/
public boolean isGL2ES2();
+ /**
+ * Indicates whether this GL object conforms to the GL2GL3 compatible profile.
+ * @return whether this GL object conforms to the GL2GL3 profile
+ */
+ public boolean isGL2GL3();
+
/** Indicates whether this GL object supports GLSL. */
public boolean hasGLSL();
@@ -116,14 +166,115 @@ public interface GLBase {
public GL2ES2 getGL2ES2() throws GLException;
/**
- * Returns the GLContext with which this GL object is associated.
- * @return the GLContext with which this GL object is associated
+ * Casts this object to the GL2GL3 interface.
+ * @return this object cast to the GL2GL3 interface
+ * @throws GLException if this GLObject is not a GL2GL3 implementation
*/
- public GLContext getContext();
+ public GL2GL3 getGL2GL3() throws GLException;
/**
* Returns the GLProfile with which this GL object is associated.
* @return the GLProfile with which this GL object is associated
*/
public GLProfile getGLProfile();
+
+ /**
+ * Returns the GLContext with which this GL object is associated.
+ * @return the GLContext with which this GL object is associated
+ */
+ public GLContext getContext();
+
+ /**
+ * Returns true if the specified OpenGL core- or extension-function can be
+ * used successfully through this GL instance given the current host (OpenGL
+ * <i>client</i>) and display (OpenGL <i>server</i>) configuration.<P>
+ * By "successfully" we mean that the function is both <i>callable</i>
+ * on the machine running the program and <i>available</i> on the current
+ * display.<P>
+ *
+ * In order to call a function successfully, the function must be both
+ * <i>callable</i> on the machine running the program and <i>available</i> 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. <P>
+ *
+ * A GL function is <i>callable</i> if it is successfully linked at runtime,
+ * hence the GLContext must be made current at least once.
+ *
+ * @param glFunctionName the name of the OpenGL function (e.g., use
+ * "glBindRenderbufferEXT" or "glBindRenderbuffer" to check if {@link
+ * #glBindRenderbuffer(int,int)} is available).
+ */
+ public boolean isFunctionAvailable(String glFunctionName);
+
+ /**
+ * Returns true if the specified OpenGL extension can be
+ * used successfully through this GL instance given the current host (OpenGL
+ * <i>client</i>) and display (OpenGL <i>server</i>) configuration.<P>
+ *
+ * @param glExtensionName the name of the OpenGL extension (e.g.,
+ * "GL_ARB_vertex_program").
+ */
+ public boolean isExtensionAvailable(String glExtensionName);
+
+ /** 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.
+
+ @see #getSwapInterval
+ @throws GLException if this context is not the current
+ */
+ public void setSwapInterval(int interval);
+
+ /** Provides a platform-independent way to get the swap
+ interval set by {@link #setSwapInterval}. <br>
+
+ If the interval is not set by {@link #setSwapInterval} yet,
+ -1 is returned, indicating that the platforms default
+ is being used.
+
+ @see #setSwapInterval
+ */
+ public int getSwapInterval();
+
+ /**
+ * 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.
+ */
+ public Object getPlatformGLExtensions();
+
+ /**
+ * 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.
+ *
+ * <P>
+ *
+ * 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.
+ */
+ public Object getExtension(String extensionName);
}
+
diff --git a/src/jogl/classes/javax/media/opengl/GLContext.java b/src/jogl/classes/javax/media/opengl/GLContext.java
index a2bff729a..8ff52b6e9 100644
--- a/src/jogl/classes/javax/media/opengl/GLContext.java
+++ b/src/jogl/classes/javax/media/opengl/GLContext.java
@@ -205,8 +205,10 @@ public abstract class GLContext {
/**
* Sets the GL pipeline object for this GLContext.
+ *
+ * @return the set GL pipeline or null if not successful
*/
- public abstract void setGL(GL gl);
+ public abstract GL setGL(GL gl);
/**
* Returns the attached user object for the given name to this GLContext.
diff --git a/src/jogl/classes/javax/media/opengl/GLDrawableFactory.java b/src/jogl/classes/javax/media/opengl/GLDrawableFactory.java
index cee721fa6..1a18a60f8 100644
--- a/src/jogl/classes/javax/media/opengl/GLDrawableFactory.java
+++ b/src/jogl/classes/javax/media/opengl/GLDrawableFactory.java
@@ -106,16 +106,14 @@ public abstract class GLDrawableFactory {
}
eglFactory = tmp;
- nativeOSType = NativeWindowFactory.getNativeWindowType(false);
+ nativeOSType = NativeWindowFactory.getNativeWindowType(true);
String factoryClassName = null;
tmp = null;
try {
factoryClassName = Debug.getProperty("jogl.gldrawablefactory.class.name", true, AccessController.getContext());
if (null == factoryClassName) {
- if ( nativeOSType.equals(NativeWindowFactory.TYPE_EGL) ) {
- // use egl*Factory ..
- } else if ( nativeOSType.equals(NativeWindowFactory.TYPE_X11) ) {
+ if ( nativeOSType.equals(NativeWindowFactory.TYPE_X11) ) {
factoryClassName = "com.sun.opengl.impl.x11.glx.X11GLXDrawableFactory";
} else if ( nativeOSType.equals(NativeWindowFactory.TYPE_WINDOWS) ) {
factoryClassName = "com.sun.opengl.impl.windows.wgl.WindowsWGLDrawableFactory";
@@ -126,10 +124,16 @@ public abstract class GLDrawableFactory {
factoryClassName = macosxFactoryClassNameCGL;
}
} else {
- throw new GLException("Unsupported NativeWindow type: "+nativeOSType);
+ // may use egl*Factory ..
+ if (GLProfile.DEBUG) {
+ System.err.println("GLDrawableFactory.static - No Native OS Factory for: "+nativeOSType);
+ }
}
}
if (null != factoryClassName) {
+ if (GLProfile.DEBUG) {
+ System.err.println("GLDrawableFactory.static - Native OS Factory for: "+nativeOSType+": "+factoryClassName);
+ }
tmp = (GLDrawableFactory) NWReflection.createInstance(factoryClassName);
}
} catch (Throwable t) {
@@ -144,7 +148,7 @@ public abstract class GLDrawableFactory {
/**
* Returns the sole GLDrawableFactory instance.
*
- * @arg glProfile GLProfile to determine the factory type, ie EGLDrawableFactory,
+ * @param glProfile GLProfile to determine the factory type, ie EGLDrawableFactory,
* or one of the native GLDrawableFactory's, ie X11/GLX, Windows/WGL or MacOSX/CGL.
*/
public static GLDrawableFactory getFactory(GLProfile glProfile) throws GLException {
diff --git a/src/jogl/classes/javax/media/opengl/GLPipelineFactory.java b/src/jogl/classes/javax/media/opengl/GLPipelineFactory.java
new file mode 100644
index 000000000..63b50cb3c
--- /dev/null
+++ b/src/jogl/classes/javax/media/opengl/GLPipelineFactory.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * - Redistribution of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistribution in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * Neither the name of Sun Microsystems, Inc. or the names of
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * This software is provided "AS IS," without a warranty of any kind. ALL
+ * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
+ * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
+ * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
+ * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
+ * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
+ * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
+ * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
+ * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
+ * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
+ * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ *
+ * You acknowledge that this software is not designed or intended for use
+ * in the design, construction, operation or maintenance of any nuclear
+ * facility.
+ */
+
+package javax.media.opengl;
+
+import java.lang.reflect.*;
+import java.util.StringTokenizer;
+
+import com.sun.opengl.impl.*;
+
+/**
+ * Factory for pipelining GL instances
+ */
+public class GLPipelineFactory {
+ public static final boolean DEBUG = Debug.debug("GLPipelineFactory");
+
+ /**
+ * Creates a pipelined GL instance using the given downstream <code>downstream</code>
+ * and optional arguments <code>additionalArgs</code> for the constructor.<br>
+ *
+ * The upstream GL instance is determined as follows:
+ * <ul>
+ * <li> Use <code>pipelineClazzBaseName</code> as the class name's full basename, incl. package name</li>
+ * <li> For the <code>downstream</code> class and it's superclasses, do:</li>
+ * <ul>
+ * <li> For all <code>downstream</code> class and superclass interfaces, do:</li>
+ * <ul>
+ * <li> If <code>reqInterface</code> is not null and the interface is unequal, continue loop.</li>
+ * <li> If <code>downstream</code> is not instance of interface, continue loop.</li>
+ * <li> If upstream class is available use it, end loop.</li>
+ * </ul>
+ * </ul>
+ * </ul><br>
+ *
+ * @param pipelineClazzBaseName the basename of the pipline class name
+ * @param reqInterface optional requested interface to be used, may be null, in which case the first matching one is used
+ * @param downstream is always the 1st argument for the upstream constructor
+ * @param additionalArgs additional arguments for the upstream constructor
+ */
+ public static final GL create(String pipelineClazzBaseName, Class reqInterface, GL downstream, Object[] additionalArgs) {
+ Class downstreamClazz = downstream.getClass();
+ Class upstreamClazz = null;
+ Class interfaceClazz = null;
+
+ if(DEBUG) {
+ System.out.println("GLPipelineFactory: Start "+downstreamClazz.getName()+", req. Interface: "+reqInterface+" -> "+pipelineClazzBaseName);
+ }
+
+ // For all classes: child -> parent
+ do {
+ // For all interfaces: right -> left == child -> parent
+ // It is important that this matches with the gluegen cfg file's 'Implements' clause !
+ Class[] clazzes = downstreamClazz.getInterfaces();
+ for(int i=clazzes.length-1; null==upstreamClazz && i>=0; i--) {
+ if(DEBUG) {
+ System.out.println("GLPipelineFactory: Try "+downstreamClazz.getName()+" Interface["+i+"]: "+clazzes[i].getName());
+ }
+ if( reqInterface != null && !reqInterface.getName().equals(clazzes[i].getName()) ) {
+ if(DEBUG) {
+ System.out.println("GLPipelineFactory: requested Interface "+reqInterface+" is _not_ "+ clazzes[i].getName());
+ }
+ continue; // not the requested one ..
+ }
+ if( ! clazzes[i].isInstance(downstream) ) {
+ if(DEBUG) {
+ System.out.println("GLPipelineFactory: "+downstream.getClass().getName() + " is _not_ instance of "+ clazzes[i].getName());
+ }
+ continue; // not a compatible one
+ } else {
+ if(DEBUG) {
+ System.out.println("GLPipelineFactory: "+downstream.getClass().getName() + " _is_ instance of "+ clazzes[i].getName());
+ }
+ }
+ upstreamClazz = getUpstreamClazz(clazzes[i], pipelineClazzBaseName);
+ if( null != upstreamClazz ) {
+ interfaceClazz = clazzes[i];
+ }
+ }
+
+ if(null==upstreamClazz) {
+ downstreamClazz = downstreamClazz.getSuperclass();
+ }
+ } while (null!=downstreamClazz && null==upstreamClazz);
+
+
+ if(null==upstreamClazz) {
+ throw new GLException("No pipeline ("+pipelineClazzBaseName+"*) available for :"+downstream.getClass().getName());
+ }
+
+ if(DEBUG) {
+ System.out.println("GLPipelineFactory: Got : "+ upstreamClazz.getName()+", base interface: "+interfaceClazz.getName());
+ }
+
+ Class[] cstrArgTypes = new Class[ 1 + ( ( null==additionalArgs ) ? 0 : additionalArgs.length ) ] ;
+ {
+ int i = 0;
+ cstrArgTypes[i++] = interfaceClazz;
+ for(int j=0; null!=additionalArgs && j<additionalArgs.length; j++) {
+ cstrArgTypes[i++] = additionalArgs[j].getClass();
+ }
+ }
+ Constructor cstr = null;
+ try {
+ cstr = upstreamClazz.getDeclaredConstructor( cstrArgTypes );
+ } catch(NoSuchMethodException nsme) {
+ throw new GLException("Couldn't find pipeline constructor: " + upstreamClazz.getName() +
+ " ( "+getArgsClassNameList(downstreamClazz, additionalArgs) +" )");
+ }
+ Object instance = null;
+ try {
+ Object[] cstrArgs = new Object[ 1 + ( ( null==additionalArgs ) ? 0 : additionalArgs.length ) ] ;
+ {
+ int i = 0;
+ cstrArgs[i++] = downstream;
+ for(int j=0; null!=additionalArgs && j<additionalArgs.length; j++) {
+ cstrArgs[i++] = additionalArgs[j];
+ }
+ }
+ instance = cstr.newInstance( cstrArgs ) ;
+ } catch (Throwable t) { t.printStackTrace(); }
+ if(null==instance) {
+ throw new GLException("Couldn't create instance of pipeline: "+upstreamClazz.getName()+
+ " ( "+getArgsClassNameList(downstreamClazz, additionalArgs) +" )");
+ }
+ if( ! (instance instanceof GL) ) {
+ throw new GLException(upstreamClazz.getName()+" not an instance of GL");
+ }
+ return (GL) instance;
+ }
+
+ private static final String getArgsClassNameList(Class arg0, Object[] args) {
+ StringBuffer sb = new StringBuffer();
+ sb.append(arg0.getName());
+ if(args!=null) {
+ for(int j=0; j<args.length; j++) {
+ sb.append(", ");
+ sb.append(args[j].getClass().getName());
+ }
+ }
+ return sb.toString();
+ }
+
+ private static final Class getUpstreamClazz(Class downstreamClazz, String pipelineClazzBaseName) {
+ String downstreamClazzName = downstreamClazz.getName();
+
+ StringTokenizer st = new StringTokenizer(downstreamClazzName, ".");
+ String downstreamClazzBaseName = downstreamClazzName;
+ while(st.hasMoreTokens()) {
+ downstreamClazzBaseName = st.nextToken();
+ }
+ String upstreamClazzName = pipelineClazzBaseName+downstreamClazzBaseName;
+
+ Class upstreamClazz = null;
+ try {
+ upstreamClazz = Class.forName(upstreamClazzName, true, GLPipelineFactory.class.getClassLoader());
+ } catch (Throwable e) { e.printStackTrace(); }
+
+ return upstreamClazz;
+ }
+}
+
diff --git a/src/jogl/classes/javax/media/opengl/GLProfile.java b/src/jogl/classes/javax/media/opengl/GLProfile.java
index ead5f6396..756c80009 100644
--- a/src/jogl/classes/javax/media/opengl/GLProfile.java
+++ b/src/jogl/classes/javax/media/opengl/GLProfile.java
@@ -78,10 +78,13 @@ public class GLProfile implements Cloneable {
/** The intersection of the desktop GL3, GL2 and embedded ES2 profile */
public static final String GL2ES2 = "GL2ES2";
+ /** The intersection of the desktop GL3 and GL2 profile */
+ public static final String GL2GL3 = "GL2GL3";
+
/**
- * All GL Profiles in the order of default detection: GL2, GL2ES2, GL2ES1, GLES2, GLES1, GL3
+ * All GL Profiles in the order of default detection: GL2, GL2ES2, GL2ES1, GLES2, GLES1, GL2GL3, GL3
*/
- public static final String[] GL_PROFILE_LIST_ALL = new String[] { GL2, GL2ES2, GL2ES1, GLES2, GLES1, GL3 };
+ public static final String[] GL_PROFILE_LIST_ALL = new String[] { GL2, GL2ES2, GL2ES1, GLES2, GLES1, GL2GL3, GL3 };
/**
* All GL2ES2 Profiles in the order of default detection: GL2ES2, GL2, GLES2, GL3
@@ -273,6 +276,11 @@ public class GLProfile implements Cloneable {
return GL2ES2.equals(profile) || isGL2() || isGL3() || isGLES2() ;
}
+ /** Indicates whether this profile is capable os GL2GL3. */
+ public final boolean isGL2GL3() {
+ return GL2GL3.equals(profile) || isGL2() || isGL3() ;
+ }
+
/** Indicates whether this profile uses the native OpenGL ES1 implementations. */
public final boolean usesNativeGLES1() {
return GLES1.equals(profileImpl) || GL2ES1.equals(profileImpl) ;
@@ -709,6 +717,8 @@ public class GLProfile implements Cloneable {
System.err.println("GLProfile.static hasGL3Impl "+hasGL3Impl);
System.err.println("GLProfile.static hasGL2Impl "+hasGL2Impl);
System.err.println("GLProfile.static hasGL2ES12Impl "+hasGL2ES12Impl);
+ System.err.println("GLProfile.static hasEGLDynLookup "+hasEGLDynLookup);
+ System.err.println("GLProfile.static hasEGLDrawableFactory "+hasEGLDrawableFactory);
System.err.println("GLProfile.static hasGLES2Impl "+hasGLES2Impl);
System.err.println("GLProfile.static hasGLES1Impl "+hasGLES1Impl);
}
@@ -758,10 +768,10 @@ public class GLProfile implements Cloneable {
*/
private static String computeProfileImpl(String profile) {
if (GL2ES1.equals(profile)) {
- if(hasGL2Impl) {
- return GL2;
- } else if(hasGL2ES12Impl) {
+ if(hasGL2ES12Impl) {
return GL2ES12;
+ } else if(hasGL2Impl) {
+ return GL2;
} else if(hasGLES1Impl) {
return GLES1;
}
@@ -779,6 +789,8 @@ public class GLProfile implements Cloneable {
return GL3;
} else if(GL2.equals(profile) && hasGL2Impl) {
return GL2;
+ } else if(GL2GL3.equals(profile) && hasGL2Impl) {
+ return GL2;
} else if(GLES2.equals(profile) && hasGLES2Impl) {
return GLES2;
} else if(GLES1.equals(profile) && hasGLES1Impl) {
diff --git a/src/jogl/classes/javax/media/opengl/GLUniformData.java b/src/jogl/classes/javax/media/opengl/GLUniformData.java
index 8b5fb1a03..f628ce35a 100644
--- a/src/jogl/classes/javax/media/opengl/GLUniformData.java
+++ b/src/jogl/classes/javax/media/opengl/GLUniformData.java
@@ -10,7 +10,7 @@ public class GLUniformData {
*
* Number of objects is 1
*
- * @arg components number of elements of one object, ie 4 for GL_FLOAT_VEC4,
+ * @param components number of elements of one object, ie 4 for GL_FLOAT_VEC4,
*/
public GLUniformData(String name, int val) {
init(name, 1, new Integer(val));
@@ -21,7 +21,7 @@ public class GLUniformData {
*
* Number of objects is 1
*
- * @arg components number of elements of one object, ie 4 for GL_FLOAT_VEC4,
+ * @param components number of elements of one object, ie 4 for GL_FLOAT_VEC4,
*/
public GLUniformData(String name, float val) {
init(name, 1, new Float(val));
@@ -32,7 +32,7 @@ public class GLUniformData {
*
* Number of objects is calculated by data.limit()/components
*
- * @arg components number of elements of one object, ie 4 for GL_FLOAT_VEC4,
+ * @param components number of elements of one object, ie 4 for GL_FLOAT_VEC4,
*/
public GLUniformData(String name, int components, IntBuffer data) {
init(name, components, data);
@@ -43,7 +43,7 @@ public class GLUniformData {
*
* Number of objects is calculated by data.limit()/components
*
- * @arg components number of elements of one object, ie 4 for GL_FLOAT_VEC4,
+ * @param components number of elements of one object, ie 4 for GL_FLOAT_VEC4,
*/
public GLUniformData(String name, int components, FloatBuffer data) {
init(name, components, data);
@@ -54,8 +54,8 @@ public class GLUniformData {
*
* Number of objects is calculated by data.limit()/(rows*columns)
*
- * @arg rows the matrix rows
- * @arg column the matrix column
+ * @param rows the matrix rows
+ * @param column the matrix column
*/
public GLUniformData(String name, int rows, int columns, FloatBuffer data) {
init(name, rows, columns, data);
diff --git a/src/jogl/classes/javax/media/opengl/awt/GLCanvas.java b/src/jogl/classes/javax/media/opengl/awt/GLCanvas.java
index 4282e9985..038d6d280 100644
--- a/src/jogl/classes/javax/media/opengl/awt/GLCanvas.java
+++ b/src/jogl/classes/javax/media/opengl/awt/GLCanvas.java
@@ -486,11 +486,13 @@ public class GLCanvas extends Canvas implements AWTGLAutoDrawable {
return (context == null) ? null : context.getGL();
}
- public void setGL(GL gl) {
+ public GL setGL(GL gl) {
GLContext context = getContext();
if (context != null) {
context.setGL(gl);
+ return gl;
}
+ return null;
}
diff --git a/src/jogl/classes/javax/media/opengl/awt/GLJPanel.java b/src/jogl/classes/javax/media/opengl/awt/GLJPanel.java
index dd2a487e7..fe55b2dbd 100644
--- a/src/jogl/classes/javax/media/opengl/awt/GLJPanel.java
+++ b/src/jogl/classes/javax/media/opengl/awt/GLJPanel.java
@@ -404,11 +404,13 @@ public class GLJPanel extends JPanel implements AWTGLAutoDrawable {
return (context == null) ? null : context.getGL();
}
- public void setGL(GL gl) {
+ public GL setGL(GL gl) {
GLContext context = getContext();
if (context != null) {
context.setGL(gl);
+ return gl;
}
+ return null;
}
public void setAutoSwapBufferMode(boolean onOrOff) {
@@ -1322,16 +1324,16 @@ public class GLJPanel extends JPanel implements AWTGLAutoDrawable {
" with width " + width[0] + ", height " + height[0]);
}
- gl.glBindRenderbuffer(GL2.GL_RENDERBUFFER, frameBufferDepthBuffer[0]);
+ gl.glBindRenderbuffer(GL.GL_RENDERBUFFER, frameBufferDepthBuffer[0]);
// FIXME: may need a loop here like in Java2D
- gl.glRenderbufferStorage(GL2.GL_RENDERBUFFER, GL2.GL_DEPTH_COMPONENT24, width[0], height[0]);
+ gl.glRenderbufferStorage(GL.GL_RENDERBUFFER, GL2GL3.GL_DEPTH_COMPONENT24, width[0], height[0]);
gl.glBindRenderbuffer(GL2.GL_RENDERBUFFER, 0);
createNewDepthBuffer = false;
}
gl.glBindTexture(fboTextureTarget, 0);
- gl.glBindFramebuffer(GL2.GL_FRAMEBUFFER, frameBuffer[0]);
+ gl.glBindFramebuffer(GL.GL_FRAMEBUFFER, frameBuffer[0]);
if (fbObjectWorkarounds) {
// Hook up the color and depth buffer attachment points for this framebuffer
@@ -1435,29 +1437,29 @@ public class GLJPanel extends JPanel implements AWTGLAutoDrawable {
j2dContext.makeCurrent();
GL gl = j2dContext.getGL();
- if ((getGLInteger(gl, GL2.GL_RED_BITS) < offscreenCaps.getRedBits()) ||
- (getGLInteger(gl, GL2.GL_GREEN_BITS) < offscreenCaps.getGreenBits()) ||
- (getGLInteger(gl, GL2.GL_BLUE_BITS) < offscreenCaps.getBlueBits()) ||
- // (getGLInteger(gl, GL2.GL_ALPHA_BITS) < offscreenCaps.getAlphaBits()) ||
+ if ((getGLInteger(gl, GL.GL_RED_BITS) < offscreenCaps.getRedBits()) ||
+ (getGLInteger(gl, GL.GL_GREEN_BITS) < offscreenCaps.getGreenBits()) ||
+ (getGLInteger(gl, GL.GL_BLUE_BITS) < offscreenCaps.getBlueBits()) ||
+ // (getGLInteger(gl, GL.GL_ALPHA_BITS) < offscreenCaps.getAlphaBits()) ||
(getGLInteger(gl, GL2.GL_ACCUM_RED_BITS) < offscreenCaps.getAccumRedBits()) ||
(getGLInteger(gl, GL2.GL_ACCUM_GREEN_BITS) < offscreenCaps.getAccumGreenBits()) ||
(getGLInteger(gl, GL2.GL_ACCUM_BLUE_BITS) < offscreenCaps.getAccumBlueBits()) ||
(getGLInteger(gl, GL2.GL_ACCUM_ALPHA_BITS) < offscreenCaps.getAccumAlphaBits()) ||
// (getGLInteger(gl, GL2.GL_DEPTH_BITS) < offscreenCaps.getDepthBits()) ||
- (getGLInteger(gl, GL2.GL_STENCIL_BITS) < offscreenCaps.getStencilBits())) {
+ (getGLInteger(gl, GL.GL_STENCIL_BITS) < offscreenCaps.getStencilBits())) {
if (DEBUG) {
System.err.println("GLJPanel: Falling back to pbuffer-based support because Java2D context insufficient");
System.err.println(" Available Required");
- System.err.println("GL_RED_BITS " + getGLInteger(gl, GL2.GL_RED_BITS) + " " + offscreenCaps.getRedBits());
- System.err.println("GL_GREEN_BITS " + getGLInteger(gl, GL2.GL_GREEN_BITS) + " " + offscreenCaps.getGreenBits());
- System.err.println("GL_BLUE_BITS " + getGLInteger(gl, GL2.GL_BLUE_BITS) + " " + offscreenCaps.getBlueBits());
- System.err.println("GL_ALPHA_BITS " + getGLInteger(gl, GL2.GL_ALPHA_BITS) + " " + offscreenCaps.getAlphaBits());
+ System.err.println("GL_RED_BITS " + getGLInteger(gl, GL.GL_RED_BITS) + " " + offscreenCaps.getRedBits());
+ System.err.println("GL_GREEN_BITS " + getGLInteger(gl, GL.GL_GREEN_BITS) + " " + offscreenCaps.getGreenBits());
+ System.err.println("GL_BLUE_BITS " + getGLInteger(gl, GL.GL_BLUE_BITS) + " " + offscreenCaps.getBlueBits());
+ System.err.println("GL_ALPHA_BITS " + getGLInteger(gl, GL.GL_ALPHA_BITS) + " " + offscreenCaps.getAlphaBits());
System.err.println("GL_ACCUM_RED_BITS " + getGLInteger(gl, GL2.GL_ACCUM_RED_BITS) + " " + offscreenCaps.getAccumRedBits());
System.err.println("GL_ACCUM_GREEN_BITS " + getGLInteger(gl, GL2.GL_ACCUM_GREEN_BITS) + " " + offscreenCaps.getAccumGreenBits());
System.err.println("GL_ACCUM_BLUE_BITS " + getGLInteger(gl, GL2.GL_ACCUM_BLUE_BITS) + " " + offscreenCaps.getAccumBlueBits());
System.err.println("GL_ACCUM_ALPHA_BITS " + getGLInteger(gl, GL2.GL_ACCUM_ALPHA_BITS) + " " + offscreenCaps.getAccumAlphaBits());
- System.err.println("GL_DEPTH_BITS " + getGLInteger(gl, GL2.GL_DEPTH_BITS) + " " + offscreenCaps.getDepthBits());
- System.err.println("GL_STENCIL_BITS " + getGLInteger(gl, GL2.GL_STENCIL_BITS) + " " + offscreenCaps.getStencilBits());
+ System.err.println("GL_DEPTH_BITS " + getGLInteger(gl, GL.GL_DEPTH_BITS) + " " + offscreenCaps.getDepthBits());
+ System.err.println("GL_STENCIL_BITS " + getGLInteger(gl, GL.GL_STENCIL_BITS) + " " + offscreenCaps.getStencilBits());
}
isInitialized = false;
backend = null;
@@ -1587,7 +1589,7 @@ public class GLJPanel extends JPanel implements AWTGLAutoDrawable {
if (!checkedGLVendor) {
checkedGLVendor = true;
- String vendor = gl.glGetString(GL2.GL_VENDOR);
+ String vendor = gl.glGetString(GL.GL_VENDOR);
if ((vendor != null) &&
vendor.startsWith("ATI")) {
diff --git a/src/nativewindow/classes/com/sun/nativewindow/impl/NativeWindowFactoryImpl.java b/src/nativewindow/classes/com/sun/nativewindow/impl/NativeWindowFactoryImpl.java
index 424b44c8c..c94dab2f6 100644
--- a/src/nativewindow/classes/com/sun/nativewindow/impl/NativeWindowFactoryImpl.java
+++ b/src/nativewindow/classes/com/sun/nativewindow/impl/NativeWindowFactoryImpl.java
@@ -69,7 +69,7 @@ public class NativeWindowFactoryImpl extends NativeWindowFactory {
private NativeWindow getAWTNativeWindow(Object winObj, AbstractGraphicsConfiguration config) {
if (nativeWindowConstructor == null) {
try {
- String osType = getNativeWindowType(false);
+ String osType = getNativeWindowType(true);
String windowClassName = null;
// We break compile-time dependencies on the AWT here to
diff --git a/src/nativewindow/classes/com/sun/nativewindow/impl/NullWindow.java b/src/nativewindow/classes/com/sun/nativewindow/impl/NullWindow.java
index c7d2acec0..48a04a3c9 100644
--- a/src/nativewindow/classes/com/sun/nativewindow/impl/NullWindow.java
+++ b/src/nativewindow/classes/com/sun/nativewindow/impl/NullWindow.java
@@ -88,6 +88,12 @@ public class NullWindow implements NativeWindow {
return lockedStack;
}
+ public boolean surfaceSwap() {
+ return false;
+ }
+
+ public void surfaceUpdated() { }
+
public long getDisplayHandle() {
return displayHandle;
}
diff --git a/src/nativewindow/classes/com/sun/nativewindow/impl/jawt/JAWTWindow.java b/src/nativewindow/classes/com/sun/nativewindow/impl/jawt/JAWTWindow.java
index a4a529c54..5ad2804c1 100644
--- a/src/nativewindow/classes/com/sun/nativewindow/impl/jawt/JAWTWindow.java
+++ b/src/nativewindow/classes/com/sun/nativewindow/impl/jawt/JAWTWindow.java
@@ -115,6 +115,12 @@ public abstract class JAWTWindow implements NativeWindow {
return lockedStack;
}
+ public boolean surfaceSwap() {
+ return false;
+ }
+
+ public void surfaceUpdated() { }
+
public long getDisplayHandle() {
return config.getScreen().getDevice().getHandle();
}
diff --git a/src/nativewindow/classes/javax/media/nativewindow/GraphicsConfigurationFactory.java b/src/nativewindow/classes/javax/media/nativewindow/GraphicsConfigurationFactory.java
index 1a9d4ac55..881499bec 100644
--- a/src/nativewindow/classes/javax/media/nativewindow/GraphicsConfigurationFactory.java
+++ b/src/nativewindow/classes/javax/media/nativewindow/GraphicsConfigurationFactory.java
@@ -74,7 +74,7 @@ public abstract class GraphicsConfigurationFactory {
abstractGraphicsDeviceClass = javax.media.nativewindow.AbstractGraphicsDevice.class;
- if (NativeWindowFactory.TYPE_X11.equals(NativeWindowFactory.getNativeWindowType(false))) {
+ if (NativeWindowFactory.TYPE_X11.equals(NativeWindowFactory.getNativeWindowType(true))) {
try {
GraphicsConfigurationFactory factory = (GraphicsConfigurationFactory)
NWReflection.createInstance("com.sun.nativewindow.impl.x11.X11GraphicsConfigurationFactory", new Object[] {});
diff --git a/src/nativewindow/classes/javax/media/nativewindow/NativeWindow.java b/src/nativewindow/classes/javax/media/nativewindow/NativeWindow.java
index 2a9782c12..6a588538d 100644
--- a/src/nativewindow/classes/javax/media/nativewindow/NativeWindow.java
+++ b/src/nativewindow/classes/javax/media/nativewindow/NativeWindow.java
@@ -111,6 +111,24 @@ public interface NativeWindow {
*/
public Exception getLockedStack();
+ /**
+ * Provide a mechanism to utilize custom (pre-) swap surface
+ * code. This method is called before the render toolkit (e.g. JOGL)
+ * swaps the buffer/surface. The implementation may itself apply the swapping,
+ * in which case true shall be returned.
+ *
+ * @return true if this method completed swapping the surface,
+ * otherwise false, in which case eg the GLDrawable
+ * implementation has to swap the code.
+ */
+ public boolean surfaceSwap();
+
+ /**
+ * Method invoked after the render toolkit (e.g. JOGL)
+ * swapped/changed the buffer/surface.
+ */
+ public void surfaceUpdated();
+
/**
* render all native window information invalid,
* as if the native window was destroyed
diff --git a/src/newt/classes/com/sun/javafx/newt/Display.java b/src/newt/classes/com/sun/javafx/newt/Display.java
index 5032477c9..38d0021ce 100755
--- a/src/newt/classes/com/sun/javafx/newt/Display.java
+++ b/src/newt/classes/com/sun/javafx/newt/Display.java
@@ -54,6 +54,8 @@ public abstract class Display implements Runnable {
displayClass = Class.forName("com.sun.javafx.newt.x11.X11Display");
} else if (NativeWindowFactory.TYPE_AWT.equals(type)) {
displayClass = Class.forName("com.sun.javafx.newt.awt.AWTDisplay");
+ } else if (NewtFactory.TYPE_BROADCOM_EGL.equals(type)) {
+ displayClass = Class.forName("com.sun.javafx.newt.opengl.broadcom.BCEGLDisplay");
} else {
throw new RuntimeException("Unknown display type \"" + type + "\"");
}
diff --git a/src/newt/classes/com/sun/javafx/newt/NewtFactory.java b/src/newt/classes/com/sun/javafx/newt/NewtFactory.java
index b5a555455..dbae30a4b 100755
--- a/src/newt/classes/com/sun/javafx/newt/NewtFactory.java
+++ b/src/newt/classes/com/sun/javafx/newt/NewtFactory.java
@@ -39,6 +39,8 @@ import java.util.Iterator;
import com.sun.nativewindow.impl.jvm.JVMUtil;
public abstract class NewtFactory {
+ public static final String TYPE_BROADCOM_EGL = "BroadcomEGL";
+
// Work-around for initialization order problems on Mac OS X
// between native Newt and (apparently) Fmod
static {
diff --git a/src/newt/classes/com/sun/javafx/newt/Screen.java b/src/newt/classes/com/sun/javafx/newt/Screen.java
index 2566041a8..57ed34211 100755
--- a/src/newt/classes/com/sun/javafx/newt/Screen.java
+++ b/src/newt/classes/com/sun/javafx/newt/Screen.java
@@ -54,6 +54,8 @@ public abstract class Screen {
screenClass = Class.forName("com.sun.javafx.newt.x11.X11Screen");
} else if (NativeWindowFactory.TYPE_AWT.equals(type)) {
screenClass = Class.forName("com.sun.javafx.newt.awt.AWTScreen");
+ } else if (NewtFactory.TYPE_BROADCOM_EGL.equals(type)) {
+ screenClass = Class.forName("com.sun.javafx.newt.opengl.broadcom.BCEGLScreen");
} else {
throw new RuntimeException("Unknown window type \"" + type + "\"");
}
diff --git a/src/newt/classes/com/sun/javafx/newt/Window.java b/src/newt/classes/com/sun/javafx/newt/Window.java
index 36eafd32d..e2903bd62 100755
--- a/src/newt/classes/com/sun/javafx/newt/Window.java
+++ b/src/newt/classes/com/sun/javafx/newt/Window.java
@@ -74,6 +74,8 @@ public abstract class Window implements NativeWindow
windowClass = Class.forName("com.sun.javafx.newt.x11.X11Window");
} else if (NativeWindowFactory.TYPE_AWT.equals(type)) {
windowClass = Class.forName("com.sun.javafx.newt.awt.AWTWindow");
+ } else if (NewtFactory.TYPE_BROADCOM_EGL.equals(type)) {
+ windowClass = Class.forName("com.sun.javafx.newt.opengl.broadcom.BCEGLWindow");
} else {
throw new NativeWindowException("Unknown window type \"" + type + "\"");
}
@@ -267,6 +269,12 @@ public abstract class Window implements NativeWindow
y=0;
}
+ public boolean surfaceSwap() {
+ return false;
+ }
+
+ public void surfaceUpdated() {}
+
protected void clearEventMask() {
eventMask=0;
}
diff --git a/src/newt/classes/com/sun/javafx/newt/impl/NativeLibLoader.java b/src/newt/classes/com/sun/javafx/newt/impl/NativeLibLoader.java
index 6316e750f..d96c56f6e 100644
--- a/src/newt/classes/com/sun/javafx/newt/impl/NativeLibLoader.java
+++ b/src/newt/classes/com/sun/javafx/newt/impl/NativeLibLoader.java
@@ -53,8 +53,7 @@ public class NativeLibLoader extends NativeLibLoaderBase {
public static void loadNEWT() {
AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
- String[] preload = { "nativewindow" };
- loadLibrary("newt", preload, true);
+ loadLibrary("newt", null, true);
return null;
}
});
diff --git a/src/newt/classes/com/sun/javafx/newt/opengl/GLWindow.java b/src/newt/classes/com/sun/javafx/newt/opengl/GLWindow.java
index 8ecfe6216..9f4454681 100644
--- a/src/newt/classes/com/sun/javafx/newt/opengl/GLWindow.java
+++ b/src/newt/classes/com/sun/javafx/newt/opengl/GLWindow.java
@@ -441,10 +441,12 @@ public class GLWindow extends Window implements GLAutoDrawable {
return context.getGL();
}
- public void setGL(GL gl) {
+ public GL setGL(GL gl) {
if (context != null) {
context.setGL(gl);
+ return gl;
}
+ return null;
}
public void addGLEventListener(GLEventListener listener) {
@@ -654,6 +656,19 @@ public class GLWindow extends Window implements GLAutoDrawable {
return null;
}
+ public boolean surfaceSwap() {
+ if(null!=drawable) return drawable.getNativeWindow().surfaceSwap();
+ return super.surfaceSwap();
+ }
+
+ public void surfaceUpdated() {
+ if(null!=drawable) {
+ drawable.getNativeWindow().surfaceUpdated();
+ } else {
+ super.surfaceUpdated();
+ }
+ }
+
public long getWindowHandle() {
if(null!=drawable) return drawable.getNativeWindow().getWindowHandle();
return super.getWindowHandle();
diff --git a/src/newt/classes/com/sun/javafx/newt/opengl/broadcom/BCEGLDisplay.java b/src/newt/classes/com/sun/javafx/newt/opengl/broadcom/BCEGLDisplay.java
new file mode 100644
index 000000000..dbe126c91
--- /dev/null
+++ b/src/newt/classes/com/sun/javafx/newt/opengl/broadcom/BCEGLDisplay.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * - Redistribution of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistribution in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * Neither the name of Sun Microsystems, Inc. or the names of
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * This software is provided "AS IS," without a warranty of any kind. ALL
+ * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
+ * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
+ * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
+ * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
+ * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
+ * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
+ * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
+ * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
+ * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
+ * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ *
+ */
+
+package com.sun.javafx.newt.opengl.broadcom;
+
+import com.sun.javafx.newt.*;
+import com.sun.javafx.newt.impl.*;
+import com.sun.opengl.impl.egl.*;
+import javax.media.nativewindow.*;
+import javax.media.nativewindow.egl.*;
+
+public class BCEGLDisplay extends Display {
+
+ static {
+ NativeLibLoader.loadNEWT();
+
+ if (!BCEGLWindow.initIDs()) {
+ throw new NativeWindowException("Failed to initialize BCEGLWindow jmethodIDs");
+ }
+ }
+
+ public static void initSingleton() {
+ // just exist to ensure static init has been run
+ }
+
+
+ public BCEGLDisplay() {
+ }
+
+ protected void createNative() {
+ long handle = CreateDisplay(BCEGLScreen.fixedWidth, BCEGLScreen.fixedHeight);
+ if (handle == EGL.EGL_NO_DISPLAY) {
+ throw new NativeWindowException("BC EGL CreateDisplay failed");
+ }
+ aDevice = new EGLGraphicsDevice(handle);
+ }
+
+ protected void closeNative() {
+ if (aDevice.getHandle() != EGL.EGL_NO_DISPLAY) {
+ DestroyDisplay(aDevice.getHandle());
+ }
+ }
+
+ protected void dispatchMessages() {
+ // n/a .. DispatchMessages();
+ }
+
+ private native long CreateDisplay(int width, int height);
+ private native void DestroyDisplay(long dpy);
+ private native void DispatchMessages();
+}
+
diff --git a/src/newt/classes/com/sun/javafx/newt/opengl/broadcom/BCEGLScreen.java b/src/newt/classes/com/sun/javafx/newt/opengl/broadcom/BCEGLScreen.java
new file mode 100755
index 000000000..165081cde
--- /dev/null
+++ b/src/newt/classes/com/sun/javafx/newt/opengl/broadcom/BCEGLScreen.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * - Redistribution of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistribution in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * Neither the name of Sun Microsystems, Inc. or the names of
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * This software is provided "AS IS," without a warranty of any kind. ALL
+ * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
+ * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
+ * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
+ * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
+ * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
+ * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
+ * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
+ * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
+ * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
+ * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ *
+ */
+
+package com.sun.javafx.newt.opengl.broadcom;
+
+import com.sun.javafx.newt.*;
+import com.sun.javafx.newt.impl.*;
+import javax.media.nativewindow.*;
+
+public class BCEGLScreen extends Screen {
+
+ static {
+ BCEGLDisplay.initSingleton();
+ }
+
+
+ public BCEGLScreen() {
+ }
+
+ protected void createNative(int index) {
+ aScreen = new DefaultGraphicsScreen(getDisplay().getGraphicsDevice(), index);
+ setScreenSize(fixedWidth, fixedHeight);
+ }
+
+ protected void closeNative() { }
+
+ //----------------------------------------------------------------------
+ // Internals only
+ //
+
+ static final int fixedWidth = 1920;
+ static final int fixedHeight = 1080;
+}
+
diff --git a/src/newt/classes/com/sun/javafx/newt/opengl/broadcom/BCEGLWindow.java b/src/newt/classes/com/sun/javafx/newt/opengl/broadcom/BCEGLWindow.java
new file mode 100755
index 000000000..ddee07c49
--- /dev/null
+++ b/src/newt/classes/com/sun/javafx/newt/opengl/broadcom/BCEGLWindow.java
@@ -0,0 +1,154 @@
+/*
+ * Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * - Redistribution of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistribution in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * Neither the name of Sun Microsystems, Inc. or the names of
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * This software is provided "AS IS," without a warranty of any kind. ALL
+ * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
+ * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
+ * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
+ * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
+ * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
+ * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
+ * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
+ * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
+ * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
+ * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ *
+ */
+
+package com.sun.javafx.newt.opengl.broadcom;
+
+import com.sun.javafx.newt.*;
+import com.sun.javafx.newt.impl.*;
+import com.sun.opengl.impl.egl.*;
+import javax.media.nativewindow.*;
+import javax.media.opengl.GLCapabilities;
+import javax.media.opengl.GLProfile;
+import javax.media.nativewindow.NativeWindowException;
+
+public class BCEGLWindow extends Window {
+ static {
+ BCEGLDisplay.initSingleton();
+ }
+
+ public BCEGLWindow() {
+ }
+
+ protected void createNative(Capabilities caps) {
+ // query a good configuration .. even thought we drop this one
+ // and reuse the EGLUtil choosen one later.
+ config = GraphicsConfigurationFactory.getFactory(getScreen().getDisplay().getGraphicsDevice()).chooseGraphicsConfiguration(caps, null, getScreen().getGraphicsScreen());
+ if (config == null) {
+ throw new NativeWindowException("Error choosing GraphicsConfiguration creating window: "+this);
+ }
+ setSizeImpl(getScreen().getWidth(), getScreen().getHeight());
+ }
+
+ protected void closeNative() {
+ if(0!=windowHandleClose) {
+ CloseWindow(getDisplayHandle(), windowHandleClose);
+ }
+ }
+
+ public void setVisible(boolean visible) {
+ if(this.visible!=visible) {
+ this.visible=visible;
+ if ( 0==windowHandle ) {
+ windowHandle = realizeWindow(true, width, height);
+ if (0 == windowHandle) {
+ throw new NativeWindowException("Error native Window Handle is null");
+ }
+ }
+ clearEventMask();
+ }
+ }
+
+ public void setSize(int width, int height) {
+ System.err.println("setSize "+width+"x"+height+" n/a in BroadcomEGL");
+ }
+
+ void setSizeImpl(int width, int height) {
+ if(0!=windowHandle) {
+ // n/a in BroadcomEGL
+ System.err.println("BCEGLWindow.setSizeImpl n/a in BroadcomEGL with realized window");
+ } else {
+ if(DEBUG_IMPLEMENTATION) {
+ Exception e = new Exception("BCEGLWindow.setSizeImpl() "+this.width+"x"+this.height+" -> "+width+"x"+height);
+ e.printStackTrace();
+ }
+ this.width = width;
+ this.height = height;
+ }
+ }
+
+ public void setPosition(int x, int y) {
+ // n/a in BroadcomEGL
+ System.err.println("setPosition n/a in BroadcomEGL");
+ }
+
+ public boolean setFullscreen(boolean fullscreen) {
+ // n/a in BroadcomEGL
+ System.err.println("setFullscreen n/a in BroadcomEGL");
+ return false;
+ }
+
+ public boolean surfaceSwap() {
+ if ( 0!=windowHandle ) {
+ SwapWindow(getDisplayHandle(), windowHandle);
+ return true;
+ }
+ return false;
+ }
+
+ //----------------------------------------------------------------------
+ // Internals only
+ //
+
+ protected static native boolean initIDs();
+ private native long CreateWindow(long eglDisplayHandle, boolean chromaKey, int width, int height);
+ private native void CloseWindow(long eglDisplayHandle, long eglWindowHandle);
+ private native void SwapWindow(long eglDisplayHandle, long eglWindowHandle);
+
+
+ private long realizeWindow(boolean chromaKey, int width, int height) {
+ if(DEBUG_IMPLEMENTATION) {
+ System.out.println("BCEGLWindow.realizeWindow() with: chroma "+chromaKey+", "+width+"x"+height+", "+config);
+ }
+ long handle = CreateWindow(getDisplayHandle(), chromaKey, width, height);
+ if (0 == handle) {
+ throw new NativeWindowException("Error native Window Handle is null");
+ }
+ windowHandleClose = handle;
+ return handle;
+ }
+
+ private void windowCreated(int cfgID, int width, int height) {
+ this.width = width;
+ this.height = height;
+ GLCapabilities capsReq = (GLCapabilities) config.getRequestedCapabilities();
+ config = EGLGraphicsConfiguration.create(capsReq, screen.getGraphicsScreen(), cfgID);
+ if (config == null) {
+ throw new NativeWindowException("Error creating EGLGraphicsConfiguration from id: "+cfgID+", "+this);
+ }
+ if(DEBUG_IMPLEMENTATION) {
+ System.out.println("BCEGLWindow.windowCreated(): 0x"+Integer.toHexString(cfgID)+", "+width+"x"+height+", "+config);
+ }
+ }
+
+ private long windowHandleClose;
+}
diff --git a/src/newt/classes/com/sun/javafx/newt/opengl/kd/KDWindow.java b/src/newt/classes/com/sun/javafx/newt/opengl/kd/KDWindow.java
index df0134c8e..1265fa9e2 100755
--- a/src/newt/classes/com/sun/javafx/newt/opengl/kd/KDWindow.java
+++ b/src/newt/classes/com/sun/javafx/newt/opengl/kd/KDWindow.java
@@ -79,7 +79,7 @@ public class KDWindow extends Window {
}
public void setVisible(boolean visible) {
- if(this.visible!=visible) {
+ if(0!=eglWindowHandle && this.visible!=visible) {
this.visible=visible;
setVisible0(eglWindowHandle, visible);
if ( 0==windowHandle ) {
@@ -93,7 +93,9 @@ public class KDWindow extends Window {
}
public void setSize(int width, int height) {
- setSize0(eglWindowHandle, width, height);
+ if(0!=eglWindowHandle) {
+ setSize0(eglWindowHandle, width, height);
+ }
}
public void setPosition(int x, int y) {
@@ -102,7 +104,7 @@ public class KDWindow extends Window {
}
public boolean setFullscreen(boolean fullscreen) {
- if(this.fullscreen!=fullscreen) {
+ if(0!=eglWindowHandle && this.fullscreen!=fullscreen) {
this.fullscreen=fullscreen;
if(this.fullscreen) {
setFullScreen0(eglWindowHandle, true);
diff --git a/src/newt/classes/com/sun/javafx/newt/windows/WindowsWindow.java b/src/newt/classes/com/sun/javafx/newt/windows/WindowsWindow.java
index c42aaa6d9..18dc7dae3 100755
--- a/src/newt/classes/com/sun/javafx/newt/windows/WindowsWindow.java
+++ b/src/newt/classes/com/sun/javafx/newt/windows/WindowsWindow.java
@@ -54,12 +54,12 @@ public class WindowsWindow extends Window {
}
public long getSurfaceHandle() {
- if (hdc == 0) {
+ if (hdc == 0 && 0!=windowHandle) {
hdc = GetDC(windowHandle);
hmon = MonitorFromWindow(windowHandle);
if(DEBUG_IMPLEMENTATION || DEBUG_WINDOW_EVENT) {
Exception e = new Exception("!!! Window new surface handle "+Thread.currentThread().getName()+
- ",HDC 0x"+Long.toHexString(hdc)+", HMON 0x"+Long.toHexString(hmon));
+ ", HWND 0x"+Long.toHexString(windowHandle)+", HDC 0x"+Long.toHexString(hdc)+", HMON 0x"+Long.toHexString(hmon));
e.printStackTrace();
}
}
@@ -67,21 +67,23 @@ public class WindowsWindow extends Window {
}
public boolean hasDeviceChanged() {
- long _hmon = MonitorFromWindow(windowHandle);
- if (hmon != _hmon) {
- if(DEBUG_IMPLEMENTATION || DEBUG_WINDOW_EVENT) {
- Exception e = new Exception("!!! Window Device Changed "+Thread.currentThread().getName()+
- ", HMON 0x"+Long.toHexString(hmon)+" -> 0x"+Long.toHexString(_hmon));
- e.printStackTrace();
+ if(0!=windowHandle) {
+ long _hmon = MonitorFromWindow(windowHandle);
+ if (hmon != _hmon) {
+ if(DEBUG_IMPLEMENTATION || DEBUG_WINDOW_EVENT) {
+ Exception e = new Exception("!!! Window Device Changed "+Thread.currentThread().getName()+
+ ", HMON 0x"+Long.toHexString(hmon)+" -> 0x"+Long.toHexString(_hmon));
+ e.printStackTrace();
+ }
+ hmon = _hmon;
+ return true;
}
- hmon = _hmon;
- return true;
}
return false;
}
public void disposeSurfaceHandle() {
- if (hdc != 0) {
+ if (0!=hdc && 0!=windowHandle) {
ReleaseDC(windowHandle, hdc);
hdc=0;
if(DEBUG_IMPLEMENTATION || DEBUG_WINDOW_EVENT) {
@@ -103,6 +105,11 @@ public class WindowsWindow extends Window {
throw new NativeWindowException("Error creating window");
}
windowHandleClose = windowHandle;
+ if(DEBUG_IMPLEMENTATION || DEBUG_WINDOW_EVENT) {
+ Exception e = new Exception("!!! Window new window handle "+Thread.currentThread().getName()+
+ ", HWND 0x"+Long.toHexString(windowHandle));
+ e.printStackTrace();
+ }
}
protected void closeNative() {
@@ -124,7 +131,7 @@ public class WindowsWindow extends Window {
}
public void setVisible(boolean visible) {
- if(this.visible!=visible) {
+ if(this.visible!=visible && 0!=windowHandle) {
this.visible=visible;
setVisible0(windowHandle, visible);
}
@@ -132,7 +139,7 @@ public class WindowsWindow extends Window {
// @Override
public void setSize(int width, int height) {
- if (width != this.width || this.height != height) {
+ if (0!=windowHandle && (width != this.width || this.height != height)) {
if(!fullscreen) {
nfs_width=width;
nfs_height=height;
@@ -145,7 +152,7 @@ public class WindowsWindow extends Window {
//@Override
public void setPosition(int x, int y) {
- if (this.x != x || this.y != y) {
+ if (0!=windowHandle && (this.x != x || this.y != y)) {
if(!fullscreen) {
nfs_x=x;
nfs_y=y;
@@ -157,7 +164,7 @@ public class WindowsWindow extends Window {
}
public boolean setFullscreen(boolean fullscreen) {
- if(this.fullscreen!=fullscreen) {
+ if(0!=windowHandle && (this.fullscreen!=fullscreen)) {
int x,y,w,h;
this.fullscreen=fullscreen;
if(fullscreen) {
@@ -191,7 +198,7 @@ public class WindowsWindow extends Window {
if (title == null) {
title = "";
}
- if (!title.equals(getTitle())) {
+ if (0!=windowHandle && !title.equals(getTitle())) {
super.setTitle(title);
setTitle(windowHandle, title);
}
diff --git a/src/newt/classes/com/sun/javafx/newt/x11/X11Window.java b/src/newt/classes/com/sun/javafx/newt/x11/X11Window.java
index bd6bb42c2..380c968d1 100755
--- a/src/newt/classes/com/sun/javafx/newt/x11/X11Window.java
+++ b/src/newt/classes/com/sun/javafx/newt/x11/X11Window.java
@@ -84,7 +84,7 @@ public class X11Window extends Window {
}
public void setVisible(boolean visible) {
- if(this.visible!=visible) {
+ if(0!=windowHandle && this.visible!=visible) {
this.visible=visible;
setVisible0(getDisplayHandle(), windowHandle, visible);
clearEventMask();
@@ -96,6 +96,7 @@ public class X11Window extends Window {
}
public void setSize(int width, int height) {
+ if(0==windowHandle) return;
if(!fullscreen) {
nfs_width=width;
nfs_height=height;
@@ -104,6 +105,7 @@ public class X11Window extends Window {
}
public void setPosition(int x, int y) {
+ if(0==windowHandle) return;
if(!fullscreen) {
nfs_x=x;
nfs_y=y;
@@ -112,7 +114,7 @@ public class X11Window extends Window {
}
public boolean setFullscreen(boolean fullscreen) {
- if(this.fullscreen!=fullscreen) {
+ if(0!=windowHandle && this.fullscreen!=fullscreen) {
int x,y,w,h;
this.fullscreen=fullscreen;
if(fullscreen) {
diff --git a/src/newt/native/BroadcomEGL.c b/src/newt/native/BroadcomEGL.c
new file mode 100755
index 000000000..d529de667
--- /dev/null
+++ b/src/newt/native/BroadcomEGL.c
@@ -0,0 +1,195 @@
+/*
+ * Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * - Redistribution of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistribution in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * Neither the name of Sun Microsystems, Inc. or the names of
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * This software is provided "AS IS," without a warranty of any kind. ALL
+ * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
+ * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
+ * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
+ * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
+ * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
+ * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
+ * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
+ * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
+ * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
+ * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ *
+ */
+
+#ifdef _WIN32
+ #include <windows.h>
+#else
+ #include <inttypes.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "com_sun_javafx_newt_opengl_broadcom_BCEGLWindow.h"
+
+#include "EventListener.h"
+#include "MouseEvent.h"
+#include "KeyEvent.h"
+
+#include <EGL/egl.h>
+
+typedef unsigned int GLuint;
+
+EGLDisplay EGLUtil_CreateDisplayByNative( GLuint uiWidth, GLuint uiHeight );
+void EGLUtil_DestroyDisplay( EGLDisplay eglDisplay );
+
+EGLSurface EGLUtil_CreateWindowByNative( EGLDisplay eglDisplay, /* bool */ GLuint bChromakey, GLuint *puiWidth, GLuint *puiHeight );
+void EGLUtil_DestroyWindow( EGLDisplay eglDisplay, EGLSurface eglSurface );
+void EGLUtil_SwapWindow( EGLDisplay eglDisplay, EGLSurface eglSurface );
+
+#define VERBOSE_ON 1
+
+#ifdef VERBOSE_ON
+ #define DBG_PRINT(...) fprintf(stdout, __VA_ARGS__)
+#else
+ #define DBG_PRINT(...)
+#endif
+
+static jmethodID windowCreatedID = NULL;
+
+/**
+ * Display
+ */
+
+JNIEXPORT void JNICALL Java_com_sun_javafx_newt_opengl_broadcom_BCEGLDisplay_DispatchMessages
+ (JNIEnv *env, jobject obj)
+{
+ // FIXME: n/a
+ (void) env;
+ (void) obj;
+}
+
+JNIEXPORT jlong JNICALL Java_com_sun_javafx_newt_opengl_broadcom_BCEGLDisplay_CreateDisplay
+ (JNIEnv *env, jobject obj, jint width, jint height)
+{
+ (void) env;
+ (void) obj;
+ EGLDisplay dpy = EGLUtil_CreateDisplayByNative( (GLuint) width, (GLuint) height );
+ if(NULL==dpy) {
+ fprintf(stderr, "[CreateDisplay] failed: NULL\n");
+ } else {
+ DBG_PRINT( "[CreateDisplay] ok: %p, %ux%u\n", dpy, width, height);
+ }
+ return (jlong) (intptr_t) dpy;
+}
+
+JNIEXPORT void JNICALL Java_com_sun_javafx_newt_opengl_broadcom_BCEGLDisplay_DestroyDisplay
+ (JNIEnv *env, jobject obj, jlong display)
+{
+ EGLDisplay dpy = (EGLDisplay)(intptr_t)display;
+ (void) env;
+ (void) obj;
+ DBG_PRINT( "[DestroyDisplay] dpy %p\n", dpy);
+
+ EGLUtil_DestroyDisplay(dpy);
+
+ DBG_PRINT( "[DestroyDisplay] X\n");
+}
+
+/**
+ * Window
+ */
+
+JNIEXPORT jboolean JNICALL Java_com_sun_javafx_newt_opengl_broadcom_BCEGLWindow_initIDs
+ (JNIEnv *env, jclass clazz)
+{
+ windowCreatedID = (*env)->GetMethodID(env, clazz, "windowCreated", "(III)V");
+ if (windowCreatedID == NULL) {
+ DBG_PRINT( "initIDs failed\n" );
+ return JNI_FALSE;
+ }
+ DBG_PRINT( "initIDs ok\n" );
+ return JNI_TRUE;
+}
+
+JNIEXPORT jlong JNICALL Java_com_sun_javafx_newt_opengl_broadcom_BCEGLWindow_CreateWindow
+ (JNIEnv *env, jobject obj, jlong display, jboolean chromaKey, jint width, jint height)
+{
+ EGLDisplay dpy = (EGLDisplay)(intptr_t)display;
+ EGLSurface window = 0;
+ GLuint uiWidth=(GLuint)width, uiHeight=(GLuint)height;
+
+ if(dpy==NULL) {
+ fprintf(stderr, "[RealizeWindow] invalid display connection..\n");
+ return 0;
+ }
+ DBG_PRINT( "[RealizeWindow.Create] dpy %p %ux%u\n", dpy, uiWidth, uiHeight);
+
+ window = EGLUtil_CreateWindowByNative( dpy, chromaKey, &uiWidth, &uiHeight );
+
+ if(NULL==window) {
+ fprintf(stderr, "[RealizeWindow.Create] failed: NULL\n");
+ return 0;
+ }
+ EGLint cfgID=0;
+ if(EGL_FALSE==eglQuerySurface(dpy, window, EGL_CONFIG_ID, &cfgID)) {
+ fprintf(stderr, "[RealizeWindow.ConfigID] failed: window %p\n", window);
+ EGLUtil_DestroyWindow(dpy, window);
+ return 0;
+ }
+ (*env)->CallVoidMethod(env, obj, windowCreatedID, (jint) cfgID, (jint)uiWidth, (jint)uiHeight);
+ DBG_PRINT( "[RealizeWindow.Create] ok: win %p, cfgid %d, %ux%u\n", window, cfgID, uiWidth, uiHeight);
+
+ // release and destroy already made context ..
+ EGLContext ctx = eglGetCurrentContext();
+ DBG_PRINT( "[RealizeWindow.Create] ctx %p - KEEP ALIVE \n", ctx);
+ /*eglMakeCurrent(dpy,
+ EGL_NO_SURFACE,
+ EGL_NO_SURFACE,
+ EGL_NO_CONTEXT); */
+ DBG_PRINT( "[RealizeWindow.Create] 2\n");
+ // eglDestroyContext(dpy, ctx); // culprit ? FIXME ?
+ DBG_PRINT( "[RealizeWindow.Create] 2 - eglDestroyContext - DISABLED - Duh ?\n");
+
+ DBG_PRINT( "[RealizeWindow.Create] X\n");
+
+ return (jlong) (intptr_t) window;
+}
+
+JNIEXPORT void JNICALL Java_com_sun_javafx_newt_opengl_broadcom_BCEGLWindow_CloseWindow
+ (JNIEnv *env, jobject obj, jlong display, jlong window)
+{
+ EGLDisplay dpy = (EGLDisplay) (intptr_t) display;
+ EGLSurface surf = (EGLSurface) (intptr_t) window;
+
+ DBG_PRINT( "[CloseWindow] dpy %p, win %p\n", dpy, surf);
+
+ EGLUtil_DestroyWindow(dpy, surf);
+
+ DBG_PRINT( "[CloseWindow] X\n");
+}
+
+JNIEXPORT void JNICALL Java_com_sun_javafx_newt_opengl_broadcom_BCEGLWindow_SwapWindow
+ (JNIEnv *env, jobject obj, jlong display, jlong window)
+{
+ EGLDisplay dpy = (EGLDisplay) (intptr_t) display;
+ EGLSurface surf = (EGLSurface) (intptr_t) window;
+
+ DBG_PRINT( "[SwapWindow] dpy %p, win %p\n", dpy, surf);
+
+ EGLUtil_SwapWindow( dpy, surf );
+
+ DBG_PRINT( "[SwapWindow] X\n");
+}
+
diff --git a/src/newt/native/KDWindow.c b/src/newt/native/KDWindow.c
index 682edff24..6c7aa7731 100755
--- a/src/newt/native/KDWindow.c
+++ b/src/newt/native/KDWindow.c
@@ -39,20 +39,24 @@
#include <stdio.h>
#include <string.h>
-/* This typedef is apparently needed for Microsoft compilers before VC8,
- and on Windows CE */
-#if (_MSC_VER < 1400) || defined(UNDER_CE)
- #ifdef _WIN64
- typedef long long intptr_t;
+#ifdef _WIN32
+ /* This typedef is apparently needed for Microsoft compilers before VC8,
+ and on Windows CE */
+ #if (_MSC_VER < 1400) || defined(UNDER_CE)
+ #ifdef _WIN64
+ typedef long long intptr_t;
+ #else
+ typedef int intptr_t;
+ #endif
+ #elif _MSC_VER <= 1500
+ #ifdef _WIN64 // [
+ typedef __int64 intptr_t;
+ #else // _WIN64 ][
+ typedef int intptr_t;
+ #endif // _WIN64 ]
#else
- typedef int intptr_t;
+ #include <inttypes.h>
#endif
-#elif _MSC_VER <= 1500
- #ifdef _WIN64 // [
- typedef __int64 intptr_t;
- #else // _WIN64 ][
- typedef int intptr_t;
- #endif // _WIN64 ]
#else
#include <inttypes.h>
#endif
@@ -99,7 +103,7 @@ static jmethodID sendKeyEventID = NULL;
* Display
*/
-JNIEXPORT void JNICALL Java_com_sun_javafx_newt_kd_KDDisplay_DispatchMessages
+JNIEXPORT void JNICALL Java_com_sun_javafx_newt_opengl_kd_KDDisplay_DispatchMessages
(JNIEnv *env, jobject obj)
{
const KDEvent * evt;
@@ -196,7 +200,7 @@ JNIEXPORT void JNICALL Java_com_sun_javafx_newt_kd_KDDisplay_DispatchMessages
* Window
*/
-JNIEXPORT jboolean JNICALL Java_com_sun_javafx_newt_kd_KDWindow_initIDs
+JNIEXPORT jboolean JNICALL Java_com_sun_javafx_newt_opengl_kd_KDWindow_initIDs
(JNIEnv *env, jclass clazz)
{
#ifdef VERBOSE_ON
@@ -224,7 +228,7 @@ JNIEXPORT jboolean JNICALL Java_com_sun_javafx_newt_kd_KDWindow_initIDs
return JNI_TRUE;
}
-JNIEXPORT jlong JNICALL Java_com_sun_javafx_newt_kd_KDWindow_CreateWindow
+JNIEXPORT jlong JNICALL Java_com_sun_javafx_newt_opengl_kd_KDWindow_CreateWindow
(JNIEnv *env, jobject obj, jlong display, jintArray jAttrs)
{
jint * attrs = NULL;
@@ -266,7 +270,7 @@ JNIEXPORT jlong JNICALL Java_com_sun_javafx_newt_kd_KDWindow_CreateWindow
return (jlong) (intptr_t) window;
}
-JNIEXPORT jlong JNICALL Java_com_sun_javafx_newt_kd_KDWindow_RealizeWindow
+JNIEXPORT jlong JNICALL Java_com_sun_javafx_newt_opengl_kd_KDWindow_RealizeWindow
(JNIEnv *env, jobject obj, jlong window)
{
KDWindow *w = (KDWindow*) (intptr_t) window;
@@ -281,7 +285,7 @@ JNIEXPORT jlong JNICALL Java_com_sun_javafx_newt_kd_KDWindow_RealizeWindow
return (jlong) (intptr_t) nativeWindow;
}
-JNIEXPORT jint JNICALL Java_com_sun_javafx_newt_kd_KDWindow_CloseWindow
+JNIEXPORT jint JNICALL Java_com_sun_javafx_newt_opengl_kd_KDWindow_CloseWindow
(JNIEnv *env, jobject obj, jlong window, jlong juserData)
{
KDWindow *w = (KDWindow*) (intptr_t) window;
@@ -295,11 +299,11 @@ JNIEXPORT jint JNICALL Java_com_sun_javafx_newt_kd_KDWindow_CloseWindow
}
/*
- * Class: com_sun_javafx_newt_kd_KDWindow
+ * Class: com_sun_javafx_newt_opengl_kd_KDWindow
* Method: setVisible0
* Signature: (JJZ)V
*/
-JNIEXPORT void JNICALL Java_com_sun_javafx_newt_kd_KDWindow_setVisible0
+JNIEXPORT void JNICALL Java_com_sun_javafx_newt_opengl_kd_KDWindow_setVisible0
(JNIEnv *env, jobject obj, jlong window, jboolean visible)
{
KDWindow *w = (KDWindow*) (intptr_t) window;
@@ -308,7 +312,7 @@ JNIEXPORT void JNICALL Java_com_sun_javafx_newt_kd_KDWindow_setVisible0
DBG_PRINT( "[setVisible] v=%d\n", visible);
}
-JNIEXPORT void JNICALL Java_com_sun_javafx_newt_kd_KDWindow_setFullScreen0
+JNIEXPORT void JNICALL Java_com_sun_javafx_newt_opengl_kd_KDWindow_setFullScreen0
(JNIEnv *env, jobject obj, jlong window, jboolean fullscreen)
{
KDWindow *w = (KDWindow*) (intptr_t) window;
@@ -319,7 +323,7 @@ JNIEXPORT void JNICALL Java_com_sun_javafx_newt_kd_KDWindow_setFullScreen0
(void)res;
}
-JNIEXPORT void JNICALL Java_com_sun_javafx_newt_kd_KDWindow_setSize0
+JNIEXPORT void JNICALL Java_com_sun_javafx_newt_opengl_kd_KDWindow_setSize0
(JNIEnv *env, jobject obj, jlong window, jint width, jint height)
{
KDWindow *w = (KDWindow*) (intptr_t) window;
diff --git a/www/index.html b/www/index.html
index 569414983..7ca5dda90 100644
--- a/www/index.html
+++ b/www/index.html
@@ -10,177 +10,185 @@
</head>
<body bgcolor="#f5f5f5">
-<div align="center"><font color="#005177" size="+2">Welcome to the JOGL API
- Project! </font></div>
+<div align="center">
+<font color="#005177" size="+3">JOGL</font><br>
+<font color="#005177" size="+2">Java&#0153; Binding for the OpenGL&#0174; API
+(<a href="http://jcp.org/en/jsr/detail?id=231">JSR-231</a>)</font>
+</div>
<table border="0" cellpadding="0" cellspacing="1" width="100%">
- <tbody>
- <tr>
- <td valign="top" width="66%">
- <table border="0" cellpadding="5" cellspacing="1" height="358"
- width="100%">
- <tbody>
- <tr>
- <td valign="top">
-
- <table bgcolor="#6E94B7" border="0" cellpadding="5"
- cellspacing="1" width="100%">
- <tbody>
- <tr>
- <td bgcolor="#6E94B7" valign="top" width="589">
-
-
- <div align="left"><font color="#ffffff"><strong>Overview</strong></font></div>
- </td>
- </tr>
- <tr>
- <td bgcolor="#F8F8F8" valign="top">
-
-
- <div align="justify">
-
- <p>
-
-The JOGL project hosts the development version of the Java&trade;
-Binding for the OpenGL&reg; API (<a
-href="http://jcp.org/en/jsr/detail?id=231">JSR-231</a>), and is
-designed to provide hardware-supported 3D graphics to applications
-written in Java. JOGL provides full access to the APIs in the OpenGL
-2.0 specification as well as nearly all vendor extensions, and
-integrates with the AWT and Swing widget sets. It is part of a suite
-of open-source technologies initiated by the Game Technology Group at
-Sun Microsystems.
- </p>
-
- <p>Please see the <a
- href="https://jogl-demos.dev.java.net/">JOGL demos</a> for illustrations of
-advanced OpenGL techniques now possible with the Java platform.
- </p>
-
-<p>Documentation is available for <a
-href="https://jogl.dev.java.net/source/browse/*checkout*/jogl/trunk/doc/userguide/index.html">developers
-wishing to use</a> JOGL in their applications as well as those wishing
-to <a
-href="https://jogl.dev.java.net/source/browse/*checkout*/jogl/trunk/doc/HowToBuild.html">build
-the JOGL source tree</a>.
- </p>
- </div>
- </td>
- </tr>
-
- </tbody>
-
- </table>
- </td>
- </tr>
-
- <tr>
- <td>
-
- <table bgcolor="#6E94B7" border="0" cellpadding="5"
- cellspacing="1" width="100%">
- <tbody>
- <tr>
- <td="#6E94B7" valign="top">
-
-
- <div align="left"><font color="#ffffff"><strong>Downloads</strong></font></div>
- </td>
- </tr>
- <tr>
- <td valign="top" bgcolor="#F8F8F8">
-
- <ul>
- <li><a href="#NIGHTLY">Current nightly build</a></li>
-
- <li><a
-
- href="https://jogl.dev.java.net/servlets/ProjectDocumentList?folderID=11509&expandFolder=11509&folderID=11508"
- target="_blank">Current release build (JSR-231 1.1.1a)</a></li>
-
- <li><a
- href="https://jogl.dev.java.net/servlets/ProjectDocumentList"
- target="_blank">Archived release and pre-release builds</a></li>
-
-
- </ul>
- </td>
- </tr>
-
- </tbody>
-
- </table>
- </td>
- </tr>
+<tbody>
+<tr>
+ <td valign="top">
+ <table bgcolor="#6E94B7" border="0" cellpadding="5" cellspacing="1" width="100%">
+ <tbody>
+ <tr>
+ <td bgcolor="#6E94B7" valign="top" width="589">
+ <div align="left"><font color="#ffffff"><strong>Overview</strong></font></div>
+ </td>
+ </tr>
+ <tr>
+ <td bgcolor="#F8F8F8" valign="top">
+ <div align="justify">
+
+ <p> The JOGL project hosts the development version of the
+ Java&trade; Binding for the OpenGL&reg; API (<a href="http://jcp.org/en/jsr/detail?id=231">JSR-231</a>),
+ and is designed to provide hardware-supported 3D graphics to applications written in Java.
+ JOGL provides full access to the APIs in the OpenGL 1.3 - 3.0, &ge; 3.1, ES 1.x and ES 2.x specification
+ as well as nearly all vendor extensions.
+ It integrates with the AWT and Swing widget sets, as well with custom windowing toolkits using the the NativeWindow API.
+ It is part of a suite of open-source technologies initiated by the Game Technology Group at Sun Microsystems. </p>
+
+ <p>Please see the <a href="http://download.java.net/media/jogl/demos/www/">JOGL demos</a> for illustrations of
+ advanced OpenGL techniques now possible with the Java platform. </p>
+
+ <p>Documentation is available for <a href="http://download.java.net/media/jogl/doc/userguide/">developers wishing to use</a>
+ JOGL in their applications as well as those wishing to
+ <a href="http://download.java.net/media/jogl/doc/HowToBuild.html">build the JOGL source tree</a>. </p>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+</tr>
+</tbody>
+</table>
+<table border="0" cellpadding="0" cellspacing="1" width="100%">
+<tbody>
+<tr>
+ <td valign="top" width="50%">
+ <table border="0" cellpadding="5" cellspacing="1" height="358" width="100%">
+ <tbody>
+ <tr>
+ <td valign="top">
+ <table bgcolor="#6E94B7" border="0" cellpadding="5" cellspacing="1" width="100%">
+ <tbody>
+ <tr> <td bgcolor="#6E94B7" valign="top"> <div align="left"><font color="#ffffff"><strong>Documentation</strong></font></div> </td> </tr>
+ <tr> <td valign="top" bgcolor="#F8F8F8">
+ <ul>
+ <li> <a href="http://kenai.com/projects/jogl/pages/Home/">Project Home</a></li>
+ <li> <a href="http://download.java.net/media/jogl/www/">This Presentation Page</a></li>
+ <li> <a href="http://download.java.net/media/jogl/demos/www/">Demos</a></li>
+ <li> <a href="http://download.java.net/media/jogl/jogl-2.x-docs/">API Specification</a></li>
+ <li> <a href="http://kenai.com/projects/jogl/pages/FAQ">FAQ</a></li>
+ <li> <a href="http://download.java.net/media/jogl/doc/HowToBuild.html">How To Build</a></li>
+ <li> <a href="http://download.java.net/media/jogl/doc/userguide/">Userguide</a></li>
+ <li> <a href="http://www.javagaming.org/index.php?board=25.0">Forum JavaGaming</a></li>
+ <li> <a href="http://kenai.com/projects/jogl/forums">Forum Kenai</a></li>
+ <li> <a href="http://kenai.com/projects/jogl/lists">Mailinglists</a></li>
+ <li> <a href="http://blog.jausoft.com/category/computer-stuff/3d-opengl/jogl/">Sven&rsquo;s JOGL BLOG</a></li>
+ </ul>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <table bgcolor="#6E94B7" border="0" cellpadding="5" cellspacing="1" width="100%">
+ <tbody>
+ <tr> <td bgcolor="#6E94B7" valign="top"> <div align="left"><font color="#ffffff"><strong>Builds</strong></font></div> </td> </tr>
+ <tr> <td valign="top" bgcolor="#F8F8F8">
+ <ul>
+
+ <li> <a href="http://download.java.net/media/jogl/builds/archive/">Archived Builds incl. archived signed webstart bundles</a></li>
+ <li> <a href="http://download.java.net/media/jogl/jsr-231-2.x-webstart/">JSR-231 2.x Webstart Codebase</a></li>
+ <li> <a href="http://download.java.net/media/jogl/jsr-231-2.x-demos-webstart/">Demos 2.x Webstart Codebase</a></li>
+ <li> <a href="http://download.java.net/media/gluegen/webstart-2.x/">GlueGen 2.x Webstart Codebase</a></li>
+ <li> <a href="http://download.java.net/media/gluegen/builds/archive/">GlueGen Archived Builds</a></li>
+ </ul>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <table bgcolor="#6E94B7" border="0" cellpadding="5" cellspacing="1" width="100%">
+ <tbody>
+ <tr> <td bgcolor="#6E94B7" valign="top"> <div align="left"><font color="#ffffff"><strong>Nightlies</strong></font></div> </td> </tr>
+ <tr> <td valign="top" bgcolor="#F8F8F8">
+ <ul>
+
+ <li> <a href="http://download.java.net/media/jogl/jogl-2.x-docs-next/">API Specification</a></li>
+ <li> <a href="http://download.java.net/media/jogl/demos/www/test.html">Demos</a></li>
+ <li> <a href="http://download.java.net/media/jogl/builds/nightly/">Nightly Build</a></li>
+ <li> <a href="http://download.java.net/media/jogl/jsr-231-2.x-webstart-next/">JSR-231 2.x Webstart Next Codebase</a></li>
+ <li> <a href="http://download.java.net/media/jogl/jsr-231-2.x-demos-webstart-next/">Demos 2.x Webstart Next Codebase</a></li>
+ <li> <a href="http://download.java.net/media/gluegen/webstart-2.x-next/">GlueGen 2.x Webstart Codebase</a></li>
+ </ul>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
</tbody>
- </table>
-
- </td>
- <td valign="top">
- <table border="0" cellpadding="5" cellspacing="1" width="100%">
- <tbody>
- <tr>
- <td>
-
- <table bgcolor="#6E94B7" border="0" cellpadding="5"
- cellspacing="1" width="100%">
- <tbody>
- <tr>
- <td bgcolor="#6E94B7" valign="top">
-
-
- <div align="left"><font color="#ffffff"><strong>Useful
- Links</strong></font></div>
- </td>
- </tr>
- <tr>
- <td valign="top" bgcolor="#F8F8F8">
-
- <ul>
- <li><a
- href="http://www.javagaming.org/index.php?board=25.0">JOGL
- Forums</a></li>
- <li><a href="http://www.opengl.org"
- target="_blank">OpenGL</a> Home</li>
- <li><a href="https://jogl-demos.dev.java.net/">JOGL
- Demos</a></li>
- <li><a
- href="https://jogl.dev.java.net/source/browse/*checkout*/jogl/trunk/doc/userguide/index.html">JOGL User's Guide</a></li>
- <li><a href="http://netbeans-opengl-pack.dev.java.net/">The NetBeans OpenGL Pack</a></li>
- <li><a
- href="BOF-3908-JOGL-slides.pdf"> JavaOne 2007 BOF Slides on JOGL</a></li>
- <li><a
- href="bof0899.pdf">JavaOne 2006 BOF Slides on JOGL</a></li>
- <li><a
- href="ts1361.pdf">JavaOne 2004 Presentation Slides on JOGL</a></li>
- <li><a
- href="2125.pdf">JavaOne 2003 Presentation Slides on JOGL</a></li>
- <li><a
- href="3167.pdf">JavaOne
- 2002 Slides</a> on <a href="http://jausoft.com/gl4java/">OpenGL for Java</a><br>
- </li>
- <li><a
- href="http://www.sun.com/software/opensource/sca.pdf">Sun Contributor Agreement</a> (<a href="http://www.sun.com/software/opensource/contributor_agreement.jsp">FAQ</a>)<br>
- </li>
-
-
- </ul>
- </td>
- </tr>
-
- </tbody>
-
- </table>
- </td>
- </tr>
-
- </tbody>
- </table>
- </td>
+ </table>
+ </td>
+ <td valign="top">
+ <table border="0" cellpadding="5" cellspacing="1" width="100%">
+ <tbody>
+ <tr>
+ <td>
+ <table bgcolor="#6E94B7" border="0" cellpadding="5" cellspacing="1" width="100%">
+ <tbody>
+ <tr> <td bgcolor="#6E94B7" valign="top"> <div align="left"><font color="#ffffff"><strong>JOGL 1.x</strong></font></div> </td> </tr>
+ <tr> <td valign="top" bgcolor="#F8F8F8">
+ <ul>
+
+ <li> <a href="http://download.java.net/media/jogl/builds/archive/">Archived Builds incl. archived signed webstart bundles</a></li>
+ <li> <a href="http://download.java.net/media/jogl/builds/archive/jsr-231-webstart-current/">Old JOGL 1.x Webstart Codebase</a></li>
+ <li> <a href="http://download.java.net/media/jogl/builds/archive/jsr-231-1.x-webstart-current/">New JOGL 1.x Webstart Codebase</a></li>
+ <li> <a href="http://download.java.net/media/gluegen/builds/archive/">GlueGen Archived Builds</a></li>
+ </ul>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <table bgcolor="#6E94B7" border="0" cellpadding="5" cellspacing="1" width="100%">
+ <tbody>
+ <tr>
+ <td bgcolor="#6E94B7" valign="top">
+ <div align="left"><font color="#ffffff"><strong>Useful Links</strong></font></div>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" bgcolor="#F8F8F8">
+ <ul>
+ <li><a href="http://www.opengl.org" target="_blank">OpenGL Home</a></li>
+ <li><a href="http://kenai.com/projects/netbeans-opengl-pack/" target="_blank">The NetBeans OpenGL Pack</a></li>
+ <li><a href="http://www.sun.com/software/opensource/sca.pdf" target="_blank">Sun Contributor Agreement</a> (<a href="http://www.sun.com/software/opensource/contributor_agreement.jsp">FAQ</a>)<br> </li>
+ <li><a href="https://jdk6.dev.java.net/plugin2/jnlp/" target="_blank">Java Plugin JNLP support</a></li>
+ </ul>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <table bgcolor="#6E94B7" border="0" cellpadding="5" cellspacing="1" width="100%">
+ <tbody>
+ <tr>
+ <td bgcolor="#6E94B7" valign="top">
+ <div align="left"><font color="#ffffff"><strong>Historic Stuff</strong></font></div>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" bgcolor="#F8F8F8">
+ <ul>
+ <li><a href="BOF-3908-JOGL-slides.pdf"> JavaOne 2007 BOF Slides on JOGL</a></li>
+ <li><a href="bof0899.pdf">JavaOne 2006 BOF Slides on JOGL</a></li>
+ <li><a href="ts1361.pdf">JavaOne 2004 Presentation Slides on JOGL</a></li>
+ <li><a href="2125.pdf">JavaOne 2003 Presentation Slides on JOGL</a></li>
+ <li><a href="3167.pdf">JavaOne 2002 Slides</a> on <a href="http://jausoft.com/gl4java/" target="_blank">OpenGL for Java</a></li>
+ <li><a href="http://jausoft.com/gl4java/" target="_blank">OpenGL for Java</a></li>
+ </ul>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
</tr>
-
- </tbody>
+ </tbody>
+ </table>
+ </td>
+</tr>
+</tbody>
</table>
<table border="0" cellpadding="0" cellspacing="1" width="100%">
@@ -204,7 +212,7 @@ the JOGL source tree</a>.
<td>
The following are a few examples of projects and products using
JOGL. To have your project featured here, please email the <a
-href="mailto:[email protected]">project owners</a>.
+href="http://kenai.com/projects/jogl/">project owners</a>.
</td>
</tr>
</table>
@@ -645,116 +653,5 @@ environment.
-<table border="0" cellpadding="0" cellspacing="1" width="100%">
- <tbody>
- <tr>
- <td valign="top" width="100%">
- <table bgcolor="#6E94B7" border="0" cellpadding="5"
- cellspacing="1" width="100%">
- <tbody>
- <tr>
- <td bgcolor="#6E94B7" width="589">
-
-
- <div align="left"><font color="#ffffff"><strong><a name="NIGHTLY">Current nightly build</a></strong></font></div>
- </td>
- </tr>
- <tr>
- <td bgcolor="#F8F8F8">
-
-<!- BEGIN NIGHTLY -->
-<TABLE CELLPADDING=3>
-<TR> <TD> <A HREF=http://download.java.net/media/jogl/builds/nightly/jogl-2.0-docs/>Browsable javadoc</A></TD></TR>
-<TR>
-<TD> <A HREF=http://download.java.net/media/jogl/builds/nightly/gluegen-rt-2.0-webstart.zip> gluegen-rt-2.0-webstart.zip </A></TD>
-<TD> 44021 bytes </TD>
-<TD> 2009-07-09 02:45 </TD>
-</TR>
-<TR>
-<TD> <A HREF=http://download.java.net/media/jogl/builds/nightly/jogl-2.0-docs.zip> jogl-2.0-docs.zip </A></TD>
-<TD> 1758943 bytes </TD>
-<TD> 2009-07-09 02:46 </TD>
-</TR>
-<TR>
-<TD> <A HREF=http://download.java.net/media/jogl/builds/nightly/jogl-2.0-linux-amd64.zip> jogl-2.0-linux-amd64.zip </A></TD>
-<TD> 4404428 bytes </TD>
-<TD> 2009-07-09 02:45 </TD>
-</TR>
-<TR>
-<TD> <A HREF=http://download.java.net/media/jogl/builds/nightly/jogl-2.0-linux-i586.zip> jogl-2.0-linux-i586.zip </A></TD>
-<TD> 4357502 bytes </TD>
-<TD> 2009-07-09 02:45 </TD>
-</TR>
-<TR>
-<TD> <A HREF=http://download.java.net/media/jogl/builds/nightly/jogl-2.0-macosx-universal.zip> jogl-2.0-macosx-universal.zip </A></TD>
-<TD> 4795900 bytes </TD>
-<TD> 2009-07-09 02:45 </TD>
-</TR>
-<TR>
-<TD> <A HREF=http://download.java.net/media/jogl/builds/nightly/jogl-2.0-solaris-sparcv9.zip> jogl-2.0-solaris-sparcv9.zip </A></TD>
-<TD> 4309749 bytes </TD>
-<TD> 2009-07-09 02:45 </TD>
-</TR>
-<TR>
-<TD> <A HREF=http://download.java.net/media/jogl/builds/nightly/jogl-2.0-solaris-sparc.zip> jogl-2.0-solaris-sparc.zip </A></TD>
-<TD> 4328496 bytes </TD>
-<TD> 2009-07-09 02:45 </TD>
-</TR>
-<TR>
-<TD> <A HREF=http://download.java.net/media/jogl/builds/nightly/jogl-2.0-specdocs.zip> jogl-2.0-specdocs.zip </A></TD>
-<TD> 1301096 bytes </TD>
-<TD> 2009-07-09 02:46 </TD>
-</TR>
-<TR>
-<TD> <A HREF=http://download.java.net/media/jogl/builds/nightly/jogl-2.0-src.zip> jogl-2.0-src.zip </A></TD>
-<TD> 4548368 bytes </TD>
-<TD> 2009-07-09 02:45 </TD>
-</TR>
-<TR>
-<TD> <A HREF=http://download.java.net/media/jogl/builds/nightly/jogl-2.0-webstart.zip> jogl-2.0-webstart.zip </A></TD>
-<TD> 6084385 bytes </TD>
-<TD> 2009-07-09 02:45 </TD>
-</TR>
-<TR>
-<TD> <A HREF=http://download.java.net/media/jogl/builds/nightly/jogl-2.0-windows-amd64.zip> jogl-2.0-windows-amd64.zip </A></TD>
-<TD> 4094446 bytes </TD>
-<TD> 2009-07-09 02:45 </TD>
-</TR>
-<TR>
-<TD> <A HREF=http://download.java.net/media/jogl/builds/nightly/jogl-2.0-windows-i586.zip> jogl-2.0-windows-i586.zip </A></TD>
-<TD> 4039760 bytes </TD>
-<TD> 2009-07-09 02:45 </TD>
-</TR>
-<TR>
-<TD> <A HREF=http://download.java.net/media/jogl/builds/nightly/jogl-demos-src.zip> jogl-demos-src.zip </A></TD>
-<TD> 11009506 bytes </TD>
-<TD> 2009-07-09 02:46 </TD>
-</TR>
-<TR>
-<TD> <A HREF=http://download.java.net/media/jogl/builds/nightly/jogl-demos.zip> jogl-demos.zip </A></TD>
-<TD> 8691698 bytes </TD>
-<TD> 2009-07-09 02:46 </TD>
-</TR>
-<TR>
-<TD> <A HREF=http://download.java.net/media/jogl/builds/nightly/nativewindow-2.0-webstart.zip> nativewindow-2.0-webstart.zip </A></TD>
-<TD> 196854 bytes </TD>
-<TD> 2009-07-09 02:45 </TD>
-</TR>
-<TR>
-<TD> <A HREF=http://download.java.net/media/jogl/builds/nightly/newt-2.0-webstart.zip> newt-2.0-webstart.zip </A></TD>
-<TD> 277196 bytes </TD>
-<TD> 2009-07-09 02:45 </TD>
-</TR>
-</TABLE>
-<!- END NIGHTLY -->
- </td>
- </tr>
- </table>
-
-</td>
-</tr>
-</tbody>
-</table>
-
</body>
</html>