Pengantar Pemrograman OpenGL GLUT C++ di Linux


Bismillahirrahmanirrahim.

Tulisan ini tersedia dalam PDF.

geanyTulisan ini didedikasikan untuk Anda yang ingin memrogram OpenGL dengan GLUT (GL Utility Toolkit) di Linux. Jika Anda terbiasa memrogram di WIndows dengan Microsoft Visual C++ dan ingin melakukannya di Linux, maka tulisan ini sesuai untuk Anda. Tulisan ini memperkenalkan kepada Anda OpenGL, GLUT, masalah lisensi GLUT, FreeGLUT sebagai alternatifnya, instalasi FreeGLUT di Ubuntu, pengaturan IDE Geany untuk kompilasi OpenGL dengan g++, dan tentunya contoh-contoh programnya. Semoga tulisan ini bermanfaat.

Isi Tulisan Ini

  1. Apa Itu OpenGL dan GLUT
  2. Bagaimana Pemrograman OpenGL Itu
  3. Masalah Lisensi GLUT
  4. FreeGLUT Sebagai Solusi Terbaik
  5. Menginstal OpenGL dan FreeGLUT di Ubuntu
  6. Menginstal IDE Geany untuk Menulis Kode
  7. Mengatur Konfigurasi Build Options Geany g++
  8. Contoh-Contoh Kode Program OpenGL FreeGLUT
  9. Membaca dan Memahami Dokumentasi Teknis OpenGL
  10. Kumpulan Referensi Lanjutan OpenGL dan GLUT
  11. Referensi Tulisan Ini

1. Apa  Itu OpenGL dan GLUT

OpenGL adalah Open Graphic LIbrary. Ia adalah library, kumpulan header-header yang berisi fungsi khusus, yang berguna untuk membuat grafis di komputer. OpenGL juga merupakan API (Application Programming Interface) yang setara dengan Microsoft Direct3D. Dengan OpenGL, orang bisa membuat grafis digital, animasi, hingga game 2D/3D sebagaimana biasa dilakukan dengan Direct3D juga. OpenGL bisa digunakan dengan bahasa pemrograman C, C++, Python, dan FORTRAN. Tulisan ini hanya membahas OpenGL dengan C++.

GLUT (GL Utility Toolkit) adalah pustaka yang dibuat untuk membantu OpenGL dalam hal I/O ke dalam sistem operasi secara low-level. Dengan kata lain, GLUT yang bertanggung jawab membuat jendela untuk OpenGL. GLUT juga yang bertanggung jawab memroses masukan dari keyboard/mouse pengguna untuk mengendalikan program OpenGL. Tulisan ini akan dititikberatkan pada GLUT daripada OpenGL.

2. Bagaimana Pemrograman OpenGL itu

Pemrograman C++ dengan pustaka OpenGL itu dilakukan untuk menghasilkan suatu gambar di monitor secara manual. Anda akan menjumpai subpustaka-subpustaka di dalam OpenGL  seperti GLUT, GLU, dan GLEW. Secara singkat, Anda akan menemukan fungsi-fungsi program seperti berikut:

  • glBegin()
  • glEnd()
  • glVertex2f()
  • glClear()

digunakan pada program-program C++ yang memanfaatkan OpenGL.  Sederhananya, Anda akan membuat gambar, animasi, atau game dengan kendali 100% di tangan Anda karena menggunakan OpenGL. Jika Anda terbiasa membuat gambar dengan GIMP atau Krita di Linux, maka secara kasar Anda akan membuat gambar per pikselnya di pemrograman OpenGL. Namun keuntungan menggunakan OpenGL adalah Anda tidak perlu menulis kode gambar per piksel karena sudah dilakukan oleh fungsi-fungsi yang tersedia banyak di dalam OpenGL. Panggil fungsi itu ke dalam kode C++ dan jadilah satu gambar. Itulah kegunaan pustaka OpenGL.

Perlu diingat, fungsi-fungsi dalam pemrograman OpenGL itu sangat khas. Di dalam OpenGL, Anda akan menemukan fungsi-fungsi yang selalu diawali dengan gl seperti:

  • glTranslatef()
  • glClear()

