Anda di halaman 1dari 13

LAPORAN PRAKTIKUM

GRAFIKA KOMPUTER
Pengenalan GLUT
Untuk memenuhi tugas matakuliah Praktek Multimedia
Yang dibina oleh Ibu Ayung Chandra Padmasari

Muhamad Ainurrahman
130533608096
OFF E

UNIVERSITAS NEGERI MALANG


FAKULTAS TEKNIK ELEKTRO
PROGRAM STUDI S1 PENDIDIKAN TEKNIK
INFORMATIKA
FEBRUARI, 2015
1

PRAKTIKUM KE-1
Pengenalan GLUT
A. TUJUAN
1. Memahami GLUT.
2. Memahami dasar pemrograman GLUT.
3. Memahami dasar menampilkan windows GLUT.

B. DASAR TEORI
1. GLUT (OpenGL Utility Toolkit)
Dikembangkan oleh Mark Kilgard. GLUT merupakan pengembangan dari OpenGL
dimana memiliki keunggulan sebagai berikut:
-

Mudah, portable window manager, menggunakan callback functions

untuk menambahkan interaksi dari user.


-

Didesain untuk aplikasi dengan level kecil hingga menengah.

Distribusi library bebas tetapi tidak open source.

2. Pemrograman berbasis event


GLUT pada dasarnya dibangun untuk menciptakan aplikasi grafis menggunakan
pemrograman yang bersifat prosedural. Di dalamnya terdapat fungsi main loop yang
diatur oleh GLUT dan looping yang terjadi dalam aplikasi bertujuan untuk penanganan
fungsi- fungsi callback sebagai input dari user seperti fungsi redraw, mouse, keyboard,
joystick, dll.
3. Instalasi GLUT pada windows dan aplikasi pengembangan Visual Studio
GLUT tidak secara otomatis dapat diaplikasikan karena membutuhkan beberapa
file tambahan antara lain glut.h, glut32.lib, glut32.dll yang harus disimpan pada lokasi
tertentu sesuai dengan aplikasi pengembangan yaitu Visual Studio.

Menejemen Window
Ada 5 fungsi yang harus dipanggil untuk melakukan instalansi window yaitu:
a. glutInit(int argc,char**argv)
Fungsi ini menginisialisasi glut dan memproses argument command_line yg
disertakan(jika ada). Fungsi ini harus di panggil pertama kali sebelum pemanggilan
terhadap fungsi-fungsi yang lain.
b. glutInitDisplayMode(unsigned intmode)
Fungsi ini digunakan untuk menentukan apakah akan menggunakan model pewarnaan
RGBA atau indek warna. Dengan fungsi ini juga bisa menentukan apakah akan
menggunakan windows buffer single atau double.
c. GlutInitWindowPosisition(int.x,int.y)
Fungsi ini menentukan letak window dengan patokkannya ialah pada window kiri
atas.
2

d. glutInitWindowSize(int width,int height)


fungsi ini menspesifikasikan ukuran window yang dibuat dalam pixel.
e. glutCreateWindow(char *string)
fungsi untuk membuat window dalam konteks openGL, dan akan menghasilkan
identitas atau judul window tersebut.
C. LATIHAN
Code
#include <stdlib.h>
#include <glut.h>
void renderScene(void){}
void main(int argc, char **argv){
glutInit(&argc, argv);

glutCreateWindow("Pemrograman grafis GLUT");


glutDisplayFunc(renderScene);
glutMainLoop();

Screenshot

penjelasan
dideklarasikan header <stdlib> yang berguna untuk melaukan fungsi matematis,
dalam hal ini yang berhubungan dengan grafis, ada juga header <glut> agar librarylibrary glut dapat dikenali oleh program. Pembuatan fungsi renderScene yang
berguna sebagai fungsi tempat rule-rule glut diterapkan, penggunaan fungsi
main/utama sebagai pemanggil dan penampil fungsi-fungsi lain. glutCreateWindow
berguna untuk menampilkan title pada output ketika program dijalankan
D. JOB SHEET PRAKTIKUM
Number 1
Code
#include <stdlib.h>
#include <glut.h>
/*void renderScene(void){}*/
void main(int argc, char **argv){
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);

glutInitWindowPosition(100,100);
glutInitWindowSize(320,320);
glutCreateWindow("GLUT : Muhamad ainurahman");
glutDisplayFunc(renderScene);
glutMainLoop();
}

Screenshot

