81
BAB I : PENGANTAR KOMPUTER GRAFIK A. PENGERTIAN KOMPUTER GRAFIK Komputer grafik dapat diartikan sebagai seperangkat alat yang terdiri dari hardware dan software untuk membuat gambar, grafik atau citra realistik untuk seni, game komputer, foto dan animasi komputer. B. SEJARAH KOMPUTER GRAFIK Sejarah grafika komputer telah dimulai sejak jaman dahulu kala yaitu ketika bangsa Mesir, Roma dan Yunani berkomunikasi secara grafik. Beberapa lukisan terdapat pada batu nisan orang Mesir dapat dikatakan sebagai lukisan teknik. Perkembangan grafika komputer secara sederhana dapat dibagi menjadi empat fase, yaitu : 1. Fase Pertama (1950) era grafika komputer interaktif Tidak begitu cepat karena teknologi, jumlah dan harga komputer tidak mendukung. MIT berhasil mengembangkan komputer whirlwind dengan tabung sinar katode (Cathode Ray Tube- CRT). Sudah menggunakan pena cahaya (light pen) yaitu sebuah alat input bentuknya seperti pensil yang digunakan untuk memilih posisi, menunjuk sesuatu dan menggambar pada layar 1

Isi

Embed Size (px)

DESCRIPTION

hubungan

Citation preview