GLUT

Sedangkan di dalam GLUT, Anda akan temukan fungsi-fungsinya berawalan glut seperti:

  • glutMainLoop()
  • glutDisplayFunc()
  • glutInit()
  • glutCreateWindow()

GLU

Selain keduanya, Anda juga akan bertemu dengan GLU (OpenGL Utility Library) yakni pustaka inti OpenGL yang merupakan pustaka grafisnya. Pustaka ini mudah dikenali dengan fungsi-fungsinya yang selalu berawalan glu seperti:

  • gluOrtho2D()
  • gluPerspective()
  • gluPickMatrix()

GLEW

GLEW adalah OpenGL Extension Wrangler, suatu pustaka yang bertugas memuat ekstensi-ekstensi (baca: plugin) OpenGL ke dalam kode program. GLEW digunakan dengan #include <GL/glew.h>. Di dalam GLEW, ada fungsi utama glewInit(). Dan Anda bisa memanggil ekstensi OpenGL dengan memakai variabel GLEW_{nama_ekstensinya}.

Singkatnya, pemrograman OpenGL sangat bergantung pada fungsi-fungsi. Maka mau tidak mau, Anda harus tahu (bukan hafal) fungsi-fungsi yang disediakan oleh OpenGL. Sedangkan Anda tidak harus memulai semua pemrograman dari nol karena sudah disediakan dokumentasi resmi dan sangat banyak tersedia contoh-contoh kode program OpenGL di internet. Cukup salin dan jalankan. Maka Anda akan menemukan bahwa siklus pemrograman OpenGL itu sederhananya demikian:

  1. Dapatkan contoh kode program.
  2. Jalankan.
  3. Baca dokumentasi OpenGL (baca fungsi yang dibutuhkan).
  4. Kembali ke tahap 1.

Jika Anda kesulitan menemukan dokumentasi OpenGL yang bagus, gunakan Google untuk mencarinya seperti berikut.

wavemon79

Perlu diketahui, OpenGL adalah pustaka yang sangat terkenal. Jadi akan sangat mudah menemukan contoh program dan panduan di internet. Anda pun bisa mulai membiasakan diri membaca dokumentasi referensi pustaka OpenGL. Berikut ini skrinsot yang diambil dari halaman http://www.opengl.org/sdk/docs/man4/.

wavemon80

3. Masalah Lisensi GLUT

GLUT sendiri adalah pustaka yang proprietari. Selain itu, GLUT telah berakhir pengembangannya pada 1998. Permasalahan pentingnya, lisensi GLUT tidak mengizinkan distribusi pustaka yang telah dimodifikasi.

4. FreeGLUT Sebagai Solusi Terbaik

Karena masalah GLUT, komunitas open source berinisiatif membuat implementasi GLUT yang open source dari nol. Akhirnya muncullah FreeGLUT yang kompatibel 100% (artinya kode fungsi-fungsinya sama) dengan GLUT. FreeGLUT memiliki kelebihan di sisi pengembangan yang aktif dan dukungan komunitas yang besar selain dia open source. Sebagai kabar baik, FreeGLUT telah tersedia di repositori Ubuntu sejak lama.

OpenGL

Logo OpenGL

FreeGLUT

Logo FreeGLUT

Sebenarnya masih ada solusi selain FreeGLUT yaitu OpenGLUT. Namun ia sendiri sudah berhenti dikembangkan pada 2005. Oleh karena itu, FreeGLUT adalah satu-satunya solusi dan yang terbaik untuk memrogram OpenGL di Linux. Tulisan ini akan menyebut FreeGLUT sebagai GLUT untuk memudahkan penjelasan.

5. Menginstal OpenGL dan FreeGLUT di Ubuntu

Instalasi GLUT di Ubuntu sangat mudah. Cukup diselesaikan dalam 1 baris perintah saja (pastikan komputer terhubung ke internet):

sudo apt-get install freeglut3 freeglut3-dev libglew1.5 libglew1.5-dev libglu1-mesa libglu1-mesa-dev libgl1-mesa-glx libgl1-mesa-dev

