aboutsummaryrefslogtreecommitdiffstats
path: root/src/jogl/classes/javax/media/opengl/sub
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2009-03-16 15:10:57 +0000
committerSven Gothel <[email protected]>2009-03-16 15:10:57 +0000
commit3b83ea25d64ab2c92822265f2eb74b35eddab722 (patch)
treea041ed8697b747fec0e198578df1c6cfbfc6adda /src/jogl/classes/javax/media/opengl/sub
parentaf88a8948eb945fdf97d8553f339effc2349fd24 (diff)
repair
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/branches/JOGL_2_SANDBOX@1872 232f8b59-042b-4e1e-8c03-345bb8c30851
Diffstat (limited to 'src/jogl/classes/javax/media/opengl/sub')
-rw-r--r--src/jogl/classes/javax/media/opengl/sub/GLObject.java75
-rw-r--r--src/jogl/classes/javax/media/opengl/sub/fixed/GLFixedFuncUtil.java61
-rw-r--r--src/jogl/classes/javax/media/opengl/sub/fixed/GLLightingIf.java50
-rw-r--r--src/jogl/classes/javax/media/opengl/sub/fixed/GLMatrixIf.java77
-rw-r--r--src/jogl/classes/javax/media/opengl/sub/fixed/GLPointerIf.java39
5 files changed, 302 insertions, 0 deletions
diff --git a/src/jogl/classes/javax/media/opengl/sub/GLObject.java b/src/jogl/classes/javax/media/opengl/sub/GLObject.java
new file mode 100644
index 000000000..1426f75d1
--- /dev/null
+++ b/src/jogl/classes/javax/media/opengl/sub/GLObject.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
+ */
+
+package javax.media.opengl.sub;
+
+import java.nio.*;
+
+import javax.media.opengl.*;
+
+/**
+ * GLObject specifies the GL profile related implementations
+ * and it's composition with GLContext, which is a lifetime one.
+ */
+public interface GLObject {
+
+ public boolean isGL();
+
+ public boolean isGL2();
+
+ public boolean isGLES1();
+
+ public boolean isGLES2();
+
+ public boolean isGLES();
+
+ public boolean isGL2ES1();
+
+ public boolean isGL2ES2();
+
+ /**
+ * @return This object cast to GL
+ * @throws GLException is this GLObject is not a GL implementation
+ */
+ public GL getGL() throws GLException;
+
+ /**
+ * @return This object cast to GL2
+ * @throws GLException is this GLObject is not a GL2 implementation
+ */
+ public GL2 getGL2() throws GLException;
+
+ /**
+ * @return This object cast to GLES1
+ * @throws GLException is this GLObject is not a GLES1 implementation
+ */
+ public GLES1 getGLES1() throws GLException;
+
+ /**
+ * @return This object cast to GLES2
+ * @throws GLException is this GLObject is not a GLES2 implementation
+ */
+ public GLES2 getGLES2() throws GLException;
+
+ /**
+ * @return This object cast to GL2ES1
+ * @throws GLException is this GLObject is not a GL2ES1 implementation
+ */
+ public GL2ES1 getGL2ES1() throws GLException;
+
+ /**
+ * @return This object cast to GL2ES2
+ * @throws GLException is this GLObject is not a GL2ES2 implementation
+ */
+ public GL2ES2 getGL2ES2() throws GLException;
+
+ public String toString();
+
+ /**
+ * @return This GL object's bound GLContext
+ */
+ public GLContext getContext();
+
+}
+
diff --git a/src/jogl/classes/javax/media/opengl/sub/fixed/GLFixedFuncUtil.java b/src/jogl/classes/javax/media/opengl/sub/fixed/GLFixedFuncUtil.java
new file mode 100644
index 000000000..9c384e934
--- /dev/null
+++ b/src/jogl/classes/javax/media/opengl/sub/fixed/GLFixedFuncUtil.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
+ */
+
+package javax.media.opengl.sub.fixed;
+
+import javax.media.opengl.*;
+import javax.media.opengl.sub.*;
+
+import com.sun.nwi.impl.NWReflection;
+import java.lang.reflect.*;
+
+/**
+ * Tool to pipeline GL2ES2 into a fixed function emulation,
+ * implementing GL2ES1.
+ * The implementation is retrieved by reflection.
+ */
+public class GLFixedFuncUtil {
+ static final Constructor fFuncHookCstr;
+ static final Constructor fFuncImplCstr;
+
+ static {
+ if(NWReflection.isClassAvailable("com.sun.opengl.util.glsl.fixed.FixedFuncHook") &&
+ NWReflection.isClassAvailable("com.sun.opengl.util.glsl.fixed.FixedFuncImpl")) {
+ Class argsHook[] = { javax.media.opengl.GL2ES2.class };
+ Class argsImpl[] = { javax.media.opengl.GL2ES2.class, NWReflection.getClass("com.sun.opengl.util.glsl.fixed.FixedFuncHook") };
+ fFuncHookCstr = NWReflection.getConstructor("com.sun.opengl.util.glsl.fixed.FixedFuncHook", argsHook);
+ fFuncImplCstr = NWReflection.getConstructor("com.sun.opengl.util.glsl.fixed.FixedFuncImpl", argsImpl);
+ } else {
+ fFuncHookCstr=null;
+ fFuncImplCstr=null;
+ }
+ }
+
+ /**
+ * @return If gl is a GL2ES1, return the type cast object,
+ * otherwise create a FixedFuncImpl pipeline with the GL2ES2 impl.
+ * @throws GLException If this GL Object is neither GL2ES1 nor GL2ES2
+ */
+ public static final GL2ES1 getFixedFuncImpl(GL gl) {
+ if(gl instanceof GL2ES1) {
+ return (GL2ES1)gl;
+ } else if(gl instanceof GL2ES2) {
+ if(null!=fFuncImplCstr) {
+ try {
+ GL2ES2 es2 = (GL2ES2)gl;
+ Object fFuncHook = fFuncHookCstr.newInstance( new Object[] { es2 } );
+ GL2ES1 fFuncImpl = (GL2ES1) fFuncImplCstr.newInstance( new Object[] { es2, fFuncHook } );
+ gl.getContext().setGL(fFuncImpl);
+ return fFuncImpl;
+ } catch (Exception e) {
+ throw new GLException(e);
+ }
+ } else {
+ throw new GLException("GL Object is GL2ES2, but no fixed function impl. available");
+ }
+ }
+ throw new GLException("GL Object is neither GL2ES1 nor GL2ES2");
+ }
+}
+
diff --git a/src/jogl/classes/javax/media/opengl/sub/fixed/GLLightingIf.java b/src/jogl/classes/javax/media/opengl/sub/fixed/GLLightingIf.java
new file mode 100644
index 000000000..1f3aa9ab7
--- /dev/null
+++ b/src/jogl/classes/javax/media/opengl/sub/fixed/GLLightingIf.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
+ */
+
+package javax.media.opengl.sub.fixed;
+
+import java.nio.*;
+
+import javax.media.opengl.*;
+import javax.media.opengl.sub.*;
+
+public interface GLLightingIf {
+ public static final int GL_LIGHT0 = 0x4000;
+ public static final int GL_LIGHT1 = 0x4001;
+ public static final int GL_LIGHT2 = 0x4002;
+ public static final int GL_LIGHT3 = 0x4003;
+ public static final int GL_LIGHT4 = 0x4004;
+ public static final int GL_LIGHT5 = 0x4005;
+ public static final int GL_LIGHT6 = 0x4006;
+ public static final int GL_LIGHT7 = 0x4007;
+ public static final int GL_LIGHTING = 0xB50;
+ public static final int GL_AMBIENT = 0x1200;
+ public static final int GL_DIFFUSE = 0x1201;
+ public static final int GL_SPECULAR = 0x1202;
+ public static final int GL_POSITION = 0x1203;
+ public static final int GL_SPOT_DIRECTION = 0x1204;
+ public static final int GL_SPOT_EXPONENT = 0x1205;
+ public static final int GL_SPOT_CUTOFF = 0x1206;
+ public static final int GL_CONSTANT_ATTENUATION = 0x1207;
+ public static final int GL_LINEAR_ATTENUATION = 0x1208;
+ public static final int GL_QUADRATIC_ATTENUATION = 0x1209;
+ public static final int GL_EMISSION = 0x1600;
+ public static final int GL_SHININESS = 0x1601;
+ public static final int GL_AMBIENT_AND_DIFFUSE = 0x1602;
+ public static final int GL_COLOR_MATERIAL = 0xB57;
+ public static final int GL_NORMALIZE = 0xBA1;
+
+ public static final int GL_FLAT = 0x1D00;
+ public static final int GL_SMOOTH = 0x1D01;
+
+ public void glLightfv(int light, int pname, java.nio.FloatBuffer params);
+ public void glLightfv(int light, int pname, float[] params, int params_offset);
+ public void glMaterialf(int face, int pname, float param);
+ public void glMaterialfv(int face, int pname, java.nio.FloatBuffer params);
+ public void glMaterialfv(int face, int pname, float[] params, int params_offset);
+ public void glColor4f(float red, float green, float blue, float alpha);
+ public void glShadeModel(int mode);
+
+}
+
diff --git a/src/jogl/classes/javax/media/opengl/sub/fixed/GLMatrixIf.java b/src/jogl/classes/javax/media/opengl/sub/fixed/GLMatrixIf.java
new file mode 100644
index 000000000..834731b98
--- /dev/null
+++ b/src/jogl/classes/javax/media/opengl/sub/fixed/GLMatrixIf.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
+ */
+
+package javax.media.opengl.sub.fixed;
+
+import java.nio.*;
+
+import javax.media.opengl.*;
+import javax.media.opengl.sub.*;
+
+public interface GLMatrixIf {
+
+ public static final int GL_MATRIX_MODE = 0x0BA0;
+ public static final int GL_MODELVIEW = 0x1700;
+ public static final int GL_PROJECTION = 0x1701;
+ // public static final int GL_TEXTURE = 0x1702; // Use GL.GL_TEXTURE due to ambiguous GL usage
+ public static final int GL_MODELVIEW_MATRIX = 0x0BA6;
+ public static final int GL_PROJECTION_MATRIX = 0x0BA7;
+ public static final int GL_TEXTURE_MATRIX = 0x0BA8;
+
+ /**
+ * glGetFloatv
+ * @param pname GL_MODELVIEW_MATRIX, GL_PROJECTION_MATRIX or GL_TEXTURE_MATRIX
+ * @param params the FloatBuffer's position remains unchanged,
+ * which is the same behavior than the native JOGL GL impl
+ */
+ public void glGetFloatv(int pname, java.nio.FloatBuffer params);
+ public void glGetFloatv(int pname, float[] params, int params_offset);
+ /**
+ * glGetIntegerv
+ * @param pname GL_MATRIX_MODE
+ * @param params the FloatBuffer's position remains unchanged
+ * which is the same behavior than the native JOGL GL impl
+ */
+ public void glGetIntegerv(int pname, IntBuffer params);
+ public void glGetIntegerv(int pname, int[] params, int params_offset);
+
+ /**
+ * sets the current matrix
+ * @param pname GL_MODELVIEW, GL_PROJECTION or GL.GL_TEXTURE
+ */
+ public void glMatrixMode(int mode) ;
+
+ public void glPushMatrix();
+ public void glPopMatrix();
+
+ public void glLoadIdentity() ;
+
+ /**
+ * glLoadMatrixf
+ * @param params the FloatBuffer's position remains unchanged,
+ * which is the same behavior than the native JOGL GL impl
+ */
+ public void glLoadMatrixf(java.nio.FloatBuffer m) ;
+ public void glLoadMatrixf(float[] m, int m_offset);
+
+ /**
+ * glMultMatrixf
+ * @param params the FloatBuffer's position remains unchanged,
+ * which is the same behavior than the native JOGL GL impl
+ */
+ public void glMultMatrixf(java.nio.FloatBuffer m) ;
+ public void glMultMatrixf(float[] m, int m_offset);
+
+ public void glTranslatef(float x, float y, float z) ;
+
+ public void glRotatef(float angle, float x, float y, float z);
+
+ public void glScalef(float x, float y, float z) ;
+
+ public void glOrthof(float left, float right, float bottom, float top, float zNear, float zFar) ;
+
+ public void glFrustumf(float left, float right, float bottom, float top, float zNear, float zFar);
+
+}
+
diff --git a/src/jogl/classes/javax/media/opengl/sub/fixed/GLPointerIf.java b/src/jogl/classes/javax/media/opengl/sub/fixed/GLPointerIf.java
new file mode 100644
index 000000000..2f4cda1aa
--- /dev/null
+++ b/src/jogl/classes/javax/media/opengl/sub/fixed/GLPointerIf.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
+ */
+
+package javax.media.opengl.sub.fixed;
+
+import java.nio.*;
+
+import javax.media.opengl.*;
+import javax.media.opengl.sub.*;
+
+public interface GLPointerIf {
+ public static final int GL_VERTEX_ARRAY = 0x8074;
+ public static final int GL_NORMAL_ARRAY = 0x8075;
+ public static final int GL_COLOR_ARRAY = 0x8076;
+ public static final int GL_TEXTURE_COORD_ARRAY = 0x8078;
+
+ public void glEnableClientState(int arrayName);
+ public void glDisableClientState(int arrayName);
+
+ public void glVertexPointer(GLArrayData array);
+ public void glVertexPointer(int size, int type, int stride, java.nio.Buffer pointer);
+ public void glVertexPointer(int size, int type, int stride, long pointer_buffer_offset);
+
+ public void glColorPointer(GLArrayData array);
+ public void glColorPointer(int size, int type, int stride, java.nio.Buffer pointer);
+ public void glColorPointer(int size, int type, int stride, long pointer_buffer_offset);
+ public void glColor4f(float red, float green, float blue, float alpha);
+
+ public void glNormalPointer(GLArrayData array);
+ public void glNormalPointer(int type, int stride, java.nio.Buffer pointer);
+ public void glNormalPointer(int type, int stride, long pointer_buffer_offset);
+
+ public void glTexCoordPointer(GLArrayData array);
+ public void glTexCoordPointer(int size, int type, int stride, java.nio.Buffer pointer);
+ public void glTexCoordPointer(int size, int type, int stride, long pointer_buffer_offset);
+
+}
+