BAB I : PENGANTAR KOMPUTER GRAFIKA. PENGERTIAN KOMPUTER GRAFIKKomputer grafik dapat diartikan sebagai seperangkat alat yang terdiri darihardware dan software untuk membuat gambar, grafik atau citra realistik untukseni, game komputer, foto dan animasi komputer.B. SEJARAH KOMPUTER GRAFIKSejarahgrafikakomputertelahdimulai sejakjamandahulukalayaituketikabangsa Mesir, Roma dan Yunani berkomunikasi secara grafik. Beberapa lukisanterdapatpadabatunisanorangMesirdapat dikatakansebagai lukisanteknik.erkembangan grafika komputer secara sederhana dapat dibagi menjadi empatfase, yaitu ! 1. Fase Pertama (1950 era !ra"#$a $%m&'ter #(tera$t#" "idakbegitucepat karenateknologi, jumlahdanhargakomputertidak mendukung. M#"berhasil mengembangkankomputerwhirlwinddengantabungsinar katode $%athode Ray "ube&%R"'. Sudah menggunakan pena cahaya $light pen' yaitu sebuah alat inputbentuknya seperti pensil yang digunakan untuk memilih posisi,menunjuk sesuatu dan menggambar pada layar dengan pendeteksiancahaya yang datang dari titik&titik pada layar %R". "elah ada alat pemrograman otomatis $(utomatic rogramming"ool'). Fase Ke*'a (19+0 Jama( Pe(e,#t#a(-R#set Gra"#$a K%m&'ter I(tera$t#" )rafika interaktif modern telah ditemukan oleh #*an Sutherland. Mengembangkan teknik interaktif dengan sarana keyboard dan penacahaya. Sejumlah projek penelitian dan produk %omputer (ided+esign,Manufacturing $%(+,%(M' telah muncul. .. Fase Ket#!a (19/0 )rafika komputer interaktif telah digunakan oleh sektor industri, pemerintahdan ilmuawan untuk memperbaiki kualitas desain produk secara cepat danmudah. 0. Fase Keem&at (191021990 1 enelitian pada dekade ini bertumpu pada penggabungan danpengotomasasianpelbagaiunsurdesaindan pemodelan pejal $solidmodelling'. "eknologi hibrid mulai diperkenalkan. "eknologi ini berguna untukpenggabungan objek pejal dengan permukaan.2BAB ) : OPEN G3 4AN G3UTA. SEJARAH OPEN G3Sekitar tahun-./0&an, mengembangkanperangkat lunakyangdapat berfungsidengan berbagai hardware grafis merupakan sebuah tantangan yang nyata.Selanjutnya, pada tahun -./1, seorang profesor dari Stanford 2ni*ersity, bernama3im%larkmemulai membuka perusahaankomputer grafis yangpertama yaituSilicon)raphics%omputer System, yangkemudianlebihdikenal dengannamaS)#. +i 4aman itu, para teknisi S)# memikirkan bagaimana caranya untukmembuat suatu standar untuk pengoperasian dan transformasi ke dalam bentuk 5+.Mereka akhirnya mendesain sebuah aplikasi pemrograman antarmuka $(#' yangbernama#ris)6. #ris)6 ini hanyadapat digunakanpadahardwarekeluarandariS)# $tidak bersifat openstandard'. ada saat yang bersamaan, *endor lain termasukSun Microsystem, #BMdan 7ewlettackard juga mengeluarkan produk 5+hardwaredi pasaran. Merekamenggunakanjenis (#lainyangdisebut 7#)S.Karena*endor lainjugameluncurkanproduk5+hardwaredi pasaran, hal inimengakibatkan lingkup pemasaran S)# pun menjadi berkurang. +alamusahanyauntukkembalimendongkrakpenjualanprodukmerekakepasaran, akhirnyaS)# mengubah#ris)6menjadi open&standard. 8amunkarenaalasan lisensi dan hak paten, mereka tidak dapat meluncurkan #ris)6 *ersi open&standard. (khirnya mereka membuat (# baru berbasis #ris)6 yang diberi nama9pen)6. 2ntuk lebih mempopulerkan 9pen)6, S)# memberlakukan kembalikeinginan lamanya yang sempat tertunda di 4aman #ris)6, yaitu mengijinkan pihaklain untuk mengembangkan standar open)6 $*ersi open&standard'. Keputusan inidisambut dengan baik oleh beberapa *endor seperti +igital :;uepment%orporation, #BM, #ntel dan Microsoft. 6alu mereka membentuk 9pen)6(rchitectureRe*iewBoard$(RB'. 7inggaakhirnya, padatanggal -juli -..19pen)6 *ersi -.0 pun diperkenalkan. Setelah hari kemunculannya, 9pen)6 benar&benar telah menjadi suatu librarygrafis standar yangdigunakanuntukkeperluan&keperluanpemrogramangrafis.3(walnya, 9pen)6 di desainhanyauntukdigunakanpadapemrograman%,%ungsi asli dari 9pen)6 sendiriselaludiawalidenganglyangterdapatpadalibraryopengl51.dlldanfileheadergl.h. Sedangkanbeberapalibraryyangtelahditulis untukmenyediakanfungsi&fungsi tambahan pada 9pen)6 adalah ! 9pen)6 2tility6ibrary $)62' yang didalamnya terdapatsejumlahrutinyangmenggunakanle*el bawahdari perintah9pen)6. Rutin&rutininimempunyai awalan glu. 6ibrary ini digunakan sebagai bagian dariimplementasi 9pen)6. 9pen)6:?tensionuntuk@&Aindows yangmenyediakanfungsi untukmenciptakan 9pen)6 conte?t dan mengasosiasikannya dengan mesin yangmenggunakan @&Aindows. Rutin&rutin ini mempunyai awalan gl?.(u?iliaryatauau?libraryterdapat pada libraryglau?.libdanfile header glau?.h.erintah yang akan digunakan selalu menggunakan awalan au? 5 9pen)6 2tility "oolkit $)62"' adalah toolkit untuk sistem windows yangditulis olehMarkKilgarduntukmenyembunyikanperintah(# sistemwindows yang kompleks.Me(!!am6ar O68e$ Ge%metr# ada 9pen)6ada dua dasar operasi gambar yaitu membersihkan windows danmenggambar objek geometri termasuk titik, garis dan olygonMem6ers#5$a( 9#(*%:s Menggambar pada layar komputer berbeda dengan menggambar padakertas putih yangdari pabriknyasudahberwarnaputih. adakomputer, memoryuntukmenampilkangambar biasanya diisi dengan gambar yang berasal dari perintah gambar paling akhir,jadi perlu dibersihkan dengan warna latar belakang sebelum digambar lagi. Aarna latarbelakang yang dipilih tergantung dari aplikasi yang akan dibuat. Sintaksgl%lear%olor$)lclampred,)lclampgreen, )lclampblue, )lclampalpha' digunakanuntuk memilih warna, yang akan digunakan untuk membersihkan latar belakang dalammode R)B(. Selanjutnya perintah gl%lear$)lbitfield mask' digunakan untukmembersihkan buffer yang dispesifikasikan dengan warna yang telah ditentukan.%ontoh berikut ini perintah yang digunakan untuk membersihkan layar latar belakangdengan warna hitam dan buffer apa yang akan dibersihkan. +alam hal ini, buffer warnayang akan dibersihkan karena buffer warna merupakan tempat gambar disimpan.glClearColor(0.0,0.0,0.0); glClear(!_C"!"#_$%&&'#_$());Spesifikasi Warna ada 9pen)6 mendeskripsikan objek dengan warna objek adalah proses yangberjalansendiri&sendiri. Karenapadaumumnyaseorangprogrammer akanmengaturwarnaterlebihdahululalumenggambar objek. Sebelumwarnadiubahmakasemuaobjek yang digambar sesudah perintah tersebut akan menggunakan warna terakhir yangterdapat pada coloring scheme. 62ntuk warna digunakan perintah gl%olor5f$', jika lebih dari tiga maka argumenkeempat adalahalphayangakandijelaskanpadabagianblendingsebagai salahsatuefek yang dipunyai 9pen)6. %ontoh berikut menunjukkan urutan langkah dalam prosesspesifikasi warna sebelum objek digambar. glColor3f(0.0,1.0,0.0);**+etti,g -ar,a .ra-_o/0ect(1);**ga2/ar o/0e3 1 Mema$sa Pr%ses Me(!!am6ar Sam&a# Se,esa# Kebanyakan sistem grafik modern sudah menggunakan sistem graphics pipeline.+imana %2 utama memberikan issue perintah menggambar dan hardware lain yangmelakukan transformasi, clipping, shading, te?turing dan lain&lain. ada arsitektur yangdemikian, proses tidak dilakukan pada satu computer karena setiap komputermempunyai tugas sendiri. %2 utama tidak harus menunggu proses pada masingmasingkomputer tadi selesai, tapi bisa dengan memberikan issue perintah gambar yangberikutnya. 2ntuk inilah 9pen)6 menyediakan perintah gl>lush$' yang memaksa clientuntuksegera mengirimpaket networkwalaupunbelumpenuh. rogramsebaiknyaditulis menggunakan perintah ini karena gl>lush$' tidak memaksa proses gambar untukselesai tetapi memaksa proses gambar untuk segera dieksekusi, sehingga dijamin semuaperintah gambar yang sebelumnya akan segera dieksekusi dalam suatu waktu tertentu. Me(!!am6ar *# B#*a(! T#!a 4#me(s# 2ntuk menggambar grafik jenis apapun pada komputer biasanya dimulai denganpi?el. i?el adalah elemen terkecil dari layar monitor yang mempunyai atribut warnadanposisi. Sedangkanuntukmembentukgaris, olygon, objekdanlain&laindapatdilakukan melalui urutan pi?el yang berbeda. Menggambar dengan menggunakan9pen)6mempunyai perbedaandenganbahasa lain, yaitutidakperlumemikirkankoordinat layar secara fisik tetapi hanya perlu menspesifikasikan posisi koordinatdengan *olume penglihatan. 9pen)6 memikirkan sendiri bagaimana caranya7menggambar titik, garis, dan lainnya yang berada dalam ruang tiga dimensi ke gambardua dimensi pada layar komputer. (rea gambar yang dibatasi ini adalah ruang koordinat kartesian yangmempunyai rangedari &-00hingga-00untuksumbu?, ydan4. Secarasederhanabidang ini dapat dianggap sebagai bidang gambar untuk perintah&perintah 9pen)6. 2ntukmenggambar titikdigunakansuatuperintah9pen)6yaitu! gl=erte?.>ungsi ini dapat mempunyai 1sampai Eparameter dari berbagai macamtipedata.Sebagai contoh perintah gl=erte? di bawah ini akan menspesifikasikan sebuah titik padaposisi E sumbu ?, E sumbu y dan 0 untuk sumbu 4. gl=erte?5f$E.0f,E.0f,0.0f'F. Setelah diketahui cara untuk menspesifikasikan sebuah titik di ruang pada9pen)6. Selanjutnyayangharusditambahkanadalahinformasi tambahanmengenaititik tersebut, apakah titik tersebut akhir dari sebuah garis, atau merupakan sebuah titiksudut dari sebuah olygon atau lainnya, karena definisi geometrik dari sebuah *erte?sebenarnya bukanlah hanya sebuah titik pada layar tetapi lebih merupakan sebuah titikdimana terjadi interseksi antara dua buah garis atau kur*a. rimitif adalah interpretasi sejumlah set atau deretan titik pada sebuah bentukyang digambar pada layar. ada 9pen)6 terdapat sepuluh macam primitif dari mulaimenggambar sebuah titik hingga olygon. 2ntuk itu digunakan perintah glBeginsebagai caramemberitahu9pen)6untukmemulai menginterpretasi sederetantitiksebagai salah satubentukprimitif.+an untuk mengakhiri deretantitikinidigunakanperintah gl:nd. Sebagai contoh ada dua perintah berikut ini ! erintah - ! gl$egi,(!_4"(5)6); **+7e+ifi3a+i3a, titi3 +e/agai 7ri2itifglVertex3f(0.0f,0.0f,0.0f); **+7e+ifi3a+i3a, 7o+i+i titi3 glVertex3f(8.0f,8.0f,8.0f); **+7e+ifi3a+i3a, titi3 lai, gl',.();**2e,ga39iri 7eri,ta9 2e,gga2/ar titi3 84eri,ta9 2 : gl$egi,( !_!(5'6); **+7e+ifi3a+i3a, gari+ +e/agai 7ri2itifglVertex3f(0.0f,0.0f,0.0f); **+7e+ifi3a+i3a, 7o+i+i titi3a-al gari+ glVertex3f(8.0f,8.0f,8.0f); **+7e+ifi3a+i3a, titi3 a39irgari+ gl',.();**2e,ga39iri 7eri,ta9 2e,gga2/ar titi3erintah - hasilnya berupa dua buah titik di layar pada posisi $0.0f,0.0f,0.0f' dan posisi$E.0f,E.0f,E.0f' sedangkan pada perintah 1 akan menghasilkan garis yang melalui titik$0.0f,0.0f,0.0f' dan $E.0f,E.0f,E.0f'. Ketika menggambar titik tunggal, secara default si4e titik adalah satu. 2ntuk mengubahsi4e titik ini digunakan perintah glointSi4e$' dengan parameter ukurannya. Selain menggunakan pengubahan titik dapat juga dilakukan pengubahan letak dari garis ketikamelakukan penggambaranMet%*e H#**e(;S'r"aile librarytersebut juga perlu dicopyterlebihdahulu ke folder K..M*c./MlibL. Seharusnya file tersebut sudah berada di folder yangtepat bila anda mengikuti langkah&langkah dalamlatihan ini dengan benar. Sekarang kita lihat file source yang ada.+ouble click file Kmain.cppL Qinclude Rmain.hR Baris kode di atas berfungsi untuk memasukkan file header yangdibuat. Segala file header yang dibuat harus dimasukkan dengan cara seperti di atas.Sekarangakankitabahasfungsi&fungsi yangpentingdalamfileKmain.cppLini.>ungsi yang dibahas adalah fungsi&fungsi yang penting saja dan tidak akan dibahasdenganterlalumendalam, andaperlumempelajari sendiri dengansumber yanglebih lengkap bila anda ingin mengetahui 9pen)6 dengan lebih mendalam.Buku ini hanya mengajarkan dasar&dasar saja agar anda dapat menggunakan9pen)6 secaragarisbesar. *oid ReSi4e)6Scene$)6si4eiwidth,)6si4eiheight'>ungsi ini digunakan untuk merubah ukuran windowyang digunakan dalam9pen)6. gluerspecti*e$EP.0f,$)6float'width,$)6float'height,0.-f,-00.0f'F>ungsi ini digunakanuntuk mengatur perspektif dari kamera.EP.0fadalah sudutpandang kamera, $)6float'width,$)6float'height adalah perbandingan panjang danlebar layar, 0.-f adalah jarak terdekat yang bisa dilihat oleh 9pen)6, sedangkan-00.0f adalah jarak terjauh yang bisa dilihat. erhatikan tanda f pada akhir sebuahangka, tanda f ini menandakan bahwa angka tersebut dalamformat floatingpoint. int #nit)6$)6*oid'>ungsi ini digunakan untuk menyatakan apa yangdilakukan saat pertama kali programdijalankan. 3adi fungsi ini hanya akandieksekusi sekali saja. gl%lear%olor$0.0f, 0.0f, 0.0f, 0.Pf'F Menandakan warna apa yang digunakan sebagaibackground. Aarna dinyatakan dalam bentuk R)B(. 3adi angka pertama mewakiliwarnamerah, keduahijau, ketigabiru, dankeempat adalah(lphaatautingkattransparansi."iapwarnaberkisarantara0hingga-. 3adi bilaandainginwarna18merah sebagai background, anda harus menggunakan gl%lear%olor$-.0f, 0.0f, 0.0f,0.Pf'Fint +raw)6Scene$)6*oid'Berbeda dengan int #nit)6$)6*oid' yang hanyadijalankan sekali saja, fungsi ini akan dijalankan berulang&ulang hingga programselesai dijalankan. Segalabentukanimasi diletakkandalamfungsi ini. >ungsi&fungsi yang dibahas hanyalah sebagian kecil saja. Sekali lagi, bab ini hanyamengajarkangaris besar dalampembuatangame5+. 7asil akhir dari programdapat dilihat di %+ pada folder K6atihan membuat dasar game 5+M7asil (khirM# BMenggunakan 9pen)6L.>ungsi , perintah dalam 9pen)6 *oid ReSi4e)6Scene$)6si4ei width, )6si4ei height'F gluerspecti*e$...'F int #nit)6$)6*oid'F gl%lear%olor$...'F int +raw)6Scene$)6*oid'FKegunaan Merubah ukuran windowMenentukan tampilan perspektif 9pen)6>ungsi yang dijalankan sekali saja, yaitu pada awal program dijalankanMembersihkan layar dengan warna yang diinginkan>ungsi yang dijalankan terus&menerus selama program masih dijalankan4. G3UT (G3 UTI3IT@ TOO3S+ikarenakan 9pen)6 tidak menyediakan interface sistem window ataupun input,maka untuk tujuan ini aplikasi harus mengunakan keseragaman spesifik platform.+engan demikian jika aplikasi yang diinginkan tidak hanya berjalan di satuplatfrom saja, maka perlu menggunakan )62")62"merupakan pengembangan dari 9pen)6yang didesain untuk aplikasidenganle*el kecil hinggamenengahdanmenggunkancallbackfunctionuntukmenambahkan interaksi dari user. )62" menyediakan interface untuk menejemenwindow, menu, dan peralatan input $keyboard, dan mouse'. )62" jugamenyediakan fungsi otomatis untuk menggambar objek primitif $garis, lingkaran,titik, persegi',objek5dimensi wire$kerangka'maupunyangsolid, seperti cube$kubus', sphere $bola', dan teapot $poci teh', cone $kerucut', torus, dan lain&lain .)62" dikembangkan oleh Mark Kilgard, yaitu penulisOpenGL Programming forthe X Window System dan The Cg Tutorial: The efiniti!e Guide to Programma"le#eal-Time Graphics$ ketika dia masih bekerja di Silicon )raphics.19+uatujuan)62" ialahmenciptakanfleksibitascodeantarplatformyangdapatdijalankan lebih dari satu sistem operasi $Aindows, 6inu?, Mac 9S @, >reeBS+,9penBS+, 8etBS+', dan untuk lebih mudah mempelajari 9pen)6. +enganmenggunakan )62" hanya memerlukan sedikit code dibandingkan dengan9pen)6, tanpa mengetahui spesifikasi sistem operasi, dikarenakan 9pen)6 adalahsebagai mesin.Pemr%!rama( Ber6as#s E=e(t)62" pada dasarnya dibangun untuk menciptakan aplikasi grafis menggunakanpemrograman yang bersifat prosedural. +i dalamnya terdapat fungsi mainloop yangdiatur oleh)62"dan looping yangterjadi dalamaplikasi bertujuanuntuk penanganan fungsi&fungsi call"ac% sebagai input dari user sepertifungsi redraw$ mouse$ %ey"oard$ &oystic%$ dan lain&lain.2ntuk pemrograman 9pen)6menggunakan %ilesMMicrosoft =isual Studio-0.0M=%MincludeMglut.h merupakan header dari opengl itu sendiri agar program dapat di compile. %opy kan file glut.lib ke %!Mrogram >ilesMMicrosoft =isual Studio -0.0M=%MlibM)lut51.lib merupakan library atau perpustakaan utama untuk memanggil fungsiopengl22 +isini lah perbedaan artikel di internet yaitu install library glut di system NE bit,copy kan file glut51.dll ke %!MAindowsMsysA9ANEMglut51.dll digunakanuntukmendukungataucompatibilityterhadapaplikasi $=isualStudio 10-0' dengan library opengl . 7int ! 3ika ingin install libraby di system 51 bit maka copy kan ke%!MAindowsMsystem51M2324BAB . : TRANSFORMASI ) 4IMENSI 4ANTRANSFORMASI . 4IMENSITRANSFORMASI ) 4IMENSI)rafika komputer merupakan bidang yang menarik minat banyak orang. Salah subbagiandari grafikakomputer adalahpemodelanobjek$object modelling'. +alampemodelan objek dua dimensi $1+', didapati berbagai objek dapat dimodelkanmenurut kondisi tertentu, objek yang dimodelkan itu perlu dimodifikasi.emodifikasian objek ini dapat dilakukan dengan melakukan berbagai operasifungsi atau operasi transformasi geometri. "ransformasi ini dapat berupatransformasi dasarataupungabungandari berbagai transformasi geometri. %ontohtransformasi geometri adalah translasi, penskalaan, putaran $rotasi', balikan, shearingdan gabungan. "ransformasi ini dikenal dengan transformasi affine. ada dasarnya,transformasi ini adalah memindahkan objek tanpa merusak bentuk. "ujuan transformasi adalah ! Merubah atau menyesuaikan komposisi pemandangan Memudahkan membuat objek yang simetris Melihat objek dari sudut pandang yang berbeda Memindahkan satu atau beberapa objek dari satu tempat ke tempat lain, ini biasadipakai untuk animasi komputer. Tra(s,as#"ransformasi translasi merupakan suatu operasi yang menyebabkan perpindahanobjek 1+ dari satu tempat ke tempat yang lain. erubahan ini berlaku dalam arahyang sejajar dengan sumbu @ dan sumbu Y. "ranslasi dilakukan dengan penambahan translasi pada suatu titik koordinat dengantranslation *ector, yaitu $t?,ty', dimana t? adalah translasi menurut sumbu ? dan tyadalah translasi menurut sumbu y. Koorinat baru titik yang ditranslasi dapatdiperoleh dengan menggunakan rumus ! ?D ? < t?$?,y'D titik asal sebelum translasiyTD y /le le/ar, .o>/le ti,ggi) {gl6calef(7a,0a,g, ti,ggi, le/ar);gl>t6oli.C>/e(1);}Foi. re,.er6ce,e(Foi.) {glClear(!_C"!"#_$%&&'#_$() L !_.>t, x1, y1, D1);gl4>+9;atrix(); **/a.a,glColor3f(1, 0, 1);/alo3(10, M, N);gl4o7;atrix();gl4>+9;atrix(); **3e7alagl)ra,+latef(0, N.E, 0);glColor3f(1, 1, 0.N);/alo3(1E, C, 10);gl4o7;atrix();gl4>+9;atrix(); **2ata 3irigl)ra,+latef(-2.2, N.M, 8.1);gl#otatef(N0, 0, 1, 0);glColor3f(1, 1, 0);gl>t6oli.679ere(1, 2, 30);gl4o7;atrix();gl4>+9;atrix(); **2ata 3a,a,gl)ra,+latef(2.2, N.M, 8.1);gl#otatef(N0, 0, 1, 0);glColor3f(1, 1, 0);gl>t6oli.679ere(1, 2, 30);gl4o7;atrix();gl4>+9;atrix(); **9i.>,g46gl)ra,+latef(0, M.E, 8.1);gl#otatef(N0, 0, 1, 0);gl#otatef(-N0, 1, 0, 0);glColor3f(0, 0, 0);gl>t6oli.Co,e(1.E, 2, 2, 2);gl4o7;atrix();gl4>+9;atrix(); **ta,ga, 3irigl)ra,+latef(-M.E, -0.E, 2.E);gl#otatef(-8E, 1, 0, 0);glColor3f(0, 0, 0);/alo3(3, 3, C);gl4o7;atrix();gl4>+9;atrix(); **ta,ga, 3a,a,gl)ra,+latef(M.E, -0.E, -2.E);gl#otatef(8E, 1, 0, 0);glColor3f(0, 0, 0);/alo3(3, 3, C);gl4o7;atrix();gl4>+9;atrix(); **3a3i 3irigl)ra,+latef(-2, -O, -0.E);gl#otatef(10, 1, 0, 0);glColor3f(0, 0, 0);/alo3(3, 3, M);gl4o7;atrix();gl4>+9;atrix(); **3a3i 3irigl)ra,+latef(2, -O, 0.E);gl#otatef(-10, 1, 0, 0);glColor3f(0, 0, 0);/alo3(3, 3, M);gl4o7;atrix();gl>t6-a7$>ffer+();}Foi. 2ai,(i,t argc, c9ar PPargF) {gl>t(,it(Qargc, argF);gl>t(,itt(,it=i,.o-6iDe(-,9);gl>tCreate=i,.o-(R#1&G"; CR);gl>"rt9o2t,c(re,.er6ce,e);gl>t)i2er&>,c(E0, ti2er, 0);gl>tGey/oar.&>,c(2yGey/oar.);gl>t#e+9a7e&>,c(re+iDe);47i,it();gl>t;ai,!oo7();} Berikut adalah screenshot program: Open! "lo#$ %nimationmembuat animasi jam menggunakan library open)6.6ibrary tambahan yang perlu di include dalam program ini adalah ! libfreeglut libopengl51 libglu51Berikut adalah source code nya !Bi,cl>.e S+t.li/.9TBi,cl>.e S!*gl>t.9TBi,cl>.e S2at9.9TB.efi,e 4( 3.181EN2ME3E48float +>.>t =0;i,t i;Foi. li,g3ara,(i,t #, i,t 0>2la9_titi3, i,t x_te,ga9, i,t y_te,ga9) {gl$egi,(!_4"!@"5);for (i=0;iS=3M0;iII){float +>.>t=iP(2P4(*0>2la9_titi3);float x = x_te,ga9I#Pco+(+>.>t);float y = y_te,ga9I#P+i,(+>.>t);glVertex2f(x,y);}gl',.();}Foi. 7a,a9Ka2(){gl$egi,(!_)#(15!'6);glColor3f(1,1,0);glVertex2i(10,0);glVertex2i(0,180);glVertex2i(-10,0);gl',.();}Foi. 7a,a9;e,it(){gl$egi,(!_!(5'6);gl!i,e=i.t9(20);glColor3f(0.3,1.0,0.C);glVertex2i(0,0);glVertex2i(0,200);gl',.();}Foi. 7a,a9t)i2er&>,c(100,ti2er,0);gl>t;ai,!oo7();ret>r, 0;}Berikut Screnshoot program !51 52 ()4 4'a 4#me(s#M%(as! i + t 7 r o g r a 2 , y a :Bi,cl>.e S!*gl>t.9Tty7e.ef +tr>ct{i,t x,y;}7oi,t2ct{float r,g,/;}color_t;Foi. +etColor(color_t col){glColor3f(col.r, col.g, col./);}Foi. .ra-4olygo,(7oi,t2+er.ra-();gl>t6-a7$>ffer+();}i,t 2ai,(i,t argc, c9ar PPargF){gl>t(,it(Qargc,argF);**(,i+iali+a+i )ool3itgl>t(,it.>t PP (0.2E, 0.2E, 0.0) a,. (0.OE, 0.OE, 0.0) P*glColor3f (1.0, 1.0, 0.0);*********7e2/e,t>3 +egitiga +a2a 3a3i*****gl$egi,(!_!(5'_!""4);glVertex3f (0.0, 0.0, 0.0);glVertex3f (0.3, 0.C, 0.0);glVertex3f (0.M, 0.0, 0.0);gl',.();*********7e2/e,t>3 +egitiga +a2a 3a3i*******gl&l>+9 (); }Foi. 3>,ci(>,+ig,e. c9ar 3ey, i,t x, i,t y) {+-itc9 (3ey) {ca+e 2O : ca+e HWH: exit(0); /rea3; } gl>t4o+t#e.i+7lay(); }59i,t 2ai,(i,t argc, c9ar PargF[]) {gl>t(,it=i,.o-6iDe(200,200);gl>t(,it=i,.o-4o+itio,(100,100);gl>t(,it