penjelasan
dalam keterangan error properties dijelaskan bahwa identifier renderScene tidak
dideklarasikan dalam code program, artinya fungsi main memanggil identifier yang
belum dideklarasikan sehingga program mengalami error/kesalahan.
Number 2
Code
#include <stdlib.h>
#include <glut.h>
void renderScene(void){}
void main(int argc, char **argv){
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(600,400);
glutInitWindowSize(320,320);

glutCreateWindow("GLUT : Muhamad ainurahman");


glutDisplayFunc(renderScene);
glutMainLoop();

Screenshot

penjelasan

value pertama pada windowposition menandakan width, jarak windows secara


horizontal dengan sisi kiri dari layar komputer= 600 dan 400 menandakan height
jarak antara posisi window dengan tipe atas dari layar komputer (jarak secara
vertikal), sehingga jika koordinat diubah ke (0,0) letak windows berada di pojok kiri
atas dari layar komputer. Jika digambarkan maka

0,0
400

koordinat
resolusi tertinggi
layar

600

Number 3
Code
#include <stdlib.h>
#include <glut.h>
void renderScene(void){
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glVertex3f(-0.5,-0.5,0.0);//a
glVertex3f(0.5,0.0,0.0);//b
glVertex3f(0.0,0.5,0.0);//c
glEnd();
glFlush();
}
void main(int argc, char **argv){
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(100,100);
glutInitWindowSize(320,320);

glutCreateWindow("GLUT : Muhamad ainurahman");


glutDisplayFunc(renderScene);
glutMainLoop();

Screenshot

Koordinat point
b (0) (0,5)
Koordinat point c
(0,5) (0)
Koordinat point
a (-0,5) (0,5)

Penjelasan

Terdapat beberapa tambahan kode program yang digunakan untuk membuat bentuk
objek primitive yaitu segitiga. Untuk membentuk segitiga diperlukan 3 koordinat
dengan masing-masing koordinat terdiri dari (x, y, z), x untuk koordinat secara
horizantal, y untuk koordinat secara vertikal dan z untuk mengatur kedalaman objek.
Number 4
Code
#include <stdlib.h>
#include "stdafx.h"
#include <gl/glut.h>
void renderScene (void) {
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES); // kiri atas
glVertex3f(-1.0,1.0,0.0);
glVertex3f(-1.0,0.0,0.0);
glVertex3f(0.0,1.0,0.0);
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES); // kanan bawah
glVertex3f(1.0,-1.0,0.0);
glVertex3f(1.0,0.0,0.0);
glVertex3f(0.0,-1.0,0.0);
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES); // kanan atas
glVertex3f(1.0,1.0,0.0);
glVertex3f(1.0,0.0,0.0);
glVertex3f(0.0,1.0,0.0);
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES); // kiri bawah
glVertex3f(-1.0,-1.0,0.0);
glVertex3f(-1.0,0.0,0.0);
glVertex3f(0.0,-1.0,0.0);
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES); // tengah
glVertex3f(-0.20,0.20,0.0);

glVertex3f(0.20,0.0,0.0);
glVertex3f(-0.20,0.0,0.0);

glEnd();
glFlush();

int main(int argc, char **argv) {


glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(00,100);
glutInitWindowSize(320,320);
glutCreateWindow("GLUT : ");
glutDisplayFunc(renderScene);//job1
glutMainLoop();
return 0;
}

Screenshot

Penjelasan
Untuk menampilkan output diatas diperlukan syntax glBegin(GL_TRIANGLES); sebagai
pembentuk objek segitiga, terdapat 5 syntax tersebut dalam script program sehingga
program dapat menampilkan 5 segitiga,

glVertex3f(0.0,-1.0,0.0);

3f menandakan

bahwa koordinat dibentuk menggunakan tipe data float. Tetap sama dengan
praktikum sebelumnya untuk nilai pertama sebagai koordinat x, nilai kedua untuk
koordinat y (vertikal), dan nilai ketiga sebagai koordinat z

Number 5
Code
#include <stdlib.h>
#include "stdafx.h"
#include <gl/glut.h>
void renderScene (void) {
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES); // kiri atas
glVertex3f(-1.0,1.0,0.0);

glVertex3f(-1.0,0.0,0.0);
glVertex3f(0.0,1.0,0.0);
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES); // kanan bawah
glVertex3f(1.0,-1.0,0.0);
glVertex3f(1.0,0.0,0.0);
glVertex3f(0.0,-1.0,0.0);
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES); // kanan atas
glVertex3f(1.0,1.0,0.0);
glVertex3f(1.0,0.0,0.0);
glVertex3f(0.0,1.0,0.0);
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES); // kiri bawah
glVertex3f(-1.0,-1.0,0.0);
glVertex3f(-1.0,0.0,0.0);
glVertex3f(0.0,-1.0,0.0);
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES); // tengah
glVertex3f(-0.20,0.20,0.0);
glVertex3f(0.20,0.0,0.0);
glVertex3f(-0.20,0.0,0.0);
glEnd();
glFlush();
}
int main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(00,100);
glutInitWindowSize(640,640);
glutCreateWindow("GLUT : ");
glutDisplayFunc(renderScene);
glutMainLoop();
return 0;
}

Screenshot

Penjelasan
Untuk menampilkan output diatas diperlukan syntax glBegin(GL_TRIANGLES); sebagai
pembentuk objek segitiga, terdapat 5 syntax tersebut dalam script program sehingga
program dapat menampilkan 5 segitiga,

glVertex3f(0.0,-1.0,0.0);.

Jika ukuran

windowsize diubah maka tampilan windows output program juga berubah, tampilan
ukuran 320,320 berbeda dengan tampilan ukuran 640,640. Semakin besar nilainya
maka semakin besar pula ukuran windows dari output program.
Number 6
Code
#include <stdlib.h>
#include <glut.h>
void renderScene(void){
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glVertex3f(-10.,10.,0.0);//a
glVertex3f(-10.0,0.0,0.0);//b
glVertex3f(0.0,0.0,0.0);//c
glEnd();
glFlush();
}
void main(int argc, char **argv){
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(100,100);
glutInitWindowSize(320,320);
glutCreateWindow("pemrograman grafis GLUT");

gluOrtho2D(-50.0,50.0,-50.0,50.0);
glutDisplayFunc(renderScene);
glutMainLoop();

Screenshot
10 dan -10

30 dan -30

50 dan -50
10

Penjelasan
Dapat dikatakan bahwa fungsi gluOrtho2D(left,right,bottom,top). Digunakan untuk
mengatur maksimal skala koordinat untuk membentuk objek, sehingga jika nilai glvertex3f
melebihi nilai gluOrtho maka ukuran objek tidak bisa berkembang, mengikuti ukuran dari
nilai gluOrtho tersebut.

E. TUGAS ASISTENSI
Code
#include <stdlib.h>
#include <glut.h>
void renderScene(void){
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
//segitiga sembarang
glVertex3f(-0.5,-0.5,0.0);//a
glVertex3f(0.5,0.0,0.0);//b
glVertex3f(0.0,0.5,0.0);//c
//siku-siku
glVertex3f(-1,1,0);//a
glVertex3f(-1,0.5,0);//b
glVertex3f(-0.5,1,0);//c
//sama sisi
glVertex3f(1.5,1.3,0);//a
glVertex3f(1,0.5,0);//b
glVertex3f(2,0.5,0);//c
//sama kaki

11

glVertex3f(1.5,-1.5,0);//a
glVertex3f(1.2,0.3,0);//b
glVertex3f(1.8,0.3,0);//c
glEnd();
glFlush();
}
void main(int argc, char **argv){
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(100,100);
glutInitWindowSize(690,690);

glutCreateWindow("GLUT : Muhamad ainurrahman");


gluOrtho2D(-2.0,2.0,-2.0,2.0);
glutDisplayFunc(renderScene);
glutMainLoop();

Screenshot

Penjelasan
sebagai pembentuk objek segitiga, untuk membuat objek
segitiga yang berbeda-beda, dibutuhkan pengukuran koordinat yang sangat teliti
sehingga bentuk segitiga yang diinginkan dapat terwujud. Koordinat harus saling
berjauhan agar objek yang dihasilkan tidak saling menumpuk satu sama lain.untuk
ukuran windowsize sebenar 096 (nim belakang) namun saya balik menjadi 690
karena jika nilai window size dimulai dari 0 maka akan terjadi error pada program
sehingga program tidak dapat dijalankan.
glBegin(GL_TRIANGLES);

F. KESIMPULAN
GLUT merupakan pengembangan dari OpenGL dimana memiliki keunggulan sebagai
berikut:
-

Mudah, portable window manager, menggunakan callback functions

untuk menambahkan interaksi dari user.

12

Didesain untuk aplikasi dengan level kecil hingga menengah.


Distribusi library bebas tetapi tidak open source.

Agar glut dapat dijalankan maka perlu Mensetting glut ke dalam aplikasi visual basic
secara keseluruhan
File glut.h diletakkan pada C:\Program Files\Microsoft Visual Studio 10.0\VC\include
File glut32.lib diletakkan pada C:\Program Files\Microsoft Visual Studio 10.0\VC\lib
File glut32.dll diletakkan pada System32
glBegin(GL_TRIANGLES);

sebagai pembentuk objek segitiga

DAFTAR PUSTAKA

Team Asisten Universitas Negeri Malang. 2015. Modul 1 Pengenalan GLUT.


Malang : Universitas Negeri Malang
Rosyidah, Binti. 2013. Pengenalan OpenGL dan GLUT, (online). http://rosyidahbinti.blogspot.com/2013/04/opengl-glut.html, diakses 1 Februari 2015

13

Anda mungkin juga menyukai