summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2008-07-11 13:47:28 +0000
committerSven Gothel <[email protected]>2008-07-11 13:47:28 +0000
commit6f2805064b17a3b4817c5a3f44f327c912c41b21 (patch)
treef169b2cdd69c2fb59707d9f7a94017af3cb32d99
parent86dfcfbe2554e1b85d659b71130a9b950ab98b42 (diff)
cubefbo working
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/../svn-server-sync/jogl-demos/branches/JOGL_2_SANDBOX@257 3298f667-5e0e-4b4a-8ed4-a3559d26a5f4
-rw-r--r--make/build.xml2
-rwxr-xr-xsrc/demos/es1/RedSquare.java2
-rwxr-xr-xsrc/demos/es1/angeles/Main.java3
-rw-r--r--src/demos/es1/cube/Cube.java315
-rwxr-xr-xsrc/demos/es1/cubefbo/CubeObject.java250
-rwxr-xr-xsrc/demos/es1/cubefbo/FBCubes.java51
-rwxr-xr-xsrc/demos/es1/cubefbo/FBObject.java150
-rwxr-xr-xsrc/demos/es1/cubefbo/Main.java2
8 files changed, 354 insertions, 421 deletions
diff --git a/make/build.xml b/make/build.xml
index e7a3608..ab66a1b 100644
--- a/make/build.xml
+++ b/make/build.xml
@@ -183,7 +183,7 @@
<src path="${src}" />
<classpath refid="jogl-demos.classpath" />
</javac-->
- <javac destdir="${classes}" includes="demos/es1/**" source="1.4" target="1.4" debug="true" debuglevel="source,lines"
+ <javac destdir="${classes}" includes="demos/es1/**" excludes="demos/es1/cubefbo-sven/**" source="1.4" target="1.4" debug="true" debuglevel="source,lines"
bootclasspath="../../gluegen/make/lib/cdc_fp.jar">
<src path="${src}" />
<classpath refid="jogl-demos.classpath" />
diff --git a/src/demos/es1/RedSquare.java b/src/demos/es1/RedSquare.java
index cc93c2c..5fb8004 100755
--- a/src/demos/es1/RedSquare.java
+++ b/src/demos/es1/RedSquare.java
@@ -93,8 +93,8 @@ public class RedSquare implements MouseListener, GLEventListener {
private FloatBuffer vertices;
public void init(GLAutoDrawable drawable) {
- glu = GLU.createGLU();
GL2ES1 gl = drawable.getGL().getGL2ES1();
+ glu = GLU.createGLU(gl);
System.err.println("Entering initialization");
System.err.println("GL_VERSION=" + gl.glGetString(GL2ES1.GL_VERSION));
System.err.println("GL_EXTENSIONS:");
diff --git a/src/demos/es1/angeles/Main.java b/src/demos/es1/angeles/Main.java
index e4fbbf6..aab344e 100755
--- a/src/demos/es1/angeles/Main.java
+++ b/src/demos/es1/angeles/Main.java
@@ -10,6 +10,7 @@ public class Main implements MouseListener {
public GLWindow window = null;
public void mouseClicked(MouseEvent e) {
+ //System.out.println(e);
switch(e.getClickCount()) {
case 1:
if(null!=window) {
@@ -54,7 +55,7 @@ public class Main implements MouseListener {
caps.setGreenBits(6);
caps.setBlueBits(5);
caps.setDepthBits(16);
- GLWindow window = GLWindow.create(nWindow, caps);
+ window = GLWindow.create(nWindow, caps);
window.addMouseListener(this);
diff --git a/src/demos/es1/cube/Cube.java b/src/demos/es1/cube/Cube.java
new file mode 100644
index 0000000..ca17466
--- /dev/null
+++ b/src/demos/es1/cube/Cube.java
@@ -0,0 +1,315 @@
+/*
+ *
+ * Copyright (c) 2007, 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:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions 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 nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package demos.es1.cube;
+
+import javax.media.opengl.*;
+import javax.media.opengl.util.*;
+import javax.media.opengl.glu.*;
+import java.nio.*;
+
+import com.sun.javafx.newt.*;
+
+public class Cube implements GLEventListener {
+ public Cube () {
+ this(false, false);
+ }
+
+ public Cube (boolean useTexCoords, boolean innerCube) {
+ this.innerCube = innerCube;
+
+ // Initialize data Buffers
+ this.cubeVertices = BufferUtil.newShortBuffer(s_cubeVertices.length);
+ cubeVertices.put(s_cubeVertices);
+ cubeVertices.rewind();
+
+ this.cubeColors = BufferUtil.newByteBuffer(s_cubeColors.length);
+ cubeColors.put(s_cubeColors);
+ cubeColors.rewind();
+
+ this.cubeNormals = BufferUtil.newByteBuffer(s_cubeNormals.length);
+ cubeNormals.put(s_cubeNormals);
+ cubeNormals.rewind();
+
+ this.cubeIndices = BufferUtil.newByteBuffer(s_cubeIndices.length);
+ cubeIndices.put(s_cubeIndices);
+ cubeIndices.rewind();
+
+ if (useTexCoords) {
+ this.cubeTexCoords = BufferUtil.newShortBuffer(s_cubeTexCoords.length);
+ cubeTexCoords.put(s_cubeTexCoords);
+ cubeTexCoords.rewind();
+ }
+ }
+
+ public void init(GLAutoDrawable drawable) {
+ GL2ES1 gl = drawable.getGL().getGL2ES1();
+ glu = GLU.createGLU(gl);
+
+ }
+
+ public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {
+ float aspect = (height != 0) ? ((float)width / (float)height) : 1.0f;
+
+ GL2ES1 gl = drawable.getGL().getGL2ES1();
+
+ gl.glViewport(0, 0, width, height);
+
+ gl.glMatrixMode(gl.GL_MODELVIEW);
+ gl.glLoadIdentity();
+
+ gl.glScissor(0, 0, width, height);
+ if(innerCube) {
+ // Clear background to white
+ gl.glClearColor(1.0f, 1.0f, 1.0f, 0.6f);
+ } else {
+ // Clear background to blue
+ gl.glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
+ }
+
+ gl.glLightfv(gl.GL_LIGHT0, gl.GL_POSITION, light_position, 0);
+ gl.glLightfv(gl.GL_LIGHT0, gl.GL_AMBIENT, light_ambient, 0);
+ gl.glLightfv(gl.GL_LIGHT0, gl.GL_DIFFUSE, light_diffuse, 0);
+ gl.glLightfv(gl.GL_LIGHT0, gl.GL_SPECULAR, zero_vec4, 0);
+ gl.glMaterialfv(gl.GL_FRONT_AND_BACK, gl.GL_SPECULAR, material_spec, 0);
+
+ gl.glEnable(gl.GL_NORMALIZE);
+ gl.glEnable(gl.GL_LIGHTING);
+ gl.glEnable(gl.GL_LIGHT0);
+ gl.glEnable(gl.GL_COLOR_MATERIAL);
+ gl.glEnable(gl.GL_CULL_FACE);
+
+ gl.glShadeModel(gl.GL_SMOOTH);
+ gl.glDisable(gl.GL_DITHER);
+
+ gl.glEnableClientState(gl.GL_VERTEX_ARRAY);
+ gl.glEnableClientState(gl.GL_NORMAL_ARRAY);
+ gl.glEnableClientState(gl.GL_COLOR_ARRAY);
+ if (cubeTexCoords != null) {
+ gl.glEnableClientState(gl.GL_TEXTURE_COORD_ARRAY);
+ } else {
+ gl.glDisableClientState(gl.GL_TEXTURE_COORD_ARRAY);
+ }
+
+ gl.glHint(gl.GL_PERSPECTIVE_CORRECTION_HINT, gl.GL_FASTEST);
+
+ gl.glMatrixMode(gl.GL_PROJECTION);
+ gl.glLoadIdentity();
+
+ if(!innerCube) {
+ glu.gluPerspective(90.0f, aspect, 1.0f, 100.0f);
+ } else {
+ gl.glOrthof(-20.0f, 20.0f, -20.0f, 20.0f, 1.0f, 40.0f);
+ }
+ // weird effect ..: gl.glCullFace(gl.GL_FRONT);
+ }
+
+ public void display(GLAutoDrawable drawable) {
+ GL2ES1 gl = drawable.getGL().getGL2ES1();
+
+ gl.glClear(gl.GL_COLOR_BUFFER_BIT | gl.GL_DEPTH_BUFFER_BIT);
+
+ // Draw a green square using MIDP
+ //g.setColor(0, 255, 0);
+ //g.fillRect(20, 20, width - 40, height - 40);
+
+ gl.glMatrixMode(gl.GL_MODELVIEW);
+ gl.glLoadIdentity();
+
+ gl.glTranslatef(0.f, 0.f, -30.f);
+ gl.glRotatef((float)(time * 29.77f), 1.0f, 2.0f, 0.0f);
+ gl.glRotatef((float)(time * 22.311f), -0.1f, 0.0f, -5.0f);
+
+ gl.glVertexPointer(3, gl.GL_SHORT, 0, cubeVertices);
+ gl.glColorPointer(4, gl.GL_UNSIGNED_BYTE, 0, cubeColors);
+ gl.glNormalPointer(gl.GL_BYTE, 0, cubeNormals);
+ if (cubeTexCoords != null) {
+ gl.glTexCoordPointer(2, gl.GL_SHORT, 0, cubeTexCoords);
+ gl.glTexEnvi(gl.GL_TEXTURE_ENV, gl.GL_TEXTURE_ENV_MODE, gl.GL_INCR);
+ }
+
+
+ gl.glDrawElements(gl.GL_TRIANGLES, 6 * 6, gl.GL_UNSIGNED_BYTE, cubeIndices);
+ // gl.glFinish();
+
+ time += 0.01f;
+ }
+
+ public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {
+ }
+
+ static final float[] light_position = { -50.f, 50.f, 50.f, 0.f };
+ static final float[] light_ambient = { 0.125f, 0.125f, 0.125f, 1.f };
+ static final float[] light_diffuse = { 1.0f, 1.0f, 1.0f, 1.f };
+ static final float[] material_spec = { 1.0f, 1.0f, 1.0f, 0.f };
+ static final float[] zero_vec4 = { 0.0f, 0.0f, 0.0f, 0.f };
+
+ boolean innerCube;
+ boolean initialized = false;
+ float time = 0.0f;
+ ShortBuffer cubeVertices;
+ ShortBuffer cubeTexCoords;
+ ByteBuffer cubeColors;
+ ByteBuffer cubeNormals;
+ ByteBuffer cubeIndices;
+ private GLU glu;
+
+ private static final short[] s_cubeVertices =
+ {
+ -10, 10, 10, 10, -10, 10, 10, 10, 10, -10, -10, 10,
+
+ -10, 10, -10, 10, -10, -10, 10, 10, -10, -10, -10, -10,
+
+ -10, -10, 10, 10, -10, -10, 10, -10, 10, -10, -10, -10,
+
+ -10, 10, 10, 10, 10, -10, 10, 10, 10, -10, 10, -10,
+
+ 10, -10, 10, 10, 10, -10, 10, 10, 10, 10, -10, -10,
+
+ -10, -10, 10, -10, 10, -10, -10, 10, 10, -10, -10, -10
+ };
+ private static final short[] s_cubeTexCoords =
+ {
+ 0, (short) 0xffff, (short) 0xffff, 0, (short) 0xffff, (short) 0xffff, 0, 0,
+
+ 0, (short) 0xffff, (short) 0xffff, 0, (short) 0xffff, (short) 0xffff, 0, 0,
+
+ 0, (short) 0xffff, (short) 0xffff, 0, (short) 0xffff, (short) 0xffff, 0, 0,
+
+ 0, (short) 0xffff, (short) 0xffff, 0, (short) 0xffff, (short) 0xffff, 0, 0,
+
+ 0, (short) 0xffff, (short) 0xffff, 0, (short) 0xffff, (short) 0xffff, 0, 0,
+
+ 0, (short) 0xffff, (short) 0xffff, 0, (short) 0xffff, (short) 0xffff, 0, 0,
+ };
+
+ private static final byte[] s_cubeColors =
+ {
+ (byte)40, (byte)80, (byte)160, (byte)255, (byte)40, (byte)80, (byte)160, (byte)255,
+ (byte)40, (byte)80, (byte)160, (byte)255, (byte)40, (byte)80, (byte)160, (byte)255,
+
+ (byte)40, (byte)80, (byte)160, (byte)255, (byte)40, (byte)80, (byte)160, (byte)255,
+ (byte)40, (byte)80, (byte)160, (byte)255, (byte)40, (byte)80, (byte)160, (byte)255,
+
+ (byte)128, (byte)128, (byte)128, (byte)255, (byte)128, (byte)128, (byte)128, (byte)255,
+ (byte)128, (byte)128, (byte)128, (byte)255, (byte)128, (byte)128, (byte)128, (byte)255,
+
+ (byte)128, (byte)128, (byte)128, (byte)255, (byte)128, (byte)128, (byte)128, (byte)255,
+ (byte)128, (byte)128, (byte)128, (byte)255, (byte)128, (byte)128, (byte)128, (byte)255,
+
+ (byte)255, (byte)110, (byte)10, (byte)255, (byte)255, (byte)110, (byte)10, (byte)255,
+ (byte)255, (byte)110, (byte)10, (byte)255, (byte)255, (byte)110, (byte)10, (byte)255,
+
+ (byte)255, (byte)70, (byte)60, (byte)255, (byte)255, (byte)70, (byte)60, (byte)255,
+ (byte)255, (byte)70, (byte)60, (byte)255, (byte)255, (byte)70, (byte)60, (byte)255
+ };
+ private static final byte[] s_cubeIndices =
+ {
+ 0, 3, 1, 2, 0, 1, /* front */
+ 6, 5, 4, 5, 7, 4, /* back */
+ 8, 11, 9, 10, 8, 9, /* top */
+ 15, 12, 13, 12, 14, 13, /* bottom */
+ 16, 19, 17, 18, 16, 17, /* right */
+ 23, 20, 21, 20, 22, 21 /* left */
+ };
+ private static final byte[] s_cubeNormals =
+ {
+ 0, 0, 127, 0, 0, 127, 0, 0, 127, 0, 0, 127,
+
+ 0, 0, -128, 0, 0, -128, 0, 0, -128, 0, 0, -128,
+
+ 0, -128, 0, 0, -128, 0, 0, -128, 0, 0, -128, 0,
+
+ 0, 127, 0, 0, 127, 0, 0, 127, 0, 0, 127, 0,
+
+ 127, 0, 0, 127, 0, 0, 127, 0, 0, 127, 0, 0,
+
+ -128, 0, 0, -128, 0, 0, -128, 0, 0, -128, 0, 0
+ };
+
+ private void run(int type) {
+ int width = 800;
+ int height = 480;
+ System.err.println("Cube.run()");
+ GLProfile.setProfileGL2ES1();
+ try {
+ Window nWindow = null;
+ if(0!=(type&USE_AWT)) {
+ Display nDisplay = NewtFactory.createDisplay(NewtFactory.AWT, null); // local display
+ Screen nScreen = NewtFactory.createScreen(NewtFactory.AWT, nDisplay, 0); // screen 0
+ nWindow = NewtFactory.createWindow(NewtFactory.AWT, nScreen, 0); // dummy VisualID
+ }
+
+ GLCapabilities caps = new GLCapabilities();
+ // For emulation library, use 16 bpp
+ caps.setRedBits(5);
+ caps.setGreenBits(6);
+ caps.setBlueBits(5);
+ caps.setDepthBits(16);
+ GLWindow window = GLWindow.create(nWindow, caps);
+
+ window.addGLEventListener(this);
+
+ // Size OpenGL to Video Surface
+ window.setSize(width, height);
+ window.setFullscreen(true);
+ window.setVisible(true);
+
+ long curTime;
+ long startTime = System.currentTimeMillis();
+ while (((curTime = System.currentTimeMillis()) - startTime) < 20000) {
+ window.display();
+ }
+
+ // Shut things down cooperatively
+ window.close();
+ window.getFactory().shutdown();
+ System.out.println("Cube shut down cleanly.");
+ } catch (Throwable t) {
+ t.printStackTrace();
+ }
+ }
+
+ public static int USE_NEWT = 0;
+ public static int USE_AWT = 1 << 0;
+
+ public static void main(String[] args) {
+ int type = USE_NEWT ;
+ for(int i=args.length-1; i>=0; i--) {
+ if(args[i].equals("-awt")) {
+ type |= USE_AWT;
+ }
+ }
+ new Cube().run(type);
+ System.exit(0);
+ }
+}
+
diff --git a/src/demos/es1/cubefbo/CubeObject.java b/src/demos/es1/cubefbo/CubeObject.java
deleted file mode 100755
index 85efd8d..0000000
--- a/src/demos/es1/cubefbo/CubeObject.java
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- * 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 demos.es1.cubefbo;
-
-import javax.media.opengl.*;
-import javax.media.opengl.util.*;
-import java.nio.*;
-
-class CubeObject {
- public CubeObject (boolean useTexCoords) {
- // Initialize data Buffers
- this.cubeVertices = BufferUtil.newShortBuffer(s_cubeVertices.length);
- cubeVertices.put(s_cubeVertices);
- cubeVertices.rewind();
-
- this.cubeColors = BufferUtil.newByteBuffer(s_cubeColors.length);
- cubeColors.put(s_cubeColors);
- cubeColors.rewind();
-
- this.cubeNormals = BufferUtil.newByteBuffer(s_cubeNormals.length);
- cubeNormals.put(s_cubeNormals);
- cubeNormals.rewind();
-
- this.cubeIndices = BufferUtil.newByteBuffer(s_cubeIndices.length);
- cubeIndices.put(s_cubeIndices);
- cubeIndices.rewind();
-
- if (useTexCoords) {
- this.cubeTexCoords = BufferUtil.newShortBuffer(s_cubeTexCoords.length);
- cubeTexCoords.put(s_cubeTexCoords);
- cubeTexCoords.rewind();
- }
- }
-
- private void perspective(GL2ES1 gl, float fovy, float aspect, float zNear, float zFar) {
- float xmin;
- float xmax;
- float ymin;
- float ymax;
-
- ymax = zNear * (float)Math.tan((fovy * Math.PI) / 360.0);
- ymin = -ymax;
- xmin = ymin * aspect;
- xmax = ymax * aspect;
-
- gl.glFrustumf(xmin, xmax, ymin, ymax, zNear, zFar);
- }
-
- static final float[] light_position = { -50.f, 50.f, 50.f, 0.f };
- static final float[] light_ambient = { 0.125f, 0.125f, 0.125f, 1.f };
- static final float[] light_diffuse = { 1.0f, 1.0f, 1.0f, 1.f };
- static final float[] material_spec = { 1.0f, 1.0f, 1.0f, 0.f };
- static final float[] zero_vec4 = { 0.0f, 0.0f, 0.0f, 0.f };
-
- public void reshape(GL2ES1 gl, int x, int y, int width, int height) {
- float aspect = (height != 0) ? ((float)width / (float)height) : 1.0f;
-
- gl.glViewport(0, 0, width, height);
- gl.glScissor(0, 0, width, height);
-
- gl.glMatrixMode(gl.GL_MODELVIEW);
- gl.glLoadIdentity();
-
- gl.glLightfv(gl.GL_LIGHT0, gl.GL_POSITION, light_position, 0);
- gl.glLightfv(gl.GL_LIGHT0, gl.GL_AMBIENT, light_ambient, 0);
- gl.glLightfv(gl.GL_LIGHT0, gl.GL_DIFFUSE, light_diffuse, 0);
- gl.glLightfv(gl.GL_LIGHT0, gl.GL_SPECULAR, zero_vec4, 0);
- gl.glMaterialfv(gl.GL_FRONT_AND_BACK, gl.GL_SPECULAR, material_spec, 0);
-
- gl.glEnable(gl.GL_NORMALIZE);
- gl.glEnable(gl.GL_LIGHTING);
- gl.glEnable(gl.GL_LIGHT0);
- gl.glEnable(gl.GL_COLOR_MATERIAL);
- gl.glEnable(gl.GL_CULL_FACE);
-
- gl.glHint(gl.GL_PERSPECTIVE_CORRECTION_HINT, gl.GL_FASTEST);
-
- gl.glShadeModel(gl.GL_SMOOTH);
- gl.glDisable(gl.GL_DITHER);
-
- gl.glClearColor(0.0f, 0.1f, 0.0f, 1.0f);
-
- gl.glEnableClientState(gl.GL_VERTEX_ARRAY);
- gl.glEnableClientState(gl.GL_NORMAL_ARRAY);
- gl.glEnableClientState(gl.GL_COLOR_ARRAY);
- if (cubeTexCoords != null) {
- gl.glEnableClientState(gl.GL_TEXTURE_COORD_ARRAY);
- } else {
- gl.glDisableClientState(gl.GL_TEXTURE_COORD_ARRAY);
- }
-
- gl.glMatrixMode(gl.GL_PROJECTION);
- gl.glLoadIdentity();
-
- float fovy = 55.f;
- if (aspect < 1) {
- // Compute this as fovx instead
- float fovx = fovy;
- fovy = (float) Math.toDegrees(Math.atan(Math.tan(Math.toRadians(fovx)) / aspect));
- }
-
- perspective(gl, fovy, aspect, 0.1f, 100.f);
- gl.glCullFace(gl.GL_BACK);
- }
-
- public void display(GL2ES1 gl, float xRot, float yRot) {
- // System.out.println("CubeObject .. p1: "+this);
- gl.glClear(gl.GL_COLOR_BUFFER_BIT | gl.GL_DEPTH_BUFFER_BIT);
-
- gl.glMatrixMode(gl.GL_MODELVIEW);
- gl.glLoadIdentity();
-
- gl.glTranslatef(0.f, 0.f, -30.f);
- // gl.glTranslatef(0.f, 0.f, -30.f);
- // gl.glRotatef((float)(time * 29.77f), 1.0f, 2.0f, 0.0f);
- // gl.glRotatef((float)(time * 22.311f), -0.1f, 0.0f, -5.0f);
- gl.glRotatef(yRot, 0, 1, 0);
- gl.glRotatef(xRot, 1, 0, 0);
-
- gl.glVertexPointer(3, gl.GL_SHORT, 0, cubeVertices);
- gl.glColorPointer(4, gl.GL_UNSIGNED_BYTE, 0, cubeColors);
- gl.glNormalPointer(gl.GL_BYTE, 0, cubeNormals);
- if (cubeTexCoords != null) {
- gl.glTexCoordPointer(2, gl.GL_SHORT, 0, cubeTexCoords);
- gl.glTexEnvi(gl.GL_TEXTURE_ENV, gl.GL_TEXTURE_ENV_MODE, gl.GL_REPLACE);
- }
-
- // System.out.println("CubeObject .. p8: "+this);
- gl.glDrawElements(gl.GL_TRIANGLES, 6 * 6, gl.GL_UNSIGNED_BYTE, cubeIndices);
- // System.out.println("CubeObject .. p9: "+this);
-
- // time += 0.01f;
- }
-
- boolean initialized = false;
- // float time = 0.0f;
-
- ShortBuffer cubeVertices;
- ShortBuffer cubeTexCoords;
- ByteBuffer cubeColors;
- ByteBuffer cubeNormals;
- ByteBuffer cubeIndices;
-
- private static final short[] s_cubeVertices =
- {
- -10, 10, 10, 10, -10, 10, 10, 10, 10, -10, -10, 10,
-
- -10, 10, -10, 10, -10, -10, 10, 10, -10, -10, -10, -10,
-
- -10, -10, 10, 10, -10, -10, 10, -10, 10, -10, -10, -10,
-
- -10, 10, 10, 10, 10, -10, 10, 10, 10, -10, 10, -10,
-
- 10, -10, 10, 10, 10, -10, 10, 10, 10, 10, -10, -10,
-
- -10, -10, 10, -10, 10, -10, -10, 10, 10, -10, -10, -10
- };
-
- private static final short[] s_cubeTexCoords =
- {
- 0, (short) 0xffff, (short) 0xffff, 0, (short) 0xffff, (short) 0xffff, 0, 0,
-
- 0, (short) 0xffff, (short) 0xffff, 0, (short) 0xffff, (short) 0xffff, 0, 0,
-
- 0, (short) 0xffff, (short) 0xffff, 0, (short) 0xffff, (short) 0xffff, 0, 0,
-
- 0, (short) 0xffff, (short) 0xffff, 0, (short) 0xffff, (short) 0xffff, 0, 0,
-
- 0, (short) 0xffff, (short) 0xffff, 0, (short) 0xffff, (short) 0xffff, 0, 0,
-
- 0, (short) 0xffff, (short) 0xffff, 0, (short) 0xffff, (short) 0xffff, 0, 0,
- };
-
- private static final byte[] s_cubeColors =
- {
- (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255,
- (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255,
-
- (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255,
- (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255,
-
- (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255,
- (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255,
-
- (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255,
- (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255,
-
- (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255,
- (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255,
-
- (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255,
- (byte) 0, (byte) 128, (byte) 0, (byte) 255, (byte) 0, (byte) 128, (byte) 0, (byte) 255
- };
-
- private static final byte[] s_cubeIndices =
- {
- 0, 3, 1, 2, 0, 1, /* front */
- 6, 5, 4, 5, 7, 4, /* back */
- 8, 11, 9, 10, 8, 9, /* top */
- 15, 12, 13, 12, 14, 13, /* bottom */
- 16, 19, 17, 18, 16, 17, /* right */
- 23, 20, 21, 20, 22, 21 /* left */
- };
- private static final byte[] s_cubeNormals =
- {
- 0, 0, 127, 0, 0, 127, 0, 0, 127, 0, 0, 127,
-
- 0, 0, -128, 0, 0, -128, 0, 0, -128, 0, 0, -128,
-
- 0, -128, 0, 0, -128, 0, 0, -128, 0, 0, -128, 0,
-
- 0, 127, 0, 0, 127, 0, 0, 127, 0, 0, 127, 0,
-
- 127, 0, 0, 127, 0, 0, 127, 0, 0, 127, 0, 0,
-
- -128, 0, 0, -128, 0, 0, -128, 0, 0, -128, 0, 0
- };
-}
-
diff --git a/src/demos/es1/cubefbo/FBCubes.java b/src/demos/es1/cubefbo/FBCubes.java
index 7bb26b1..1f0215f 100755
--- a/src/demos/es1/cubefbo/FBCubes.java
+++ b/src/demos/es1/cubefbo/FBCubes.java
@@ -33,32 +33,36 @@
package demos.es1.cubefbo;
+import demos.es1.cube.Cube;
import javax.media.opengl.*;
+import javax.media.opengl.util.FBObject;
import java.nio.*;
class FBCubes implements GLEventListener {
- private static final int FBO_SIZE = 128;
+ private static final int FBO_SIZE = 256;
public FBCubes () {
- cubeInner = new CubeObject(false);
- cubeMiddle = new CubeObject(true);
- cubeOuter = new CubeObject(true);
+ cubeOuter = new Cube(true, false);
- // cubeOuter = new CubeObject(false);
+ fbo1 = new FBObject(FBO_SIZE, FBO_SIZE, FBObject.ATTR_DEPTH);
+ cubeInner = new Cube(false, true);
- fbo1 = new FBObject(FBO_SIZE, FBO_SIZE);
- fbo2 = new FBObject(FBO_SIZE, FBO_SIZE);
+ // JAU cubeMiddle = new Cube(true, false);
+ // JAU fbo2 = new FBObject(FBO_SIZE, FBO_SIZE);
}
public void init(GLAutoDrawable drawable) {
GL2ES1 gl = drawable.getGL().getGL2ES1();
+
fbo1.init(gl);
- fbo2.init(gl);
+ cubeInner.init(drawable);
+
+ cubeOuter.init(drawable);
}
public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {
GL2ES1 gl = drawable.getGL().getGL2ES1();
- cubeOuter.reshape(gl, x, y, width, height);
+ cubeOuter.reshape(drawable, x, y, width, height);
}
float xRot=0f;
@@ -73,13 +77,25 @@ class FBCubes implements GLEventListener {
GL2ES1 gl = drawable.getGL().getGL2ES1();
fbo1.bind(gl);
- cubeInner.reshape(gl, 0, 0, FBO_SIZE, FBO_SIZE);
- cubeInner.display(gl, xRot, yRot);
+ cubeInner.reshape(drawable, 0, 0, FBO_SIZE, FBO_SIZE);
+ cubeInner.display(drawable);
+ gl.glFinish();
fbo1.unbind(gl);
- FBObject tex = fbo1;
- FBObject rend = fbo2;
+ gl.glActiveTexture(GL.GL_TEXTURE0);
+ gl.glEnable (gl.GL_TEXTURE_2D);
+ cubeOuter.reshape(drawable, 0, 0, drawable.getWidth(), drawable.getHeight());
+ fbo1.use(gl);
+ cubeOuter.display(drawable);
+ fbo1.unbind(gl);
+
+ gl.glDisable (gl.GL_TEXTURE_2D);
+
+ // JAUFBObject tex = fbo1;
+ // JAU FBObject rend = fbo2;
+
+ /* JAU
int MAX_ITER = 1;
for (int i = 0; i < MAX_ITER; i++) {
@@ -106,16 +122,17 @@ class FBCubes implements GLEventListener {
// System.out.println("display .. p7");
gl.glBindTexture(gl.GL_TEXTURE_2D, 0);
gl.glDisable (gl.GL_TEXTURE_2D);
+ */
}
public void displayChanged(javax.media.opengl.GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {
}
float time = 0.0f;
- CubeObject cubeInner;
- CubeObject cubeMiddle;
- CubeObject cubeOuter;
+ Cube cubeInner=null;
+ // JAU Cube cubeMiddle=null;
+ Cube cubeOuter=null;
FBObject fbo1;
- FBObject fbo2;
+ // JAU FBObject fbo2;
}
diff --git a/src/demos/es1/cubefbo/FBObject.java b/src/demos/es1/cubefbo/FBObject.java
deleted file mode 100755
index fcfeef1..0000000
--- a/src/demos/es1/cubefbo/FBObject.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * 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 demos.es1.cubefbo;
-
-import javax.media.opengl.*;
-import java.nio.*;
-
-class FBObject {
- private int fb, fbo_tex, depth_rb, stencil_rb, width, height;
-
- public FBObject(int width, int height) {
- this.width = width;
- this.height = height;
- }
-
- public void init(GL gl) {
- // generate fbo ..
- int name[] = new int[1];
-
- gl.glGenTextures(1, name, 0);
- fbo_tex = name[0];
- System.out.println("fbo_tex: "+fbo_tex);
-
- gl.glBindTexture(GL.GL_TEXTURE_2D, fbo_tex);
- gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST);
- gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST);
- gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, GL.GL_RGB8, width, height, 0,
- GL.GL_RGB, GL.GL_UNSIGNED_BYTE, null);
-
- gl.glGenRenderbuffers(1, name, 0);
- depth_rb = name[0];
- System.out.println("depth_rb: "+depth_rb);
-
- // Initialize the depth buffer:
- gl.glBindRenderbuffer(GL.GL_RENDERBUFFER, depth_rb);
- gl.glRenderbufferStorage(GL.GL_RENDERBUFFER,
- GL.GL_DEPTH_COMPONENT16, width, height);
-
- // gl.glGenRenderbuffers(1, name, 0);
- // stencil_rb = name[0];
- stencil_rb = 0;
- System.out.println("stencil_rb: "+stencil_rb);
-
- gl.glGenFramebuffers(1, name, 0);
- fb = name[0];
- System.out.println("fb: "+fb);
-
- // bind fbo ..
- gl.glBindFramebuffer(GL.GL_FRAMEBUFFER, fb);
-
- // Set up the color buffer for use as a renderable texture:
- gl.glFramebufferTexture2D(GL.GL_FRAMEBUFFER,
- GL.GL_COLOR_ATTACHMENT0,
- GL.GL_TEXTURE_2D, fbo_tex, 0);
-
- // Set up the depth buffer attachment:
- gl.glFramebufferRenderbuffer(GL.GL_FRAMEBUFFER,
- GL.GL_DEPTH_ATTACHMENT,
- GL.GL_RENDERBUFFER, depth_rb);
-
- // bind fbo ..
- gl.glBindFramebuffer(GL.GL_FRAMEBUFFER, fb);
-
- // Setup the color buffer for use as a renderable texture:
- gl.glBindTexture(GL.GL_TEXTURE_2D, fbo_tex);
-
- gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, GL.GL_RGB8, width, height, 0,
- GL.GL_RGB, GL.GL_UNSIGNED_BYTE, null);
-
- gl.glFramebufferTexture2D(GL.GL_FRAMEBUFFER,
- GL.GL_COLOR_ATTACHMENT0,
- GL.GL_TEXTURE_2D, fbo_tex, 0);
-
- // Initialize the depth buffer:
- gl.glBindRenderbuffer(GL.GL_RENDERBUFFER, depth_rb);
-
- gl.glRenderbufferStorage(GL.GL_RENDERBUFFER,
- GL.GL_DEPTH_COMPONENT16, width, height);
-
- gl.glFramebufferRenderbuffer(GL.GL_FRAMEBUFFER,
- GL.GL_DEPTH_ATTACHMENT,
- GL.GL_RENDERBUFFER, depth_rb);
-
- if(stencil_rb!=0) {
- // Initialize the stencil buffer:
- gl.glBindRenderbuffer(GL.GL_RENDERBUFFER, stencil_rb);
-
- gl.glRenderbufferStorage(GL.GL_RENDERBUFFER,
- GL.GL_STENCIL_INDEX8, width, height);
-
- gl.glFramebufferRenderbuffer(GL.GL_FRAMEBUFFER,
- GL.GL_STENCIL_ATTACHMENT,
- GL.GL_RENDERBUFFER, stencil_rb);
- }
-
- // Check the FBO for completeness
- int res = gl.glCheckFramebufferStatus(fb);
- if (res == GL.GL_FRAMEBUFFER_COMPLETE) {
- System.out.println("Framebuffer " + fb + " is complete");
- } else {
- System.out.println("Framebuffer " + fb + " is incomplete: status = 0x" + Integer.toHexString(res));
- }
- }
-
- public void bind(GL gl) {
- gl.glBindFramebuffer(GL.GL_FRAMEBUFFER, fb);
- }
-
- public void unbind(GL gl) {
- gl.glBindFramebuffer(GL.GL_FRAMEBUFFER, 0);
- }
-
- public int getFBName() {
- return fb;
- }
- public int getTextureName() {
- return fbo_tex;
- }
-}
diff --git a/src/demos/es1/cubefbo/Main.java b/src/demos/es1/cubefbo/Main.java
index 2e734c4..1d355eb 100755
--- a/src/demos/es1/cubefbo/Main.java
+++ b/src/demos/es1/cubefbo/Main.java
@@ -54,7 +54,7 @@ public class Main implements MouseListener {
caps.setGreenBits(6);
caps.setBlueBits(5);
caps.setDepthBits(16);
- GLWindow window = GLWindow.create(nWindow, caps);
+ window = GLWindow.create(nWindow, caps);
window.addMouseListener(this);