wavemon81

Perintah tersebut diadakan karena kita memerlukan paket-paket berikut untuk menginstal GLUT di Ubuntu:

  1. freeglut3
  2. freeglut3-dev
  3. libglew1.5
  4. libglew1.5-dev
  5. libglu1-mesa
  6. libglu1-mesa-dev
  7. libgl1-mesa-glx
  8. libgl1-mesa-dev

Karena kita akan memrogram C++, maka mutlak kita membutuhkan kompiler C++ juga. Di Linux, kompiler C++ terbaik adalah g++. Maka instal saja build-essential dan Anda akan memperoleh semuanya.

sudo apt-get install build-essential

wavemon82

Catatan 1: jika Anda tidak terhubung ke internet, maka gunakanlah cara offline untuk menginstal paket-paket yang dibutuhkan. Dijamin berhasil jika dilaksanakan dengan benar. Silakan pilih tutorial satu atau tutorial dua

Catatan 2: saya menulis tulisan ini pada Ubuntu 12.04 32 bit pada April 2014. Mungkin pada masa depan akan ada perubahan nama paket karena ada pemutakhiran dari developer. 

6. Menginstal IDE Geany untuk Menulis Kode

Jika di Windows Anda terbiasa dengan Microsoft Visual C++, maka di Linux bisa jadi Anda memperoleh penganti yang lebih baik. Dan Anda punya banyak pilihan IDE. Tulisan ini akan menggunakan Geany sebagai IDE untuk menulis, mengompilasi, dan men-debug program C++ OpenGL. Jika tidak suka Geany, Anda bisa menggantinya dengan Codelite, Codeblocks, KDevelop, dan lain-lain. Semuanya tersedia di repositori Ubuntu. Adapun perintah instalasi Geany, sama sederhananya dengan perintah sebelumnya:

sudo apt-get install geany

Berikut ini skrinsot Geany on action:

wavemon83

7. Mengatur Konfigurasi Build Options Geany g++

Untuk bisa memrogram, Anda harus menggunakan kompiler untuk mengubah kode sumber menjadi biner. Untuk melakukan itu, Anda harus tahu perintah kompilasinya. Setelah tahu, Anda harus memasukkan perintah itu ke dalam build options dari IDE Anda. Apa tujuannya? Supaya jika ditekan tombol Compile, perintah kompilasi akan dikerjakan oleh IDE. Begitu juga dengan tombol Build dan Run. Di sini, karena kita menggunakan bahasa C++, maka kita menggunakan kompiler g++. Lalu kita atur supaya perintah kompilasi dan build milik g++ dijalankan otomatis oleh Geany dengan menuliskan perintah g++ ke dalam menu Build > Set Build Options. Ini harus kita lakukan supaya bisa memrogram semudah Microsoft Visual C++ dengan klik untuk kompilasi.

Masukkan dua perintah berikut pada tempatnya masing-masing:

  • Perintah Compile: g++ -Wall -c “%f”
  • Perintah Build: g++ -Wall -o “%e” “%f” -lglut -lGLEW -lGLU

Perhatikan gambar berikut untuk mengetahui di mana tempat menuliskannya.

wavemon90

wavemon89

Adapun maksud perintah g++ Compile di atas adalah:

  • -Wall : Warning All, mengatur supaya g++ melaporkan semua pesan warning.
  • -c : compile, mengatur supaya g++ mengompilasikan kode sumber tetapi tidak melakukan linking.
  • “%f” : file, ini adalah tanda yang hanya dimengerti oleh Geany. Ini digunakan sebagai variabel supaya Geany bisa mengompilasikan kode sumber dengan nama berkas apa pun. Tanpa menggunakan tanda “%f”, Anda harus mengganti Build Options untuk setiap berkas berbeda.

