Apa itu OpenGL dan OpenGL-ES?
OpenGL dirancang independen terhadap sistem operasi, hardware, maupun bahasa pemrograman yang digunakan. Bahkan jika GPU tidak tersedia, openGL dapat dijalankan diatas software yang mengemulasi hardware, tentu dengan kinerja yang lebih rendah.
OpenGL dikembangkan mulai dari tahun 90-an dan saat ini telah menjadi standard industri. OpenGL ada hampir disemua platform: Windows, Linux, Mac, smartphone, game console, avionic dan berbagai embedded system. Dari sisi software, OpenGL digunakan untuk berbagai macam hal mulai dari game, visualisasi, simulasi, CAD (Computer-Aided Design) sampai editing video dan image.
Standard yang ada di OpenGL dikelola oleh konsorsium yang berisi berbagai pihak yang berkepentingan dengan computer grafis. Konsorsium itu disebut Khronos yang anggotanya antara lain: AMD, Intel, NVIDIA, Apple, ARM, Nokia, Qualcomm, Samsung, Sony, Epic Games. Khronos juga mengelola standard lain seperti OpenCL, OpenVG dan WebGL.
OpenGL adalah low level API, jadi saat kita menggambar suatu objek kita harus mengirimkan terlebih dulu objek, texture, shaders dan lainnya. Ini membuat programming dengan OpenGL bisa jadi hal yang rumit, tapi disisi lain jadi lebih powerfull dan fleksibel. Bagi pemula hal ini bisa memusingkan karena terdapat banyak variasi teknik yang dapat dilakukan untuk mencapai hasil yang sama. Umumnya pengembang game tidak menggunakan openGL secara langsung, tetapi melalui game engine seperti Unity.
OpenGL terus berkembang dan semakin lama semakin ‘gemuk’ dan kompleks sehingga pada di versi 3, fungsi-fungsi yang dianggap sudah tidak dibutuhkan lagi (deprecated) dibuang. Tapi karena penolakan beberapa vendor seperti NVIDIA, maka di versi 3.2 diperkenalkan dua profile: pertama core profile yang seperti versi 3 membuang bagian yang deprecated dan versi kedua adalah compatibility profile yang tetap compatible sampai dengan OpenGL versi 1. Bagi pemula, dianjurkan untuk belajar core profile yang walaupun lebih rumit daripada versi openGL sebelumnya, tetapi lebih aman untuk masa depan saat spesififikasi yang deprecated benar-benar dibuang.
Jika kita menggunakana Java, ada dua library yang dapat digunakan LWLJGL dan JOGL. Kinerjanya relatif sama, jadi tinggal masalah selera saja. Saya pribadi lebih memilih LWLJGL.
OpenGL ES
OpenGL ES adalah versi OpenGL untuk embedded system dan mobile device khususnya untuk iPhone dan Android. Untuk ‘merampingkan’ OpenGL ES, API OpenGL yang jarang digunakan atau terlalu kompleks dibuang.
OpenGL ES 2.0 memiliki kemiripan dengan OpenGL 3.0, tetapi ada beberapa fitur yang belum disupport seperti: glMultiDrawElements, glDrawRangeElements, antialiased lines polygon smooth, polygon antialiasing, multiple polygon modes, depth textures, rectangle textures, dan array textures. OpenGL ES 2.0 juga hanya dapat menggunakan vertex dan fragment shader.
Seperti halnya OpenGL 3, OpenGL ES 2.0 adalah versi yang tidak kompatible dengan versi sebelumnya (OpenGL ES 1). Bagi pemula, dianjurkan langsung mempelajari versi OpenGL ES 2.0 ini. Tetapi jika tujuannya hanya untuk membuat game, sebaiknya menggunakan library seperti LibGDX yang menyederhanakan penggunaan OpenGL ES.
sumber: OpenGL superbible (Wright dkk) & OpenGL programming guide (Shreiner dkk)
Artikel selanjutnya: OpenGL dan Java
Update: Sebaiknya jangan belajar langsung ke OpenGL kecuali benar-benar diperlukan, seperti membuat game engine sendiri, atau membuat custom aplikasi grafis yang membutuhkan kinerja tinggi. Untuk awalnya, bisa menggunakan framework seperti LibGDX yang mempermudah pembuatan game atau simulasi tapi kalau perlu bisa mengakses API OpenGL langsung. Tutorialnya tersedia di blog ini (untuk Android, tapi bisa dijalankan di desktop juga).
Pembuatan menu garis dengan OPENGL menggunakan java