Anda di halaman 1dari 20

/**************************

* Includes
*
**************************/

#include <stdlib.h>
#include <windows.h>
#include <stdio.h>
#include <gl\gl.h>
#include <gl\glu.h>
#include "glaux.h"
#include "glut.h"

/**************************
* Function Declarations
*
**************************/

LRESULT CALLBACK WndProc (HWND hWnd, UINT message,


WPARAM wParam, LPARAM lParam);
void EnableOpenGL (HWND hWnd, HDC *hDC, HGLRC *hRC);
void DisableOpenGL (HWND hWnd, HDC hDC, HGLRC hRC);
void Inisialisasi(int lebar, int tinggi);

GLfloat xrot; // deklarasi rotasi x


GLfloat yrot; // deklarasi rotasi y
GLfloat zrot; // deklarasi rotasi z
GLfloat byrot; // deklarasi rotasi back y
GLuinttexture[4]; // digunakan untuk menampung 4 gambar

void kubusku() // kubus kanan


{
glBindTexture(GL_TEXTURE_2D, texture[0]); // digunakan untuk menempatkan
gambar pada object kubus

glBegin(GL_QUADS);
// Muka depan
glNormal3f( 0.0f, 0.0f, 1.0f); // Normal menuju Anda
glTexCoord2f(0.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, 1.0f); // Titik 1 (depan)
glTexCoord2f(1.0f, 0.0f);
glVertex3f( 1.0f, -1.0f, 1.0f); // Titik 2 (depan)
glTexCoord2f(1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, 1.0f); // Titik 3 (depan)
glTexCoord2f(0.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f); // Titik 4 (depan)

// Muka belakang
glNormal3f( 0.0f, 0.0f,-1.0f); // Normal meninggalKan Anda
glTexCoord2f(1.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, -1.0f); // Titik 1 (belakang)
glTexCoord2f(1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, -1.0f); // Titik 2 (belakang)
glTexCoord2f(0.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, -1.0f); // Titik 3 (belakang)
glTexCoord2f(0.0f, 0.0f);
glVertex3f( 1.0f, -1.0f, -1.0f); // Titik 4 (belakang)

// Muka Atas
glNormal3f( 0.0f, 1.0f, 0.0f); // Normal berarah atas
glTexCoord2f(0.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, -1.0f); // Titik 1 (atas)
glTexCoord2f(0.0f, 0.0f);
glVertex3f(-1.0f, 1.0f, 1.0f); // Titik 2 (atas)
glTexCoord2f(1.0f, 0.0f);
glVertex3f( 1.0f, 1.0f, 1.0f); // Titik 3 (atas)
glTexCoord2f(1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, -1.0f); // Titik 4 (atas)

// Muka bawah
glNormal3f( 0.0f,-1.0f, 0.0f); // Normal berarah bawah
glTexCoord2f(1.0f, 1.0f);
glVertex3f(-1.0f, -1.0f, -1.0f); // Titik 1 (bawah)
glTexCoord2f(0.0f, 1.0f);
glVertex3f( 1.0f, -1.0f, -1.0f); // Titik 2 (bawah)
glTexCoord2f(0.0f, 0.0f);
glVertex3f( 1.0f, -1.0f, 1.0f); // Titik 3 (bawah)
glTexCoord2f(1.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, 1.0f); // Titik 4 (bawah)

// Muka kanan
glNormal3f( 1.0f, 0.0f, 0.0f); // Normal berarah ke kanan
glTexCoord2f(1.0f, 0.0f);
glVertex3f( 1.0f, -1.0f, -1.0f); // Titik 1 (kanan)
glTexCoord2f(1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, -1.0f); // Titik 2 (kanan)
glTexCoord2f(0.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, 1.0f); // Titik 3 (kanan)
glTexCoord2f(0.0f, 0.0f);
glVertex3f( 1.0f, -1.0f, 1.0f); // Titik 4 (kanan)

// Muka kiri
glNormal3f(-1.0f, 0.0f, 0.0f); // Normal berarah ke kiri
glTexCoord2f(0.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, -1.0f); // Titik 1 (kiri)
glTexCoord2f(1.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, 1.0f); // Titik 2 (kiri)
glTexCoord2f(1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f); // Titik 3 (kiri)
glTexCoord2f(0.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, -1.0f); // Titik 4 (kiri)

glEnd();
}

void kubusgu() // kubus kanan


