// main.cpp
#include <windows.h>
#include "MyObject.h"
#pragma comment (lib,"opengl32.lib")
#pragma comment (lib,"glaux.lib")
#pragma comment (lib,"glu32.lib")
#pragma comment (lib,"glut32.lib")
MyObject MO;
COGLTexture *TextureList = new COGLTexture[2];
void InitTextures(void)
{
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST);
TextureList[0].LoadFromFile("floor.bmp");
TextureList[1].LoadFromFile("tex2.bmp");
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
}
void Display(void)
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0.0f,0.0f,-35.0f);
MO.drawRoom(TextureList);
glFlush(); //Finish rendering
glutSwapBuffers();
}
void Reshape(int x, int y)
{
if (y == 0 || x == 0) return; //Nothing is visible then, so return
//Set a new projection matrix
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
//Angle of view:40 degrees
//Near clipping plane distance: 0.5
//Far clipping plane distance: 20.0
gluPerspective(40.0,(GLdouble)x/(GLdouble)y,0.0,20.0);
glMatrixMode(GL_MODELVIEW);
glViewport(0,0,x,y); //Use the whole window for rendering
}
int main (int argc, char **argv)
{
//Initialize GLUT
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB |GLUT_DEPTH);
glutInitWindowSize(1500,900);
//Create a window with rendering context and everything else we need
glutCreateWindow("Intro");
glClearColor(0.0,0.0,0.0,0.0);
glEnable(GL_DEPTH_TEST);
InitTextures();
glutDisplayFunc(Display);
glutReshapeFunc(Reshape);
glutMainLoop();
return 0;
}
then here is MyObject.cpp
#include "MyObject.h"
#include <iostream>
#pragma comment (lib,"opengl32.lib")
#pragma comment (lib,"glaux.lib")
#pragma comment (lib,"glu32.lib")
#pragma comment (lib,"glut32.lib")
void MyObject::drawRoom(COGLTexture *TextureList)
{
glEnable(GL_TEXTURE_2D);
// floor
TextureList[0].SetActive();
glBegin(GL_QUADS);
glTexCoord2f(1.0,0.0); glVertex3f(-20.0f,-12.0f,-14.0f); // Back Left
glTexCoord2f(1.0,1.0); glVertex3f(-20.0f,-12.0f, 14.0f); // Front Left
glTexCoord2f(0.0,1.0); glVertex3f( 20.0f,-12.0f, 14.0f); // Front Right
glTexCoord2f(0.0,0.0); glVertex3f( 20.0f,-12.0f,-14.0f); // Back Right
glEnd();
// ceiling
TextureList[1].SetActive();
glBegin(GL_QUADS);
glTexCoord2f(1.0,1.0); glVertex3f(-20.0f, 12.0f, 14.0f); // Front Left
glTexCoord2f(1.0,0.0); glVertex3f(-20.0f, 12.0f,-14.0f); // Back Left
glTexCoord2f(0.0,0.0); glVertex3f( 20.0f, 12.0f,-14.0f); // Back Right
glTexCoord2f(0.0,1.0); glVertex3f( 20.0f, 12.0f, 14.0f); // Front Right
glEnd();
glDisable(GL_TEXTURE_2D);
glBegin(GL_QUADS);
glColor3f(1.0, 0.95, 0.5);
glVertex3f(-20.0f, 12.0f,-14.0f); // Top Left
glVertex3f(-20.0f,-12.0f,-14.0f); // Bottom Left
glVertex3f( 20.0f,-12.0f,-14.0f); // Bottom Right
glVertex3f( 20.0f, 12.0f,-14.0f); // Top Right
glColor3f(0.93,0.85,0.45);
// Top Left
glVertex3f(-20.0f, 12.0f, 14.0f); // Top Front
glVertex3f(-20.0f,-12.0f, 14.0f); // Bottom Front
glVertex3f(-20.0f,-12.0f,-14.0f); // Bottom Back
glVertex3f(-20.0f, 12.0f,-14.0f); // Top Back
glVertex3f( 20.0f, 12.0f,-14.0f); // Top Back
glVertex3f( 20.0f,-12.0f,-14.0f); // Bottom Back
glVertex3f( 20.0f,-12.0f, 14.0f); // Bottom Front
glVertex3f( 20.0f, 12.0f, 14.0f); // Top Front
glVertex3f( 20.0f, 12.0f, 14.0f); // Top Right
glVertex3f( 20.0f,-12.0f, 14.0f); // Bottom Right
glVertex3f(-20.0f,-12.0f, 14.0f); // Bottom Left
glVertex3f(-20.0f, 12.0f, 14.0f);
glEnd();
// smaller face
glBegin(GL_QUADS);
glColor3f(0.0,0.0,1.0);
glVertex3f(-10.0f, 6.0f,-7.0f); // Top Left
glVertex3f(-10.0f,-6.0f,-7.0f); // Bottom Left
glVertex3f( 10.0f,-6.0f,-7.0f); // Bottom Right
glVertex3f( 10.0f, 6.0f,-7.0f);
glEnd();
}