aboutsummaryrefslogtreecommitdiffstats
path: root/src/demo/GPURegionNewtDemo01.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/GPURegionNewtDemo01.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/GPURegionNewtDemo01.java')
-rwxr-xr-xsrc/demo/GPURegionNewtDemo01.java167
1 files changed, 57 insertions, 110 deletions
diff --git a/src/demo/GPURegionNewtDemo01.java b/src/demo/GPURegionNewtDemo01.java
index d58d4148d..676621692 100755
--- a/src/demo/GPURegionNewtDemo01.java
+++ b/src/demo/GPURegionNewtDemo01.java
@@ -32,18 +32,14 @@ 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 outlines into one region/OutlineShape
* These Outlines are not necessary connected or contained.
@@ -53,21 +49,18 @@ import com.jogamp.opengl.util.FPSAnimator;
*
*/
public class GPURegionNewtDemo01 {
- private static void create(){
- new RegionNewtWindow();
- }
- public static void main(String[] args) {
- create();
- }
-}
-
-class RegionNewtWindow {
+ static final boolean DEBUG = false;
+ static final boolean TRACE = false;
+
+ public static void main(String[] args) {
+ GPURegionNewtDemo01 test = new GPURegionNewtDemo01();
+ test.testMe();
+ }
+
RegionGLListener regionGLListener = null;
-
- public RegionNewtWindow(){
- createWindow();
- }
- private void createWindow() {
+ GLWindow window;
+
+ public void testMe() {
GLProfile.initSingleton(true);
GLProfile glp = GLProfile.getGL2ES2();
GLCapabilities caps = new GLCapabilities(glp);
@@ -75,65 +68,45 @@ class RegionNewtWindow {
caps.setSampleBuffers(true);
caps.setNumSamples(4); // 2 samples is not enough ..
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 01 - r2t0 msaa1");
- regionGLListener = new RegionGLListener();
+
+ GLWindow w = GLWindow.create(caps);
+ w.setPosition(10, 10);
+ w.setSize(800, 400);
+ w.setTitle("GPU Curve Region Newt Demo 01 - r2t0 msaa1");
+
+ 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;
-
+
+ public RegionGLListener createRegionRendererListener(GLWindow w) {
+ this.window = w;
+
+ RegionGLListener l = new RegionGLListener();
+ l.attachInputListenerTo(w);
+
+ return l;
+ }
+
+ public class RegionGLListener extends GPURegionRendererListenerBase01 {
OutlineShape outlineShape = null;
- public RegionGLListener() {}
+ public RegionGLListener() {
+ super(SVertex.factory(), Region.SINGLE_PASS, DEBUG, TRACE);
+ setMatrix(-20, 00, 0f, -50, 400);
+ }
private void createTestOutline(){
float offset = 0;
- outlineShape = new OutlineShape(SVertex.factory());
+ outlineShape = new OutlineShape(getRenderer().getFactory());
outlineShape.addVertex(0.0f,-10.0f, true);
outlineShape.addVertex(15.0f,-10.0f, true);
outlineShape.addVertex(10.0f,5.0f, false);
@@ -169,64 +142,38 @@ class RegionNewtWindow {
}
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();
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);
-
- try {
- regionRenderer.renderOutlineShape(outlineShape, 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);
- }
+ final RegionRenderer regionRenderer = (RegionRenderer) getRenderer();
+
+ regionRenderer.resetModelview(null);
+ regionRenderer.translate(null, getXTran(), getYTran(), getZoom());
+ regionRenderer.rotate(gl, getAngle(), 0, 1, 0);
- 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.renderOutlineShape(gl, outlineShape, getPosition(), getTexSize());
+ }
}
}