Adapun maksud perintah g++ Build di atas adalah:

  • -Wall : lihat atas.
  • -o : object, menciptakan hasil keluaran bernama file. Nama file akan ditentukan oleh argumen setelah -o ini.
  • “%e” : executable, ini argumen setelah -o yang nantinya akan menjadi nama eksekutabel yang dihasilkan. Tanda “%e” adalah tanda yang hanya dimengerti oleh Geany.
  • “%f” : file, nama berkas kode sumber.
  • -lglut : library glut, opsi spesial g++ untuk menyertakan pustaka glut dari dalam sistem ke dalam linking ketika build. Tanpa ini, Anda tidak akan bisa melakukan include terhadap <GL/glut.h> di dalam kode sumber.
  • -lGLEW : library GLEW, opsi spesial g++ untuk menyertakan pustaka GLEW yang dibutuhkan oleh glut. Lihat kembali penjelasan GLEW  di awal tulisan.
  • -lGLU : library GLU, opsi spesial g++ untuk menyertakan pustaka GLU yang dibutuhkan oleh glut. Lihat kembali penjelasan GLU di awal tulisan.

8. Contoh-Contoh Kode Program GLUT

compressed_opengl-glut-geany

Berikut bagian paling penting dari tulisan ini. Anda harus mencoba kode sumber-kode sumber contoh OpenGL supaya memahami pemrogramannya. Perhatikannya kemiripan di antara kode-kode berikut dan temukanlah kuncinya. Saya telah berusaha memberi komentar pada setiap baris kode sebagai penjelasan.

8.1 Garis Horizontal

opengl-glut-geany5

//Program Garis Horizontal
#include <GL/glut.h>						//pemanggilan pustaka glut.h sekaligus gl.h milik OpenGL 

void display()								//fungsi display() salah satu fungsi terpenting dalam program OpenGL
{
	glClearColor(0.0f, 0.1f, 0.0f, 1.0f);	//glClearColor() berguna untuk membersihkan kanvas lalu mengatur warnanya (RED, GREEN, BLUE)
	glClear(GL_COLOR_BUFFER_BIT); 			//

	glBegin(GL_LINES);						//glBegin() dan glEnd() fungsi yang dipakai untuk membuat objek geometri.
		glVertex2f(100.0, 0.0);				//variabel GL_LINES menandakan objek yang dibuat adalah garis
		glVertex2f(211.0, 0.0);				//glVertex2f() adalah fungsi pembuat titik
	glEnd();								//karena ada di antara glBegin() dan glEnd(), maka dua glVertex2f() akan membentuk satu garis

	glFlush();								//perintah render scene
}

int main(int argc, char **argv)			//fungsi utama seluruh program C++
{
	glutInit(&argc, argv);					//perintah inisialisasi program GLUT

	glutInitWindowPosition(100,100);		//penempatan jendela nantinya berdasarkan ukuran (PIKSELX, PIKSELY)
	glutInitWindowSize(250,250);			//penentuan ukuran jendela
	glutCreateWindow("Assalamu'alaykum");	//penentuan judul jendela
	gluOrtho2D(0.0, 640.0, -240, 340.0);	//penentuan sumbu X dan Y
	glutDisplayFunc(display);				//glutDisplayFunc() adalah fungsi istimewa GLUT untuk memanggil fungsi yang akan menggambar seisi kanvas

	glutMainLoop();							//glutMainLoop() adalah fungsi untuk mengulang terus rendering dalam main() yang dilakukan
}

8.2 Garis Vertikal

opengl-glut-geany1

//Program Garis Vertikal
#include <GL/glut.h>						//pemanggilan pustaka glut.h sekaligus gl.h milik OpenGL 

void display()								//fungsi display() salah satu fungsi terpenting dalam program OpenGL
{
	glClearColor(0.0f, 0.1f, 0.0f, 1.0f);	//glClearColor() berguna untuk membersihkan kanvas lalu mengatur warnanya (RED, GREEN, BLUE)
	glClear(GL_COLOR_BUFFER_BIT); 			//

	glBegin(GL_LINES);						//glBegin() dan glEnd() fungsi yang dipakai untuk membuat objek geometri.
		glVertex2f(100.0, 0.0);				//variabel GL_LINES menandakan objek yang dibuat adalah garis
		glVertex2f(100.0, 100.0);			//X tetap Y berubah, maka garis menjadi vertikal
	glEnd();								//karena ada di antara glBegin() dan glEnd(), maka dua glVertex2f() akan membentuk satu garis

	glFlush();								//perintah render scene
}

