Java-Gaming.org
Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars!
Featured games (78)
games approved by the League of Dukes
Games in Showcase (406)
games submitted by our members
Games in WIP (293)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  glOrtho and wacky Mouse  (Read 1008 times)
0 Members and 1 Guest are viewing this topic.
Offline ajaskey

Junior Newbie





« Posted 2006-11-02 22:37:14 »

Hi.  I've found lotsa info close to what I want, but what I need is very simple.  I started with the SimpleJOGL program from the Netbeans template and created a virtual coordinate test program.  My program will draw a rectangle and a line within the virtual system (-1000,-1000 to 15000,15000), but I can't figure out how to get the mouse to return X,Y based on the virtual system.  Currently this program returns the X,Y of the screen with 0,0 in the upper left hand corner and with lower right as 600,400.  What call do I need to make to tell the mouse to return virtual coordinates in with the getX and getY?

Thanx.
Andy

import java.awt.*;
import java.awt.event.*;
import javax.media.opengl.*;
import com.sun.opengl.util.*;
import javax.media.opengl.glu.GLU;
/**
 * VirtualJOGL.java <BR>
 * author: Brian Paul (converted to Java by Ron Cemer and Sven Goethel) <P>
 *
 * This version is equal to Brian Paul's version 1.2 1999/10/21
 */

public class VirtualJOGL implements GLEventListener {   
    private static final int SIZE = 160;
    private MouseMotionAdapter mouseMotionListener = new MouseMotionAdapter() {
        public void mouseDragged(MouseEvent e) {
            motionMethod(e, e.getX(), e.getY());
        }
       
        public void mouseMoved(MouseEvent e) {
            passiveMotionMethod(e, e.getX(), e.getY());
        }
    };
   
    private MouseAdapter mouseListener = new MouseAdapter() {
        public void mousePressed(MouseEvent e) {
            mouseMethod(e, e.getModifiers(), true, e.getX(), e.getY());
        }
       
        public void mouseReleased(MouseEvent e) {
            mouseMethod(e, e.getModifiers(), false, e.getX(), e.getY());
        }
    };
   
    private void passiveMotionMethod(MouseEvent e, int x, int y) {
    }
   
    private void motionMethod(MouseEvent e, int x, int y) {
    }
    private void mouseMethod(MouseEvent e, int mods, boolean press,
            int x, int y) {
        if (press) {
            System.out.print("Mouse Clicked : ");
            System.out.print(x);
            System.out.print(" ");
            System.out.print(y);
            System.out.println(" ");
        }
    }
   
   
    public static void main(String[] args) {
        Frame frame = new Frame("Virtual JOGL Application");
        GLCanvas canvas = new GLCanvas();
       
        canvas.addGLEventListener(new VirtualJOGL());
        frame.add(canvas);
        frame.setSize(600, 400);
        final Animator animator = new Animator(canvas);
        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                // Run this on another thread than the AWT event queue to
                // make sure the call to Animator.stop() completes before
                // exiting
                new Thread(new Runnable() {
                    public void run() {
                        animator.stop();
                        System.exit(0);
                    }
                }).start();
            }
        });
        // Center frame
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
        animator.start();
    }
   
    public void init(GLAutoDrawable drawable) {
        // Use debug pipeline
        // drawable.setGL(new DebugGL(drawable.getGL()));
       
        GL gl = drawable.getGL();
        System.err.println("INIT GL IS: " + gl.getClass().getName());
       
        gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
        gl.glShadeModel(GL.GL_FLAT);
       
        drawable.addMouseMotionListener(mouseMotionListener);
        drawable.addMouseListener(mouseListener);       
    }
   
    /**
     *
     * @param drawable
     * @param x
     * @param y
     * @param width
     * @param height
     */
    public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {
        GL gl = drawable.getGL();
        gl.glViewport(0, 0, width, height);
        gl.glMatrixMode(GL.GL_PROJECTION);
        gl.glLoadIdentity();
        gl.glOrtho(-1000,15000,-1000,15000,-1,1);       
    }
   
    public void display(GLAutoDrawable drawable) {
        GL gl = drawable.getGL();
       
        gl.glClear(GL.GL_COLOR_BUFFER_BIT);
        gl.glColor3f(1, 0, 0);
        gl.glRecti(100, 100, 1500, 1500);
       
        gl.glBegin(GL.GL_LINES);
        gl.glVertex2i(7500,7500);
        gl.glVertex2i(14000,14000);
        gl.glEnd();
       
       
        gl.glColor3f(0.0f, 0.0f, 0.0f);
       
    }
   
    public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {
    }
}

Offline turquoise3232

Junior Member




Java (games) rock!


« Reply #1 - Posted 2006-11-03 18:19:53 »

Hi,

Since you have a simple glOrtho projection you can do the math yourself. You can also use gluUnproject routine do make the conversion. Search this forum to find some samples.
Hope it helps.
Offline ajaskey

Junior Newbie





« Reply #2 - Posted 2006-11-06 02:20:26 »

Hi,

Since you have a simple glOrtho projection you can do the math yourself. You can also use gluUnproject routine do make the conversion. Search this forum to find some samples.
Hope it helps.

Turquoise - thanx for the gluUnproject help.  I found an example and got it working.

Andy
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars!
 
Try the Free Demo of Revenge of the Titans

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

The invasion has landed! On Mars! And you're there to beat 'em!
cubemaster21 (76 views)
2013-05-17 12:29:12

alaslipknot (87 views)
2013-05-16 12:24:48

gouessej (117 views)
2013-05-15 15:53:38

gouessej (112 views)
2013-05-15 15:17:58

theagentd (124 views)
2013-05-15 06:01:13

theagentd (112 views)
2013-05-15 06:00:54

StreetDoggy (156 views)
2013-05-14 06:56:26

kutucuk (178 views)
2013-05-12 08:10:36

kutucuk (177 views)
2013-05-12 06:36:09

UnluckyDevil (185 views)
2013-05-11 20:09:57
Complex number cookbook
by Roquen
2013-04-24 12:47:31

2D Dynamic Lighting
by Oskuro
2013-04-17 16:46:12

2D Dynamic Lighting
by Oskuro
2013-04-17 16:45:57

2D Dynamic Lighting
by Oskuro
2013-04-17 16:23:20

Noise (bandpassed white)
by Roquen
2013-04-05 17:36:01

Noise (bandpassed white)
by Roquen
2013-04-03 16:17:38

Java Data structures
by Roquen
2013-03-29 13:21:12

Topic Request
by kutucuk
2013-03-22 21:42:01
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!
Page created in 0.144 seconds with 21 queries.