Pengenalan
Keyboard adalah salah satu hal yang penting untuk game komputer, dan menggunakan komputer secara umum. Bisakah Anda bayangkan mencoba untuk mengetik dengan mouse? Atau jumlah tombol yang akan diperlukan pada mouse untuk memungkinkan pergerakan * dan * memotret di First Person Shooter? Kabar baiknya adalah bahwa keyboard interaksi, berkat GLUT, adalah hal yang sangat mudah untuk menangani. Saya akan melihat 2 GLUT yang berbeda metode untuk menekan tombol, satu untuk ketika tombol pertama ditekan, dan satu untuk ketika tombol dilepaskan. Kemudian saya akan menunjukkan bagaimana untuk melakukan beberapa penyangga kunci untuk memungkinkan penekanan tombol sekaligus.
Coding
Tekan tombol
Untuk memulai dengan keyboard, sama seperti kami menciptakan tampilan dan membentuk metode untuk GLUT untuk digunakan, kita akan perlu membangun metode .Yang pertama metode kita akan berurusan dengan adalah menekan tombol metode , inimetode yang akan memberitahu kita yang saat ini tombol ditekan.
Saya akan nama ini metode keyPressed dan menyatakan GLUT bahwa ia memiliki 3 parameter, satu untuk kunci yang saat ini ditekan, dan dua lagi yang memberikan kita lokasimouse saat kunci itu ditekan
Sekarang kita telah kosong metode , mari kita pergi ke depan dan memberikan ini informasiuntuk GLUT untuk digunakan. Down di utama kami metode , kita akan mengakses glutKeyboardFunc metode dan pasokan dengan kami metode . Dan itu cukup banyak semua ada untuk itu. Dalam rangka untuk akses yang mereka tombol ditekan, di dalam keyPressed Anda metodeAnda dapat menggunakan salah pernyataan switch atau 'jika' pernyataan, yang memeriksa mereka variabel kunci terhadap karakter ASCII yang ingin Anda periksa , dan akan terlihat seperti ini: Fungsi tombol register sampai ketika tombol dilepaskan. Ini dapat sangat berguna untuk pengaturan beberapa nilai ketika kunci pertama ditekan, dan ingin menjaga nilai itu sampai tombol dilepaskan. Sekali lagi, karena hal ini ditangani oleh GLUT, kita perlu pergi dan membuat metode untuk menangani hal ini, dan hanya seperti keyPressed metode , yang satu ini akan mengambil dalam 3 parameter. Ketiga parameter yang persis sama dengan 3 dalam keyPressed metode . Tapi kita akan menyebutnya metode keyup. Jadi mari kita pergi ke depan dan membuat metode untuk ini. Dan sekali lagi kita perlu mendaftarkan metode dengan GLUT, dan kali ini kita akan menggunakan glutKeyboardUpFunc metode . Untuk menggunakan keyup metode , persis sama dengan menggunakan keyPressedmetode , sehingga kita dapat memanggil kode yang sama persis jika kita ingin. Langkah berikutnya adalah tentu saja , untuk melakukan beberapa penyangga utama, yang akan memungkinkan kita untuk menangani penekanan tombol beberapa di kemudian kamiOpenGL proyek. Seperti yang Anda mungkin menyadari, variabel char adalah sama dengan byte dan dapat mengambil nilai integer dari 0 hingga 255. Hal ini karena variabel arang memiliki ukuran 2, ^ 8 atau 256. Hal ini memungkinkan kita untuk menangani hingga 256 tombol berbeda pada keyboard, atau set karakter ASCII seluruh. Jadi mari kita mulai dengan menciptakan sebuah array dari nilai Boolean yang akan memegang negara-negara kunci kami. Benar akan ditekan, dan False akan tidak ditekan.Aku akan menyebutnya keyStates variabel karena mudah dimengerti. Dan sekarang di keyPressed kami metode , mari kita tambahkan baris baru, yang akan menetapkan nilai dari kunci yang kita miliki ditekan. Ini hanya menetapkan posisi saat ini dalam array keyStates, pada posisi kunci saat ditekan, ke true. Dan sekarang kita hanya perlu menambahkan hampir kode yang sama persis dengan keyup metode yang kita buat sebelumnya. Hanya saja kali ini, kita akan menetapkan keadaan kunci saat ini menjadi false, artinya tidak lagi ditekan. Semua yang tersisa sekarang untuk kita untuk belajar adalah bagaimana untuk benar-benar menggunakan ini. Kabar baiknya adalah bahwa sekarang bahwa Anda memiliki kunciinformasi , Anda dapat menggunakannya namun Anda inginkan, Anda hanya perlu men-setup suatu tempat dalam kode Anda untuk mengelola ini. Aku akan pergi melalui contoh ini untuk Anda mulai. Untuk melakukan hal ini, saya akan membuat yang lain metode , kali ini disebut keyOperations, di mana kita akan memeriksa yang tombol telah ditekan, dan kemudian melakukan tindakan mereka. Ini Metode tidak perlu kembali apa-apa, dan tidak perlu menerima parameter apapun. Hanya menyatakan sebelum Anda tampilan () metode , karena kita benar-benar akan menyebutnya dari kami menampilkan metode . Dan seperti yang kita panggil ini dari kami menampilkan metode , maju dan menyebutnya dari awal sangat kami menampilkan metode , sebaiknya sebelum segala sesuatu yang lain.Alasan saya mengatakan menyebutnya sebelum segala sesuatu yang lain, adalah jika Anda menyebutnya setengah melalui render Anda, maka setengah dari membuat Anda akan terpengaruh oleh nilai-nilai diperbarui oleh penekanan tombol, dan setengah lainnya membuat Anda tidak akan terpengaruh, memberikan ketidakcocokan dan artefak mungkin. Akhirnya, kita mengisi keyOperations kami metode dengan sejumlah besar jika laporan untuk memeriksa apakah tombol kita ingin ditekan, dan kemudian melakukan tindakan yang diperlukan. Sementara semua di atas adalah sempurna baik untuk menggunakan penekanan tombol yang biasa, ada beberapa kunci Anda mungkin ingin menggunakan, misalnya, tombol panah, yang dapat diwakili berbeda pada beberapa sistem. Untungnya, GLUT memungkinkan kita untuk menggunakan kunci ini, asalkan kita sebut berbeda metode untuk glutKeyboardFunc. Sebaliknya, kita harus menggunakan glutSpecialFunc yang memeriksa penekanan tombol khusus. Sebagai contoh, jika kita ingin mengecek apakah panah kiri telah ditekan, kita dapat menggunakan GLUT_KEY_LEFT. Kabar terbaik adalah bahwametode yang Anda buat untuk menangani tombol khusus Anda, akan hampir identik dengan glutKeyboardFunc metode Anda buat sebelumnya. Di bawah ini adalah contoh penggunaan tombol khusus. Pertama, membuat baru metode yang saya akan menelepon keySpecial, yang mengambil tiga parameter, semuanya menjadi nilai integer, pertama untuk tombol ditekan, dan dua detik adalah untuk posisi x dan y mouse di saat itu metode yang disebut. Dan kemudian menyebutnya metode utama kami dalam metode bersama dengan sisa penekanan tombol kita. Dan kemudian untuk fungsi untuk tombol khusus, menyatakan baru metode untuk menangani sampai acara untuk kunci khusus. Jika Anda ingin untuk buffer kunci ini, Anda dapat membuat array lain sama seperti yang kami lakukan untuk buffering kunci biasa, dan mendedikasikan array ini untuk setiap tombol khusus ditekan. Setelah Anda membuat array ini, pastikan Anda menetapkan nilai-nilai ke benar dan palsu, seperti yang Anda lakukan dalam metode kunci biasa, dan kemudian membuat metode lain untuk mengendalikan apa yang terjadi ketika kita menekan tombol khusus kami, saya menelepon keySpecialOperations tambang, yang sudah memiliki kode untuk memeriksa apakah tombol panah kiri telah ditekan. Mudah-mudahan ini telah membantu Anda mendapatkan pemahaman tentang bagaimana mengelola menekan kunci dalam GLUT dan OpenGL sehingga Anda bisa mendapatkan beberapa interaksi keyboard yang terjadi di tutorial selanjutnya. Jika Anda memiliki pertanyaan, silakan email saya di swiftless@gmail.comTombol Up
Kunci Buffer
Tombol Khusus
Tutorial Kode
0 komentar:
Posting Komentar