int main(int argc, char **argv)			//fungsi utama seluruh program C++
{
	glutInit(&argc, argv);					//perintah inisialisasi program GLUT

	glutInitWindowPosition(100,100);		//penempatan jendela nantinya berdasarkan ukuran (PIKSELX, PIKSELY)
	glutInitWindowSize(250,250);			//penentuan ukuran jendela
	glutCreateWindow("Assalamu'alaykum");	//penentuan judul jendela
	gluOrtho2D(0.0, 640.0, -240, 340.0);	//penentuan sumbu X dan Y
	glutDisplayFunc(display);				//glutDisplayFunc() adalah fungsi istimewa GLUT untuk memanggil fungsi yang akan menggambar seisi kanvas

	glutMainLoop();							//glutMainLoop() adalah fungsi untuk mengulang terus rendering dalam main() yang dilakukan
}

8.3 Titik

opengl-glut-geany2

//Program Titik
#include <GL/glut.h>						//pemanggilan pustaka glut.h sekaligus gl.h milik OpenGL 

void display()								//fungsi display() salah satu fungsi terpenting dalam program OpenGL
{
	glClearColor(0.0f, 0.1f, 0.0f, 1.0f);	//glClearColor() berguna untuk membersihkan kanvas lalu mengatur warnanya (RED, GREEN, BLUE)
	glClear(GL_COLOR_BUFFER_BIT); 			//

	glBegin(GL_POINTS);						//glBegin() dan glEnd() fungsi yang dipakai untuk membuat objek geometri.
		glVertex2f(100.0, 0.0);				//variabel GL_POINTS menandakan pembuatan titik untuk apa pun kode di antara glBegin() dan glEnd()
		glVertex2f(100.0, 100.0);			//X tetap Y berubah, maka garis menjadi vertikal
	glEnd();								//karena ada di antara glBegin() dan glEnd(), maka dua glVertex2f() akan membentuk satu garis

	glFlush();								//perintah render scene
}

int main(int argc, char **argv)			//fungsi utama seluruh program C++
{
	glutInit(&argc, argv);					//perintah inisialisasi program GLUT

	glutInitWindowPosition(100,100);		//penempatan jendela nantinya berdasarkan ukuran (PIKSELX, PIKSELY)
	glutInitWindowSize(250,250);			//penentuan ukuran jendela
	glutCreateWindow("Assalamu'alaykum");	//penentuan judul jendela
	gluOrtho2D(0.0, 640.0, -240, 340.0);	//penentuan sumbu X dan Y
	glutDisplayFunc(display);				//glutDisplayFunc() adalah fungsi istimewa GLUT untuk memanggil fungsi yang akan menggambar seisi kanvas

	glutMainLoop();							//glutMainLoop() adalah fungsi untuk mengulang terus rendering dalam main() yang dilakukan
}

8.4 Segitiga

opengl-glut-geany3

//Program Segitiga
#include <GL/glut.h>						//pemanggilan pustaka glut.h sekaligus gl.h milik OpenGL 

void display()								//fungsi display() salah satu fungsi terpenting dalam program OpenGL
{
	glClearColor(0.0f, 0.1f, 0.0f, 1.0f);	//glClearColor() berguna untuk membersihkan kanvas lalu mengatur warnanya (RED, GREEN, BLUE)
	glClear(GL_COLOR_BUFFER_BIT); 			//

	glBegin(GL_POLYGON);					//glBegin() dan glEnd() fungsi yang dipakai untuk membuat objek geometri.
		glVertex2f(100.0, 10.0);			//variabel GL_POINTS menandakan pembuatan poligon (bidang yang dibuat dari titik-titik yang terhubung oleh garis)
		glVertex2f(100.0, 100.0);			//ada 3 vertex yang saling terhubung menjadi segitiga
		glVertex2f(10.0, 100.0);			//vertex-vertex itu ada di dalam cakupan GL_POLYGON
	glEnd();								//karena ada di antara glBegin() dan glEnd(), maka 3 glVertex2f() akan membentuk satu segitiga

	glFlush();								//perintah render scene
}

