Alur aplikasi OpenGL (dan WebGL?)

Aplikasi OpenGL (dan sepertinya aplikasi berbasis grafis lainnya) memiliki sebuah alur kerja yang bisa saya bilang cukup standar. Dimulai dengan melakukan persiapan, lalu ada sebuah perulangan utama, dan diakhiri dengan rutin bersih-bersih sebelum aplikasi selesai dieksekusi. Pada perulangan utama ini, operasi yang terjadi secara umum bisa dikelompokkan menjadi tiga: baca input (mouse, keyboard, dll), proses, dan gambar.

Main Loop

Pada tahapan membaca input, seluruh masukan dari keyboard, mouse, dan sumber lainnya akan ditangkap dan digunakan untuk mengubah kondisi yang sedang dipantau. Misalnya jika tombol spasi ditekan, maka si aplikasi harus membuat pesawat dalam game mengeluarkan tembakan.

Setelah ini, semua pemrosesan akan dilakukan. Misalnya peluru yang ditembakkan mesti sampai di pojok kanan atas layar dalam waktu 1 detik. Maka perlu dihitung dimana dan kapan saja gambar peluru harus diletakkan di layar.

Pada tahapan menggambar, gambar peluru yang telah dibaca dari berkas akan disalin ke layar. Gambar akan diletakkan pada posisi yang telah dihitung sebelumnya. Begitu pula untuk objek-objek lain yang perlu digambar di layar.

Seberapa cepat perulangan utama yang menjalankan 3 tahapan di atas ini harus dijalankan? Dengan kata lain, berapa gambar yang harus dibuat setiap detiknya? Semakin banyak gambar yang dibuat setiap detiknya, akan semakin halus pergerakan animasi yang dibuat. Namun dengan demikian, proses yang dikerjakan tidak boleh berlangsung terlalu lama karena tentunya dapat menunda tahapan menggambar yang efeknya akan mengurangi jumlah gambar yang dibuat tiap detiknya.

Monitor yang ada sekarang umumnya dapat menggambar 60 kali setiap detiknya (60 frame per second atau 60 Hz). Bagaimana kalau kita targetkan agar aplikasi dapat mengikuti kecepatan monitor? Mari kita hitung. Jika dalam 1 detik kita harus menggambar 60 gambar, berarti 1 gambar harus dibuat dalam waktu 1/60 detik atau sekitar 16 milidetik (16 ms)! Membaca input, melakukan pemrosesan data, dan menggambar semuanya harus terjadi dalam waktu 16ms saja agar kita bisa meraih kecepatan menggambar 60 gambar per detik!

Apakah 60 fps adalah angka yang harus selalu dicapai? Tergantung.. semakin cepat, animasi akan semakin halus. Namun jika aplikasi yang kita buat tidak sering menampilkan aplikasi, maka batasan kecepatan penggambaran ini bisa kita perlonggar. Tuk perbandingan, film umumnya hanya memiliki 24 gambar setiap detiknya alias 24 fps.

6 thoughts on “Alur aplikasi OpenGL (dan WebGL?)”

  1. Mas, apt-web.dahsy.at belum dapat saya pergunakan hingga hari ini. Saya masukkan nama paket alien atau unetbootin, sama-sama tidak mengeluarkan hasil apa pun. Bagaimana saya bisa memanfaatkan lagi karya mas ini?

  2. 60fps is the best mas. Saya pernah juga baca pandangan dari mas @paul Irish. Dia menyaran untuk kekal pada aras ini untuk layar yang optimum tanpa sangkut2

Leave a Reply