Kamis, Oktober 06, 2011

Resume Pertemuan ke - 2 Kuliah Komputer Grafik
(Cucun Very Angkoso S.Kom, M.Kom)


Dalam pertemuan ke dua mata kuliah KomGraf  kali ini, kita akan mengenal dan membahas lebih jauh tentang apa itu Open GL, GLUT, API  dan  Microsoft VISUAL C++. Sehingga nantinya kita akan mengetahui konsep dasar dari aplikasi-aplikasi diatas ini, yang nantinya akan dapat digunakan dalam pembuatan aplikasi-aplikasi atau project-project lain yang berhubungan dengan mata kuliah KomGraf ini.

Open GL

Apakah Open GL itu??

Open GL adalah API yang dikenalkan oleh SGI (Silicon Graphic Inc)  pertama kali pada tahun 1980. Awalnya Open GL diciptakan hanya untuk mendukung proses rendering untuk computer grafaik produksi SGI.Namun akhirnya dijadikan standart bagi selurh perusahaan hardware dan software d seluruh dunia.

OpenGL (Open Graphics Library) adalah spesifikasi standar yang mendefinisikan sebuah cross-bahasa, cross-platform API untuk menulis aplikasi yang menghasilkan komputer 2D dan 3D grafis. Antarmuka terdiri dari lebih dari 250 panggilan fungsi yang berbeda yang dapat digunakan untuk menggambar tiga dimensi yang kompleks adegan-adegan dari primitif sederhana. OpenGL dikembangkan oleh Silicon Graphics Inc (SGI) pada tahun 1992 [2] dan secara luas digunakan dalam CAD, virtual reality, visualisasi ilmiah, visualisasi informasi, dan simulasi penerbangan. Hal ini juga digunakan dalam video game, di mana bersaing dengan Direct3D on Microsoft Windows platform (lihat vs OpenGL Direct3D). OpenGL dikelola oleh sebuah teknologi nirlaba konsorsium yaitu Khronos Group.
Definisi Open GL - Open Graphics Library adalah spesifikasi standar yang dapat di definisikan pada lintas bahasa pemrograman, lintas platform API untuk write, dan juga menjalankan aplikasi untuk grafis 2D dan 3D.

Open GL terdiri dari 250 fungsi berbeda yang dapat digunakan untuk menampilkan scene 3D yang kompleks pada komputer biasa. Open GL secara luas digunakan dalam CAD, virtual reality, visualisasi ilmiah, visualisasi informasi, simulasi penerbangan, dan juga dalam game. 


OpenGL (Open Graphics Library) adalah standar API yang dapat digunakan untuk membuat aplikasi berbasis grafik, baik dua dimensi (2D) maupun tiga dimensi (3D). OpenGL ini bersifat cross-platform, artinya dapat dijalankan pada berbagai platform sistem operasi yang ada saat ini. Untuk informasi lebih lengkap mengenai hal-hal yang terkait dengan OpenGL dapat dibaca pada http://en.wikipedia.org/wiki/Opengl. Atau dapat juga dicari pada mesin pencari, contoh: google. Karena memang OpenGL sendiri telah banyak dibahas oleh kalangan praktisi, akademisi, maupun industri, yang notabene berkutat dalam implementasi pemrograman grafik 2D dan 3D. Untuk membuat aplikasi menggunakan OpenGL, terlebih dahulu kita membutuhkan suatu konsepsi interfacing dalam implementasinya. Salah satu cara yang sudah umum digunakan adalah dengan membuat window-based OpenGL.

Salah satu kelebihan dari Open GL adalah Fleksibilitas, sehingga Open GL  dapat digunakan pada hampir semua jenis operating system mulai Windows , Linux, sampai MacOS X.

GLUT (Graphic Library Utility Toolkit)

Untuk dapat membuat konsep windowing pada OpenGL, kita memerlukan tool tertentu. Yang kita gunakan kali ini adalah GLUT (OpenGL Utility Toolkit). GLUT dipilih karena di dalamnya telah terdapat banyak fungsi yang dapat dipakai untuk pembuatan application window. Disamping itu, windowing pada GLUT juga bersifat independen terhadap sistem operasi, sehingga kita tidak perlu repot-repot untuk mengubah kode program jika diterapkan pada sistem operasi yang berbeda.OpenGL perpustakaan hanya berisi perintah render yang independen terhadap sistem operasi. Hal ini tidak mampu membuka jendela atau menanggapi interupsi dari mouse atau keyboard. GLUT perpustakaan tersebut (Kilgard, 1996) menyediakan seperti sebuah fasilitas dan tersedia dari situs Mesa telah disebutkan dan telah di sertai juga
di situs web dijelaskan dalam Lampiran A. Perintah untuk mendirikan sebuah jendela di mana kita
dapat membuat objek adalah sebagai berikut.










Toolkit yang digunakan di atas dapat dibagi menjadi dua komponen: Window penciptaan dan inisialisasi dan mendaftar dan pengolahan callback fungsi yang terkait dengan perangkat yang berbeda pada komputer. glutInit () Menginisialisasi yang
GLUT perpustakaan dan harus panggilan fungsi pertama. glutInitDisplayMode () mendefinisikan
mode tampilan seperti jenis penyimpanan piksel dan apakah buffer tunggal USU sekutu digunakan untuk menampilkan statis atau double buffer ketika menggunakan animasi. glutInitWindowSize (lebar, tinggi) menentukan ukuran jendela dan glutInitWindowPosition ()
menentukan posisi jendela GLUT dalam (x, y) piksel pada layar. Ini adalah
baik ide untuk posisi ini jauh dari jendela konsol jika input / output yang terjadi
melalui kedua. glutCreateWindow () menciptakan jendela ukuran didefinisikan dengan judul
bar dan nama.
Toolkit yang digunakan di atas dapat dibagi menjadi dua komponen: Window penciptaan dan inisialisasi dan mendaftar dan pengolahan callback fungsi yang terkait dengan perangkat yang berbeda pada komputer. glutInit () Menginisialisasi yang
GLUT perpustakaan dan harus panggilan fungsi pertama. glutInitDisplayMode () mendefinisikan
mode tampilan seperti jenis penyimpanan piksel dan apakah buffer tunggal USU sekutu digunakan untuk menampilkan statis atau double buffer ketika menggunakan animasi. glutInitWindowSize (lebar, tinggi) menentukan ukuran jendela dan glutInitWindowPosition ()
menentukan posisi jendela GLUT dalam (x, y) piksel pada layar. Ini adalah
baik ide untuk posisi ini jauh dari jendela konsol jika input / output yang terjadi
melalui kedua. glutCreateWindow () menciptakan jendela ukuran didefinisikan dengan judul
bar dan nama.

Jendela Manajemen

Lima rutinitas melakukan tugas-tugas yang diperlukan untuk menginisialisasi jendela.
glutInit (int argc *, char ** argv) menginisialisasi GLUT dan proses argumen baris perintah apapun (untuk
       X, ini akan menjadi pilihan seperti-layar dan-geometri). glutInit () harus dipanggil sebelum yang lain
       GLUT rutin.
 
glutInitDisplayMode (modus unsigned int) menentukan apakah akan menggunakan RGBA atau warna-warna indeks
       model. Anda juga dapat menentukan apakah Anda ingin jendela tunggal atau double-buffer. (Jika Anda
       bekerja dalam warna-indeks mode, Anda akan ingin memuat warna-warna tertentu ke dalam peta warna, penggunaan
       glutSetColor () untuk melakukan hal ini.) Akhirnya, Anda dapat menggunakan rutin ini untuk menunjukkan bahwa Anda ingin jendela
       untuk memiliki kedalaman yang terkait, stensil, dan / atau buffer akumulasi. Sebagai contoh, jika Anda ingin
       jendela dengan double buffering, model warna RGBA, dan kedalaman buffer, yang Anda sebut
       glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH).
 

glutInitWindowPosition(int x, int y) specifies the screen location for the upper-left corner of your
      window.  
glutInitWindowSize (int lebar, int ukuran) menentukan ukuran, dalam pixel, jendela Anda.

       int glutCreateWindow (char * string) menciptakan jendela dengan konteks OpenGL. Ia mengembalikan
       unik pengenal untuk jendela baru. Jadilah memperingatkan: Sampai glutMainLoop () disebut (lihat berikutnya
       bagian), jendela belum ditampilkan.
 

