summaryrefslogtreecommitdiffstats
path: root/src/demo/GPURegionNewtDemo02.java
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2011-03-30 13:56:48 +0200
committerSven Gothel <[email protected]>2011-03-30 13:56:48 +0200
commitdbc74b98eb7429cbb51f7af0572ab53ddd0d9edc (patch)
tree9902e64c12ed222fa47d0e49390548cbcd252698 /src/demo/GPURegionNewtDemo02.java
parente952e7dbac7a6b746b8465aa63423f1aa138ca27 (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.java260
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());
- }
+ }
}
}