Java-Gaming.org Hi !
Featured games (83)
games approved by the League of Dukes
Games in Showcase (513)
Games in Android Showcase (121)
games submitted by our members
Games in WIP (577)
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  
  Projection problems  (Read 1288 times)
0 Members and 1 Guest are viewing this topic.
Offline Orangy Tang

JGO Kernel


Medals: 56
Projects: 11


Monkey for a head


« Posted 2002-11-30 13:18:19 »

I'm at something of a loss here, and i'm not sure whether my problem is Gl or native buffer related, but hopefully someone here can give some hints..

I'm attempting to get screen x/y coords from a x/y/z position in world space. Now while the theory behind doing this manually is pretty simple, I thought it would be easier to use the glu.project routine for ease. Unfortunatly this works once, and only once on the first usage, and then clams up on me Sad the method returns GL.FALSE to indicate faliure, yet gl.getError returns GL.NO_ERROR  Huh

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
65  
66  
67  
68  
69  
70  
71  
72  
73  
74  
75  
76  
77  
78  
79  
80  
81  
82  
83  
84  
85  
86  
87  
88  
89  
90  
91  
92  
93  
94  
95  
96  
97  
98  
99  
100  
101  
// Member vars, created in constructor
      private IntBuffer viewport;
      private DoubleBuffer modelViewMatrix;
      private DoubleBuffer projectionMatrix;
      private DoubleBuffer windowCoords;
     
      private DoubleBuffer windowX;
      private DoubleBuffer windowY;
      private DoubleBuffer windowZ;
      private int pWindowX;
      private int pWindowY;
      private int pWindowZ;
     
      private int pViewport;
      private int pModelViewMatrix;
      private int pProjectionMatrix;
      private int pWindowCoords;

// From the mouse classes update():
                  viewport.clear();
                  modelViewMatrix.clear();
                  projectionMatrix.clear();
                  windowCoords.clear();
                 
                  windowX.clear();
                  windowY.clear();
                  windowZ.clear();
                 
                 
                  gl.getIntegerv(GL.VIEWPORT, pViewport);
                  gl.getDoublev(GL.MODELVIEW_MATRIX, pModelViewMatrix);
                  gl.getDoublev(GL.PROJECTION_MATRIX, pProjectionMatrix);
                 
                 
                  // Projection/scrolling test code
                  int returnCode = GL.TRUE;
                      returnCode = glu.project(/*position.x, position.y, position.z,*/
                                                           0, 0, 0,
                                                             pModelViewMatrix,
                                                             pProjectionMatrix,
                                                             pViewport,
                                                      //       pWindowCoords, pWindowCoords+8, pWindowCoords+16);
                                                             pWindowX, pWindowY, pWindowZ);
                 
                  if (returnCode == GL.TRUE)
                  {
                        /*
                        double x = windowCoords.get(0);
                        double y = windowCoords.get(1);
                        double z = windowCoords.get(2);
                        */

                       
                        double x = windowX.get(0);
                        double y = windowY.get(0);
                        double z = windowZ.get(0);
                       
                       
                        System.out.println("Project, x:"+x +" y:"+y +" z:"+z);
                       
                       
                  }
                  else
                  {
                  //      System.out.println("return code: "+returnCode);
                       
                        int error = gl.getError();
                       
                  //      System.out.println("Error code:"+error);
                       
                       
                       
                        if (error == GL.NO_ERROR)
                        {
                  //            System.out.println("no error");
                        }
                        else if (error == GL.INVALID_ENUM)
                        {
                              System.out.println("invalid enum");
                        }
                        else if (error == GL.INVALID_VALUE)
                        {
                              System.out.println("invalid value");
                        }
                        else if (error == GL.INVALID_OPERATION)
                        {
                              System.out.println("invalid operation");
                        }
                       
                        else if (error == GLU.INVALID_ENUM)
                        {
                              System.out.println("glu invalid enum");
                        }
                        else if (error == GLU.INVALID_VALUE)
                        {
                              System.out.println("glu invalid value");
                        }
                       
                        else
                        {
                              System.out.println("not recognised");
                        }


I assume that theres something somewhere that I have to reset before using gl.project for the second time, since everything seems to go ok for the first attempt. Yet I can't think of anything else i'm missing...

[ TriangularPixels.com - Play Growth Spurt, Rescue Squad and Snowman Village ] [ Rebirth - game resource library ]
Offline Orangy Tang

JGO Kernel


Medals: 56
Projects: 11


Monkey for a head


« Reply #1 - Posted 2002-11-30 20:38:42 »

Ooops, my bad - I was calling this method in my update() but it needs to be called during render() for the Gl matricies to be set up correctly. Unfortunatly this ties my update code and my drawing code together in a way I was hoping to avoid. Time to insert some sort of interface layer between the two methinks..

[ TriangularPixels.com - Play Growth Spurt, Rescue Squad and Snowman Village ] [ Rebirth - game resource library ]
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

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

The first screenshot will be displayed as a thumbnail.

theagentd (16 views)
2014-10-25 15:46:29

Longarmx (52 views)
2014-10-17 03:59:02

Norakomi (45 views)
2014-10-16 15:22:06

Norakomi (34 views)
2014-10-16 15:20:20

lcass (39 views)
2014-10-15 16:18:58

TehJavaDev (68 views)
2014-10-14 00:39:48

TehJavaDev (68 views)
2014-10-14 00:35:47

TehJavaDev (60 views)
2014-10-14 00:32:37

BurntPizza (74 views)
2014-10-11 23:24:42

BurntPizza (45 views)
2014-10-11 23:10:45
Understanding relations between setOrigin, setScale and setPosition in libGdx
by mbabuskov
2014-10-09 22:35:00

Definite guide to supporting multiple device resolutions on Android (2014)
by mbabuskov
2014-10-02 22:36:02

List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50

List of Learning Resources
by SilverTiger
2014-07-31 16:26:06
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
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!