GRAFIKA KOMPUTER
Pengenalan GLUT
Untuk memenuhi tugas matakuliah Praktek Multimedia
Yang dibina oleh Ibu Ayung Chandra Padmasari
Muhamad Ainurrahman
130533608096
OFF E
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:
-
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
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);
Screenshot
penjelasan
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);
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();
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);
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:
-
12
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);
DAFTAR PUSTAKA
13