Halo! pada kesempatan kali ini kita akan mempelajari event handling pada OpenGL. Di sini kita akan membuat sebuah persegi yang dapat digerakkan dengan menggunakan tombol panah pada keyboard. Selain itu, warna backgroundnya akan berubah tergantung di mana posisi persegi tersebut. Warna dari persegi juga akan berubah jika kita melakukan klik kanan atau klik kiri pada persegi tersebut.
Di sini saya akan langsung masuk ke code programnya dan memberikan penjelasan mengenai code program tersebut. Jika kalian baru mengenal OpenGL, silahkan baca tulisan-tulisan saya sebelumnya.
Jika program di atas dijalankan, maka akan muncul hasil seperti ini:
 |
Tampilan default ketika program dijalankan |
 |
Tampilan jika persegi berada di atas kiri |
 |
Tampilan jika persegi berada di bawah kiri |
 |
Tampilan jika persegi berada di bawah kanan |
 |
Tampilan jika persegi berada di atas kanan
|
Fungsi
draw_quads_object pada code program di atas berguna untuk membuat persegi dengan ukuran 50 x 50. Untuk menggerakkannya kita membutuhkan sebuah even handler dengan nama
glutSpecialFunc, di mana ini sudah disediakan oleh OpenGL.
Fungsi ini menerima function sebagai parameternya, maka dari itu kita membuat sebuah function lain yang bernama
get_user_keyboard_input. Di sini kita definisikan semua yang kita butuhkan, yaitu menggerakkan persegi dan mengubah warna background.
Supaya dapat bergerak, persegi tersebut akan ditambah dan dikurangi nilai koordinat x dan y nya sebanyak 10. Untuk mengubah warna background sesuai dengan posisi persegi, kita hanya perlu membuat if statement berdasarkan posisi dari koordinat x dan y tersebut.
Warna background dapat diganti dengan menggunakan
glClearColor. Warna-warna yang saya gunakan pada program di atas dapat ditemukan pada
website ini.
Untuk mengubah warna persegi, kita membutuhkan sebuah event handler yang bernama glutMouseFunc. Event handler ini juga menerima sebuah function, di sini kita menamakannya get_mouse_user_input.
Pada bagian atas sekali, kita sudah mendefinisikan tiga buah variable untuk menampung warna dengan konsep RGB. Variable akan diubah nilainya sesuai dengan posisi persegi saat diklik.
Di dalam function get_mouse_user_input kita hanya perlu membat if statement untuk menentukan apakah user melakukan klik kiri atau klik kanan. Selanjutnya kita perlu membuat if statement lagi untuk menentukan posisi dari persegi. Langkah terakhir adalah mengubah nilai dari ketiga variable tadi. Voilà !
Code program dapat ditemukan pada
@rizkyramadhan28. Demikian postingan kali ini, semoga bermanfaat.
0 Comments