diff options
author | Sven Gothel <[email protected]> | 2008-07-21 00:18:02 +0000 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2008-07-21 00:18:02 +0000 |
commit | 3e43ef1a81bca32d2840c714c8e791d192ad88cc (patch) | |
tree | f607023a72696db5112b0e1f2236f0e4467964a3 /src/classes/javax/media | |
parent | de0eaef37caf13314114ab37cc53edc48610a7bf (diff) |
- New profile GL2ES12 (desktop)
- Intersection of GL2 + GLES1 + GLES2
- Common set of GLES1 + GLES2
- Utilized new 'ExtendedInterfaceSymbolsOnly' gluegen config
- DroppingUniqVendorExtension + 3DFX + APPLE
- Some APPLE enumerates are manually provided!
- Removing of 'jogl.oswin.jar' - since it is redundant now!
- Proper partitioning of 'jogl.gl2' and 'jogl.gl2es12' for
- x11, win and osx
- Profile selection/trial for e.g. GL2ES1 is now in the following order:
1) GLES1
2) GL2ES12
3) GL2
- Footprint for all profiles below 1/2 MB,
NEWT:
ES1: 284 kB
ES2: 280 kB
GL2ES12: 332 kB
GL2: 456 kB
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/branches/JOGL_2_SANDBOX@1729 232f8b59-042b-4e1e-8c03-345bb8c30851
Diffstat (limited to 'src/classes/javax/media')
-rw-r--r-- | src/classes/javax/media/opengl/GLDrawableFactory.java | 4 | ||||
-rw-r--r-- | src/classes/javax/media/opengl/GLProfile.java | 51 |
2 files changed, 46 insertions, 9 deletions
diff --git a/src/classes/javax/media/opengl/GLDrawableFactory.java b/src/classes/javax/media/opengl/GLDrawableFactory.java index a6e382760..e28c9b28e 100644 --- a/src/classes/javax/media/opengl/GLDrawableFactory.java +++ b/src/classes/javax/media/opengl/GLDrawableFactory.java @@ -95,7 +95,7 @@ public abstract class GLDrawableFactory { } catch (Exception e) { e.printStackTrace(); } - } else if (!GLProfile.isGL2()) { + } else if (!GLProfile.isGL2() && !GLProfile.isGL2ES12()) { // We require that the user passes in one of the known profiles throw new GLException("Unknown or unsupported profile \"" + GLProfile.getProfile() + "\""); } @@ -162,7 +162,7 @@ public abstract class GLDrawableFactory { } catch (Exception e) { e.printStackTrace(); } - } else if (!GLProfile.isGL2()) { + } else if (!GLProfile.isGL2() && !GLProfile.isGL2ES12()) { // We require that the user passes in one of the known profiles throw new GLException("Unknown or unsupported profile \"" + GLProfile.getProfile() + "\""); } diff --git a/src/classes/javax/media/opengl/GLProfile.java b/src/classes/javax/media/opengl/GLProfile.java index 21dccc8ed..d4c8d4c6b 100644 --- a/src/classes/javax/media/opengl/GLProfile.java +++ b/src/classes/javax/media/opengl/GLProfile.java @@ -44,6 +44,9 @@ public class GLProfile { /** The desktop (OpenGL 2.0) profile */ public static final String GL2 = "GL2"; + /** The desktop short profile, intersecting: GL2+GLES1+GLES2 */ + public static final String GL2ES12 = "GL2ES12"; + /** The OpenGL ES 1 (really, 1.1) profile */ public static final String GLES1 = "GLES1"; @@ -56,8 +59,11 @@ public class GLProfile { private static final void tryLibrary() { try { + Class clazz = Class.forName(getGLImplBaseClassName()+"Impl"); if(GL2.equals(profile)) { NativeLibLoader.loadGL2(); + } if(GL2ES12.equals(profile)) { + NativeLibLoader.loadGL2ES12(); } else if(GLES1.equals(profile) || GLES2.equals(profile)) { Object eGLDrawableFactory = GLReflection.createInstance("com.sun.opengl.impl.egl.EGLDrawableFactory"); if(null==eGLDrawableFactory) { @@ -95,15 +101,21 @@ public class GLProfile { } } + /** + * Selects a profile, implementing the interface GL2ES1. + */ public static synchronized final void setProfileGL2ES1() { - setProfile(new String[] { GLES1, GL2 }); + setProfile(new String[] { GLES1, GL2ES12, GL2 }); if(null==profile) { throw new GLException("Profiles GLES1 and GL2 not available"); } } + /** + * Selects a profile, implementing the interface GL2ES2. + */ public static synchronized final void setProfileGL2ES2() { - setProfile(new String[] { GLES2, GL2 }); + setProfile(new String[] { GLES2, GL2ES12, GL2 }); if(null==profile) { throw new GLException("Profiles GLES2 and GL2 not available"); } @@ -113,26 +125,37 @@ public class GLProfile { return profile; } + /* true profile GL2ES12 */ + public static final boolean isGL2ES12() { + return GL2ES12.equals(profile); + } + + /* true profile GL2 */ public static final boolean isGL2() { return GL2.equals(profile); } + /* true profile GLES1 */ public static final boolean isGLES1() { return GLES1.equals(profile); } - public static final boolean isGL2ES1() { - return isGL2() || isGLES1(); - } - + /* true profile GLES2 */ public static final boolean isGLES2() { return GLES2.equals(profile); } + /* abstract profile GL2ES12, GL2, GLES1 */ + public static final boolean isGL2ES1() { + return isGL2ES12() || isGL2() || isGLES1(); + } + + /* abstract profile GL2ES12, GL2, GLES2 */ public static final boolean isGL2ES2() { - return isGL2() || isGLES2(); + return isGL2ES12() || isGL2() || isGLES2(); } + /* abstract profile GLES1, GLES2 */ public static final boolean isGLES() { return isGLES2() || isGLES1(); } @@ -165,5 +188,19 @@ public class GLProfile { return GLReflection.implementationOf(obj, "javax.media.opengl.GL2ES2"); } + public static final String getGLImplBaseClassName() { + if(isGL2()) { + return "com.sun.opengl.impl.gl2.GL2"; + } else if(isGL2ES12()) { + return "com.sun.opengl.impl.gl2es12.GL2ES12"; + } else if(isGLES1()) { + return "com.sun.opengl.impl.es1.GLES1"; + } else if(isGLES2()) { + return "com.sun.opengl.impl.es2.GLES2"; + } else { + throw new GLUnsupportedException("uncovered profile"); + } + } + } |