int main(int argc, char **argv)			//fungsi utama seluruh program C++
{
	glutInit(&argc, argv);					//perintah inisialisasi program GLUT

	glutInitWindowPosition(100,100);		//penempatan jendela nantinya berdasarkan ukuran (PIKSELX, PIKSELY)
	glutInitWindowSize(250,250);			//penentuan ukuran jendela
	glutCreateWindow("Assalamu'alaykum");	//penentuan judul jendela
	gluOrtho2D(0.0, 640.0, -240, 340.0);	//penentuan sumbu X dan Y
	glutDisplayFunc(display);				//glutDisplayFunc() adalah fungsi istimewa GLUT untuk memanggil fungsi yang akan menggambar seisi kanvas

	glutMainLoop();							//glutMainLoop() adalah fungsi untuk mengulang terus rendering dalam main() yang dilakukan
}

8.5 Segiempat

opengl-glut-geany4

//Program Segiempat
#include <GL/glut.h>						//pemanggilan pustaka glut.h sekaligus gl.h milik OpenGL 

void display()								//fungsi display() salah satu fungsi terpenting dalam program OpenGL
{
	glClearColor(0.0f, 0.1f, 0.0f, 1.0f);	//glClearColor() berguna untuk membersihkan kanvas lalu mengatur warnanya (RED, GREEN, BLUE)
	glClear(GL_COLOR_BUFFER_BIT); 			//

	glBegin(GL_POLYGON);					//glBegin() dan glEnd() fungsi yang dipakai untuk membuat objek geometri.
		glVertex2f(10.0, 10.0);			//variabel GL_POINTS menandakan pembuatan poligon (bidang yang dibuat dari titik-titik yang terhubung oleh garis)
		glVertex2f(10.0, 100.0);			//ada 4 vertex yang saling terhubung menjadi segiempat
		glVertex2f(100.0, 100.0);			//vertex-vertex itu ada di dalam cakupan GL_POLYGON
		glVertex2f(100.0, 10.0);			//
	glEnd();								//karena ada di antara glBegin() dan glEnd(), maka 4 glVertex2f() akan membentuk satu segiempat

	glFlush();								//perintah render scene
}

int main(int argc, char **argv)			//fungsi utama seluruh program C++
{
	glutInit(&argc, argv);					//perintah inisialisasi program GLUT

	glutInitWindowPosition(100,100);		//penempatan jendela nantinya berdasarkan ukuran (PIKSELX, PIKSELY)
	glutInitWindowSize(250,250);			//penentuan ukuran jendela
	glutCreateWindow("Assalamu'alaykum");	//penentuan judul jendela
	gluOrtho2D(0.0, 640.0, -240, 340.0);	//penentuan sumbu X dan Y
	glutDisplayFunc(display);				//glutDisplayFunc() adalah fungsi istimewa GLUT untuk memanggil fungsi yang akan menggambar seisi kanvas

	glutMainLoop();							//glutMainLoop() adalah fungsi untuk mengulang terus rendering dalam main() yang dilakukan
}

Jika berhasil menemukan garis besar kode-kode dia atas, Anda akan memahami dasar penulisan kode program OpenGL. Selebihnya, silakan merujuk pada tautan-tautan yang saya sebutkan di akhir tulisan.

9. Membaca dan Memahami Dokumentasi Referensi API OpenGL

Seseorang bisa memrogram dengan baik jika dia mampu membaca dokumentasi referensi. Hal ini juga berlaku untuk pemrograman OpenGL. Anda perlu tahu bagaimana cara membaca lalu menerapkan referensi API dari OpenGL. Saya akan menunjukkan dulu cara baca dokumentasi tidak resmi baru kemudian yang resmi.

9.1 Dokumentasi Tidak Resmi

Contoh yang sangat bagus yang saya temukan adalah satu laman dari universitas di Singapura. Alamatnya http://www3.ntu.edu.sg/home/ehchua/programming/opengl/CG_Introduction.html dan berikut ini saya sertakan skrinsot sebagian halamannya.

