-Vendes Petrik Maela.S (5A414986)
-Riske Dwi Cahyati (59414499)
-Alby Septian Widodo (50412568)
-Nyoman Arya Prakamyajati (5B415801)
3IA12
OBJEK 3D (BALOK) PADA OPENGL
Pada pembuatan tugas kali ini kami menggunakan dev c++ dengan ditambah library dari freeglut yang bisa kita download dari internet.
Berikut ini tahap pembuatan objek tersebut.
pada kode diatas menjelaskan tentang pendeklarasikan variable global bertipe char, GLfloat, dan int
dan mengeset nilai variable global.
pada kode diatas itu mendeklarasikan fungsi initGL bertipe void. baris pertama pada fungsi itu menjelaskan tentang pewarnaan background.kemudian baris kedua tentang set backgroud sampai kedalaman paling jauh. kemudian tes set tipe kedalaman.membuat menghaluskan bayangan.
mengeset kordinat pada titik-titik kordinat untuk membangun balok tersebut pada warna - warna yang diberi keterangan pada komen program
ini juga mengeset titik - titik koordinat tersebut sesuai warnanya
di fungsi ini menjelaskan titik koordinat pada warna pink
Berikut sintaks keseluruhannya :
#include <GL/glut.h>
char title[] = "3D Shapes with animation";
GLfloat angleCube = 0.0f;
int refreshMills = 15;
/* Initialize OpenGL Graphics */
void initGL() {
glClearColor(255.0f, 255.0f, 255.0f, 1.0f);
glClearDepth(1.0f);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glShadeModel(GL_SMOOTH);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(1.5f, 0.0f, -7.0f);
glRotatef(angleCube, 1.0f, 1.0f, 1.0f);
glBegin(GL_QUADS);
glColor3f(0.0f, 1.0f, 0.0f); // Hijau
glVertex3f( 2.0f, 1.0f, -1.0f);
glVertex3f(-2.0f, 1.0f, -1.0f);
glVertex3f(-2.0f, 1.0f, 1.0f);
glVertex3f( 2.0f, 1.0f, 1.0f);
// Bottom face (y = -1.0f)
glColor3f(1.0f, 0.5f, 0.0f); // Orange
glVertex3f( 2.0f, -1.0f, 1.0f);
glVertex3f(-2.0f, -1.0f, 1.0f);
glVertex3f(-2.0f, -1.0f, -1.0f);
glVertex3f( 2.0f, -1.0f, -1.0f);
// Front face (z = 1.0f)
glColor3f(1.0f, 0.0f, 0.0f); // merah
glVertex3f( 2.0f, 1.0f, 1.0f);
glVertex3f(-2.0f, 1.0f, 1.0f);
glVertex3f(-2.0f, -1.0f, 1.0f);
glVertex3f( 2.0f, -1.0f, 1.0f);
// Back face (z = -1.0f)
glColor3f(1.0f, 1.0f, 0.0f); // kuning
glVertex3f( 2.0f, -1.0f, -1.0f);
glVertex3f(-2.0f, -1.0f, -1.0f);
glVertex3f(-2.0f, 1.0f, -1.0f);
glVertex3f( 2.0f, 1.0f, -1.0f);
// Left face (x = -1.0f)
glColor3f(0.0f, 0.0f, 1.0f); // Biru
glVertex3f(-2.0f, 1.0f, 1.0f);
glVertex3f(-2.0f, 1.0f, -1.0f);
glVertex3f(-2.0f, -1.0f, -1.0f);
glVertex3f(-2.0f, -1.0f, 1.0f);
// Right face (x = 1.0f)
glColor3f(1.0f, 0.0f, 1.0f); // Pink
glVertex3f(2.0f, -1.0f, -1.0f);
glVertex3f(2.0f, -1.0f, 1.0f);
glVertex3f(2.0f, 1.0f, 1.0f);
glVertex3f(2.0f, 1.0f, -1.0f);
glEnd();
glLoadIdentity();
glTranslatef(-1.5f, 0.0f, -6.0f);
glutSwapBuffers();
angleCube -= 1.05f;
}
/* Called back when timer expired [NEW] */
void timer(int value) {
glutPostRedisplay();
glutTimerFunc(refreshMills, timer, 0);}
void reshape(GLsizei width, GLsizei height) {
if (height == 0) height = 1;
GLfloat aspect = (GLfloat)width / (GLfloat)height;
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0f, aspect, 0.1f, 100.0f);
}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE);
glutInitWindowSize(640, 480);
glutInitWindowPosition(50, 50);
glutCreateWindow(title);
glutDisplayFunc(display);
glutReshapeFunc(reshape);
initGL();
glutTimerFunc(0, timer, 0);
glutMainLoop();
return 0;
}
Berikut ini output dari program tersebut: