Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Interior Kamar 2
- Author:
- Saiful Pahmi
- */
- #include <cstdlib>
- #include <iostream>
- #include <windows.h>
- #include <stdio.h>
- #include <GL/gl.h>
- #include <GL/glu.h>
- #include <GL/glut.h>
- #include <math.h>
- GLuint texture[35];
- GLint slices = 35;
- GLint stacks = 35;
- using namespace std;
- static float ypos = 0, zpos = 0, xpos = 0,a = -9, b = -5,c =-30, kulkas1=0, kulkas2=0, jKiri=0, jKanan=0, lKanan=0, lKiri=0, oven=0, pintu=0;
- int z=0;
- struct Image {
- unsigned long sizeX;
- unsigned long sizeY;
- char *data;
- };
- typedef struct Image Image; //struktur data untuk
- //ukuran image #bisa di set sesuai kebutuhan
- #define checkImageWidth 164
- #define checkImageHeight 164
- GLubyte checkImage[checkImageWidth][checkImageHeight][3];
- //mengambil gambar BMP
- int ImageLoad(char *filename, Image *image) {
- FILE *file;
- unsigned long size; // ukuran image dalam bytes
- unsigned long i; // standard counter.
- unsigned short int plane; // number of planes in image
- unsigned short int bpp; // jumlah bits per pixel
- char temp; // temporary color storage for var warna sementara untuk memastikan filenya ada
- if ((file = fopen(filename, "rb")) == NULL) {
- printf("File Not Found : %s\n", filename);
- return 0;
- }
- // mencari file header bmp
- fseek(file, 18, SEEK_CUR);
- // read the width
- if ((i = fread(&image->sizeX, 4, 1, file)) != 1) {
- printf("Error reading width from %s.\n", filename);
- return 0;
- }
- //printf("Width of %s: %lu\n", filename, image->sizeX);
- // membaca nilai height
- if ((i = fread(&image->sizeY, 4, 1, file)) != 1) {
- printf("Error reading height from %s.\n", filename);
- return 0;
- }
- //printf("Height of %s: %lu\n", filename, image->sizeY);
- //menghitung ukuran image(asumsi 24 bits or 3 bytes per pixel).
- size = image->sizeX * image->sizeY * 3;
- // read the planes
- if ((fread(&plane, 2, 1, file)) != 1) {
- printf("Error reading planes from %s.\n", filename);
- return 0;
- }
- if (plane != 1) {
- printf("Planes from %s is not 1: %u\n", filename, plane);
- return 0;
- }
- // read the bitsperpixel
- if ((i = fread(&bpp, 2, 1, file)) != 1) {
- printf("Error reading bpp from %s.\n", filename);
- return 0;
- }
- if (bpp != 24) {
- printf("Bpp from %s is not 24: %u\n", filename, bpp);
- return 0;
- }
- // seek past the rest of the bitmap header.
- fseek(file, 24, SEEK_CUR);
- // read the data.
- image->data = (char *) malloc(size);
- if (image->data == NULL) {
- printf("Error allocating memory for color-corrected image data");
- return 0;
- }
- if ((i = fread(image->data, size, 1, file)) != 1) {
- printf("Error reading image data from %s.\n", filename);
- return 0;
- }
- for (i = 0; i < size; i += 3) { // membalikan semuan nilai warna (gbr - > rgb)
- temp = image->data[i];
- image->data[i] = image->data[i + 2];
- image->data[i + 2] = temp;
- }
- // we're done.
- return 1;
- }
- //mengambil tekstur
- Image * loadTexture() {
- Image *image1;
- // alokasi memmory untuk tekstur
- image1 = (Image *) malloc(sizeof(Image));
- if (image1 == NULL) {
- printf("Error allocating space for image");
- exit(0);
- }
- if (!ImageLoad("tekstur/wall.bmp", image1)) {
- exit(1);
- }
- return image1;
- }
- Image * loadTexture2() {
- Image *image2;
- // alokasi memmory untuk tekstur
- image2 = (Image *) malloc(sizeof(Image));
- if (image2 == NULL) {
- printf("Error allocating space for image");
- exit(0);
- }
- if (!ImageLoad("tekstur/karpetlantai.bmp", image2)) {
- exit(1);
- }
- return image2;
- }
- Image * loadTexture3() {
- Image *image3;
- // alokasi memmory untuk tekstur
- image3 = (Image *) malloc(sizeof(Image));
- if (image3 == NULL) {
- printf("Error allocating space for image");
- exit(0);
- }
- if (!ImageLoad("tekstur/kayu.bmp", image3)) {
- exit(1);
- }
- return image3;
- }
- Image * loadTexture4() {
- Image *image4;
- // alokasi memmory untuk tekstur
- image4 = (Image *) malloc(sizeof(Image));
- if (image4 == NULL) {
- printf("Error allocating space for image");
- exit(0);
- }
- if (!ImageLoad("tekstur/pintu.bmp", image4)) {
- exit(1);
- }
- return image4;
- }
- Image * loadTexture5() {
- Image *image5;
- // alokasi memmory untuk tekstur
- image5 = (Image *) malloc(sizeof(Image));
- if (image5 == NULL) {
- printf("Error allocating space for image");
- exit(0);
- }
- if (!ImageLoad("tekstur/cpu.bmp", image5)) {
- exit(1);
- }
- return image5;
- }
- Image * loadTexture6() {
- Image *image6;
- // alokasi memmory untuk tekstur
- image6 = (Image *) malloc(sizeof(Image));
- if (image6 == NULL) {
- printf("Error allocating space for image");
- exit(0);
- }
- if (!ImageLoad("tekstur/poster.bmp", image6)) {
- exit(1);
- }
- return image6;
- }
- Image * loadTexture7() {
- Image *image7;
- // alokasi memmory untuk tekstur
- image7 = (Image *) malloc(sizeof(Image));
- if (image7 == NULL) {
- printf("Error allocating space for image");
- exit(0);
- }
- if (!ImageLoad("tekstur/lukisan.bmp", image7)) {
- exit(1);
- }
- return image7;
- }
- Image * loadTexture8() {
- Image *image8;
- // alokasi memmory untuk tekstur
- image8 = (Image *) malloc(sizeof(Image));
- if (image8 == NULL) {
- printf("Error allocating space for image");
- exit(0);
- }
- if (!ImageLoad("tekstur/kayu2.bmp", image8)) {
- exit(1);
- }
- return image8;
- }
- Image * loadTexture9() {
- Image *image9;
- // alokasi memmory untuk tekstur
- image9 = (Image *) malloc(sizeof(Image));
- if (image9 == NULL) {
- printf("Error allocating space for image");
- exit(0);
- }
- if (!ImageLoad("tekstur/desktop.bmp", image9)) {
- exit(1);
- }
- return image9;
- }
- Image * loadTexture10() {
- Image *image10;
- // alokasi memmory untuk tekstur
- image10 = (Image *) malloc(sizeof(Image));
- if (image10 == NULL) {
- printf("Error allocating space for image");
- exit(0);
- }
- if (!ImageLoad("tekstur/ghibli.bmp", image10)) {
- exit(1);
- }
- return image10;
- }
- void init(void)
- {
- glClearColor(0.5, 0.5, 0.5, 0.0);
- glEnable(GL_DEPTH_TEST);
- glDepthFunc(GL_LESS);
- Image *image1 = loadTexture();
- Image *image2 = loadTexture2();
- Image *image3 = loadTexture3();
- Image *image4 = loadTexture4();
- Image *image5 = loadTexture5();
- Image *image6 = loadTexture6();
- Image *image7 = loadTexture7();
- Image *image8 = loadTexture8();
- Image *image9 = loadTexture9();
- Image *image10 = loadTexture10();
- if (image1 == NULL) {
- printf("Image was not returned from loadTexture\n");
- exit(0);
- }
- if (image2 == NULL) {
- printf("Image was not returned from loadTexture\n");
- exit(0);
- }
- if (image3 == NULL) {
- printf("Image was not returned from loadTexture\n");
- exit(0);
- }
- if (image4 == NULL) {
- printf("Image was not returned from loadTexture\n");
- exit(0);
- }
- if (image5 == NULL) {
- printf("Image was not returned from loadTexture\n");
- exit(0);
- }
- if (image6 == NULL) {
- printf("Image was not returned from loadTexture\n");
- exit(0);
- }
- if (image7 == NULL) {
- printf("Image was not returned from loadTexture\n");
- exit(0);
- }
- if (image8 == NULL) {
- printf("Image was not returned from loadTexture\n");
- exit(0);
- }
- if (image9 == NULL) {
- printf("Image was not returned from loadTexture\n");
- exit(0);
- }
- if (image10 == NULL) {
- printf("Image was not returned from loadTexture\n");
- exit(0);
- }
- // Generate texture/ membuat texture
- glGenTextures(35,texture);
- //tekstur wall
- //binding texture untuk membuat texture 2D
- glBindTexture(GL_TEXTURE_2D, texture[0]);
- //menyesuaikan ukuran textur ketika image lebih besar dari texture
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- //menyesuaikan ukuran textur ketika image lebih kecil dari texture
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexImage2D(GL_TEXTURE_2D, 0, 3, image1->sizeX, image1->sizeY, 0, GL_RGB,
- GL_UNSIGNED_BYTE, image1->data);
- //tekstur lantai
- //binding texture untuk membuat texture 2D
- glBindTexture(GL_TEXTURE_2D, texture[1]);
- //menyesuaikan ukuran textur ketika image lebih besar dari texture
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //
- //menyesuaikan ukuran textur ketika image lebih kecil dari texture
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //
- glTexImage2D(GL_TEXTURE_2D, 0, 3, image2->sizeX, image2->sizeY, 0, GL_RGB,
- GL_UNSIGNED_BYTE, image2->data);
- //tekstur kayu
- //binding texture untuk membuat texture 2D
- glBindTexture(GL_TEXTURE_2D, texture[2]);
- //menyesuaikan ukuran textur ketika image lebih besar dari texture
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //
- //menyesuaikan ukuran textur ketika image lebih kecil dari texture
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //
- glTexImage2D(GL_TEXTURE_2D, 0, 3, image3->sizeX, image3->sizeY, 0, GL_RGB,
- GL_UNSIGNED_BYTE, image3->data);
- //tekstur pintu
- //binding texture untuk membuat texture 2D
- glBindTexture(GL_TEXTURE_2D, texture[3]);
- //menyesuaikan ukuran textur ketika image lebih besar dari texture
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //
- //menyesuaikan ukuran textur ketika image lebih kecil dari texture
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //
- glTexImage2D(GL_TEXTURE_2D, 0, 3, image4->sizeX, image4->sizeY, 0, GL_RGB,
- GL_UNSIGNED_BYTE, image4->data);
- //tekstur cpu
- //binding texture untuk membuat texture 2D
- glBindTexture(GL_TEXTURE_2D, texture[4]);
- //menyesuaikan ukuran textur ketika image lebih besar dari texture
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //
- //menyesuaikan ukuran textur ketika image lebih kecil dari texture
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //
- glTexImage2D(GL_TEXTURE_2D, 0, 3, image5->sizeX, image5->sizeY, 0, GL_RGB,
- GL_UNSIGNED_BYTE, image5->data);
- //tekstur poster
- //binding texture untuk membuat texture 2D
- glBindTexture(GL_TEXTURE_2D, texture[5]);
- //menyesuaikan ukuran textur ketika image lebih besar dari texture
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //
- //menyesuaikan ukuran textur ketika image lebih kecil dari texture
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //
- glTexImage2D(GL_TEXTURE_2D, 0, 3, image6->sizeX, image6->sizeY, 0, GL_RGB,
- GL_UNSIGNED_BYTE, image6->data);
- glBindTexture(GL_TEXTURE_2D, texture[6]);
- //menyesuaikan ukuran textur ketika image lebih besar dari texture
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //
- //menyesuaikan ukuran textur ketika image lebih kecil dari texture
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //
- glTexImage2D(GL_TEXTURE_2D, 0, 3, image7->sizeX, image7->sizeY, 0, GL_RGB,
- GL_UNSIGNED_BYTE, image7->data);
- glBindTexture(GL_TEXTURE_2D, texture[7]);
- //menyesuaikan ukuran textur ketika image lebih besar dari texture
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //
- //menyesuaikan ukuran textur ketika image lebih kecil dari texture
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //
- glTexImage2D(GL_TEXTURE_2D, 0, 3, image8->sizeX, image8->sizeY, 0, GL_RGB,
- GL_UNSIGNED_BYTE, image8->data);
- //tekstur keluarga
- //binding texture untuk membuat texture 2D
- glBindTexture(GL_TEXTURE_2D, texture[8]);
- //menyesuaikan ukuran textur ketika image lebih besar dari texture
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //
- //menyesuaikan ukuran textur ketika image lebih kecil dari texture
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //
- glTexImage2D(GL_TEXTURE_2D, 0, 3, image9->sizeX, image9->sizeY, 0, GL_RGB,
- GL_UNSIGNED_BYTE, image9->data);
- glBindTexture(GL_TEXTURE_2D, texture[9]);
- //menyesuaikan ukuran textur ketika image lebih besar dari texture
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //
- //menyesuaikan ukuran textur ketika image lebih kecil dari texture
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //
- glTexImage2D(GL_TEXTURE_2D, 0, 3, image10->sizeX, image10->sizeY, 0, GL_RGB,
- GL_UNSIGNED_BYTE, image10->data);
- glEnable(GL_TEXTURE_2D);
- glShadeModel(GL_FLAT);
- }
- //fungsi kotak kosong, belum diisi koordinat. diisi di display()
- void kotak(float x1,float y1,float z1,float x2,float y2,float z2)
- {
- //depan
- glTexCoord2f(0.0, 0.0);
- glVertex3f(x1,y1,z1);
- glTexCoord2f(0.0, 1.0);
- glVertex3f(x2,y1,z1);
- glTexCoord2f(1.0, 1.0);
- glVertex3f(x2,y2,z1);
- glTexCoord2f(1.0, 0.0);
- glVertex3f(x1,y2,z1);
- //atas
- glTexCoord2f(0.0, 0.0);
- glVertex3f(x1,y2,z1);
- glTexCoord2f(0.0, 1.0);
- glVertex3f(x2,y2,z1);
- glTexCoord2f(1.0, 1.0);
- glVertex3f(x2,y2,z2);
- glTexCoord2f(1.0, 0.0);
- glVertex3f(x1,y2,z2);
- //belakang
- glTexCoord2f(0.0, 0.0);
- glVertex3f(x1,y2,z2);
- glTexCoord2f(0.0, 1.0);
- glVertex3f(x2,y2,z2);
- glTexCoord2f(1.0, 1.0);
- glVertex3f(x2,y1,z2);
- glTexCoord2f(1.0, 0.0);
- glVertex3f(x1,y1,z2);
- //bawah
- glTexCoord2f(0.0, 0.0);
- glVertex3f(x1,y1,z2);
- glTexCoord2f(1.0, 0.0);
- glVertex3f(x2,y1,z2);
- glTexCoord2f(1.0, 1.0);
- glVertex3f(x2,y1,z1);
- glTexCoord2f(0.0, 1.0);
- glVertex3f(x1,y1,z1);
- //samping kiri
- glTexCoord2f(0.0, 0.0);
- glVertex3f(x1,y1,z1);
- glTexCoord2f(1.0, 0.0);
- glVertex3f(x1,y2,z1);
- glTexCoord2f(1.0, 1.0);
- glVertex3f(x1,y2,z2);
- glTexCoord2f(0.0, 1.0);
- glVertex3f(x1,y1,z2);
- //samping kanan
- glTexCoord2f(0.0, 0.0);
- glVertex3f(x2,y1,z1);
- glTexCoord2f(1.0, 0.0);
- glVertex3f(x2,y2,z1);
- glTexCoord2f(1.0, 1.0);
- glVertex3f(x2,y2,z2);
- glTexCoord2f(0.0, 1.0);
- glVertex3f(x2,y1,z2);
- }
- void keyboard(unsigned char key, int x, int y)
- {
- switch (key)
- {
- //putar arah jarum jam (menambah derajat putaran)
- case 'z':
- ypos=ypos+5;
- if (ypos>360) ypos=0;
- glutPostRedisplay();
- break;
- //putar berlawanan arah jarum jam (mengurangi derajat putaran)
- case 'x':
- ypos=ypos-5;
- if (ypos>360) ypos=0;
- glutPostRedisplay();
- break;
- //vertikal bawah (menambah koordinat y)
- case 's':
- b = b + 1;
- glutPostRedisplay();
- break;
- //vertikal atas (mengurangi koordinat y)
- case 'w':
- b = b - 1;
- glutPostRedisplay();
- break;
- //horisontal kiri (mengurangi koordinat x)
- case 'a':
- a = a + 1;
- glutPostRedisplay();
- break;
- //horisontal kanan (menambah koordinat x)
- case 'd':
- a = a - 1;
- glutPostRedisplay();
- break;
- //memperbesar objek (menambah koordinat z)
- case 'q':
- c = c + 1;
- glutPostRedisplay();
- break;
- //memperkecil abjek(mengurangi koordinat z)
- case 'e':
- c = c - 1;
- glutPostRedisplay();
- break;
- //buka pintu kulkas atas
- case 'n':
- kulkas1=kulkas1-5;
- if (kulkas1<-100) kulkas1=-100;
- glutPostRedisplay();
- break;
- //tutup pintu kulkas atas
- case 'm':
- kulkas1=kulkas1+5;
- if (kulkas1>0) kulkas1=0;
- glutPostRedisplay();
- break;
- //buka pintu kulkas bawah
- case 'k':
- kulkas2=kulkas2-5;
- if (kulkas2<-100) kulkas2=-100;
- glutPostRedisplay();
- break;
- //tutup pintu kulkas bawah
- case 'l':
- kulkas2=kulkas2+5;
- if (kulkas2>0) kulkas2=0;
- glutPostRedisplay();
- break;
- //buka jendela kiri
- case '1':
- jKiri=jKiri+5;
- if (jKiri<-0) jKiri=-1;
- glutPostRedisplay();
- break;
- //tutup jendela kiri
- case '2':
- jKiri=jKiri-5;
- if (jKiri<-0) jKiri=-0;
- glutPostRedisplay();
- break;
- //buka jendela kanan
- case '3':
- jKanan=jKanan+5;
- if (jKanan<-0) jKanan=-1;
- glutPostRedisplay();
- break;
- //tutup jendela kanan
- case '4':
- jKanan=jKanan-5;
- if (jKanan<-0) jKanan=-0;
- glutPostRedisplay();
- break;
- //buka oven
- case '9':
- oven=oven+5;
- if (oven<-0) oven=-1;
- glutPostRedisplay();
- break;
- //tutup oven
- case '0':
- oven=oven-5;
- if (oven<-0) oven=-0;
- glutPostRedisplay();
- break;
- //buka pintu lemari kiri
- case 'u':
- lKiri=lKiri-5;
- if (lKiri<-100) lKiri=-100;
- glutPostRedisplay();
- break;
- //tutup pintu lemari kiri
- case 'i':
- lKiri=lKiri+5;
- if (lKiri>0) lKiri=0;
- glutPostRedisplay();
- break;
- //buka pintu lemari kanan
- case 'o':
- lKanan=lKanan+5;
- if (lKanan<-100) lKanan=-100;
- glutPostRedisplay();
- break;
- //tutup pintu lemari kanan
- case 'p':
- lKanan=lKanan-5;
- if (lKanan<0) lKanan=0;
- glutPostRedisplay();
- break;
- //buka pintu
- case 't':
- pintu=pintu-5;
- if (pintu>100) pintu=100;
- glutPostRedisplay();
- break;
- //tutup pintu
- case 'y':
- pintu=pintu+5;
- if (pintu>0) pintu=0;
- glutPostRedisplay();
- break;
- //putar arah jarum jam (menambah derajat putaran)
- case '[':
- xpos=xpos+5;
- if (xpos>360) xpos=0;
- glutPostRedisplay();
- break;
- //putar berlawanan arah jarum jam (mengurangi derajat putaran)
- case ']':
- xpos=xpos-5;
- if (xpos>360) xpos=0;
- glutPostRedisplay();
- }
- }
- void display()
- {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glLoadIdentity ();
- glEnable(GL_DEPTH_TEST);
- //perpindahan
- glTranslatef(a,b,c);
- //putaran
- glRotatef(xpos,1,0,0);
- glRotatef(ypos,0,1,0);
- glRotatef(zpos,0,0,1);
- //Mulai coding Kamar 2 - M. Luhung Pananjung
- //lantai
- glPushMatrix();
- glBindTexture(GL_TEXTURE_2D, texture[1]);
- glBegin(GL_QUADS);
- glColor3f(0.3f,0.3f,0.3f);
- kotak(0,0,18,25,0.5,0);
- glEnd();
- glPopMatrix();
- //dinding kiri
- glPushMatrix();
- glBindTexture(GL_TEXTURE_2D, texture[2]);
- glBegin(GL_QUADS);
- glColor3f(0.0f,0.0f,1.0f);
- kotak(0,0.5,18,0.5,10,0);
- glEnd();
- glPopMatrix();
- //dinding belakang
- glPushMatrix();
- glBindTexture(GL_TEXTURE_2D, texture[2]);
- glBegin(GL_QUADS);
- glColor3f(0.0f,0.0f,1.0f);
- kotak(6,0.5,0.5,25,10,0.0);
- glEnd();
- glPopMatrix();
- //saklar
- glPushMatrix();
- glBindTexture(GL_TEXTURE_2D, texture[10]);
- glBegin(GL_QUADS);
- glColor3f(1.1f,1.0f,1.0f);
- kotak(6.5,6.5,0.6,7.5,7.5,0.5);
- glColor3f(0.1f,0.0f,0.0f);
- kotak(6.65,6.7,0.65,6.92,7.3,0.6);
- kotak(7.08,6.7,0.65,7.35,7.3,0.6);
- glEnd();
- glPopMatrix();
- //pintu
- glPushMatrix();
- glBindTexture(GL_TEXTURE_2D, texture[3]);
- glBegin(GL_QUADS);
- glColor3f(0.1f,0.0f,0.0f);
- kotak(0.5,0.5,0.5,6,10,0);
- glEnd();
- glPopMatrix();
- //gagang pintu
- glPushMatrix();
- glBindTexture(GL_TEXTURE_2D, texture[0]);
- glBegin(GL_QUADS);
- //gagang pintu
- glColor3f(1.0f,1.0f,1.0f);
- kotak(5.2,5.8,0.7,5.5,6,0.5);
- kotak(4.5,5.8,0.9,5.6,6,0.7);
- //alas gagang
- kotak(5.1,6.5,0.55,5.7,5,0.5);
- glColor3f(0.0f,0.0f,0.0f);
- kotak(5.35,5.2,0.56,5.45,5.5,0.55);
- glEnd();
- glPopMatrix();
- //gagang pintu belakang
- glPushMatrix();
- glBindTexture(GL_TEXTURE_2D, texture[0]);
- glBegin(GL_QUADS);
- //gagang pintu
- glColor3f(1.0f,1.0f,1.0f);
- kotak(5.2,5.8,0,5.5,6,-0.2);
- kotak(4.5,5.8,-0.2,5.6,6,-0.4);
- //alas gagang
- kotak(5.1,6.5,0,5.7,5,-0.05);
- glColor3f(0.0f,0.0f,0.0f);
- kotak(5.35,5.2,-0.05,5.45,5.5,-0.06);
- glEnd();
- glPopMatrix();
- //meja
- //atas
- glPushMatrix();
- glBindTexture(GL_TEXTURE_2D, texture[2]);
- glBegin(GL_QUADS);
- glColor3f(1.1f,1.0f,1.0f);
- kotak(21,3.5,16,24.8,3.8,9.5);
- //kaki kanan belakang
- kotak(24.3,0.5,15.9,24.6,3.6,15.6);
- //kaki kiri belakang
- kotak(24.3,0.5,9.9,24.6,3.6,9.6);
- //kaki kiri depan
- kotak(21.1,0.5,9.9,21.4,3.6,9.6);
- //kaki kanan depan
- kotak(21.1,0.5,15.9,21.4,3.6,15.6);
- //belakang bawah
- kotak(24.4,1,15.6,24.6,1.6,9.9);
- //kanan bawah
- kotak(21.4,1,15.9,24.3,1.6,15.7);
- //kiri bawah
- kotak(21.4,1,9.8,24.3,1.6,9.9);
- glEnd();
- glPopMatrix();
- //pc
- glPushMatrix();
- glBindTexture(GL_TEXTURE_2D, texture[2]);
- glBegin(GL_QUADS);
- glColor3f(0.0f,0.0f,0.0f);
- //cpu
- kotak(21.5,3.8,11.8,23.5,6,10.8);
- //Monitor lcd
- kotak(23.3,4.1,15.5,23.5,6.4,12.2);
- kotak(23.5,4.3,15.3,23.6,6.2,12.4);
- kotak(23.6,3.8,14,23.8,6,13.5);
- kotak(23.4,3.8,14.3,23.9,4,13.2);
- //keyboard
- kotak(21.8,3.8,12.3,23,4,15.2);
- glEnd();
- glPopMatrix();
- //layar lcd
- glPushMatrix();
- glBindTexture(GL_TEXTURE_2D, texture[8]);
- glBegin(GL_QUADS);
- glColor3f(1.1f,1.0f,1.0f);
- kotak(23.29,4.3,15.3,23.29,6.2,12.4);
- glEnd();
- glPopMatrix();
- //cpu
- glPushMatrix();
- glBindTexture(GL_TEXTURE_2D, texture[4]);
- glBegin(GL_QUADS);
- glColor3f(0.3f,0.3f,0.3f);
- kotak(21.49,3.8,11.8,21.5,6,10.8);
- glEnd();
- glPopMatrix();
- //kursi
- //alas
- glPushMatrix();
- glBindTexture(GL_TEXTURE_2D, texture[3]);
- glBegin(GL_QUADS);
- glColor3f(0.1f,0.0f,0.0f);
- kotak(18,2.2,15.5,20.8,2.5,12.8);
- //kiri depan
- kotak(20.5,0.5,15.5,20.8,2.5,15.2);
- //kanan depan
- kotak(20.5,0.5,13.1,20.8,2.5,12.8);
- //kanan belakang
- kotak(18,0.5,13.1,18.3,5.2,12.8);
- //kiri belakang
- kotak(18,0.5,15.5,18.3,5.2,15.2);
- //senderan
- kotak(18,3.8,15.5,18.2,4.9,12.8);
- glEnd();
- glPopMatrix();
- //kasur
- //rangka alas
- glPushMatrix();
- glBindTexture(GL_TEXTURE_2D, texture[2]);
- glBegin(GL_QUADS);
- glColor3f(1.1f,1.0f,1.0f);
- kotak(1.1,1.4,15.5,13.4,3,8.7);
- //kaki 1
- kotak(0.5,0.5,15.6,1.2,6,14.9);
- //kaki 2
- kotak(0.5,0.5,9.4,1.1,6,8.7);
- //kaki 3
- kotak(12.9,0.5,9.4,13.6,5,8.7);
- //kaki 4
- kotak(12.9,0.5,15.6,13.6,5,14.9);
- //penyangga depan
- kotak(0.6,3,15.4,1,5.1,8.9);
- //penyangga belakang
- kotak(12.9,1.4,15.4,13.6,4.5,8.9);
- glEnd();
- glPopMatrix();
- //kasurnya
- glPushMatrix();
- glBindTexture(GL_TEXTURE_2D, texture[1]);
- glBegin(GL_QUADS);
- glColor3f(1.1f,1.0f,1.0f);
- kotak(1.1,2.5,15.4,13.4,3.5,9);
- //bantal
- kotak(1.3,3.5,14.4,4,4,10);
- //selimut
- glColor3f(0.1f,0.1f,0.1f);
- kotak(5,3.5,15.4,13.4,3.7,9);
- //kanan
- kotak(5,3,9,13.4,3.6,8.9);
- //kiri
- kotak(5,3,15.5,13.4,3.6,15.4);
- glEnd();
- glPopMatrix();
- //lukisan atas kasur
- glPushMatrix();
- glBindTexture(GL_TEXTURE_2D, texture[9]);
- glBegin(GL_QUADS);
- glColor3f(1.0f,1.0f,1.0f);
- kotak(0.6,6.6,15.5,0.61,8.8,8.9);
- glColor3f(0.0f,0.0f,0.0f);
- kotak(0.5,6.4,15.7,0.6,9,8.7);
- glEnd();
- glPopMatrix();
- //lemari kecil
- glPushMatrix();
- glBindTexture(GL_TEXTURE_2D, texture[2]);
- glBegin(GL_QUADS);
- glColor3f(1.2f,1.2f,1.2f);
- kotak(0.5,0.8,8.5,4,4.5,4.7);
- //kaki kiri
- kotak(0.5,0.5,8.5,4.3,4.9,8.3);
- //kaki kanan
- kotak(0.5,0.5,4.5,4.3,4.9,4.7);
- //pegangan
- kotak(4.2,2.1,6.9,4.3,2.3,6.2);
- kotak(4.2,3.9,6.9,4.3,4.1,6.2);
- glEnd();
- glPopMatrix();
- //lacinya
- glPushMatrix();
- glBindTexture(GL_TEXTURE_2D, texture[3]);
- glBegin(GL_QUADS);
- glColor3f(0.3f,0.1f,0.1f);
- kotak(4,1,8.2,4.2,2.5,4.9);
- kotak(4,2.7,8.2,4.2,4.3,4.9);
- glEnd();
- glPopMatrix();
- //lemari pakaian
- glPushMatrix();
- glBindTexture(GL_TEXTURE_2D, texture[2]);
- glBegin(GL_QUADS);
- glColor3f(1.1f,1.0f,1.0f);
- kotak(16,0.6,3.5,23.8,8.5,0.5);
- //kanan
- kotak(23.8,0.5,3.7,24,8.7,0.5);
- //kiri
- kotak(15.8,0.5,3.7,16,8.7,0.5);
- //gagang pintu kiri
- glColor3f(1.1f,1.0f,1.0f);
- kotak(19.3,4.5,3.9,19.5,5.7,3.7);
- //gagang pintu kanan
- kotak(20.3,4.5,3.9,20.5,5.7,3.7);
- glEnd();
- glPopMatrix();
- glPushMatrix();
- glBindTexture(GL_TEXTURE_2D, texture[3]);
- glBegin(GL_QUADS);
- glColor3f(0.2f,0.1f,0.1f);
- //pintu kiri
- kotak(16.2,0.9,3.7,19.7,8.3,3.5);
- //pintu kanan
- kotak(20.1,0.9,3.7,23.6,8.3,3.5);
- glEnd();
- glPopMatrix();
- //lukisan singa
- glPushMatrix();
- glBindTexture(GL_TEXTURE_2D, texture[5]);
- glBegin(GL_QUADS);
- glColor3f(0.0f,0.0f,0.0f);
- kotak(9.2,2.8,0.55,13.2,8.2,0.5);
- glColor3f(1.1f,1.0f,1.0f);
- kotak(9.4,3,0.6,13,8,0.55);
- glEnd();
- glPopMatrix();
- //ac
- glPushMatrix();
- glBindTexture(GL_TEXTURE_2D, texture[10]);
- glBegin(GL_QUADS);
- glColor3f(1.1f,1.1f,1.1f);
- kotak(0.55,8.45,8.2,1.2,9.7,4.5);
- glColor3f(0.0f,0.0f,0.0f);
- kotak(1.2,8.5,8.2,1.25,8.45,4.5);
- kotak(1.2,8.6,8.1,1.25,8.62,4.6);
- kotak(1.2,9.58,8.1,1.25,9.6,7);
- kotak(1.2,9.52,8.2,1.25,9.54,6.5);
- kotak(0.55,8.39,8.1,1.15,8.4,4.6);
- glEnd();
- glPopMatrix();
- glFlush();
- glutSwapBuffers();
- }
- void reshape (int w, int h)
- {
- glViewport(0, 0, w, h);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluPerspective(60.0, 1.0 * (GLfloat) w / (GLfloat) h, 1.0, 40.0);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glTranslatef(0.0, 0.0, 0.0);
- gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
- }
- int main(int argc, char *argv[])
- {
- glutInit(&argc, argv);
- glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
- glutInitWindowSize (1024, 600);
- glutInitWindowPosition (20, 75);
- glutCreateWindow ("Kamar 2 - Saiful Pahmi");
- cout<<"\nTugas OpenGL - Interior Rumah"<<endl;
- cout<<"================================"<<endl<<endl;
- cout<<"Kamar 2 - Saiful Pahmi"<<endl;
- init ();
- glutDisplayFunc(display);
- glutReshapeFunc(reshape);
- glutKeyboardFunc(keyboard);
- glutMainLoop();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement