Anda di halaman 1dari 34

Grafik Komputer

(Menggambar dengan OpenGL)


Persiapan menggunakan open GL:

Install software Visual studio, pinjem ke siapa aja. Download file file !ang dibutu"kan ole" openGL seperti # glut$%.dll, glut$%.lib, dan glut." &ari tutorial !ang bagus, gak bikin bingung.

Persiapan File-file openGL:

'astikan software (isual studio tela" terinstall dengan selamat. )opikan file file berikut ini#

1. glut$%.dll simpan di *#+windows+s!stem$% 2. glut$%.lib simpan di &#+'rogram ,iles+Mi*rosoft Visual -tudio ../0 %11$+V*2+'latform-D)+Lib 3. glut." simpan di &#+'rogram ,iles+Mi*rosoft Visual -tudio ../0 %11$+V*2+'latform-D)+In*lude+gl Tahap penulisan coding openGL:

Masuk ke software (isual studio. amati baik baik apaka" benar anda masuk ke (isual studio. jangan jangan anda mala" membuka software (isio3"e"e

4uat proje*t baru dan file baru. sa!a asumsikan anda tela" familiar menggunakan software (isual studio. jika belum, sila"kan *ari tutorialn!a (*ape de*").

5ika suda", maka tulisla" program di bawa" ini (atau *op! paste bagi orang orang !ang malas3e", kreatif maksudn!a). jangan lupa ba*a do6a, nanti programn!a gak jalan, sa!a !ang di mara"in.."e"e

CONTOH PROGRAM : http://www.4shared.com/file/137625989/ad25c452/contoh_open_GL.html

Listing Program :
7in*lude 8GL9glut.": (oid gambargw( (oid) ; 99Disini tempat untuk menggambar gl4egin(GL<=>?D-)@ 99menggambar segi empat gl&olor$f(A,1,1)@glVerteB$f( C1,C1,1)@ 99titik kiri atas gl&olor$f(1,A,1)@glVerteB$f( C1,1,1)@ 99titik kiri bawa" gl&olor$f(1,1,A)@glVerteB$f(D1,1,1)@ 99titik kanan bawa" gl&olor$f(A,1,A)@glVerteB$f(D1,C1,1)@ 99titik kanan atas gl/nd()@ gl4egin(GL<0EI?.GL/-)@ 99menggambar segitiga gl&olor$f(A,1,1)@glVerteB$f(A11,1,1)@ 99titik kiri gl&olor$f(1,A,1)@glVerteB$f(AF1,A%1,1)@ 99titik atas gl&olor$f(1,1,A)@glVerteB$f(%%1,1,1)@ 99titik kanan gl/nd()@ gl,lus"()@ 99untuk memastikan ba"wa perinta" gambar di eksekusi G (oid displa!( (oid) ; gl&lear(GL<&OLOE<4>,,/E<4I0)@ 99membersi"kan semua piBel gambargw()@99memanggil fungsi gambargw() glut-wap4uffers()@ G int main( int arg*, *"ar HH arg(); 99untuk inisialisasi GL>0 dengan parameter baris perinta" glutInit(Iarg*, arg()@ 99seting displa! mode

glutInitDispla!Mode (GL>0<DO>4L/JGL>0<EG4)@ 99seting posisi window glutInitKindow'osition( $11,A11)@ 99seting ukuran window glutInitKindow-iLe(FM1,MD1)@ 99membuat window dengan *aption di atasn!a glut&reateKindow (N?gus -umarna $I?A1O)@ 99seting warna ba*kground gl&lear&olor( 1.1, 1.1, 1.1, 1.1)@ 99inisialisasi nilai pengamatan gluOrt"o%D( $%1., $%1., %M1.1,%M1.1)@

glutIdle,un*(displa!)@ 99memanggil fungsi displa! glutDispla!,un*(displa!)@ 99Memasukan GL>0 e(ent loop glutMainLoop()@ return 1@ G

Output Program :

Keterangan Program :

#include <GL/glut.h> emro!raman"!rafis"men!!#na$an"%penGL&GL'("mem)#t#h$an"header"!l#t.h"*an!" ada"di"folder": +,:- ro!ram".iles-/icrosoft"0is#al"1t#dio".23("2443-0c7- latform156-7ncl#de-!l8 void use d !"#void$ % // &isini te'(!t untu) 'engg!'*! + .#n!si"#ser"draw"adalah"s#at#"f#n!si"#nt#$"mem)#at"$ode"pro!ram"#nt#$" men!hasil$an"s#at#"!am)ar. Tips-tips : 1. )alo tern!ata waktu di gambar &uma ada gambar titik ke*il, itu tandan!a glVertex3f(0,1,0); "arus di uba" jadi
glVertex3f(0,3,0);

misaln!a. *onto" ketika anda akan membuat

gambar segitiga dengan *oding sebagai berikut #


gl4egin(GL<0EI?.GL/-)@ glVerteB$f( A,1,1)@ glVerteB$f(1,A,1)@ glVerteB$f(A,1,1)@ gl/nd@ gl,lus"()@

ings!aallo" gambarn!a &uma titik ke*il, maka anda "arus menggantin!a menjadi #
gl4egin(GL<0EI?.GL/-)@ glVerteB$f( $1,1,1)@ glVerteB$f(1,$1,1)@ glVerteB$f($1,1,1)@ gl/nd@

gl,lus"()@

A. Dalam membuat sebua" gambar di OpenGL, anda "arus pandai ber"alusinasi, maksudn!a anda "arus bisa memba!angkan sebua" garis kartesian !ang mana terdapat sumbu B,! (untuk % Dimensi) dan B,!,L (untuk $ Dimensi) 5epo$9"11&14&48&sat :!#s"1#marna

,eginning OP-N GL

Pemrograman 3D adalah hal yang menarik, karena impian untuk bikin game, interactive system, sampai interactive animation bermula di 3D, tapi startnya .. sullllliiiiiit banget. Selain karena veteran2 3D banyak bermain di bidang OPEN !, dan "##, "$.... sangat %arang sekali. &erikut saya akan coba share mengenai ho' to start programming Open ! dari yang sangat sederhana sekali. Persiapan 1 : dll tambahan yang dibutuhkan "s ! ( "$ Open ! ) bisa di do'nload di http*++csgl.sourceforge.net Setelah di download, dan di extract, jangan lupa untuk diinstall ( yang sebenarnya hanya memindahkan file csgl-native.dll ke windows system saja ) tapi ini adalah langkah yang penting, karena csgl-native.dll ini akan di reference oleh csgl.dll Persiapan 2 : siap mental :P ,aktu pertama ngeliat codenya- saya sempat stress, selain ga biasa maen di dunia 3D, kodenya itu- struktural banget, ga ada OO nya.. ya %angan stress dulu la, kedepannya saya akan coba membimbing langkah demi langkah untuk membuat aplikasi open ! Beginning OpenGL &uat Pro%ect ,indo's .orms /pplication baru, lalu tambahkan re0erence ke "s l.dll Setelah itu, bukalah .orm1.cs, tambahkan using "s l.Open !2 kemudian buatlah kelas baru yang akan mengimplementasikan open !, misalkan nama kelasnya 34y !5ie'.cs6, tambahkan script berikut didalamnya *lass M!GLView # OpenGL&ontrol ; 999 8summar!: 999 Di Met"od ini la" kita akan menggambar sesuatu 999 89summar!: publi* o(erride (oid glDraw() ; 994ersi"kan dulu s*reen GL.gl&lear(GL.GL<&OLOE<4>,,/E<4I0 J GL.GL<D/'0P<4>,,/E<4I0)@ G G !alu tambahkan 4y !5ie' ke dalam .orm1.cs dengan cara drag 7 drop dari toolbo8, yup class yang baru sa%a dibuat akan diperlakukan layaknya usercontrol. Dan coba di%alankan. 9a memang masih kosong, sabar ya--

Menggambar segitiga sederhana 4asih menggunakan solution yang tadi, kita akan mencoba untuk menggambar segitiga sederhana ( masih 2D, 3Dnya belum kelihatan ) Nah coba diganti lagi source code untuk method glDra'() dengan yang ini publi* o(erride (oid glDraw() ; 994ersi"kan dulu s*reen GL.gl&lear(GL.GL<&OLOE<4>,,/E<4I0 J GL.GL<D/'0P<4>,,/E<4I0)@ GL.glLoadIdentit!()@ 99Meng"itung ratio la!ar se"ingga gambar dapat ditampilkan dengan tepat double aspe*t<ratio Q (double)t"is.Kidt" 9 (double)t"is.Peig"t@ GL.glMatriBMode(GL.GL<'EO5/&0IO.)@ 99 -ele*t 0"e 'roje*tion MatriB GL.glLoadIdentit!()@ 99 Eeset 0"e 'roje*tion MatriB GL.glu'erspe*ti(e(MR.1f, aspe*t<ratio, 1.Af, A11.1f)@ 99 'inda"kan kursor ke titik A.Rf B dan F.1fL GL.gl0ranslatef( A.Rf, 1.1f, F.1f)@ 99 mulai menggambar segitiga GL.gl4egin(GL.GL<0EI?.GL/-)@ GL.glVerteB$f(1.1f, A.1f, 1.1f)@ GL.glVerteB$f( A.1f, A.1f, 1.1f)@ GL.glVerteB$f(A.1f, A.1f, 1.1f)@ GL.gl/nd()@ G 9a- mungkin ada banyak yang tidak anda mengerti mengenai synta82 nya, sama - saya %uga tidak banyak mengerti. :ni %uga pertama kali saya menyentuh dunia 3D. ;api tenang sa%a, akan ada tutorial berikutnya &t'- tolong %angan dipamerin dulu ke temen2, tunggu sampe bisa bikin minal animasi hehehe *p

&!s! .&!s! Mengg!'*! deng!n O(enGL d!n Mengg!'*! Titi)


1eptem)er"149"2411";ac$no<"Lea<e"a"comment"Go"to"comments" " " " " " " 1"0ote 5asar&dasar"men!!am)ar"den!an"%penGL"memp#n*ai"14")#ah")ent#$"!eometris" sederhana9)iasa"dise)#t"14"Geometris" rimitif."5ise)#t"primitif"$arena")ent#$"sederhana"dan" ditampil$an"san!at"cepat"dan")isa"di)ent#$"!am)ar"*an!"le)ih"$omple$s"la!i"den!an" pen!!a)#n!an"!am)ar"!eometris"primitif"terse)#t."14"Geometris"terse)#t"adalah" oints" = oint>9"Lines"=Garis>9"(rian!les"=1e!iti!a>9"(rian!le"1trip"=1e!iti!a"?al#r>9"@#ad"1trip"=@#ad" ?al#r>9"Line"1trip"=Garis"?al#r>9"Line"Loop"=Garis"Loopin!>9"@#ads"=@#ad>9" ol*!on" = oli!on>9"and"(rian!le".an"=1e!iti!a".an>.

'nt#$"men!!am)ar"!eometris"diatas9"openGL"men!!#na$an"f#n!si9"*ait#": "

GL_ %72(1 GL_L7231 GL_(A7:2GL31 GL_(A7:2GL3_1(A7 GL_@':5_1(A7 GL_L723_1(A7 GL_L723_L%% GL_@':51 GL_ %LBG%2 GL_(A7:2GL3_.:2

" Meng!'*! Titi) " /en!!am)ar"titi$"men!!#na$an"perintah"GL_ %72(1"den!an"!l0erteC3f=C9"*9";>9"dimana" $ordinat"C"s#m)#"hori;ontal9"*"s#m)#"<erti$al"dan"$ordinat";"$earah"$ita."6oordinat"dim#lai" dari"$iri")awah9"seperti"!am)ar"di")awah"ini.

'nt#$"m#lai"men!!am)ar"titi$"$ita"men!!#na$an"perintah"GL_ %72(1"seperti"di)awah"ini !lDe!in=GL_ %72(1>E !l0erteC3f=4.29"4.29"4.4>E !l0erteC3f=4.89"4.29"4.4>E !l0erteC3f=4.29"4.59"4.4>E !l0erteC3f=4.89"4.59"4.4>E !l0erteC3f=4.29"4.89"4.4>E !l0erteC3f=4.89"4.89"4.4>E !l3nd=>E 1inta$"pro!ram"men!!am)ar$an"!rafi$"dalam"s#m)#"C9*"dan";"adalah

:ta#"dalam")ent#$"lain"*ait#

'nt#$"6ode"pro!ram"len!$ap"dalam"3ditor",odeDloc$s"adalah " Fincl#de"G!l/!l#t.hH " <oid"5raw=>"I !l,lear=GL_,%L%A_D'..3A_D7(>E !l,olor3f=1.49"1.49"1.4>E !lDe!in=GL_ %72(1>E !l0erteC3f=4.29"4.29"4.4>E !l0erteC3f=4.89"4.29"4.4>E !l0erteC3f=4.29"4.59"4.4>E !l0erteC3f=4.89"4.59"4.4>E

!l0erteC3f=4.29"4.89"4.4>E !l0erteC3f=4.89"4.89"4.4>E !l3nd=>E !l.l#sh=>E J " <oid"7nitiali;e=>"I !l,lear,olor=4.49"4.49"4.49"4.4>E !l/atriC/ode=GL_ A%?3,(7%2>E !lLoad7dentit*=>E !l%rtho=4.49"1.49"4.49"1.49"&1.49"1.4>E J " int"main=int"i:r!c9"charKK"cpp:r!<>"I !l#t7nit=Li:r!c9"cpp:r!<>E !l#t7nit5ispla*/ode=GL'(_172GL3"M"GL'(_AGD>E !l#t7nitNindow1i;e=2549"254>E !l#t7nitNindow osition=2449"244>E !l#t,reateNindow=+ oint8>E 7nitiali;e=>E !l#t5ispla*.#nc=5raw>E !l#t/ainLoop=>E ret#rn"4E J " ?alan$an" ro!ram"terse)#t"di",odeDloc$s"hasiln*a"seperti"!am)ar"di")awah"ini

Gam)ar"ini"terdiri"6")#ah"titi$")erwarna"p#tih.

Men!'(il)!n G! is /t i( 'nt#$"menampil$an"Garis"1trip9"%penGL"men!!#na$an"perintah"GL_L723_1(A7 ."Garis" 1trip"adalah"mem)#at"!aris&!aris"den!an"men!h#)#n!$an"#O#n!"!aris"se)a!ai"titi$"pertama" #nt#$"!aris"selanO#tn*a.

erintah"dasar"Garis"1trip"adalah": !lDe!in=GL_L723_1(A7 >E !l0erteC3f=4.29"4.29"4.4>E !l0erteC3f=4.89"4.29"4.4>E !l0erteC3f=4.29"4.59"4.4>E !l0erteC3f=4.89"4.59"4.4>E !l0erteC3f=4.29"4.89"4.4>E !l0erteC3f=4.89"4.89"4.4>E !l3nd=>E Gam)ar"dari"perintah"Garis"1trip"diatas"adalah:

ro!ram"len!$ap"Garis"1trip"dalam"main"pro!ram"c"adalah":

Fincl#de"G!l/!l#t.hH <oid"5raw=>"I !l,lear=GL_,%L%A_D'..3A_D7(>E !l,olor3f=1.49"1.49"1.4>E !lDe!in=GL_L723_1(A7 >E !l0erteC3f=4.29"4.29"4.4>E !l0erteC3f=4.89"4.29"4.4>E !l0erteC3f=4.29"4.59"4.4>E !l0erteC3f=4.89"4.59"4.4>E !l0erteC3f=4.29"4.89"4.4>E !l0erteC3f=4.89"4.89"4.4>E !l3nd=>E !l.l#sh=>E J <oid"7nitiali;e=>"I !l,lear,olor=4.49"4.49"4.49"4.4>E !l/atriC/ode=GL_ A%?3,(7%2>E !lLoad7dentit*=>E !l%rtho=4.49"1.49"4.49"1.49"&1.49"1.4>E J int"main=int"i:r!c9"charKK"cpp:r!<>"I !l#t7nit=Li:r!c9"cpp:r!<>E !l#t7nit5ispla*/ode=GL'(_172GL3"M"GL'(_AGD>E !l#t7nitNindow1i;e=2549"254>E !l#t7nitNindow osition=2449"244>E !l#t,reateNindow=+Line"1trip8>E 7nitiali;e=>E !l#t5ispla*.#nc=5raw>E !l#t/ainLoop=>E ret#rn"4E J ro!ram"di"atas9"setelah"di"$ompile9"hasiln*a"seperti"!am)ar"di)awah:

Men!'(il)!n G! is Loo( Garis"Loop"adalah"men!h#)#n!$an"!aris"pertama"den!an"!aris"selanO#tn*a"dan"!aris"tera$hir" terh#)#n!"den!an"!aris"pertama."'nt#$"menampil$an"Garis"Loop9"%penGL"men!!#na$an" perintah"GL_L723_L%% .

erintah"dasar"Garis"Loop"adalah": !lDe!in=GL_L723_L%% >E !l0erteC3f=4.29"4.29"4.4>E !l0erteC3f=4.89"4.29"4.4>E !l0erteC3f=4.29"4.59"4.4>E !l0erteC3f=4.89"4.59"4.4>E !l0erteC3f=4.29"4.89"4.4>E !l0erteC3f=4.89"4.89"4.4>E !l3nd=>E 5ari"pro!ram"dasar"Garis"Loop"it#"a$an"mem)ent#$"!am)ar"seperti":

ro!ram"len!$ap"#nt#$"mem)#at"Garis"Loop"dalam"main"pro!ram"c"adalah": Fincl#de"G!l/!l#t.hH <oid"5raw=>"I !l,lear=GL_,%L%A_D'..3A_D7(>E !l,olor3f=1.49"1.49"1.4>E !lDe!in=GL_L723_L%% >E !l0erteC3f=4.29"4.29"4.4>E !l0erteC3f=4.89"4.29"4.4>E !l0erteC3f=4.29"4.59"4.4>E !l0erteC3f=4.89"4.59"4.4>E !l0erteC3f=4.29"4.89"4.4>E !l0erteC3f=4.89"4.89"4.4>E !l3nd=>E !l.l#sh=>E J <oid"7nitiali;e=>"I !l,lear,olor=4.49"4.49"4.49"4.4>E !l/atriC/ode=GL_ A%?3,(7%2>E !lLoad7dentit*=>E !l%rtho=4.49"1.49"4.49"1.49"&1.49"1.4>E J int"main=int"i:r!c9"charKK"cpp:r!<>"I !l#t7nit=Li:r!c9"cpp:r!<>E !l#t7nit5ispla*/ode=GL'(_172GL3"M"GL'(_AGD>E !l#t7nitNindow1i;e=2549"254>E !l#t7nitNindow osition=2449"244>E !l#t,reateNindow=+Lne"Loop8>E 7nitiali;e=>E !l#t5ispla*.#nc=5raw>E !l#t/ainLoop=>E

ret#rn"4E J Pasil"$ompile"pro!ram"len!$ap"diatas"adalah":

Men!'(il)!n 0u!d1Pol2gon d!n T i!ngle 3!n deng!n O(enGL


1eptem)er"129"2411";ac$no<"Lea<e"a"comment"Go"to"comments" " " " " " " 1"0ote Men!'(il)!n 0u!d Gam)ar"@#ad"adalah")ent#$"se!iempat"den!an"<erteC"*an!")e)as."De)as"disini"artin*a" memp#n*ai"se!i"empat")#ah"*an!")e)as."'nt#$"menampil$an"@#ad9"%penGL"men!#na$an" perintah"GL_@':51.

erintah"sederhana"menampil$an"1@':5"adalah": " !lDe!in=GL_@':51>E !l0erteC3f=4.29"4.29"4.4>E !l0erteC3f=4.89"4.29"4.4>E !l0erteC3f=4.69"4.49"4.4>E !l0erteC3f=4.49"4.49"4.4>E !l0erteC3f=4.49"4.69"4.4>E !l0erteC3f=4.69"4.69"4.4>E !l0erteC3f=4.89"4.89"4.4>E !l0erteC3f=4.29"4.89"4.4>E !l3nd=>E " Gam)ar"*an!"dihasil$an"dari"peritah"diatas"adalah":

erintah"len!$ap"menampil$an"1@':5"dalam"main"pro!ram")ahasa","adalah": " Fincl#de"G!l/!l#t.hH " <oid"5raw=>"I !l,lear=GL_,%L%A_D'..3A_D7(>E !l,olor3f=1.49"1.49"1.4>E !lDe!in=GL_@':51>E !l0erteC3f=4.29"4.29"4.4>E !l0erteC3f=4.89"4.29"4.4>E !l0erteC3f=4.69"4.49"4.4>E !l0erteC3f=4.49"4.49"4.4>E !l0erteC3f=4.49"4.69"4.4>E !l0erteC3f=4.69"4.69"4.4>E !l0erteC3f=4.89"4.89"4.4>E !l0erteC3f=4.29"4.89"4.4>E !l3nd=>E !l.l#sh=>E J " <oid"7nitiali;e=>"I !l,lear,olor=4.49"4.49"4.49"4.4>E !l/atriC/ode=GL_ A%?3,(7%2>E !lLoad7dentit*=>E !l%rtho=4.49"1.49"4.49"1.49"&1.49"1.4>E J "

int"main=int"i:r!c9"charKK"cpp:r!<>"I !l#t7nit=Li:r!c9"cpp:r!<>E !l#t7nit5ispla*/ode=GL'(_172GL3"M"GL'(_AGD>E !l#t7nitNindow1i;e=2549"254>E !l#t7nitNindow osition=2449"244>E !l#t,reateNindow=+@#ads8>E 7nitiali;e=>E !l#t5ispla*.#nc=5raw>E !l#t/ainLoop=>E ret#rn"4E J " Pasil"setelah"di"$ompile"dari"pro!ram"1@':5"diatas"adalah":

Men!'(il)!n Pol2gon " ol*!on"ata#"se!i)an*a$"dapat"di)ent#$"den!an"men!!#na$an"perintah"GL_ %LBG%2"di" %penGL.

erintah"sederhana"menampil$an" %LBG%2"adalah: " !lDe!in=GL_ %LBG%2>E !l0erteC3f=4.29"4.29"4.4>E !l0erteC3f=4.69"4.19"4.4>E !l0erteC3f=4.89"4.39"4.4>E !l0erteC3f=4.79"4.69"4.4>E !l0erteC3f=4.49"4.89"4.4>E !l3nd=>E " Gam)ar"*an!"hasil"dari"perintah"diatas"adalah":

erintah"len!$ap"menampil$an" %LBG%2"dalam"main"pro!ram")ahasa","adalah": Fincl#de"G!l/!l#t.hH <oid"5raw=>"I !l,lear=GL_,%L%A_D'..3A_D7(>E !l,olor3f=1.49"1.49"1.4>E !lDe!in=GL_ %LBG%2>E !l0erteC3f=4.29"4.29"4.4>E !l0erteC3f=4.69"4.19"4.4>E !l0erteC3f=4.89"4.39"4.4>E !l0erteC3f=4.79"4.69"4.4>E !l0erteC3f=4.49"4.89"4.4>E !l3nd=>E

!l.l#sh=>E J <oid"7nitiali;e=>"I !l,lear,olor=4.49"4.49"4.49"4.4>E !l/atriC/ode=GL_ A%?3,(7%2>E !lLoad7dentit*=>E !l%rtho=4.49"1.49"4.49"1.49"&1.49"1.4>E J int"main=int"i:r!c9"charKK"cpp:r!<>"I !l#t7nit=Li:r!c9"cpp:r!<>E !l#t7nit5ispla*/ode=GL'(_172GL3"M"GL'(_AGD>E !l#t7nitNindow1i;e=2549"254>E !l#t7nitNindow osition=2449"244>E !l#t,reateNindow=+ ol*!on8>E 7nitiali;e=>E !l#t5ispla*.#nc=5raw>E !l#t/ainLoop=>E ret#rn"4E J Pasil"setelah"di"$ompile"dari"pro!ram" %LBG%2"diatas"adalah":

Men!'(il)!n T i!ngle 3!n " (rian!le".an"adalah"men!h#)#n!$an")e)erapa"se!iti!a"$e"titi$"p#sat."'nt#$"menampil$an" (rian!le"fan9"%penGL"men!!#na$an"perintah"GL_(A7:2GL3_.:2.

erintah"dasar"menampil$an"(rian!le".an"adalah": " !lDe!in=GL_(A7:2GL3_.:2>E !l0erteC3f=4.29"4.29"4.4>E !l0erteC3f=4.69"4.19"4.4>E !l0erteC3f=4.89"4.39"4.4>E !l0erteC3f=4.79"4.69"4.4>E !l0erteC3f=4.49"4.89"4.4>E !l3nd=>E " Gam)ar"dari"perintah"dasar"diatas"adalah":

ro!ram"len!$ap"(rian!le"fan"dalam"f#n!si"main")ahasa","adalah": " Fincl#de"G!l/!l#t.hH

" <oid"5raw=>"I !l,lear=GL_,%L%A_D'..3A_D7(>E !l,olor3f=1.49"1.49"1.4>E !lDe!in=GL_(A7:2GL3_.:2>E !l0erteC3f=4.29"4.29"4.4>E !l0erteC3f=4.69"4.19"4.4>E !l0erteC3f=4.89"4.39"4.4>E !l0erteC3f=4.79"4.69"4.4>E !l0erteC3f=4.49"4.89"4.4>E !l3nd=>E !l.l#sh=>E J " <oid"7nitiali;e=>"I !l,lear,olor=4.49"4.49"4.49"4.4>E !l/atriC/ode=GL_ A%?3,(7%2>E !lLoad7dentit*=>E !l%rtho=4.49"1.49"4.49"1.49"&1.49"1.4>E J " int"main=int"i:r!c9"charKK"cpp:r!<>"I !l#t7nit=Li:r!c9"cpp:r!<>E !l#t7nit5ispla*/ode=GL'(_172GL3"M"GL'(_AGD>E !l#t7nitNindow1i;e=2549"254>E !l#t7nitNindow osition=2449"244>E !l#t,reateNindow=+(rian!le".an8>E 7nitiali;e=>E !l#t5ispla*.#nc=5raw>E !l#t/ainLoop=>E ret#rn"4E J " 1etelah"di"$ompile9"ma$a"hasiln*a"adalah":

" " " " "

Open ! Open ! adalah suatu spe0ikasi gra0ik yang lo'<level yang menyediakan 0ungsi untuk pembuatan gra0ik primiti0 termasuk titik, garis, dan lingkaran. Open ! digunakan untuk mende0inisikan suatu ob%ek, baik ob%ek 2 dimensi maupun ob%ek 3 dimensi. Open ! %uga merupakan suatu antarmuka pemrograman aplikasi (application programming inter0ace (/P:) yang tidak tergantung pada piranti dan plat0orm yang digunakan, sehingga Open ! dapat ber%alan pada sistem operasi ,indo's, =N:> dan sistem operasi lainnya. Open ! pada a'alnya didesain untuk digunakan pada bahasa pemrograman "+"##, namun dalam perkembangannya Open ! dapat %uga digunakan dalam bahasa pemrograman yang lain seperti ?ava, ;cl, /da, 5isual &asic, Delphi, maupun .ortran. Namun Open ! di<package secara berbeda<beda sesuai dengan bahasa pemrograman yang digunakan. Oleh karena itu, package Open ! tersebut dapat di<do'nload pada situs http*++'''.opengl.org sesuai dengan bahasa pemrograman yang akan digunakan. Selain Open ! ada %uga tools+library gra0ik yang dapat dipergunakan yaitu Direct>. Namun tools ini hanya dapat dipergunakan pada 4icroso0t ,indo's. Pada semester @ (enam) saya mendapat praktikum gra0ik computer dan mendapat materi tentang Open ! dan mencoba membuat ob%ek seperti kubus, segitiga, limas. Dengan pengalaman itu saya akan mencoba membuat ob%ek kubus beserta limas terbalik yang berputar (melakukan rotasi), yang mana merupakan tugas dari pemrograman multimedia supaya dapat membuat suatu ob%ek menggunakan Open l. Sebelumnya saya akan menginstal terlebih dahulu so0t'are pelles c nya. &erkiut ini adalah cara<cara menginstal pelles c * "ara menginstal Pelles c *

=ntuk mengetahui bagaimana cara menginstal nya, buka install.t8t. Di dalam 0ile ini terdapat cara menginstal pelles c yaitu * 1. :nstall Pelles"3.e8e, seperti install program 'indo's biasa, option biarkan seperti aslinya (de0ault), install 0older ke AE*BPraktikanBPraktikumA( khusus di !/& ). 2. "opy Agl0'.hA ke ABincludeB'inBglBA 3. "opy Agl0'.libA ke ABlibBA C. "opy A!ab;: Open !.dllA ke ABbinB'iDardsBA

Setelah melakukan langkah<langkah diatas, maka pelles c telah terinstal, muncul 0older baru untuk pelles c yang telah terinstal dengan nama 3pelles c6. Dan so0t'are ini pun siap untuk digunakan.

Eemudian saya akan mencoba membuat 2 buah on%ek yaitu kubus dan liman terbalik, yang mana kedua ob%ek ini nanti nya akan melakukan rotasi. Pertama<tama kita buka pelles c nya, pilih 0ile<Fne'<Fpro%ect<F!ab;: Open ! ,iDard (kalau belum ada option ini, berarti ada yang salah 'aktu install). 4aka akan mucul program Open l seperti berikut ini. $include $include $include $include void mulaiOpen !(void)2 int main(void) G ++ ++ mHunning I ;H=E, aplikasi masih ber%alan ++ mHunning I ./!SE, JJJ *p !uint mHunning I !K;H=E2 ++ ++ inisialisasi !., i0( gl0':nit() II !K./!SE ) G

4essage&o8( N=!!, AEHHOH ** gagal menginisialisasi !.,A, AErrorLA, 4&KOE)2 return(M)2 N ++ ++ buat sebuah 'indo' yang akan digunakan untuk menggambar. i0( gl0'Open,indo'( @CM, COM, M, M, M, M, 2C, M, !.,K,:NDO, ) II !K./!SE ) G 4essage&o8( N=!!, AEHHOH ** gagal membuat 'indo'A, AErrorLA, 4&KOE )2 gl0';erminate()2 return(M)2 N ++ ++ Set %udul yang ada di 'indo' dan S'ap interval. gl0'Set,indo';itle( APraktikum ra0ik Eomputer !ab;:A )2 gl0'S'ap:nterval( 1 )2 ++ ++ mulai Open ! (melakukan setting a'al Open !) mulaiOpen !()2 int r2 ++ ++ mulai looping utama program 'hile( mHunning ) G ++ ++ bersihkan layar dan depth bu00er gl"lear( !K"O!OHK&=..EHK&:; P !KDEP;QK&=..EHK&:; )2 gl!oad:dentity()2 ++ ++ lakukan penggambaran di sini ++<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ++kubus atasnya limas terbalik glu!ook/t (1M,1M,1M,M, M,M,M,1,M) 2 glHotate0(r,M,M,1)2 gl&egin ( !KR=/DS)2 gl"olor30 (M,1,M)2 gl5erte830 (M,S,M)2 gl5erte830 (C,S,M)2 gl5erte830 (C,S,C)2 gl5erte830 (M,S,C)2 glEnd()2 gl&egin ( !K;H:/N !ES) 2 gl"olor30 (1,M,M)2 gl5erte830 (M,S,M)2 gl5erte830 (C,S,M)2

gl5erte830 (2,M,2)2 gl"olor30 (1,M,1)2 gl5erte830 (C,S,M)2 gl5erte830 (C,S,C)2 gl5erte830 (2,M,2)2 gl"olor30 (1,1,M)2 gl5erte830 (C,S,C)2 gl5erte830 (M,S,C)2 gl5erte830 (2,M,2)2 gl"olor30 (1,1,1)2 gl5erte830 (M,S,C)2 gl5erte830 (M,S,M)2 gl5erte830 (2,M,2)2 glEnd ()2 gl&egin ( !KR=/DS)2 gl"olor30 (1,M,1)2 gl5erte830 (M,M,M)2 gl5erte830 (C,M,M)2 gl5erte830 (C,M,C)2 gl5erte830 (M,M,C)2

gl"olor30 (M,M,1)2 gl5erte830 (M,M,M)2 gl5erte830 (C,M,M)2 gl5erte830 (C,<C,M)2 gl5erte830 (M,<C,M)2 gl"olor30 (M,1,1)2 gl5erte830 (C,M,M)2 gl5erte830 (C,M,C)2 gl5erte830 (C,<C,C)2 gl5erte830 (C,<C,M)2 gl"olor30 (1,M,M)2 gl5erte830 (C,M,C)2 gl5erte830 (M,M,C)2 gl5erte830 (M,<C,C)2 gl5erte830 (C,<C,C)2 gl"olor30 (1,1,M)2 gl5erte830 (M,M,C)2

gl5erte830 (M,M,M)2 gl5erte830 (M,<C,M)2 gl5erte830 (M,<C,C)2 gl"olor30 (1,1,1)2 gl5erte830 (M,<C,M)2 gl5erte830 (C,<C,M)2 gl5erte830 (C,<C,C)2 gl5erte830 (M,<C,C)2

glEnd ()2 r##2 ++<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ++ ++ tampilkan ke layar (s'ap double bu00er) gl0'S'ap&u00ers()2 ++ ++ check input , apakah tombol esc ditekan atau tombol AcloseA diclick mHunning I Lgl0' etEey( !.,KEE9KES" ) 77 gl0' et,indo'Param( !.,KOPENED )2 N gl0';erminate()2 return(M)2 N void mulaiOpen !(void) G ++ ++ Set vie'port ke resolusi @CM8COM vie'port bisa diibaratkan ++ layar monitor anda gl5ie'port( M, M, @CM, COM )2 ++ ++ Set mode Open ! ke mode pryeksi (Pro%ection) dan set proyeksi ++ menggunakan proyeksi perspective, dengan sudut pandang (.ield O0 ++ 5ie') @M dera%at gl4atri84ode( !KPHO?E";:ON )2 gl!oad:dentity()2 gluPerspective( @M.M0, @CM.M0+COM.M0, M.10, 1MMM.M0 )2 gl4atri84ode( !K4ODE!5:E, )2 gl!oad:dentity()2 ++ ++ Set mode gradasi 'arna halus (Smooth)

glShade4odel( !KS4OO;Q )2 ++ ++ 'arna yang digunakan untuk membersihkan layar gl"lear"olor( M.M0, M.M0, M.M0, M.M0 )2 ++ ++ nilai untuk membersihkan depth bu00er. gl"learDepth( 1.M0 )2 ++ ++ Depth test digunakan untuk menghindari polygon yang ++ tumpang tindih. glEnable( !KDEP;QK;ES; )2 glDepth.unc( !K!ER=/! )2 ++ ++ beritahu Open ! untuk menggunakan perhitungan perspective ++ yang terbaik (perhitungan ini tidak bisa selalu 1MMT akurat) glQint( !KPEHSPE";:5EK"OHHE";:ONKQ:N;, !KN:"ES; )2 N

=ntuk membuat ob%ek ini saya hanya memasukkan bagian program yang dimulai dari 3++ lakukan penggambaran di sini6 hingga 3glEnd ()2 r##2 3. Earena program yang lainnya telah tersedia, %adi saya hanya memasukkan titik<titik koordinat untuk membuat ob%ek kubus dan limas nya. ?ika program di run, maka tampilan outputnya adalah seperti berikut * Dan output dari program diatas adalah *

Ob%ek kubus dan limas ini berputar (melakukan rotasi) dengan sumbu D sebagai titik sumbu putarnya. Pada open gl ini saya menggunakan Pelles ", untuk membuat ob%ek kubus dan limas segitiga terbalik kita cukup memasukkan titik<titik koordinat untuk membangun ob%ek tersebut.

glHotate0(r,M,M,1)2 ber0ungsi sebagai titik putar (rotasinya) yaitu dengan sumbu putar U

gl&egin ( !KR=/DS)2 gl"olor30 (M,1,M)2 gl5erte830 (M,S,M)2 gl5erte830 (C,S,M)2 gl5erte830 (C,S,C)2 gl5erte830 (M,S,C)2 glEnd()2 bagian diatas untuk membuat sisi persegi dari limas segi empatnya. gl&egin ( !K;H:/N !ES) 2 gl"olor30 (1,M,M)2 gl5erte830 (M,S,M)2 gl5erte830 (C,S,M)2 gl5erte830 (2,M,2)2 gl"olor30 (1,M,1)2 gl5erte830 (C,S,M)2 gl5erte830 (C,S,C)2 gl5erte830 (2,M,2)2 gl"olor30 (1,1,M)2 gl5erte830 (C,S,C)2 gl5erte830 (M,S,C)2 gl5erte830 (2,M,2)2 gl"olor30 (1,1,1)2 gl5erte830 (M,S,C)2 gl5erte830 (M,S,M)2 gl5erte830 (2,M,2)2 glEnd ()2 bagian diatas untuk membuat sisi segitiga dari limas segi empat (%umlah sisi segitiganya ada C). 4aka selesai membuat ob%ek limas segiempatnya. Setelah itu kita membuat ob%ek kubus nya. &erikut ini adalah potongan program nya * gl&egin ( !KR=/DS)2 gl"olor30 (1,M,1)2 gl5erte830 (M,M,M)2 gl5erte830 (C,M,M)2 gl5erte830 (C,M,C)2 gl5erte830 (M,M,C)2

gl"olor30 (M,M,1)2 gl5erte830 (M,M,M)2 gl5erte830 (C,M,M)2 gl5erte830 (C,<C,M)2 gl5erte830 (M,<C,M)2 gl"olor30 (M,1,1)2 gl5erte830 (C,M,M)2 gl5erte830 (C,M,C)2 gl5erte830 (C,<C,C)2 gl5erte830 (C,<C,M)2 gl"olor30 (1,M,M)2 gl5erte830 (C,M,C)2 gl5erte830 (M,M,C)2 gl5erte830 (M,<C,C)2 gl5erte830 (C,<C,C)2 gl"olor30 (1,1,M)2 gl5erte830 (M,M,C)2 gl5erte830 (M,M,M)2 gl5erte830 (M,<C,M)2 gl5erte830 (M,<C,C)2 gl"olor30 (1,1,1)2 gl5erte830 (M,<C,M)2 gl5erte830 (C,<C,M)2 gl5erte830 (C,<C,C)2 gl5erte830 (M,<C,C)2 glEnd ()2

Potongan program diatas adalah untuk membuat ob%ek kubus nya. 4aka ob%ek limas terbalik dan kubusnya selesai dibuat. Dengan adanya glHotate0(r,M,M,1)2 maka ob%ek limas dan kubus tersebut akan berputar sesuai sumbu nya yaitu dengan titik putar (sumbu) U.

Anda mungkin juga menyukai