Laporan Modul 1 grafika komputer

13
LAPORAN PRAKTIKUM GRAFIKA KOMPUTER Pengenalan GLUT Untuk memenuhi tugas matakuliah Praktek Multimedia Yang dibina oleh Ibu Ayung Chandra Padmasari Muhamad Ainurrahman 130533600!6 OFF E UNI"ER#ITA# NEGERI MALANG FAKULTA# TEKNIK ELEKTRO PROGRAM #TU$I #1 PEN$I$IKAN TEKNIK INFORMATIKA FE%RUARI& '015 1

description

universitas negeri malang

Transcript of Laporan Modul 1 grafika komputer

LAPORAN PRAKTIKUM GRAFIKA KOMPUTERPengenalan GLUTUntuk memenuhi tugas matakuliah Praktek MultimediaYang dibina oleh Ibu Ayung Chandra Padmasari

Muhamad Ainurrahman130533608096 OFF E

UNIVERSITAS NEGERI MALANGFAKULTAS TEKNIK ELEKTROPROGRAM STUDI S1 PENDIDIKAN TEKNIK INFORMATIKAFEBRUARI, 2015PRAKTIKUM KE-1Pengenalan GLUTA. TUJUAN1. Memahami GLUT.2. Memahami dasar pemrograman GLUT.3. Memahami dasar menampilkan windows GLUT.B. DASAR TEORI1. 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 WindowAda 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.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. LATIHANCode#include #include

void renderScene(void){}void main(int argc, char **argv){glutInit(&argc, argv);glutCreateWindow("Pemrograman grafis GLUT");glutDisplayFunc(renderScene);glutMainLoop();}

Screenshot

penjelasandideklarasikan header yang berguna untuk melaukan fungsi matematis, dalam hal ini yang berhubungan dengan grafis, ada juga header agar library-library 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 dijalankanD. JOB SHEET PRAKTIKUMNumber 1Code#include #include

/*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 penjelasandalam 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 2Code#include #include

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 penjelasanvalue 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,0400

koordinat resolusi tertinggi layar600

Number 3Code#include #include

void renderScene(void){glClear(GL_COLOR_BUFFER_BIT);glBegin(GL_TRIANGLES);glVertex3f(-0.5,-0.5,0.0);//aglVertex3f(0.5,0.0,0.0);//bglVertex3f(0.0,0.5,0.0);//cglEnd();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 c(0,5) (0)Koordinat point a (-0,5) (0,5)Koordinat point b (0) (0,5)

PenjelasanTerdapat 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 4Code#include #include "stdafx.h"#include void renderScene (void) {glClear(GL_COLOR_BUFFER_BIT);glBegin(GL_TRIANGLES); // kiri atasglVertex3f(-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 bawahglVertex3f(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 atasglVertex3f(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 bawahglVertex3f(-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); // tengahglVertex3f(-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);//job1glutMainLoop();return 0;}

Screenshot PenjelasanUntuk 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 5Code#include #include "stdafx.h"#include void renderScene (void) {glClear(GL_COLOR_BUFFER_BIT);glBegin(GL_TRIANGLES); // kiri atasglVertex3f(-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 bawahglVertex3f(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 atasglVertex3f(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 bawahglVertex3f(-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); // tengahglVertex3f(-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 PenjelasanUntuk 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 6Code#include #include

void renderScene(void){glClear(GL_COLOR_BUFFER_BIT);glBegin(GL_TRIANGLES);glVertex3f(-10.,10.,0.0);//aglVertex3f(-10.0,0.0,0.0);//bglVertex3f(0.0,0.0,0.0);//cglEnd();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();}

Screenshot10 dan -10 30 dan -30

50 dan -50

PenjelasanDapat 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 ASISTENSICode#include #include

void renderScene(void){glClear(GL_COLOR_BUFFER_BIT);glBegin(GL_TRIANGLES);

//segitiga sembarangglVertex3f(-0.5,-0.5,0.0);//aglVertex3f(0.5,0.0,0.0);//bglVertex3f(0.0,0.5,0.0);//c

//siku-sikuglVertex3f(-1,1,0);//aglVertex3f(-1,0.5,0);//bglVertex3f(-0.5,1,0);//c

//sama sisiglVertex3f(1.5,1.3,0);//aglVertex3f(1,0.5,0);//bglVertex3f(2,0.5,0);//c

//sama kakiglVertex3f(1.5,-1.5,0);//aglVertex3f(1.2,0.3,0);//bglVertex3f(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 PenjelasanglBegin(GL_TRIANGLES); 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.

F. KESIMPULANGLUT 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.Agar glut dapat dijalankan maka perlu Mensetting glut ke dalam aplikasi visual basic secara keseluruhanFile glut.h diletakkan pada C:\Program Files\Microsoft Visual Studio 10.0\VC\includeFile 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 PUSTAKATeam Asisten Universitas Negeri Malang. 2015. Modul 1 Pengenalan GLUT. Malang : Universitas Negeri Malang Rosyidah, Binti. 2013. Pengenalan OpenGL dan GLUT, (online). http://rosyidah-binti.blogspot.com/2013/04/opengl-glut.html, diakses 1 Februari 201512