{
glBegin(GL_QUADS);

// Muka depan
glNormal3f( 0.0f, 0.0f, 1.0f); // Normal menuju Anda
glTexCoord2f(0.0f, 0.0f);
glVertex3f(-1.0f, -2.5f, 1.0f); // Titik 1 (depan)
glTexCoord2f(1.0f, 0.0f);
glVertex3f( 1.0f, -2.5f, 1.0f); // Titik 2 (depan)
glTexCoord2f(1.0f, 1.0f);
glVertex3f( 1.0f, -0.5f, 1.0f); // Titik 3 (depan)
glTexCoord2f(0.0f, 1.0f);
glVertex3f(-1.0f, -0.5f, 1.0f); // Titik 4 (depan)

// Muka belakang
glNormal3f( 0.0f, 0.0f,-1.0f); // Normal meninggalKan Anda
glTexCoord2f(1.0f, 0.0f);
glVertex3f(-1.0f, -2.5f, -1.0f); // Titik 1 (belakang)
glTexCoord2f(1.0f, 1.0f);
glVertex3f(-1.0f, -0.5f, -1.0f); // Titik 2 (belakang)
glTexCoord2f(0.0f, 1.0f);
glVertex3f( 1.0f, -0.5f, -1.0f); // Titik 3 (belakang)
glTexCoord2f(0.0f, 0.0f);
glVertex3f( 1.0f, -2.5f, -1.0f); // Titik 4 (belakang)

// Muka Atas
glNormal3f( 0.0f, 1.0f, 0.0f); // Normal berarah atas
glTexCoord2f(0.0f, 1.0f);
glVertex3f(-1.0f, -0.5f, -1.0f); // Titik 1 (atas)
glTexCoord2f(0.0f, 0.0f);
glVertex3f(-1.0f, -0.5f, 1.0f); // Titik 2 (atas)
glTexCoord2f(1.0f, 0.0f);
glVertex3f( 1.0f, -0.5f, 1.0f); // Titik 3 (atas)
glTexCoord2f(1.0f, 1.0f);
glVertex3f( 1.0f, -0.5f, -1.0f); // Titik 4 (atas)

// Muka bawah
glNormal3f( 0.0f,-1.0f, 0.0f); // Normal berarah bawah
glTexCoord2f(1.0f, 1.0f);
glVertex3f(-1.0f, -2.5f, -1.0f); // Titik 1 (bawah)
glTexCoord2f(0.0f, 1.0f);
glVertex3f( 1.0f, -2.5f, -1.0f); // Titik 2 (bawah)
glTexCoord2f(0.0f, 0.0f);
glVertex3f( 1.0f, -2.5f, 1.0f); // Titik 3 (bawah)
glTexCoord2f(1.0f, 0.0f);
glVertex3f(-1.0f, -2.5f, 1.0f); // Titik 4 (bawah)

// Muka kanan
glNormal3f( 1.0f, 0.0f, 0.0f); // Normal berarah ke kanan
glTexCoord2f(1.0f, 0.0f);
glVertex3f( 1.0f, -2.5f, -1.0f); // Titik 1 (kanan)
glTexCoord2f(1.0f, 1.0f);
glVertex3f( 1.0f, -0.5f, -1.0f); // Titik 2 (kanan)
glTexCoord2f(0.0f, 1.0f);
glVertex3f( 1.0f, -0.5f, 1.0f); // Titik 3 (kanan)
glTexCoord2f(0.0f, 0.0f);
glVertex3f( 1.0f, -2.5f, 1.0f); // Titik 4 (kanan)

// Muka kiri
glNormal3f(-1.0f, 0.0f, 0.0f); // Normal berarah ke kiri
glTexCoord2f(0.0f, 0.0f);
glVertex3f(-1.0f, -2.5f, -1.0f); // Titik 1 (kiri)
glTexCoord2f(1.0f, 0.0f);
glVertex3f(-1.0f, -2.5f, 1.0f); // Titik 2 (kiri)
glTexCoord2f(1.0f, 1.0f);
glVertex3f(-1.0f, -0.5f, 1.0f); // Titik 3 (kiri)
glTexCoord2f(0.0f, 1.0f);
glVertex3f(-1.0f, -0.5f, -1.0f); // Titik 4 (kiri)

glEnd();
}

void kubusnya() // kubus kiri