Tampilan Callback

glutDisplayFunc (void (* func) (void)) merupakan acara pertama dan paling penting fungsi callback Anda akan
melihat. Setiap kali GLUT menentukan isi dari jendela perlu ditampilkan kembali, callback
fungsi didaftarkan oleh glutDisplayFunc () dijalankan. Oleh karena itu, Anda harus meletakkan semua rutinitas Anda
perlu redraw adegan dalam fungsi callback tampilan.

Jika program Anda mengubah isi dari jendela, kadang-kadang Anda harus menghubungi
glutPostRedisplay (void), yang memberikan glutMainLoop () sentuhan untuk memanggil balik layar terdaftar
pada kesempatan berikutnya...

Program sederhana OPEN GL dengan menggunakan GLUT

 
Penaganan Perintah  Penginputan

Anda dapat menggunakan rutinitas untuk mendaftar perintah callback yang dipanggil ketika peristiwa tertentu terjadi.

       glutReshapeFunc (void (* func) (int w, int h)) menunjukkan tindakan apa yang harus diambil ketika
       jendela adalah ukurannya.

       glutKeyboardFunc (void (* func) (unsigned char key, int x, int y)) dan glutMouseFunc (void
       (* func) (int tombol, negara int, int x, int y)) memungkinkan Anda untuk link tombol keyboard atau tombol mouse dengan
       rutin yang dipanggil ketika tombol kunci atau mouse ditekan atau dilepaskan.

       glutMotionFunc (void (* func) (int x, int y)) register rutin untuk menelepon kembali ketika mouse
       pindah sementara tombol mouse juga ditekan.

Mengelola Proses Latar Belakang

Anda dapat menentukan fungsi yang akan dieksekusi jika tidak ada peristiwa lain yang tertunda - misalnya, ketika
loop acara idle - dengan glutIdleFunc (void (* func) (void)). Rutin ini membutuhkan pointer
dengan fungsi sebagai argumen satu-satunya. Pass dalam NULL (nol) untuk menonaktifkan eksekusi dari fungsi.

Menggambar Obyek Tiga-Dimensi
GLUT termasuk beberapa rutinitas untuk menggambar tiga-dimensi benda:

   kerucut  ikosahedron  teko

   kubus   segi delapan   tetrahedron

   Dodekahedron   lingkup  torus

Anda dapat menarik benda-benda sebagai wireframes atau benda berbayang seperti yang solid dengan normals permukaan didefinisikan.Misalnya, rutinitas untuk kubus dan bola adalah sebagai berikut:

  void glutWireCube (GLdouble ukuran);

  void glutSolidCube (GLdouble ukuran);

  void glutWireSphere (GLdouble jari-jari, kilatan irisan, kilatan tumpukan);
 
   void glutSolidSphere (GLdouble jari-jari, kilatan irisan, kilatan tumpukan);


 API (Application Program Interface)
Dalam beberapa contoh program sederhana, dibutuhkan setidaknya ribuan system calls per detik. Oleh karena itu Kebanyakan programmer membuat aplikasi dengan menggunakan Application Programming Interface(API). Dalam API itu terdapat fungsi-fungsi/perintah-perintah untuk menggantikan bahasa yang digunakan dalam system calls dengan bahasa yang lebih terstruktur dan mudah dimengerti oleh programmer. Fungsi yang dibuat dengan menggunakan API tersebut kemudian akan memanggil system calls sesuai dengan sistem operasinya. Tidak tertutup kemungkinan nama dari system calls sama dengan nama di API.
Keuntungan memprogram dengan menggunakan API adalah:
  • Portabilitas. Programmer yang menggunakan API dapat menjalankan programnya dalam sistem operasi mana saja asalkan sudah ter- install API tersebut. Sedangkan system call berbeda antar sistem operasi, dengan catatan dalam implementasinya mungkin saja berbeda.
  • Lebih Mudah Dimengerti. API menggunakan bahasa yang lebih terstruktur dan mudah dimengerti daripada bahasa system call. Hal ini sangat penting dalam hal editing dan pengembangan.
