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 3 of 3

Thread: Problem with gluLookAt and Viewport

  1. #1
    Junior Member Newbie
    Join Date
    Apr 2001
    Posts
    11

    Problem with gluLookAt and Viewport

    I an drawing a 2d style game, but I would like to be able to zoom up and down.

    The 2d stuff works fine, but for some reason I cannot get glulookat working properly. If the camera Z value is positive, it displays normally, and if it goes negative it does not display anything.

    Do I need to be doing something with the projection matrix?
    </font><blockquote><font size="1" face="Verdana, Arial">code:</font><hr /><pre style="font-size:x-small; font-family: monospace;"> private void render()
    {
    GL11.glViewport(VIEWPORT_X, VIEWPORT_Y, VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
    // set modelview
    GL11.glMatrixMode(GL11.GL_MODELVIEW);
    GLU.gluPerspective( 45.0f, VIEWPORT_WIDTH/VIEWPORT_HEIGHT, 0.1f, 1000f );
    GL11.glLoadIdentity(); // reset the matrix

    //clear background
    GL11.glClear(GL11.GL_COLOR_BUFFER_BIT);


    GLU.gluLookAt( ships[0].position.x, ships[0].position.y, 0f,
    ships[0].position.x, ships[0].position.y, -ZOOM,
    0f, 1f, 0f );

    GL11.glTranslatef( VIEWPORT_WIDTH/2, VIEWPORT_HEIGHT/2, 0f );
    GL11.glPushMatrix();
    renderGalaxyTexture();
    renderGalaxy();
    renderPlanets();
    renderBullets();
    renderShips();

    GL11.glPushMatrix();
    {
    // GL11.glTranslatef( -VIEWPORT_WIDTH/2, -VIEWPORT_HEIGHT/2, 0f );
    GL11.glTranslatef( ships[0].position.x, ships[0].position.y, 0f );
    renderShip();
    }
    GL11.glPopMatrix();
    GL11.glPopMatrix();

    GL11.glPushMatrix();
    {
    GL11.glEnable(GL11.GL_TEXTURE_2D);
    GL11.glEnable( GL11.GL_BLEND );
    GL11.glPolygonMode(GL11.GL_FRONT, GL11.GL_FILL);
    GL11.glPolygonMode(GL11.GL_BACK, GL11.GL_FILL);
    GL11.glColor3f(1.0f, 1.0f, 1.0f);

    // glPrint( 0, VIEWPORT_HEIGHT-FONT_HEIGHT, 0, "FPS = " + timer.fps +"(" +timer.frameInterval +"ms)" );
    glPrint( 0, VIEWPORT_HEIGHT-FONT_HEIGHT, 0, "" + timer.fps );
    }
    GL11.glPopMatrix();

    GL11.glFlush();

    //
    // now for the non-game screen stuff
    //
    // set projection matrix
    GL11.glMatrixMode(GL11.GL_PROJECTION);
    GL11.glLoadIdentity();
    GLU.gluOrtho2D( 0, SCREEN_WIDTH, 0, SCREEN_HEIGHT);

    // modelview
    GL11.glMatrixMode(GL11.GL_MODELVIEW);
    GLU.gluPerspective( 45.0f, SCREEN_WIDTH/SCREEN_HEIGHT,0.1f,1000 );
    GL11.glViewport( 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT );

    GL11.glLoadIdentity(); // reset the matrix

    renderConsole();
    renderScores();
    renderMap();

    GL11.glPushMatrix();
    {
    GL11.glEnable(GL11.GL_TEXTURE_2D);
    GL11.glPolygonMode(GL11.GL_FRONT, GL11.GL_FILL);
    GL11.glPolygonMode(GL11.GL_BACK, GL11.GL_FILL);
    GL11.glEnable( GL11.GL_BLEND );
    GL11.glColor3f(0f,0f,0f); // black

    glPrint( VIEWPORT_X+VIEWPORT_WIDTH, SCREEN_HEIGHT-FONT_HEIGHT-GUI_TOP_Y, 0, "Engines" );

    if ( ships[0].state == Ship.STATE_FLYING )
    {
    glPrint( VIEWPORT_X+VIEWPORT_WIDTH, SCREEN_HEIGHT-FONT_HEIGHT*2-GUI_TOP_Y, 0, (int)(100*ships[0].thrust)/ships[0].SHIP_SPEED +"%");
    glPrint( VIEWPORT_X+VIEWPORT_WIDTH, SCREEN_HEIGHT-FONT_HEIGHT*3-GUI_TOP_Y, 0, "(" +(int)ships[0].thrust +")" );
    }
    else if ( ships[0].state == Ship.STATE_WARPPREP

  2. #2
    Junior Member Newbie
    Join Date
    Aug 2004
    Location
    Houston, TX
    Posts
    1

    Re: Problem with gluLookAt and Viewport

    You should do gluPerspective when GL_PROJECTION is the current matrix mode, so switch to projection, load identity, do gluPerspective, switch to modelview, load identity, and clear background etc. as you normally were. By looking at your code, you might want to post this in beginners section; it doesn't seem like you completely understand what you're doing with the matrices.

  3. #3
    Junior Member Newbie
    Join Date
    Apr 2001
    Posts
    11

    Re: Problem with gluLookAt and Viewport

    Yeah sorry that code sample wasnt the best - that was after a day of hacking things around to see if I could solve the problem!

    The whole thing can be found at www.alexjascott.demon.co.uk/trek.zip if anyone felt nice enough to take a look (and its an interesting little project atm)!

Posting Permissions

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