{
glBindTexture(GL_TEXTURE_2D, texture[1]); // digunakan untuk menempatkan
gambar pada object kubus

glBegin(GL_QUADS);
// Muka depan
glNormal3f( 0.0f, 0.0f, 1.0f); // Normal menuju Anda
glTexCoord2f(0.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, 1.0f); // Titik 1 (depan)
glTexCoord2f(1.0f, 0.0f);
glVertex3f( 1.0f, -1.0f, 1.0f); // Titik 2 (depan)
glTexCoord2f(1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, 1.0f); // Titik 3 (depan)
glTexCoord2f(0.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f); // Titik 4 (depan)

// Muka belakang
glNormal3f( 0.0f, 0.0f,-1.0f); // Normal meninggalKan Anda
glTexCoord2f(1.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, -1.0f); // Titik 1 (belakang)
glTexCoord2f(1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, -1.0f); // Titik 2 (belakang)
glTexCoord2f(0.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, -1.0f); // Titik 3 (belakang)
glTexCoord2f(0.0f, 0.0f);
glVertex3f( 1.0f, -1.0f, -1.0f); // Titik 4 (belakang)

// Muka Atas
glNormal3f( 0.0f, 1.0f, 0.0f); // Normal berarah atas
glTexCoord2f(0.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, -1.0f); // Titik 1 (atas)
glTexCoord2f(0.0f, 0.0f);
glVertex3f(-1.0f, 1.0f, 1.0f); // Titik 2 (atas)
glTexCoord2f(1.0f, 0.0f);
glVertex3f( 1.0f, 1.0f, 1.0f); // Titik 3 (atas)
glTexCoord2f(1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, -1.0f); // Titik 4 (atas)

// Muka bawah
glNormal3f( 0.0f,-1.0f, 0.0f); // Normal berarah bawah
glTexCoord2f(1.0f, 1.0f);
glVertex3f(-1.0f, -1.0f, -1.0f); // Titik 1 (bawah)
glTexCoord2f(0.0f, 1.0f);
glVertex3f( 1.0f, -1.0f, -1.0f); // Titik 2 (bawah)
glTexCoord2f(0.0f, 0.0f);
glVertex3f( 1.0f, -1.0f, 1.0f); // Titik 3 (bawah)
glTexCoord2f(1.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, 1.0f); // Titik 4 (bawah)

// Muka kanan
glNormal3f( 1.0f, 0.0f, 0.0f); // Normal berarah ke kanan
glTexCoord2f(1.0f, 0.0f);
glVertex3f( 1.0f, -1.0f, -1.0f); // Titik 1 (kanan)
glTexCoord2f(1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, -1.0f); // Titik 2 (kanan)
glTexCoord2f(0.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, 1.0f); // Titik 3 (kanan)
glTexCoord2f(0.0f, 0.0f);
glVertex3f( 1.0f, -1.0f, 1.0f); // Titik 4 (kanan)

// Muka kiri
glNormal3f(-1.0f, 0.0f, 0.0f); // Normal berarah ke kiri
glTexCoord2f(0.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, -1.0f); // Titik 1 (kiri)
glTexCoord2f(1.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, 1.0f); // Titik 2 (kiri)
glTexCoord2f(1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f); // Titik 3 (kiri)
glTexCoord2f(0.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, -1.0f); // Titik 4 (kiri)

glEnd();
}

void kubuslo() // kubus kiri


{

glBindTexture(GL_TEXTURE_2D, texture[2]); // digunakan untuk


menempatkan gambar pada object kubus

glBegin(GL_QUADS);
// Muka depan
glNormal3f( 0.0f, 0.0f, 1.0f); // Normal menuju Anda
glTexCoord2f(0.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, 1.0f); // Titik 1 (depan)
glTexCoord2f(1.0f, 0.0f);
glVertex3f( 1.0f, -1.0f, 1.0f); // Titik 2 (depan)
glTexCoord2f(1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, 1.0f); // Titik 3 (depan)
glTexCoord2f(0.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f); // Titik 4 (depan)

// Muka belakang
glNormal3f( 0.0f, 0.0f,-1.0f); // Normal meninggalKan Anda
glTexCoord2f(1.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, -1.0f); // Titik 1 (belakang)
glTexCoord2f(1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, -1.0f); // Titik 2 (belakang)
glTexCoord2f(0.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, -1.0f); // Titik 3 (belakang)
glTexCoord2f(0.0f, 0.0f);
glVertex3f( 1.0f, -1.0f, -1.0f); // Titik 4 (belakang)

// Muka Atas
glNormal3f( 0.0f, 1.0f, 0.0f); // Normal berarah atas
glTexCoord2f(0.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, -1.0f); // Titik 1 (atas)
glTexCoord2f(0.0f, 0.0f);
glVertex3f(-1.0f, 1.0f, 1.0f); // Titik 2 (atas)
glTexCoord2f(1.0f, 0.0f);
glVertex3f( 1.0f, 1.0f, 1.0f); // Titik 3 (atas)
glTexCoord2f(1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, -1.0f); // Titik 4 (atas)

// Muka bawah
glNormal3f( 0.0f,-1.0f, 0.0f); // Normal berarah bawah
glTexCoord2f(1.0f, 1.0f);
glVertex3f(-1.0f, -1.0f, -1.0f); // Titik 1 (bawah)
glTexCoord2f(0.0f, 1.0f);
glVertex3f( 1.0f, -1.0f, -1.0f); // Titik 2 (bawah)
glTexCoord2f(0.0f, 0.0f);
glVertex3f( 1.0f, -1.0f, 1.0f); // Titik 3 (bawah)
glTexCoord2f(1.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, 1.0f); // Titik 4 (bawah)

// Muka kanan
glNormal3f( 1.0f, 0.0f, 0.0f); // Normal berarah ke kanan
glTexCoord2f(1.0f, 0.0f);
glVertex3f( 1.0f, -1.0f, -1.0f); // Titik 1 (kanan)
glTexCoord2f(1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, -1.0f); // Titik 2 (kanan)
glTexCoord2f(0.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, 1.0f); // Titik 3 (kanan)
glTexCoord2f(0.0f, 0.0f);
glVertex3f( 1.0f, -1.0f, 1.0f); // Titik 4 (kanan)

// Muka kiri
glNormal3f(-1.0f, 0.0f, 0.0f); // Normal berarah ke kiri
glTexCoord2f(0.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, -1.0f); // Titik 1 (kiri)
glTexCoord2f(1.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, 1.0f); // Titik 2 (kiri)
glTexCoord2f(1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f); // Titik 3 (kiri)
glTexCoord2f(0.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, -1.0f); // Titik 4 (kiri)

glEnd();
}
void gambarku() // foto kelompok
{
glBindTexture(GL_TEXTURE_2D, texture[3]); // digunakan untuk
menempatkan gambar pada object kubus

glBegin(GL_QUADS);
// Muka depan
glNormal3f( 0.0f, 0.0f, 1.0f); // Normal menuju Anda
glTexCoord2f(0.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, 1.0f); // Titik 1 (depan)
glTexCoord2f(1.0f, 0.0f);
glVertex3f( 1.0f, -1.0f, 1.0f); // Titik 2 (depan)
glTexCoord2f(1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, 1.0f); // Titik 3 (depan)
glTexCoord2f(0.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f); // Titik 4 (depan)

// Muka belakang
glNormal3f( 0.0f, 0.0f,-1.0f); // Normal meninggalKan Anda
glTexCoord2f(1.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, -1.0f); // Titik 1 (belakang)
glTexCoord2f(1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, -1.0f); // Titik 2 (belakang)
glTexCoord2f(0.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, -1.0f); // Titik 3 (belakang)
glTexCoord2f(0.0f, 0.0f);
glVertex3f( 1.0f, -1.0f, -1.0f); // Titik 4 (belakang)

// Muka Atas
glNormal3f( 0.0f, 1.0f, 0.0f); // Normal berarah atas
glTexCoord2f(0.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, -1.0f); // Titik 1 (atas)
glTexCoord2f(0.0f, 0.0f);
glVertex3f(-1.0f, 1.0f, 1.0f); // Titik 2 (atas)
glTexCoord2f(1.0f, 0.0f);
glVertex3f( 1.0f, 1.0f, 1.0f); // Titik 3 (atas)
glTexCoord2f(1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, -1.0f); // Titik 4 (atas)

// Muka bawah
glNormal3f( 0.0f,-1.0f, 0.0f); // Normal berarah bawah
glTexCoord2f(1.0f, 1.0f);
glVertex3f(-1.0f, -1.0f, -1.0f); // Titik 1 (bawah)
glTexCoord2f(0.0f, 1.0f);
glVertex3f( 1.0f, -1.0f, -1.0f); // Titik 2 (bawah)
glTexCoord2f(0.0f, 0.0f);
glVertex3f( 1.0f, -1.0f, 1.0f); // Titik 3 (bawah)
glTexCoord2f(1.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, 1.0f); // Titik 4 (bawah)

// Muka kanan
glNormal3f( 1.0f, 0.0f, 0.0f); // Normal berarah ke kanan
glTexCoord2f(1.0f, 0.0f);
glVertex3f( 1.0f, -1.0f, -1.0f); // Titik 1 (kanan)
glTexCoord2f(1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, -1.0f); // Titik 2 (kanan)
glTexCoord2f(0.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, 1.0f); // Titik 3 (kanan)
glTexCoord2f(0.0f, 0.0f);
glVertex3f( 1.0f, -1.0f, 1.0f); // Titik 4 (kanan)

// Muka kiri
glNormal3f(-1.0f, 0.0f, 0.0f); // Normal berarah ke kiri
glTexCoord2f(0.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, -1.0f); // Titik 1 (kiri)
glTexCoord2f(1.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, 1.0f); // Titik 2 (kiri)
glTexCoord2f(1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f); // Titik 3 (kiri)
glTexCoord2f(0.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, -1.0f); // Titik 4 (kiri)

glEnd();
}

void gambarlo() // foto kelompok


{
glBindTexture(GL_TEXTURE_2D, texture[3]); // digunakan untuk
menempatkan gambar pada object kubus

glBegin(GL_QUADS);
// Muka depan
glNormal3f( 0.0f, 0.0f, 1.0f); // Normal menuju Anda
glTexCoord2f(0.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, 1.0f); // Titik 1 (depan)
glTexCoord2f(1.0f, 0.0f);
glVertex3f( 1.0f, -1.0f, 1.0f); // Titik 2 (depan)
glTexCoord2f(1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, 1.0f); // Titik 3 (depan)
glTexCoord2f(0.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f); // Titik 4 (depan)

// Muka belakang
glNormal3f( 0.0f, 0.0f,-1.0f); // Normal meninggalKan Anda
glTexCoord2f(1.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, -1.0f); // Titik 1 (belakang)
glTexCoord2f(1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, -1.0f); // Titik 2 (belakang)
glTexCoord2f(0.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, -1.0f); // Titik 3 (belakang)
glTexCoord2f(0.0f, 0.0f);
glVertex3f( 1.0f, -1.0f, -1.0f); // Titik 4 (belakang)

// Muka Atas
glNormal3f( 0.0f, 1.0f, 0.0f); // Normal berarah atas
glTexCoord2f(0.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, -1.0f); // Titik 1 (atas)
glTexCoord2f(0.0f, 0.0f);
glVertex3f(-1.0f, 1.0f, 1.0f); // Titik 2 (atas)
glTexCoord2f(1.0f, 0.0f);
glVertex3f( 1.0f, 1.0f, 1.0f); // Titik 3 (atas)
glTexCoord2f(1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, -1.0f); // Titik 4 (atas)

// Muka bawah
glNormal3f( 0.0f,-1.0f, 0.0f); // Normal berarah bawah
glTexCoord2f(1.0f, 1.0f);
glVertex3f(-1.0f, -1.0f, -1.0f); // Titik 1 (bawah)
glTexCoord2f(0.0f, 1.0f);
glVertex3f( 1.0f, -1.0f, -1.0f); // Titik 2 (bawah)
glTexCoord2f(0.0f, 0.0f);
glVertex3f( 1.0f, -1.0f, 1.0f); // Titik 3 (bawah)
glTexCoord2f(1.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, 1.0f); // Titik 4 (bawah)

// Muka kanan
glNormal3f( 1.0f, 0.0f, 0.0f); // Normal berarah ke kanan
glTexCoord2f(1.0f, 0.0f);
glVertex3f( 1.0f, -1.0f, -1.0f); // Titik 1 (kanan)
glTexCoord2f(1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, -1.0f); // Titik 2 (kanan)
glTexCoord2f(0.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, 1.0f); // Titik 3 (kanan)
glTexCoord2f(0.0f, 0.0f);
glVertex3f( 1.0f, -1.0f, 1.0f); // Titik 4 (kanan)

// Muka kiri
glNormal3f(-1.0f, 0.0f, 0.0f); // Normal berarah ke kiri
glTexCoord2f(0.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, -1.0f); // Titik 1 (kiri)
glTexCoord2f(1.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, 1.0f); // Titik 2 (kiri)
glTexCoord2f(1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f); // Titik 3 (kiri)
glTexCoord2f(0.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, -1.0f); // Titik 4 (kiri)

glEnd();
}

AUX_RGBImageRec *LoadBMP(char *Filename) // fungsi


menampilkan gambar
{
FILE *File=NULL;

if (!Filename)
{
return NULL;
}

File=fopen(Filename,"r"); // digunakan
untuk membaca file

if (File)
{
fclose(File);
return auxDIBImageLoad(Filename); // jika
gambar ada tampilkan gambar
}

return NULL;
}

int LoadGLTextures() //
fungsi menampilkan gambar dan Convert ke Textures
{
int Status=FALSE;

AUX_RGBImageRec *TextureImage[4]; // membuat


temporary untuk menyimpan gambar

memset(TextureImage,0,sizeof(void *)*1);

if (TextureImage[0]=LoadBMP("130707221.bmp")) //untuk mengambil


gambar kelompokq
{
Status=TRUE;

glGenTextures(1, &texture[0]);

// Typical Texture Generation Using Data From The Bitmap


glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX,
TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
}

if (TextureImage[1]=LoadBMP("130707.bmp")) //pengambilan data gambar


(256X256)
{
Status=TRUE;

glGenTextures(1, &texture[1]);

// Typical Texture Generation Using Data From The Bitmap


glBindTexture(GL_TEXTURE_2D, texture[1]);
glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[1]->sizeX,
TextureImage[1]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[1]->data);

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
}
if (TextureImage[2]=LoadBMP("1307.bmp")) //pengambilan data gambar
(256X256)
{
Status=TRUE;

glGenTextures(1, &texture[2]);

// Typical Texture Generation Using Data From The Bitmap


glBindTexture(GL_TEXTURE_2D, texture[2]);
glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[2]->sizeX,
TextureImage[2]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[2]->data);

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
}

if (TextureImage[3]=LoadBMP("13.bmp")) //pengambilan data gambar


(256X256)
{
Status=TRUE;

glGenTextures(1, &texture[3]);

// Typical Texture Generation Using Data From The Bitmap


glBindTexture(GL_TEXTURE_2D, texture[3]);
glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[3]->sizeX,
TextureImage[3]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[3]->data);

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
}

if (TextureImage[4]=LoadBMP("kelompok01.bmp")) //pengambilan
data gambar (256X256)
{
Status=TRUE;

glGenTextures(1, &texture[4]);

// Typical Texture Generation Using Data From The Bitmap


glBindTexture(GL_TEXTURE_2D, texture[3]);
glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[3]->sizeX,
TextureImage[3]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[3]->data);

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
}
}

int InitGL() // Inisialisasi


OpenGL
{
if (LoadGLTextures())
{
//hidupkan pencahayaan
glEnable(GL_TEXTURE_2D);

glClearColor(1.0f, 1.0f, 1.0f, 1.0f);


glClearDepth(1.0f);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
}
}
//******************************************************
// Awal kode yang diambil dari bukunya Suyoto
void Inisialisasi(int lebar, int tinggi)
{
glShadeModel(GL_SMOOTH);
glEnable(GL_TEXTURE_2D);
glClearColor(1.0, 1.0, 1.0, 1.0);
glClearAccum(0.0, 0.0, 0.0, 0.0);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
gluPerspective(60.0, (GLfloat) lebar/(GLfloat) tinggi, 1.0, 20.0);
glMatrixMode (GL_MODELVIEW);

InitGL();
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_LIGHT1);
glEnable(GL_LIGHT2);
glShadeModel(GL_SMOOTH);
glEnable(GL_DEPTH_TEST);
glEnable(GL_NORMALIZE);

}
// Akhir kode yang diambil dari bukunya Suyoto
//******************************************************

/**************************
* WinMain
*
**************************/

int WINAPI WinMain (HINSTANCE hInstance,


HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int iCmdShow)
{
WNDCLASS wc;
HWND hWnd;
HDC hDC;
HGLRC hRC;
MSG msg;
BOOL bQuit = FALSE;
float theta = 0.0f;

GLfloat bahan1_ambient[]= {1.0f, 1.0f, 1.0f, 1.0f}; // bahan putih


GLfloat bahan1_diffuse[] = {1.0f, 1.0f, 1.0f, 1.0f};
GLfloat bahan1_specular[] = {1.0f, 1.0f, 1.0f, 1.0f};
GLfloat bahan1_shininess[] = {10.0f};

GLfloat bahankubusnya_ambient[]= {0.4f, 0.5f, 1.0f, 1.0f}; // bahan kiri


GLfloat bahankubusnya_diffuse[] = {0.4f, 0.5f, 1.0f, 1.0f};
GLfloat bahankubusnya_specular[] = {0.4f, 0.5f, 1.0f, 1.0f};
GLfloat bahankubusnya_shininess[] = {10.0f};

GLfloat bahankubusku_ambient[]= {0.7f, 0.7f, 0.7f, 1.0f}; // bahan kanan


GLfloat bahankubusku_diffuse[] = {0.7f, 0.7f, 0.7f, 1.0f};
GLfloat bahankubusku_specular[] = {0.7f, 0.7f, 0.7f, 1.0f};
GLfloat bahankubusku_shininess[] = {10.0f};

GLfloat bahanalas_ambient[]= {0.6f, 0.3f, 0.0f, 1.0f};


GLfloat bahanalas_diffuse[] = {0.6f, 0.3f, 0.0f, 1.0f};
GLfloat bahanalas_specular[] = {1.0f, 1.0f, 1.0f, 1.0f};
GLfloat bahanalas_shininess[] = {10.0f};

GLfloat bahandinding_ambient[]= {1.0f, 1.0f, 0.5f, 1.0f};


GLfloat bahandinding_diffuse[] = {1.0f, 1.0f, 0.5f, 1.0f};
GLfloat bahandinding_specular[] = {1.0f, 1.0f, 0.5f, 1.0f};
GLfloat bahandinding_shininess[] = {10.0f};

GLfloat IntensitasCahayaobjek[] = {1.0f, 1.0f, 1.0f, 1.0f};


GLfloat PosisiCahayaobjek[]={-4.0f,0.0f,4.0f, 0.0f};

/* register window class */


wc.style = CS_OWNDC;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor (NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = "GLSample";
RegisterClass (&wc);

/* create main window */


hWnd = CreateWindow (
"GLSample", "TGS_BSR_GRAFKOM_7221_7244_7230_7293",
WS_CAPTION | WS_POPUPWINDOW | WS_VISIBLE,
0, 0, 800, 600,
NULL, NULL, hInstance, NULL);

/* enable OpenGL for the window */


EnableOpenGL (hWnd, &hDC, &hRC);

//******************************************************
// Awal kode yang diambil dari bukunya Suyoto
Inisialisasi(800, 600);
// Akhir kode yang diambil dari bukunya Suyoto
//******************************************************

/* program main loop */


while (!bQuit)
{
/* check for messages */
if (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))
{
/* handle or dispatch messages */
if (msg.message == WM_QUIT)
{
bQuit = TRUE;
}
else
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
}
else
{
/* OpenGL animation code goes here */

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();

glPushMatrix ();
glTranslatef(0.0f,0.0f,-7.0f);
glScalef(0.5, 0.5, 0.5);
glRotatef(5.0f,1.0f,0.0f,0.0f);
//start kubus kiri
glPushMatrix ();
glEnable(GL_TEXTURE_2D);
glMaterialfv(GL_FRONT, GL_AMBIENT,
bahan1_ambient);
glMaterialfv(GL_FRONT, GL_DIFFUSE,
bahan1_diffuse);
glMaterialfv(GL_FRONT, GL_SPECULAR,
bahan1_specular);
glMaterialfv(GL_FRONT, GL_SHININESS,
bahan1_shininess);

glLightfv(GL_LIGHT0, GL_DIFFUSE, IntensitasCahayaobjek);


glLightfv(GL_LIGHT0, GL_POSITION,
PosisiCahayaobjek);

glTranslatef(-4.0f,0.0f,1.0f);
// glRotatef(xrot,1.0f,0.0f,0.0f);
kubusnya();
glDisable(GL_TEXTURE_2D);
glPopMatrix ();
//end kubus kiri

//start kubus gambarku


glPushMatrix ();
glEnable(GL_TEXTURE_2D);
glMaterialfv(GL_FRONT, GL_AMBIENT,
bahan1_ambient);
glMaterialfv(GL_FRONT, GL_DIFFUSE,
bahan1_diffuse);
glMaterialfv(GL_FRONT, GL_SPECULAR,
bahan1_specular);
glMaterialfv(GL_FRONT, GL_SHININESS,
bahan1_shininess);

glLightfv(GL_LIGHT0, GL_DIFFUSE, IntensitasCahayaobjek);


glLightfv(GL_LIGHT0, GL_POSITION,
PosisiCahayaobjek);

glTranslatef(-1.0f,-1.5f,1.0f);
glRotatef(xrot,1.0f,0.0f,0.0f);
gambarku();
glDisable(GL_TEXTURE_2D);
glPopMatrix ();
//end kubus gambarku
//start kubus gambarku
glPushMatrix ();
glEnable(GL_TEXTURE_2D);
glMaterialfv(GL_FRONT, GL_AMBIENT,
bahan1_ambient);
glMaterialfv(GL_FRONT, GL_DIFFUSE,
bahan1_diffuse);
glMaterialfv(GL_FRONT, GL_SPECULAR,
bahan1_specular);
glMaterialfv(GL_FRONT, GL_SHININESS,
bahan1_shininess);

glLightfv(GL_LIGHT0, GL_DIFFUSE, IntensitasCahayaobjek);


glLightfv(GL_LIGHT0, GL_POSITION,
PosisiCahayaobjek);

glTranslatef(-1.0f,4.0f,1.0f);
// glRotatef(xrot,1.0f,0.0f,0.0f);
gambarlo();
glDisable(GL_TEXTURE_2D);
glPopMatrix ();
//end kubus gambarku
//start kubus kanan
glPushMatrix ();
glEnable(GL_TEXTURE_2D);
glMaterialfv(GL_FRONT, GL_AMBIENT,
bahan1_ambient);
glMaterialfv(GL_FRONT, GL_DIFFUSE,
bahan1_diffuse);
glMaterialfv(GL_FRONT, GL_SPECULAR,
bahan1_specular);
glMaterialfv(GL_FRONT, GL_SHININESS,
bahan1_shininess);

glLightfv(GL_LIGHT0, GL_DIFFUSE, IntensitasCahayaobjek);


glLightfv(GL_LIGHT0, GL_POSITION,
PosisiCahayaobjek);

glTranslatef(2.0f,0.0f,1.0f);
// glRotatef(xrot,1.0f,0.0f,0.0f);
kubusku();
glDisable(GL_TEXTURE_2D);

glPopMatrix ();
//end kubus kanan

//start kubus lo
glPushMatrix ();
glEnable(GL_TEXTURE_2D);
glMaterialfv(GL_FRONT, GL_AMBIENT,
bahan1_ambient);
glMaterialfv(GL_FRONT, GL_DIFFUSE,
bahan1_diffuse);
glMaterialfv(GL_FRONT, GL_SPECULAR,
bahan1_specular);
glMaterialfv(GL_FRONT, GL_SHININESS,
bahan1_shininess);

glLightfv(GL_LIGHT0, GL_DIFFUSE, IntensitasCahayaobjek);


glLightfv(GL_LIGHT0, GL_POSITION,
PosisiCahayaobjek);

glTranslatef(2.0f,4.0f,1.0f);
// glRotatef(xrot,1.0f,0.0f,0.0f);
kubuslo();
glDisable(GL_TEXTURE_2D);

glPopMatrix ();
//end kubus kanan

glPopMatrix ();

// Akhir kode yang diambil dari bukunya Suyoto


//******************************************************
byrot+=0.9f;
xrot+=0.3f; //Mengatur arah putaran object
yrot+=0.2f; //Mengatur arah putaran object
zrot+=0.4f; //Mengatur arah putaran object
SwapBuffers(hDC);
}
}

/* shutdown OpenGL */
DisableOpenGL (hWnd, hDC, hRC);

/* destroy the window explicitly */


DestroyWindow (hWnd);

return msg.wParam;
}
/********************
* Window Procedure
*
********************/

LRESULT CALLBACK WndProc (HWND hWnd, UINT message,


WPARAM wParam, LPARAM lParam)
{

switch (message)
{
case WM_CREATE:
return 0;
case WM_CLOSE:
PostQuitMessage (0);
return 0;

case WM_DESTROY:
return 0;

case WM_KEYDOWN:
switch (wParam)
{
case VK_ESCAPE:
PostQuitMessage(0);
return 0;
}
return 0;

default:
return DefWindowProc (hWnd, message, wParam, lParam);
}
}

/*******************
* Enable OpenGL
*
*******************/

void EnableOpenGL (HWND hWnd, HDC *hDC, HGLRC *hRC)


{
PIXELFORMATDESCRIPTOR pfd;
int iFormat;

/* get the device context (DC) */


*hDC = GetDC (hWnd);
/* set the pixel format for the DC */
ZeroMemory (&pfd, sizeof (pfd));
pfd.nSize = sizeof (pfd);
pfd.nVersion = 1;
pfd.dwFlags = PFD_DRAW_TO_WINDOW |
PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
pfd.iPixelType = PFD_TYPE_RGBA;
pfd.cColorBits = 24;
pfd.cDepthBits = 16;
pfd.iLayerType = PFD_MAIN_PLANE;
iFormat = ChoosePixelFormat (*hDC, &pfd);
SetPixelFormat (*hDC, iFormat, &pfd);

/* create and enable the render context (RC) */


*hRC = wglCreateContext( *hDC );
wglMakeCurrent( *hDC, *hRC );

/******************
* Disable OpenGL
*
******************/

void DisableOpenGL (HWND hWnd, HDC hDC, HGLRC hRC)


{
wglMakeCurrent (NULL, NULL);
wglDeleteContext (hRC);
ReleaseDC (hWnd, hDC);
}

Anda mungkin juga menyukai