Di dalam setiap dokumentasi referensi API, selalu ada bagian-bagian utama seperti spesifikasi fungsi-fungsi, daftar fitur (beragam jenis di setiap pustaka), dan jika Anda beruntung maka ada contoh-contoh. Di laman di atas, Anda akan memperoleh penjelasan fungsi-fungsi OpenGL.

Cara membaca referensi fungsi adalah perhatikan pada nama fungsi kemudian argumen-argumennya (isi dari kurung () milik fungsi). Misalnya, di dalam sebuah kode Anda menemukan glVertex3f. Anda tidak tahu apa fungsinya. Maka cari dan bacalah referensi fungsi glVertex3f di dalamnya. Bisa juga langsung membaca contoh-contoh implementasinya.

opengl-glut-geany10

opengl-glut-geany9 

Biasanya, orang yang membuat program lebih fokus membaca referensi spesifikasi (tata cara penulisan) suatu fungsi. Dalam contoh di atas, glVertex3f disebutkan dengan argumen berjumlah 3 (1.1f, 2.2f, 3.3f). Artinya, saat menggunakan glVertex3f nanti, Anda harus mengisinya dengan 3 argumen yang bertipe float seperti tertera di spesifikasi. Begitulah cara membacanya.

9.1.1 Fungsi

opengl-glut-geany6

Di atas ini adalah referensi spesifikasi fungsi. Referensi fungsi menjelaskan tata cara penulisan suatu fungsi. Yang perlu diperhatikan adalah tipe data dari fungsi sendiri, nama fungsinya, dan argumennya. Tipe data itu elemen sebelum nama fungsi (void, int, float, dll.), nama fungsi itu yang diawali dengan gl dan memiliki argumen, sedangkan argumen itu variabel-variabel yang mengisi kurung () suatu fungsi.

9.1.2 Fitur Penting (Geometric Primitives)

opengl-glut-geany7

Referensi ini menjelaskan variabel yang bisa Anda gunakan untuk membuat objek geometri yang diinginkan. Jika ingin membuat garis, gunakanlah GL_LINES. Jika ingin membuat segitiga, gunakanlah GL_TRIANGLES. Dan seterusnya. Variabel ini bisa dipasangkan sebagai argumen pada glBegin() (tertera pada lanjutan skrinsot di atas. 

9.1.3 Contoh 

opengl-glut-geany8

Jalan pintas belajar pemrograman adalah salin kode sumber contoh, kompilasikan, lihat hasilnya. Lakukan itu terus menerus maka Anda mampu membaca referensi dengan baik. Selebihnya, Anda akan mudah melakukan pemrograman nantinya.

9.2 Dokumentasi Resmi

Dokumentasi resmi dari setiap pustaka atau framework selalu tampak lengkap dan profesional. Tidak terkecuali OpenGL. Bukalah alamat http://www.opengl.org/sdk/docs/man4/ (jika Anda memakai OpenGL 4) lalu buka nama fungsi yang Anda ingin tahu spesifikasinya. Itulah cara membukanya. Lalu perhatikan apa saja yang ada di dalam 1 halaman referensi.

opengl-glut-geany11

Saya beri contoh pada gambar di atas pencarian spesifikasi glFlush. Mirip dengan manpages di Linux, Anda memperoleh laman yang menjelaskan arti dan cara penulisan fungsi glFlush. Biasanya, hal terpenting yang dicari programer adalah spesifikasi (tata cara penulisan) fungsinya. Baca lalu terapkan pada kode Anda. Untuk bisa membaca, tentu Anda harus banyak mencoba kode sumber-kode sumber contoh.

10. Kumpulan Referensi Lanjutan OpenGL dan GLUT

11. Referensi Tulisan Ini

3 thoughts on “Pengantar Pemrograman OpenGL GLUT C++ di Linux

  1. Ping balik: Pengantar Pemrograman OpenCV C++ di Linux | Ade Malsasa Akbar

Dilarang menggunakan emotikon

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s