• Advertisement
Sign in to follow this  

Scrolling in OpenGL

This topic is 1967 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi, i'm creating a simple adventure game where the player just walks around different rooms, and when they hit door, the game refreshes to a new room.


Each room size is 600x400 and the game consists of 3 rooms. The window only displays 1 room at a time.
I've worked through most of the tutorials on lazyfoo and here for scrolling, but i can only find tutorials that moves the camera with the player in the center.


I tried using translatef as shown in the tutorials but it just distorts the room and if i try to create QUADS that goes beyond 600x400 it does not display, even when i call glTranslatef() to the position.

Sorry if this is a little hard to understand, hopefully this diagram will make my post easier to follow:

GdKGE.png

Here are relevant code snippet

bool init()
{
//relevant init code
glViewport(0, 0, 600, 400);
glMatrixMode(GL_PROJECTION);
return true;
}
void render()
{
//relevant render code
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glOrtho(0,600,400,0,-1,1);
if (player->room == 1)
glTranslatef(0, 0, 0);
if(player->room == 2)
glTranslatef(-600, 0, 0); //pan camera right 600px
if(player->room == 3)
glTranslatef(0, -400, 0); //pan camera down 400px
//initialize all rooms and objects in the whole maze
glPopMatrix(); //End rendering phase
}

Any help would be appreciated, thanks.

Share this post


Link to post
Share on other sites
Advertisement
From your code snippet it looks like you are rendering your scene while in GL_PROJECTION matrix mode? If you translate your projection matrix, funny effects (like distortion) may happen. Try a glMatrixMode(GL_MODELVIEW) at the beginning of your render() function.

Your projection matrix does not need to be changed all that often ;-) Edited by rnlf

Share this post


Link to post
Share on other sites
What you probably want to do is when the camera gets close to the edge of the room it should lock inside the room.

Also, as mentioned in the OpenGL scrolling tutorial, you shouldn't be using the projection matrix to scroll your camera.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement