BLOGGER TEMPLATES - TWITTER BACKGROUNDS »
Tampilkan postingan dengan label Pelles C. Tampilkan semua postingan
Tampilkan postingan dengan label Pelles C. Tampilkan semua postingan

Senin, 06 Desember 2010

Membuat Belah ketupat 3D

Gambar ini dibuat dengan menggunakan program aplikasi Pelles C

Sebelum memulai Coding , Perhatikan hal-hal berikut :

NB : Tambahkan tanda < > pada tulisan windows.h , GL/gl.h , GL/glu.h , GL/glfw.h pada #include

Tulisan warna Merah adalah Listing Penggambaran Bangun

Tulisan warna Biru adalah Listing agar Bangun dapat berputar

LISTING / CODING


#include windows.h

#include GL/gl.h

#include GL/glu.h

#include GL/glfw.h

void mulaiOpenGL(void);

int main(void)

{

//

// mRunning = TRUE, aplikasi masih berjalan

// mRunning = FALSE, ??? :p

GLuint mRunning = GL_TRUE;

//

// inisialisasi GLFW

if( glfwInit() == GL_FALSE )

{

MessageBox( NULL, "ERROR :: gagal menginisialisasi GLFW", "Error!", MB_OK);

return(0);

}

//

// buat sebuah window yang akan digunakan untuk menggambar.

if( glfwOpenWindow( 640, 480, 0, 0, 0, 0, 24, 0, GLFW_WINDOW ) == GL_FALSE )

{

MessageBox( NULL, "ERROR :: gagal membuat window", "Error!", MB_OK );

glfwTerminate();

return(0);

}

//

// Set judul yang ada di window dan Swap interval.

glfwSetWindowTitle( "TES GAMBAR" );

glfwSwapInterval( 1 );

//

// mulai OpenGL (melakukan setting awal OpenGL)

mulaiOpenGL();

float x1= 2;

float x2= -2;

float y1= 2;

float y2= -2;

float z1= 2;

float z2= -2;

float x3= 0;

float y3= 4;

float y4= -4;

float sudut=0;

// mulai looping utama program

while( mRunning )

{

//

// bersihkan layar dan depth buffer

glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

glLoadIdentity();

//

// lakukan penggambaran di sini

//------------------------------------------------------------------------------------

gluLookAt(0,0,20,0,0,0,0,1,0);

glRotatef(sudut,0,1,0);


glBegin(GL_TRIANGLES);

glColor3f(1,0,0);

glVertex3f(0,4,0);

glVertex3f(-3,0,-3);

glVertex3f(3,0,-3);

glEnd();


glBegin(GL_TRIANGLES);

glColor3f(1,0,0);

glVertex3f(0,4,0);

glVertex3f(-3,0,3);

glVertex3f(3,0,3);

glEnd();

glBegin(GL_TRIANGLES);

glColor3f(1,1,1);

glVertex3f(0,4,0);

glVertex3f(-3,0,3);

glVertex3f(-3,0,-3);

glEnd();


glBegin(GL_TRIANGLES);

glColor3f(1,1,1);

glVertex3f(0,4,0);

glVertex3f(3,0,-3);

glVertex3f(3,0,3);

glEnd();

//S3 2

glBegin(GL_TRIANGLES);

glColor3f(1,1,1);

glVertex3f(0,-4,0);

glVertex3f(3,0,-3);

glVertex3f(-3,0,-3);

glEnd();


glBegin(GL_TRIANGLES);

glColor3f(1,1,1);

glVertex3f(0,-4,0);

glVertex3f(3,0,3);

glVertex3f(-3,0,3);

glEnd();


glBegin(GL_TRIANGLES);

glColor3f(1,0,0);

glVertex3f(0,-4,0);

glVertex3f(3,0,3);

glVertex3f(-3,0,-3);

glEnd();


glBegin(GL_TRIANGLES);

glColor3f(1,0,0);

glVertex3f(0,-4,0);

glVertex3f(3,0,-3);

glVertex3f(-3,0,3);

glEnd();

sudut +=0.15;

//------------------------------------------------------------------------------------

//

// tampilkan ke layar (swap double buffer)

glfwSwapBuffers();

//

// check input , apakah tombol esc ditekan atau tombol "close" diclick

mRunning = !glfwGetKey( GLFW_KEY_ESC ) && glfwGetWindowParam( GLFW_OPENED );

}

glfwTerminate();

return(0);

}

void mulaiOpenGL(void)

{

//

// Set viewport ke resolusi 640x480 viewport bisa diibaratkan

// layar monitor anda

glViewport( 0, 0, 640, 480 );

//

// Set mode OpenGL ke mode pryeksi (Projection) dan set proyeksi

// menggunakan proyeksi perspective, dengan sudut pandang (Field Of

// View) 60 derajat

glMatrixMode( GL_PROJECTION );

glLoadIdentity();

gluPerspective( 60.0f, 640.0f/480.0f, 0.1f, 1000.0f );

glMatrixMode( GL_MODELVIEW );

glLoadIdentity();

//

// Set mode gradasi warna halus (Smooth)

glShadeModel( GL_SMOOTH );

//

// warna yang digunakan untuk membersihkan layar

glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );

//

// nilai untuk membersihkan depth buffer.

glClearDepth( 1.0f );

//

// Depth test digunakan untuk menghindari polygon yang

// tumpang tindih.

glEnable( GL_DEPTH_TEST );

glDepthFunc( GL_LEQUAL );

//

// beritahu OpenGL untuk menggunakan perhitungan perspective

// yang terbaik (perhitungan ini tidak bisa selalu 100% akurat)

glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST );

}


NB : Tulisan warna Merah adalah Listing Penggambaran Bangun

Tulisan warna Biru adalah Listing agar Bangun dapat berputar


OUTPUT


BACA LAGI ...
Powered By Blogger