diff options
author | Kenneth Russel <[email protected]> | 2008-05-13 11:21:23 +0000 |
---|---|---|
committer | Kenneth Russel <[email protected]> | 2008-05-13 11:21:23 +0000 |
commit | b3eed5170f323d1c6d4d90de28a691eebeb035df (patch) | |
tree | e1841cbb1589b62ddceb1154563f891daaea21dc /src/demos/apx/es1/RedSquare.java | |
parent | 144dd147e18f346617649b55d730a8a5fef9f2d6 (diff) |
OpenGL ES 1 and ES 2 demos, not built by default;
build.xml changes to conditionally build these demos via
ant -Djogl.es1=1 or ant -Djogl.es2=1
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/../svn-server-sync/jogl-demos/trunk@228 3298f667-5e0e-4b4a-8ed4-a3559d26a5f4
Diffstat (limited to 'src/demos/apx/es1/RedSquare.java')
-rwxr-xr-x | src/demos/apx/es1/RedSquare.java | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/src/demos/apx/es1/RedSquare.java b/src/demos/apx/es1/RedSquare.java new file mode 100755 index 0000000..3b2e944 --- /dev/null +++ b/src/demos/apx/es1/RedSquare.java @@ -0,0 +1,165 @@ +package demos.apx.es1; + +import java.nio.*; +import javax.media.opengl.*; +import javax.media.opengl.glu.*; +import com.sun.opengl.impl.egl.*; +import com.sun.opengl.util.*; + +public class RedSquare { + public static void main(String[] args) { + System.out.println("Basic.main()"); + try { + System.out.println("GLDrawableFactory.getFactory()"); + EGLDrawableFactory factory = (EGLDrawableFactory) GLDrawableFactory.getFactory(); + + /* + + System.out.println("Testing getDirectBufferAddress"); + factory.testGetDirectBufferAddress(); + + */ + + System.out.println("EGLDrawableFactory.initialize()"); + factory.initialize(); + System.out.println("factory.createExternalGLContext()"); + GLContext context = factory.createExternalGLContext(); + // OpenGL context is current at this point + + // The following is a no-op that is only needed to get the + // Java-level GLContext object set up in thread-local storage + System.out.println("context.makeCurrent()"); + context.makeCurrent(); + context.setGL(new DebugGL(context.getGL())); + + GL gl = context.getGL(); + GLU glu = new GLU(); + + //---------------------------------------------------------------------- + // Code for GLEventListener.init() + // + + System.out.println("Entering initialization"); + + // Size OpenGL to Video Surface + int width = 800; + int height = 480; + System.out.println("calling glViewport()"); + // gl.glViewport(0, 0, width, height); + System.out.println("calling glMatrixMode()"); + gl.glMatrixMode(GL.GL_PROJECTION); + System.out.println("calling glLoadIdentity()"); + gl.glLoadIdentity(); + System.out.println("calling gluPerspective()"); + glu.gluPerspective(45.0f, (float)width / (float)height, 1.0f, 100.0f); + System.out.println("calling glMatrixMode()"); + gl.glMatrixMode(GL.GL_MODELVIEW); + + System.out.println("Intialized matrices"); + + // Allocate vertex arrays + // FloatBuffer colors = BufferUtil.newFloatBuffer(12); + // FloatBuffer vertices = BufferUtil.newFloatBuffer(12); + // FloatBuffer normals = BufferUtil.newFloatBuffer(12); + // FloatBuffer colors = FloatBuffer.wrap(new float[12]); + // FloatBuffer vertices = FloatBuffer.wrap(new float[12]); + // FloatBuffer normals = FloatBuffer.wrap(new float[12]); + // Fill them up + // colors.put(0, 1); colors.put( 1, 0); colors.put( 2, 0); + // colors.put(3, 1); colors.put( 4, 0); colors.put( 5, 0); + // colors.put(6, 1); colors.put( 7, 0); colors.put( 8, 0); + // colors.put(9, 1); colors.put(10, 0); colors.put(11, 0); + // vertices.put(0, -2); vertices.put( 1, 2); vertices.put( 2, 0); + // vertices.put(3, 2); vertices.put( 4, 2); vertices.put( 5, 0); + // vertices.put(6, -2); vertices.put( 7, -2); vertices.put( 8, 0); + // vertices.put(9, 2); vertices.put(10, -2); vertices.put(11, 0); + // normals.put(0, 0); normals.put( 1, 0); normals.put( 2, 1); + // normals.put(3, 0); normals.put( 4, 0); normals.put( 5, 1); + // normals.put(6, 0); normals.put( 7, 0); normals.put( 8, 1); + // normals.put(9, 0); normals.put(10, 0); normals.put(11, 1); + + // FloatBuffer data = FloatBuffer.wrap(new float[24]); + FloatBuffer data = BufferUtil.newFloatBuffer(12 + 16); + // Vertices first + data.put(0, -2); data.put( 1, 2); data.put( 2, 0); + data.put(3, 2); data.put( 4, 2); data.put( 5, 0); + data.put(6, -2); data.put( 7, -2); data.put( 8, 0); + data.put(9, 2); data.put(10, -2); data.put(11, 0); + // Now colors + data.put(12, 1); data.put(13, 0); data.put(14, 0); data.put(15, 0); + data.put(16, 1); data.put(17, 0); data.put(18, 0); data.put(19, 0); + data.put(20, 1); data.put(21, 0); data.put(22, 0); data.put(23, 0); + data.put(24, 1); data.put(25, 0); data.put(26, 0); data.put(27, 0); + + System.out.println("Set up buffers"); + + int[] vbo = new int[1]; + gl.glGenBuffers(1, vbo, 0); + gl.glBindBuffer(GL.GL_ARRAY_BUFFER, vbo[0]); + gl.glBufferData(GL.GL_ARRAY_BUFFER, (12 + 16) * BufferUtil.SIZEOF_FLOAT, data, GL.GL_STATIC_DRAW); + gl.glVertexPointer(3, GL.GL_FLOAT, 0, 0); + // gl.glColorPointer(3, GL.GL_FLOAT, 0, 12 * BufferUtil.SIZEOF_FLOAT); + gl.glEnableClientState(GL.GL_VERTEX_ARRAY); + // gl.glEnableClientState(GL.GL_COLOR_ARRAY); + // System.out.println("Vertices' address: 0x" + Integer.toHexString(factory.getDirectBufferAddress(vertices))); + // System.out.println("Expected: 0x" + Integer.toHexString(vertices.arrayOffset)); + // System.out.println("Colors' address: 0x" + Integer.toHexString(factory.getDirectBufferAddress(colors))); + // System.out.println("Expected: 0x" + Integer.toHexString(colors.arrayOffset)); + // gl.glNormalPointer(GL.GL_FLOAT, 0, normals); + // gl.glEnableClientState(GL.GL_NORMAL_ARRAY); + // System.out.println("Normals' address: 0x" + Integer.toHexString(factory.getDirectBufferAddress(normals))); + // System.out.println("Expected: 0x" + Integer.toHexString(normals.arrayOffset)); + // System.out.println("Set up vertex, color and normal pointers"); + + System.out.println("Set up vertex and color pointers"); + + // OpenGL Render Settings + gl.glClearColor(0, 0, 0, 1); + gl.glClearDepthf(1.0f); + gl.glEnable(GL.GL_DEPTH_TEST); + + System.out.println("Set up clear color and clear depth"); + + //---------------------------------------------------------------------- + // Code for GLEventListener.display() + // + + long startTime = System.currentTimeMillis(); + long curTime; + while ((System.currentTimeMillis() - startTime) < 10000) { + gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); + + System.out.println("Cleared buffers"); + + // Set location in front of camera + gl.glLoadIdentity(); + gl.glTranslatef(0, 0, -10); + + System.out.println("Translated"); + + // Draw a square + gl.glDrawArrays(GL.GL_TRIANGLE_STRIP, 0, 4); + + System.out.println("Drew arrays"); + + // FIXME -- need an external GLDrawable + factory.swapBuffers(); + + System.out.println("Swapped buffers"); + + // Process events + factory.processEvents(); + + // Sleep a bit + try { + Thread.sleep(100); + } catch (InterruptedException e) { + } + } + } catch (GLException e) { + e.printStackTrace(); + } + + System.exit(0); + } +} |