System call interface ini berfungsi sebagai penghubung antara API dan system call yang dimengerti oleh sistem operasi. System call interface ini akan menerjemahkan perintah dalam API dan kemudian akan memanggil system calls yang diperlukan.
Untuk membuka suatu file tersebut user menggunakan program yang telah dibuat dengan menggunakan bantuan API, maka perintah dari user tersebut diterjemahkan dulu oleh program menjadi perintah open(). Perintah open() ini merupakan perintah dari API dan bukan perintah yang langsung dimengerti oleh kernel sistem operasi. Oleh karena itu, agar keinginan user dapat dimengerti oleh sistem operasi, maka perintah open() tadi diterjemahkan ke dalam bentuk system call oleh system call interface. Implementasi perintah open() tadi bisa bermacam-macam tergantung dari sistem operasi yang kita gunakan.

API dapat di fungsikan kedalam beberapa macam kategori yaitu :

  •     Secara umum, set lengkap API yang dibundel di perpustakaan sebuah bahasa pemrograman, misalnya Template Library Standar dalam C + + atau Java API.
  •      Secara spesifik, dimaksudkan untuk mengatasi masalah yang spesifik, misalnya Google Maps API atau Java API untuk XML Web Services.
  •      Tergantung pada bahasa, berarti hanya tersedia dengan menggunakan sintaks dan elemen dari suatu bahasa tertentu, yang membuat API lebih nyaman untuk digunakan.
  •      Bahasa-independen, yang ditulis sehingga dapat dipanggil dari beberapa bahasa pemrograman. Ini merupakan fitur yang diinginkan untuk sebuah API berorientasi-layanan yang tidak terikat dengan proses tertentu atau sistem dan dapat diberikan sebagai prosedur panggilan jarak jauh atau layanan web. Sebagai contoh, sebuah website yang memungkinkan pengguna untuk meninjau restoran lokal mampu lapisan review mereka di atas peta yang diambil dari Google Maps, karena Google Maps memiliki API yang memfasilitasi fungsi ini. Google Maps 'API mengontrol informasi apa situs pihak ketiga dapat menggunakan dan bagaimana mereka dapat menggunakannya.
Istilah API dapat digunakan untuk merujuk ke antarmuka lengkap, fungsi tunggal, atau bahkan satu set API yang disediakan oleh organisasi. Dengan demikian, ruang lingkup makna biasanya ditentukan oleh konteks pemakaian.


Microsoft Visual C++
 
C++ diciptakan oleh Bjarne Stroustrup di laboratorium Bell pada awal tahun 1980-an, sebagai pengembangan dari bahasa C. Saat ini, C++ merupakan salah satu bahasa yang paling populer untuk pengembangan software berbasis OOP. Kompiler untuk C++ telah banyak beredar di pasaran. Software developer yang paling diminati adalah Borland Inc. dan Microsoft Corp. Produk dari Borland untuk kompiler C++ adalah Turbo C++, Borland C++, Borland C++ Builder. Sedangkan dari Microsoft adalah Ms. Visual C++. Walaupun banyak kompiler yang tersedia, namun pada intinya bahasa pemrograman yang dipakai adalah C++. Sebelum mulai melakukan kode program, sebaiknya diingat bahwa C++ bersifat “case sensitive”, yang artinya huruf besar dan huruf kecil dibedakan.

STRUKTUR BAHASA C++
Struktur penulisan bahasa C dapat dilihat dari contoh berikut :

// komentar …
#include
#include
void main ()
{
cout << "Program Pertama";
cout << "Selamat Belajar C++";
getch();
}

// Komentar
merupakan sebuah baris komentar. Semua baris, yang ditandai dengan dua buah tanda slash (//), akan dianggap sebagai baris komentar dan tidak akan berpengaruh pada hasil. Biasanya, baris komentar dipakai oleh programmer untuk memberikan penjelasan tentang program.
Baris komentar dalam C++, selain ditandai dengan (//) juga dapat ditandai dengan (/*….*/) ini digunakan apabila komentar tersebut lebih dari satu baris

#include
pernyataan yang diawali dengan tanda (#) merupakan pernyataan untuk menyertakan preprocessor. Pernyataan ini bukan untuk dieksekusi. #include berarti memerintahkan kompiler untuk menyertakan file header iostream.h. Dalam file header ini, terdapat beberapa fungsi standar yang dipakai dalam proses input dan output. Seperti misalnya perintah cout yang dipakai dalam program utama.

void main ()
baris ini menandai dimulainya kompiler akan mengeksekusi program. Pernyataan main sebagai penanda program utama. Adalah suatu keharusan, dimana sebuah program yang ditulis dalam bahasa C++memiliki sebuah main. main diikuti oleh sebuah tanda kurung () karena main merupakan sebuah fungsi. Dalam bahasa C++ sebuah fungsi harus diikuti dengan tanda (), yang nantinya dapat berisi argumen. Dan sintak formalnya, sebuah fungsi dimulai dengan tanda {}, seperti dalam contoh program.
cout << "Program Pertama";
cout << "Selamat Belajar C++";
perintah ini merupakan hal yang akan dieksekusi oleh compiler dan merupakan perintah yang akan dikerjakan. cout termasuk dalam file iostream. cout merupakan perintah untuk menampilkan ke layer. Perlu diingat, bahwa setiap pernyataan dalam C++ harus diakhiri dengan tanda semicolon (;) untuk memisahkan antara pernyataan satu dengan pernyataan lainnya.
getch();
digunakan untuk meminta inputtan dari keyboard.
return 0;
pernyataan return akan menyebabkan fungsi main() menghentikan program dan mengembalikan nilai kepada main. Dalam hal ini, yang dikembalikan adalah nilai 0.
TIPE DATA
Terdapat 5 tipe data bawaan dari bahasa C, yaitu : void, integer, float, double, dan char.
void diartikan sebagai tanpa tipe data dan tanpa pengembalian nilai
int bilangan bulat (integer)
float bilangan pecahan (floating point)
double bilangan pecahan dengan jangkauan data yang lebih luas
char Karakter
Sedangkan C++ sendiri menambahkan dua buah tipe data lagi, yakni: bool dan wchar_t.
bool isi bilangan Boolean (True dan False)
wchar_t wide character
VARIABEL
Berbeda dengan pendeklarasian variabel di bahasa pemrograman lain, dalam C++ sebelum mendeklarasikan variabel, hal pertama yang harus dideklarasikan adalah tipe data yang akan digunakan untuk menampung data.
Format penulisannya adalah :
Tipe_data pengenal = nilai ;
Sebagai contoh :
int a;
float nomor;
atau dapat juga pemberian nilai awal untuk variable dilakukan pada saat deklarasi,
contoh :
int a=10;
char s=’a’;
KONSTANTA
Konstanta mirip dengan variable, namun memiliki nilai tetap. Konstanta dapat berupa nilai Integer, Float, Karakter dan String. Pendeklarasian konstanta dapat dilakukan dengan 2 cara :
menggunakan (#define)
deklarasi konstanta dengan cara ini, lebih gampang dilakukan karena akan menyertakan
#define sebagai preprocessor directive. Dan sintaknya diletakkan bersama – sama dengan pernyataan #include (di atas main()).
Format penulisannya adalah :
#define pengenal nilai
Contoh penggunaan :
#define phi 3.14159265
#define Newline ‘\n’
#define lebar 100
pendeklarasian dengan #define tanpa diperlukan adanya tanda = untuk memasukkan nilai ke dalam pengenal dan juga tanpa diakhiri dengan tanda semicolon(;).
menggunakan (const)
Sedangkan dengan kata kunci const, pendeklarasian konstanta mirip dengan deklarasi variable yang ditambah kata depan const.
Contoh :
const int lebar = 100;
const char tab = ‘\t’;
const zip = 1212;
Untuk contoh terakhir, deklarasi variable zip yang tanpa tipe data, maka compiler akan secara otomatis memasukkannya ke dalam tipe int.
KARAKTER & STRING LITERAL
String adalah gabungan dari karakter
Contoh : “ Belajar “ à Literal String
“ B “ à Karakter
Panjang String
strlen() à nama fungsi untuk menghitung panjang string
Fungsi strlen() dideklarasikan dalam file string.h.
Jadi bila anda ingin menggunakan fungsi strlen(),
maka prepocessor directive #include
harus dimasukkan dalam program diatas main().
#include
#include
#include
void main()
{
cout << strlen ("Selamat Sore \n") <<endl;
cout << strlen ("Selamat Sore ") <<endl;
cout << strlen ("Selamat ") <<endl;
cout << strlen ("Sore ") <<endl;
cout << strlen ("") <<endl;
getch();
}
TIPE BENTUKAN
Merupakan tipe yang dibentuk dari tipe dasar. Seperti Tipe Struktur.
TIPE STRUKTUR
Suatu tipe data yang merupakan kumpulan dari tipe data lainnya. Struktur terdiri dari data yang disebut field. Field – field tersebut digabungkan menjadi satu tujuan untuk
kemudahan dalam operasi.
Bentuk umumnya :
tyedef struct{ tipe nama_field1;
tipe nama_field2;
tipe nama_field3;
. . . .
#include
#include
typedef struct { int tanggal;
int bulan;
int tahun;
} data_tunggal;
data_tunggal tanggal_lahir;
void main()
{
tanggal_lahir.tanggal = 8;
tanggal_lahir.bulan = 2;
tanggal_lahir.tahun=2005;
cout << tanggal_lahir.tanggal << '/'
<< tanggal_lahir.bulan << '/'
<< tanggal_lahir.tahun << '/' <<endl;
getch();
}
6. OPERATOR
Dalam C++, terdapat berbagai macam operator yang dapat dimanfaatkan dalam aplikasi.
Operator Assign (=)
Operator (=), akan memberikan nilai ke dalam suatu variable
lvalue a = 5 rvalue
artinya memberikan nilai 5 ke dalam variable a. Sebelah kiri tanda = dalam pernyataan di atas, dikenal dengan lvalue (left value) dan di sebelah kanan tanda = dikenal dengan rvalue (right value). lvalue harus selalu berupa variable, sedangkan rvalue dapat berupa variable, nilai, konstanta, hasil operasi ataupun kombinasinya
Operator Aritmatika ( +, -, *, /, %)
Untuk operator %, sama dengan modulus, yaitu untuk mengetahui sisa hasil bagi. Misalnya a = 11 % 3, maka variable a akan terisi nilai 2 karena sisa hasil bagi 11 dan 3 adalah 2.
Operator Majemuk ( +=, -=, *=, /=, %=, <>=, &=, |= )
Dalam C++, operasi aritmatika dapat disederhanakan penulisannya dengan format penulisan operator majemuk.
Misalnya :
a += 5 sama artinya dengan menuliskan a = a+5
a *= 5 sama artinya dengan menuliskan a = a*5
a /= 5 sama artinya dengan menuliskan a = a/5
a %= 5 sama artinya dgn menuliskan a = a % 5
Operator Penaikan dan Penurunan (++ dan –)
Operator penaikan (++) akan menaikkan atau menambahkan 1 nilai variable. Sedangkan operator (–) akan menurunkan atau mengurangi 1 nilai variable.
Misalnya :
a++;
a+=1;
a=a+1;
untuk ketiga pernyataan tersebut, memiliki arti yang sama yaitu menaikkan 1 nilai variable 1.
Karakteristik dari operator ini adalah dapat dipakai di awal (++a) atau di akhir (–a) variable. Untuk penggunaan biasa, mungkin tidak akan ditemui perbedaan hasil dari cara penulisannya. Namun untuk beberapa operasi nantinya harus diperhatikan cara peletakan operator ini, karena akan berpengaruh terhadap hasil.
Operator Relasional (==, !=, >, =, 6)) mengembalikan nilai false, karena (true && false)
untuk logika NOT (!), contohnya !(5==5) akan mengembalikan nilai false, karena !(true).
Operator Kondisional ( ? )
Format penulisan operator kondisional adalah : kondisi ? hasil1 : hasil2
Jika kondisi benar maka yang dijalankan adalah hasil1 dan jika kondisi salah, maka akan dijalankan hasil2

Contoh hasil dari bentuk Segitiga (Triangle) menggunakan script Visual C++ dan Open GL menggunakan GLUT (Graphic Library Utility Tools)!





 








2 komentar:

Anonim mengatakan...

thank's gan sangat membantu bagi saya yg pemula.

Satya mengatakan...

Bro Bisa mnta pncerahannya? kenapa pembuatan sebuah gambar itu di c++ borland menggunakan gl(glut) mengapa tidak yang lain, trus contohnya apa?