Part of the Khronos Group
OpenGL.org

The Industry's Foundation for High Performance Graphics

from games to virtual reality, mobile phones to supercomputers

Results 1 to 4 of 4

Thread: problem converting from win coordinates to object coordinates

  1. #1
    Intern Newbie
    Join Date
    Sep 2005
    Posts
    33

    problem converting from win coordinates to object coordinates

    i am trying to convert windows coordinates to object ( gl ) coordinates, i am having random values as a result. Also, opengl cooordinates start from leftbottom corner of window, but my origin is at the middle of the window, and objects are drawn in respect to origin. i am confused, somebody clarify.

    following is the code..getting weird values.
    void getOGLPos(int x, int y, GLdouble* glX, GLdouble* glY, GLdouble* glZ )
    {
    GLint viewport[4];
    GLdouble modelview[16];
    GLdouble projection[16];
    GLfloat winX, winY, winZ;

    glGetDoublev( GL_MODELVIEW_MATRIX, modelview );
    glGetDoublev( GL_PROJECTION_MATRIX, projection );
    glGetIntegerv( GL_VIEWPORT, viewport );

    winX = (float)x;
    winY = (float)viewport[3] - (float)y;
    glReadPixels( x, int(winY), 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &winZ );

    gluUnProject( winX, winY, winZ, modelview, projection, viewport, glX, glY, glZ);
    }

    //Calls
    GLdouble glX=0.0,glY=0.0,glZ=0.0;
    getOGLPos( 240,0,&glX,&glY,&glZ);

    Values I am getting, for Windows values x=240,y=0
    glX = -4.342......e-0.12
    glY = 2.17.................e-011

  2. #2
    Senior Member OpenGL Pro
    Join Date
    May 2000
    Location
    Naarn, Austria
    Posts
    1,142

    Re: problem converting from win coordinates to object coordinates

    Your code looks correct, it should work. That's of course assuming you have the correct depth buffer content. You have to call your getOGLPos function after rendering, but before SwapBuffers.

    What values are you expecting? The values themselves are meaningless unless you tell us your transformation setup.

    2.17e-11 is nearly zero. You'll never get an exact result with floating point math. So if you're expecting the outcome to be zero, the result is propably ok.

  3. #3
    Intern Newbie
    Join Date
    Sep 2005
    Posts
    33

    Re: problem converting from win coordinates to object coordinates

    I am using the following transformation setup. I was expecting, x=240, y=0 as point closer to top-right.
    <--------x=240---> . (y=0)
    |
    |
    | .Origin
    |
    |
    ----------------------------
    Basically i was trying to write some text ( such as frame rate data) at top-left corner. so i was experimenting with client-coordinates to gl coordinates conversion.

    int width=600,height=600;
    glViewport( 0, 0, width, height );

    //Set the matrix
    glMatrixMode( GL_PROJECTION );
    glLoadIdentity();//reset projection matrix
    gluPerspective(50.0f,(GLfloat)width/(GLfloat)height,0.005f,1000.0f);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

    gluLookAt( 0.0f, 0.0f, 10.0f, 0.0,0.0,0.0,0.0f,1.0f, 0.0f );

  4. #4
    Intern Newbie
    Join Date
    Sep 2005
    Posts
    33

    Re: problem converting from win coordinates to object coordinates

    oh..it did not draw correctly..origin has to be in middle.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •