diff options
author | Sven Gothel <[email protected]> | 2011-03-30 13:56:48 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2011-03-30 13:56:48 +0200 |
commit | dbc74b98eb7429cbb51f7af0572ab53ddd0d9edc (patch) | |
tree | 9902e64c12ed222fa47d0e49390548cbcd252698 /src/demo/GPURegionNewtDemo02.java | |
parent | e952e7dbac7a6b746b8465aa63423f1aa138ca27 (diff) |
Refactor: Public *Renderer / Unify Region Demos / Using own Screenshot (non AWT, plain GL2ES2)
Refactor: Public *Renderer
- Sharing common base abstract class Renderer.java
- Having public abstract classes RegionRenderer and TextRenderer
- Implementation non public, accessed via factory
- + shared code
- + clean API (same stuff)
Unify Region Demos
- reduced code / path, sharing common demo/test features Text/Region
Using own Screenshot (non AWT, plain GL2ES2)
- Remove AWT dependency
- Allow GL2ES2 screenshots
- Less complex
Diffstat (limited to 'src/demo/GPURegionNewtDemo02.java')
-rw-r--r--[-rwxr-xr-x] | src/demo/GPURegionNewtDemo02.java | 260 |
1 files changed, 106 insertions, 154 deletions
diff --git a/src/demo/GPURegionNewtDemo02.java b/src/demo/GPURegionNewtDemo02.java index 19889ac6e..a7b56ad42 100755..100644 --- a/src/demo/GPURegionNewtDemo02.java +++ b/src/demo/GPURegionNewtDemo02.java @@ -32,193 +32,145 @@ import javax.media.opengl.GL; import javax.media.opengl.GL2ES2; import javax.media.opengl.GLAutoDrawable; import javax.media.opengl.GLCapabilities; -import javax.media.opengl.GLEventListener; import javax.media.opengl.GLProfile; import com.jogamp.graph.curve.OutlineShape; +import com.jogamp.graph.curve.Region; import com.jogamp.graph.curve.opengl.RegionRenderer; import com.jogamp.graph.geom.opengl.SVertex; -import com.jogamp.newt.event.KeyEvent; -import com.jogamp.newt.event.KeyListener; -import com.jogamp.newt.event.WindowAdapter; -import com.jogamp.newt.event.WindowEvent; import com.jogamp.newt.opengl.GLWindow; -import com.jogamp.opengl.util.FPSAnimator; +import com.jogamp.opengl.util.Animator; /** Demonstrate the rendering of multiple OutlineShapes * into one region * */ public class GPURegionNewtDemo02 { - private static void create(){ - new RegionsNewtWindow(); - } - public static void main(String[] args) { - create(); - } -} - -class RegionsNewtWindow { + static final boolean DEBUG = false; + static final boolean TRACE = false; + + public static void main(String[] args) { + GPURegionNewtDemo02 test = new GPURegionNewtDemo02(); + test.testMe(); + } + RegionGLListener regionGLListener = null; - - public RegionsNewtWindow(){ - createWindow(); - } - private void createWindow() { + GLWindow window; + public void testMe() { GLProfile.initSingleton(true); - GLProfile glp = GLProfile.getGL2ES2(); - GLCapabilities caps = new GLCapabilities(glp); - System.out.println("Requested: "+caps); - final GLWindow window = GLWindow.create(caps); - window.setPosition(10, 10); - window.setSize(500, 500); - - window.setTitle("GPU Curve Region Newt Demo 02 - r2t0 msaa0"); - regionGLListener = new RegionGLListener(); - window.addGLEventListener(regionGLListener); - + GLProfile glp = GLProfile.get(GLProfile.GL3); + GLCapabilities caps = new GLCapabilities(glp); + caps.setAlphaBits(4); + System.out.println("Requested: " + caps); + + GLWindow w = GLWindow.create(caps); + w.setPosition(10, 10); + w.setSize(800, 400); + w.setTitle("GPU Curve Region Newt Demo 02 - r2t1 msaa0"); + + regionGLListener = createRegionRendererListener(w); + window.addGLEventListener(regionGLListener); + + window.enablePerfLog(true); window.setVisible(true); - window.addKeyListener(new KeyListener() { - public void keyPressed(KeyEvent arg0) { - if(arg0.getKeyCode() == KeyEvent.VK_1){ - regionGLListener.zoomIn(); - } - else if(arg0.getKeyCode() == KeyEvent.VK_2){ - regionGLListener.zoomOut(); - } - else if(arg0.getKeyCode() == KeyEvent.VK_UP){ - regionGLListener.move(0, -1); - } - else if(arg0.getKeyCode() == KeyEvent.VK_DOWN){ - regionGLListener.move(0, 1); - } - else if(arg0.getKeyCode() == KeyEvent.VK_LEFT){ - regionGLListener.move(1, 0); - } - else if(arg0.getKeyCode() == KeyEvent.VK_RIGHT){ - regionGLListener.move(-1, 0); - } - else if(arg0.getKeyCode() == KeyEvent.VK_0){ - regionGLListener.rotate(1); - } - else if(arg0.getKeyCode() == KeyEvent.VK_9){ - regionGLListener.rotate(-1); - } - } - public void keyTyped(KeyEvent arg0) {} - public void keyReleased(KeyEvent arg0) {} - }); - - FPSAnimator animator = new FPSAnimator(60); + //FPSAnimator animator = new FPSAnimator(60); + Animator animator = new Animator(); animator.add(window); - window.addWindowListener(new WindowAdapter() { - public void windowDestroyNotify(WindowEvent arg0) { - System.exit(0); - }; - }); animator.start(); } - private class RegionGLListener implements GLEventListener{ - RegionRenderer regionRenderer = null; - - OutlineShape[] outlineShapes = new OutlineShape[2]; + + public RegionGLListener createRegionRendererListener(GLWindow w) { + this.window = w; + + RegionGLListener l = new RegionGLListener(); + l.attachInputListenerTo(w); + + return l; + } + + public class RegionGLListener extends GPURegionRendererListenerBase01 { + OutlineShape[] outlineShapes = new OutlineShape[2]; - public RegionGLListener() {} - - private void createTestOutline(){ - float offset = 0; - outlineShapes[0] = new OutlineShape(SVertex.factory()); - outlineShapes[0].addVertex(0.0f,-10.0f,true); - outlineShapes[0].addVertex(15.0f,-10.0f, true); - outlineShapes[0].addVertex(10.0f,5.0f, false); - outlineShapes[0].addVertex(15.0f,10.0f, true); - outlineShapes[0].addVertex(6.0f,15.0f, false); - outlineShapes[0].addVertex(5.0f,8.0f, false); - outlineShapes[0].addVertex(0.0f,10.0f,true); - outlineShapes[0].closeLastOutline(); - outlineShapes[0].addEmptyOutline(); - outlineShapes[0].addVertex(5.0f,-5.0f,true); - outlineShapes[0].addVertex(10.0f,-5.0f, false); - outlineShapes[0].addVertex(10.0f,0.0f, true); - outlineShapes[0].addVertex(5.0f,0.0f, false); - outlineShapes[0].closeLastOutline(); - - /** Same shape as above but without any off-curve vertices */ - outlineShapes[1] = new OutlineShape(SVertex.factory()); - offset = 30; - outlineShapes[1].addVertex(offset+0.0f,-10.0f, true); - outlineShapes[1].addVertex(offset+17.0f,-10.0f, true); - outlineShapes[1].addVertex(offset+11.0f,5.0f, true); - outlineShapes[1].addVertex(offset+16.0f,10.0f, true); - outlineShapes[1].addVertex(offset+7.0f,15.0f, true); - outlineShapes[1].addVertex(offset+6.0f,8.0f, true); - outlineShapes[1].addVertex(offset+0.0f,10.0f, true); - outlineShapes[1].closeLastOutline(); - outlineShapes[1].addEmptyOutline(); - outlineShapes[1].addVertex(offset+5.0f,0.0f, true); - outlineShapes[1].addVertex(offset+5.0f,-5.0f, true); - outlineShapes[1].addVertex(offset+10.0f,-5.0f, true); - outlineShapes[1].addVertex(offset+10.0f,0.0f, true); - outlineShapes[1].closeLastOutline(); + public RegionGLListener() { + super(SVertex.factory(), Region.TWO_PASS, DEBUG, TRACE); + setMatrix(-20, 00, 0f, -50, 400); + //setMatrix(-20, 00, 0f, -400, 400); + //setMatrix(-20, 00, 0f, -400, 400); + //setMatrix(-20, 00, 0f, -100, 800); } + + private void createTestOutline(){ + float offset = 0; + outlineShapes[0] = new OutlineShape(SVertex.factory()); + outlineShapes[0].addVertex(0.0f,-10.0f,true); + outlineShapes[0].addVertex(15.0f,-10.0f, true); + outlineShapes[0].addVertex(10.0f,5.0f, false); + outlineShapes[0].addVertex(15.0f,10.0f, true); + outlineShapes[0].addVertex(6.0f,15.0f, false); + outlineShapes[0].addVertex(5.0f,8.0f, false); + outlineShapes[0].addVertex(0.0f,10.0f,true); + outlineShapes[0].closeLastOutline(); + outlineShapes[0].addEmptyOutline(); + outlineShapes[0].addVertex(5.0f,-5.0f,true); + outlineShapes[0].addVertex(10.0f,-5.0f, false); + outlineShapes[0].addVertex(10.0f,0.0f, true); + outlineShapes[0].addVertex(5.0f,0.0f, false); + outlineShapes[0].closeLastOutline(); + + /** Same shape as above but without any off-curve vertices */ + outlineShapes[1] = new OutlineShape(SVertex.factory()); + offset = 30; + outlineShapes[1].addVertex(offset+0.0f,-10.0f, true); + outlineShapes[1].addVertex(offset+17.0f,-10.0f, true); + outlineShapes[1].addVertex(offset+11.0f,5.0f, true); + outlineShapes[1].addVertex(offset+16.0f,10.0f, true); + outlineShapes[1].addVertex(offset+7.0f,15.0f, true); + outlineShapes[1].addVertex(offset+6.0f,8.0f, true); + outlineShapes[1].addVertex(offset+0.0f,10.0f, true); + outlineShapes[1].closeLastOutline(); + outlineShapes[1].addEmptyOutline(); + outlineShapes[1].addVertex(offset+5.0f,0.0f, true); + outlineShapes[1].addVertex(offset+5.0f,-5.0f, true); + outlineShapes[1].addVertex(offset+10.0f,-5.0f, true); + outlineShapes[1].addVertex(offset+10.0f,0.0f, true); + outlineShapes[1].closeLastOutline(); + } public void init(GLAutoDrawable drawable) { - GL2ES2 gl = drawable.getGL().getGL2ES2(); + super.init(drawable); + + GL2ES2 gl = drawable.getGL().getGL2ES2(); + + final RegionRenderer regionRenderer = (RegionRenderer) getRenderer(); + gl.setSwapInterval(1); gl.glEnable(GL2ES2.GL_DEPTH_TEST); - regionRenderer = new RegionRenderer(drawable.getContext()); - regionRenderer.setAlpha(1.0f); - regionRenderer.setColor(0.0f, 0.0f, 0.0f); + regionRenderer.init(gl); + regionRenderer.setAlpha(gl, 1.0f); + regionRenderer.setColor(gl, 0.0f, 0.0f, 0.0f); + //gl.glSampleCoverage(0.95f, false); + //gl.glEnable(GL2GL3.GL_SAMPLE_COVERAGE); // sample coverage doesn't really make a difference to lines + //gl.glEnable(GL2GL3.GL_SAMPLE_ALPHA_TO_ONE); MSAATool.dump(drawable); + createTestOutline(); } - float ang = 0; - float zoom = -70; - float xTran = -20; - float yTran = 5; - public void display(GLAutoDrawable drawable) { - GL2ES2 gl = drawable.getGL().getGL2ES2(); + GL2ES2 gl = drawable.getGL().getGL2ES2(); - gl.glClearColor(1.0f, 1.0f, 1.0f, 1.0f); - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); + gl.glClearColor(1.0f, 1.0f, 1.0f, 1.0f); + gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - regionRenderer.resetMatrix(); - regionRenderer.translate(xTran, yTran, zoom); - regionRenderer.rotate(ang, 0, 1, 0); + final RegionRenderer regionRenderer = (RegionRenderer) getRenderer(); + + regionRenderer.resetModelview(null); + regionRenderer.translate(null, getXTran(), getYTran(), getZoom()); + regionRenderer.rotate(gl, getAngle(), 0, 1, 0); - try { - regionRenderer.renderOutlineShapes(outlineShapes, new float[]{0,0,0}); - } catch (Exception e) { - e.printStackTrace(); - } - } - public void reshape(GLAutoDrawable drawable, int xstart, int ystart, int width, int height){ - GL2ES2 gl = drawable.getGL().getGL2ES2(); - gl.glViewport(xstart, ystart, width, height); - - regionRenderer.reshape(drawable, 45.0f, (float)width / (float)height, 0.1f, 7000.0f); - } - - public void zoomIn(){ - zoom++; - } - public void zoomOut(){ - zoom--; - } - public void move(float x, float y){ - xTran += x; - yTran += y; - } - public void rotate(float delta){ - ang+= delta; - ang%=360; - } - public void dispose(GLAutoDrawable arg0) { - regionRenderer.clearCached(); + regionRenderer.renderOutlineShapes(gl, outlineShapes, getPosition(), getTexSize()); - } + } } } |