diff options
author | Sven Gothel <[email protected]> | 2008-08-14 18:58:57 +0000 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2008-08-14 18:58:57 +0000 |
commit | 4093a4980a5610f62edaec97328577decefb9ce0 (patch) | |
tree | a7135e87b2291028bf20bb0f288d4653ac904b96 /src/demos | |
parent | 4a68a17a17c9fc498a57065846121e852bcf968f (diff) |
Fix Angeles blend and no-blend mode, ..
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/../svn-server-sync/jogl-demos/branches/JOGL_2_SANDBOX@275 3298f667-5e0e-4b4a-8ed4-a3559d26a5f4
Diffstat (limited to 'src/demos')
-rwxr-xr-x | src/demos/es1/angeles/AngelesES1.java | 37 | ||||
-rwxr-xr-x | src/demos/es1/angeles/AngelesGL.java | 92 | ||||
-rwxr-xr-x | src/demos/es1/angeles/Main.java | 28 | ||||
-rw-r--r-- | src/demos/es1/cube/Cube.java | 1 | ||||
-rwxr-xr-x | src/demos/es1/cubefbo/FBCubes.java | 16 |
5 files changed, 116 insertions, 58 deletions
diff --git a/src/demos/es1/angeles/AngelesES1.java b/src/demos/es1/angeles/AngelesES1.java index 19a1900..8638317 100755 --- a/src/demos/es1/angeles/AngelesES1.java +++ b/src/demos/es1/angeles/AngelesES1.java @@ -31,7 +31,8 @@ import java.nio.*; public class AngelesES1 implements GLEventListener { - public AngelesES1() { + public AngelesES1(boolean enableBlending) { + blendingEnabled = enableBlending; quadVertices = BufferUtil.newIntBuffer(12); quadVertices.put(new int[]{ -0x10000, -0x10000, @@ -165,19 +166,23 @@ public class AngelesES1 implements GLEventListener { // Configure environment. configureLightAndMaterial(); - // Draw the reflection by drawing models with negated Z-axis. - gl.glPushMatrix(); - drawModels(-1); - gl.glPopMatrix(); + if(blendingEnabled) { + // Draw the reflection by drawing models with negated Z-axis. + gl.glPushMatrix(); + drawModels(-1); + gl.glPopMatrix(); + } - // Blend the ground plane to the window. + // Draw the ground plane to the window. (opt. blending) drawGroundPlane(); // Draw all the models normally. drawModels(1); - // Draw fade quad over whole window (when changing cameras). - drawFadeQuad(); + if(blendingEnabled) { + // Draw fade quad over whole window (when changing cameras). + drawFadeQuad(); + } frames++; tick = System.currentTimeMillis(); @@ -188,6 +193,7 @@ public class AngelesES1 implements GLEventListener { public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) { } + private boolean blendingEnabled = true; private GLES1 gl; private GLU glu; @@ -563,17 +569,20 @@ GLObject createGroundPlane() void drawGroundPlane() { - gl.glDisable(gl.GL_CULL_FACE); - gl.glDisable(gl.GL_DEPTH_TEST); - gl.glEnable(gl.GL_BLEND); - gl.glBlendFunc(gl.GL_ZERO, gl.GL_SRC_COLOR); gl.glDisable(gl.GL_LIGHTING); + gl.glDisable(gl.GL_DEPTH_TEST); + if(blendingEnabled) { + gl.glEnable(gl.GL_BLEND); + gl.glBlendFunc(gl.GL_ZERO, gl.GL_SRC_COLOR); + } sGroundPlane.draw(); - gl.glEnable(gl.GL_LIGHTING); - gl.glDisable(gl.GL_BLEND); + if(blendingEnabled) { + gl.glDisable(gl.GL_BLEND); + } gl.glEnable(gl.GL_DEPTH_TEST); + gl.glEnable(gl.GL_LIGHTING); } void drawFadeQuad() diff --git a/src/demos/es1/angeles/AngelesGL.java b/src/demos/es1/angeles/AngelesGL.java index db2612f..046f5dd 100755 --- a/src/demos/es1/angeles/AngelesGL.java +++ b/src/demos/es1/angeles/AngelesGL.java @@ -31,7 +31,8 @@ import java.nio.*; public class AngelesGL implements GLEventListener { - public AngelesGL() { + public AngelesGL(boolean enableBlending) { + blendingEnabled = enableBlending; quadVertices = BufferUtil.newFloatBuffer(12); quadVertices.put(new float[]{ -1.0f, -1.0f, @@ -87,6 +88,7 @@ public class AngelesGL implements GLEventListener { gl.glEnable(GL2ES1.GL_NORMALIZE); gl.glEnable(gl.GL_DEPTH_TEST); gl.glDisable(gl.GL_CULL_FACE); + gl.glCullFace(GL.GL_BACK); gl.glShadeModel(gl.GL_FLAT); gl.glEnable(gl.GL_LIGHTING); @@ -107,6 +109,22 @@ public class AngelesGL implements GLEventListener { sStartTick = System.currentTimeMillis(); frames=0; + + /* + gl.glGetError(); // flush error .. + if(gl.isGLES2()) { + GLES2 gles2 = gl.getGLES2(); + + // Debug .. + //DebugGLES2 gldbg = new DebugGLES2(gles2); + //gles2.getContext().setGL(gldbg); + //gles2 = gldbg; + + // Trace .. + TraceGLES2 gltrace = new TraceGLES2(gles2, System.err); + gles2.getContext().setGL(gltrace); + gles2 = gltrace; + } */ } public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { @@ -122,9 +140,7 @@ public class AngelesGL implements GLEventListener { gl.glClearColor(0.1f, 0.2f, 0.3f, 1.0f); - gl.glCullFace(GL.GL_FRONT); - - gl.glHint(GL2ES1.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_FASTEST); + // JAU gl.glHint(GL2ES1.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_FASTEST); //gl.glShadeModel(GL.GL_SMOOTH); gl.glShadeModel(gl.GL_FLAT); @@ -134,7 +150,7 @@ public class AngelesGL implements GLEventListener { //gl.glLoadIdentity(); //glu.gluPerspective(45.0f, (float)width / (float)height, 0.5f, 150.0f); - System.out.println("reshape .."); + //System.out.println("reshape .."); } public void display(GLAutoDrawable drawable) { @@ -167,19 +183,28 @@ public class AngelesGL implements GLEventListener { // Configure environment. configureLightAndMaterial(); - // Draw the reflection by drawing models with negated Z-axis. - gl.glPushMatrix(); - drawModels(-1); - gl.glPopMatrix(); + if(blendingEnabled) { + gl.glEnable(gl.GL_CULL_FACE); + // Draw the reflection by drawing models with negated Z-axis. + gl.glPushMatrix(); + drawModels(-1); + gl.glPopMatrix(); + } - // Blend the ground plane to the window. + // Draw the ground plane to the window. (opt. blending) drawGroundPlane(); + if(blendingEnabled) { + gl.glDisable(gl.GL_CULL_FACE); + } + // Draw all the models normally. drawModels(1); - // Draw fade quad over whole window (when changing cameras). - drawFadeQuad(); + if(blendingEnabled) { + // Draw fade quad over whole window (when changing cameras). + drawFadeQuad(); + } frames++; tick = System.currentTimeMillis(); @@ -188,6 +213,7 @@ public class AngelesGL implements GLEventListener { public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) { } + private boolean blendingEnabled = true; private GL gl; private GLU glu; @@ -231,8 +257,10 @@ public class GLObject { count = vertices; vertexArray = GLArrayDataServer.createFixed(GL.GL_VERTEX_ARRAY, null, vertexComponents, GL.GL_FLOAT, false, vertices, GL.GL_STATIC_DRAW); + vertexArray.setEnableAlways(true); colorArray = GLArrayDataServer.createFixed(GL.GL_COLOR_ARRAY, null, 4, GL.GL_FLOAT, false, vertices, GL.GL_STATIC_DRAW); + colorArray.setEnableAlways(true); if(useNormalArray) { normalArray = GLArrayDataServer.createFixed(GL.GL_NORMAL_ARRAY, null, 3, GL.GL_FLOAT, false, vertices, GL.GL_STATIC_DRAW); @@ -256,8 +284,7 @@ public class GLObject { if(null!=normalArray) { normalArray().position( count * normalArray.getComponentNumber() ); normalArray.seal(gl, true); - } else { - gl.glDisableClientState(gl.GL_NORMAL_ARRAY); + normalArray.enableBuffer(gl, false); } } @@ -273,11 +300,11 @@ public class GLObject { gl.glDrawArrays(gl.GL_TRIANGLES, 0, vertexArray.getElementNumber()); - vertexArray.enableBuffer(gl, false); - colorArray.enableBuffer(gl, false); + // System.out.println(gl); + if(null!=normalArray) { normalArray.enableBuffer(gl, false); - } + } } } @@ -501,8 +528,9 @@ GLObject createGroundPlane() GLObject result; int x, y; int currentVertex, currentQuad; + final int vcomps = 2; - result = new GLObject(vertices, 2, false); + result = new GLObject(vertices, vcomps, false); if (result == null) return null; @@ -515,7 +543,7 @@ GLObject createGroundPlane() { float color; int i, a; - color = ((float)((randomUInt() & 0x5f) + 81))/255.0f; // 101 1111 + color = ((float)(randomUInt() % 255))/255.0f; for (i = currentVertex * 4; i < (currentVertex + 6) * 4; i += 4) { result.colorArray().put(i, color); @@ -532,8 +560,11 @@ GLObject createGroundPlane() final int xm = x + ((0x1c >> a) & 1); final int ym = y + ((0x31 >> a) & 1); final float m = (float)(Math.cos(xm * 2) * Math.sin(ym * 4) * 0.75f); - result.vertexArray().put(currentVertex * 2, (xm * scale + m)); - result.vertexArray().put(currentVertex * 2 + 1, (ym * scale + m)); + result.vertexArray().put(currentVertex * vcomps, (xm * scale + m)); + result.vertexArray().put(currentVertex * vcomps + 1, (ym * scale + m)); + if(2<vcomps) { + result.vertexArray().put(currentVertex * vcomps + 2, 0f); + } ++currentVertex; } ++currentQuad; @@ -546,17 +577,20 @@ GLObject createGroundPlane() void drawGroundPlane() { - gl.glDisable(gl.GL_CULL_FACE); - gl.glDisable(gl.GL_DEPTH_TEST); - gl.glEnable(gl.GL_BLEND); - gl.glBlendFunc(gl.GL_ZERO, gl.GL_SRC_COLOR); gl.glDisable(gl.GL_LIGHTING); + gl.glDisable(gl.GL_DEPTH_TEST); + if(blendingEnabled) { + gl.glEnable(gl.GL_BLEND); + gl.glBlendFunc(gl.GL_ZERO, gl.GL_SRC_COLOR); + } sGroundPlane.draw(); - gl.glEnable(gl.GL_LIGHTING); - gl.glDisable(gl.GL_BLEND); + if(blendingEnabled) { + gl.glDisable(gl.GL_BLEND); + } gl.glEnable(gl.GL_DEPTH_TEST); + gl.glEnable(gl.GL_LIGHTING); } void drawFadeQuad() @@ -584,10 +618,10 @@ void drawFadeQuad() gl.glBindBuffer(GL.GL_ARRAY_BUFFER, 0); gl.glDisableClientState(gl.GL_COLOR_ARRAY); gl.glDisableClientState(gl.GL_NORMAL_ARRAY); + gl.glEnableClientState(gl.GL_VERTEX_ARRAY); gl.glVertexPointer(2, gl.GL_FLOAT, 0, quadVertices); gl.glDrawArrays(gl.GL_TRIANGLES, 0, 6); - - gl.glEnableClientState(gl.GL_COLOR_ARRAY); + gl.glDisableClientState(gl.GL_VERTEX_ARRAY); gl.glMatrixMode(gl.GL_MODELVIEW); diff --git a/src/demos/es1/angeles/Main.java b/src/demos/es1/angeles/Main.java index f4ea346..7e5ed80 100755 --- a/src/demos/es1/angeles/Main.java +++ b/src/demos/es1/angeles/Main.java @@ -10,17 +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) { - window.setFullscreen(!window.isFullscreen()); - } - break; - default: - quit=true; - break; - } + quit=true; } public void mouseEntered(MouseEvent e) { } @@ -55,6 +45,12 @@ public class Main implements MouseListener { caps.setRedBits(5); caps.setGreenBits(6); caps.setBlueBits(5); + /* + caps.setRedBits(8); + caps.setGreenBits(8); + caps.setBlueBits(8); + caps.setAlphaBits(8); + */ caps.setDepthBits(16); window = GLWindow.create(nWindow, caps); @@ -68,11 +64,11 @@ public class Main implements MouseListener { GL gl = window.getGL(); if(gl.isGLES1() && 0==(type&USE_ANGELESF)) { System.out.println("Using: AngelesES1 .. "); - AngelesES1 angel = new AngelesES1(); + AngelesES1 angel = new AngelesES1( 0 == (type&USE_NOBLEND) ); window.addGLEventListener(angel); } else { System.out.println("Using: AngelesGL .. "); - AngelesGL angel = new AngelesGL(); + AngelesGL angel = new AngelesGL( 0 == (type&USE_NOBLEND) ); window.addGLEventListener(angel); } @@ -92,15 +88,17 @@ public class Main implements MouseListener { public static int USE_NEWT = 0; public static int USE_AWT = 1 << 0; public static int USE_ANGELESF = 1 << 1; + public static int USE_NOBLEND = 1 << 2; 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; - } - if(args[i].equals("-angelesf")) { + } else if(args[i].equals("-angelesf")) { type |= USE_ANGELESF; + } else if(args[i].equals("-noblend")) { + type |= USE_NOBLEND; } } new Main().run(type); diff --git a/src/demos/es1/cube/Cube.java b/src/demos/es1/cube/Cube.java index ffee97d..d46e87d 100644 --- a/src/demos/es1/cube/Cube.java +++ b/src/demos/es1/cube/Cube.java @@ -185,6 +185,7 @@ public class Cube implements GLEventListener { gl.glDrawElements(gl.GL_TRIANGLES, 6 * 6, gl.GL_UNSIGNED_BYTE, cubeIndices); // gl.glFinish(); + // System.err.println(gl); time += 0.01f; } diff --git a/src/demos/es1/cubefbo/FBCubes.java b/src/demos/es1/cubefbo/FBCubes.java index ed19c0a..a97ee1c 100755 --- a/src/demos/es1/cubefbo/FBCubes.java +++ b/src/demos/es1/cubefbo/FBCubes.java @@ -59,6 +59,22 @@ class FBCubes implements GLEventListener { System.err.println("FBCubes Fixed emu: FIXED_EMULATION_VERTEXCOLORTEXTURE"); } + gl.glGetError(); // flush error .. + /* + if(gl.isGLES2()) { + GLES2 gles2 = gl.getGLES2(); + + // Debug .. + //DebugGLES2 gldbg = new DebugGLES2(gles2); + //gles2.getContext().setGL(gldbg); + //gles2 = gldbg; + + // Trace .. + //TraceGLES2 gltrace = new TraceGLES2(gles2, System.err); + gles2.getContext().setGL(gltrace); + gl = gltrace; + }*/ + fbo1.init(gl); //fbo1.init(gl, GL.GL_RGB, GL.GL_RGB, GL.GL_UNSIGNED_BYTE); // faster //fbo1.init(gl, GL.GL_RGBA, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE); // GLES2 default |