void gluPerspective_( GLdouble fovY, GLdouble aspect, GLdouble zNear, GLdouble zFar ) { const GLdouble pi = 3.1415926535897932384626433832795; GLdouble fH = tan( fovY / 360 * pi ) * zNear; GLdouble fW = fH * aspect; glFrustum( -fW, fW, -fH, fH, zNear, zFar );}/* Draw scene objects */void renderGL() { static float theta = 0.0f; theta += delta; // Clear and reset glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Render all map tiles (24x24) glLoadIdentity(); glRotatef(theta, 1.0f, 0.0f, 0.0f); glBindTexture(GL_TEXTURE_2D, textures[0]); // Tilemap texture (48x(48*n)) glBegin(GL_QUADS); for (int x = -12; x < 12; x++) { for (int y = -12; y < 12; y++) { GLfloat tex = ((float)(rand() % 20)) / 20.0f; // Random tile const GLfloat td = 1.0f / 20.0f; glTexCoord2f(0.0f, tex+td); glVertex3f(x / 12.0f, y / 12.0f, 0.0f); glTexCoord2f(1.0f, tex+td); glVertex3f((x+1) / 12.0f, y / 12.0f, 0.0f); glTexCoord2f(1.0f, tex); glVertex3f((x+1) / 12.0f, (y+1) / 12.0f, 0.0f); glTexCoord2f(0.0f, tex); glVertex3f(x / 12.0f, (y+1) / 12.0f, 0.0f); } } glEnd(); // Render player glLoadIdentity(); glBindTexture(GL_TEXTURE_2D, textures[1]); // Player's texture glBegin(GL_QUADS); int animstate = 0; int direction = 0; GLfloat x = direction / 4.0f; GLfloat y = animstate / 4.0f; const GLfloat d = 1.0f / 4.0f; glTexCoord2f(x, y+d); glVertex3f(0.0f, 0.0f, 0.0f); glTexCoord2f(x+d,y+d); glVertex3f(1.0f, 0.0f, 0.0f); glTexCoord2f(x+d,y); glVertex3f(1.0f, 1.0f, 0.0f); glTexCoord2f(x, y); glVertex3f(0.0f, 1.0f, 0.0f); glEnd(); /* Flip to screen */ SDL_GL_SwapBuffers();}/* OpenGL Initialisation */bool initGL() { if (!loadTextures()) return false; glViewport(0, 0, SCR_WIDTH, SCR_HEIGHT); glEnable(GL_TEXTURE_2D); glShadeModel(GL_SMOOTH); glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClearDepth(1.0f); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Enable RGBA Alpha blending glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_BLEND); // Set up projection matrix glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective_(180.0, ((double)SCR_WIDTH)/((double)SCR_HEIGHT), -10.0, 100.0); // Set up Modelview matrix glMatrixMode(GL_MODELVIEW); glLoadIdentity(); // Wireframe mode //glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); return true;}
Apologies for the large code dump, but could anyone offer any insight?
The camera is looking down the default direction (down the Z axis).