Apa itu Pemilihan OpenGL®?

Pengambilan OpenGL® dalam pemrograman komputer adalah proses menentukan objek apa dalam adegan tiga dimensi (3D) yang terletak pada titik tertentu di layar setelah adegan dirender. Ini juga dapat merujuk pada penempatan beberapa objek pada suatu titik atau di dalam kotak. Paling sering, pengambilan OpenGL® digunakan untuk menentukan objek 3D apa di layar yang coba dipilih pengguna dengan kursor mouse. Meskipun operasi ini mungkin tampak sederhana, ada beberapa kehalusan dalam cara OpenGL® merender adegan yang dapat membuatnya cukup rumit. Selain itu, ada gangguan intrinsik pada kartu grafis dan driver tertentu yang dapat menyebabkan fungsi pengambilan OpenGL® gagal dan mengembalikan hasil yang salah.

Saat pengguna melihat pemandangan 3D di monitor komputer, gambar yang dihasilkan dikenal sebagai rendering pemandangan. Adegan sebenarnya disimpan dalam memori sebagai kumpulan bentuk primitif atau poligon, yang dengan sendirinya hanyalah kumpulan titik 3D dalam ruang adegan. Komputer menggunakan koordinat dunia, yang kadang-kadang disebut koordinat absolut, untuk melakukan sebagian besar fungsi dasar yang memanipulasi objek di tempat kejadian. Di sebagian besar aplikasi, pengguna dapat mengarahkan tampilan pemandangan ke sudut yang berbeda sehingga objek dapat dilihat dalam perspektif yang berbeda. Lokasi virtual pengguna dalam adegan disebut sudut kamera atau posisi kamera.

Kompleksitas pengambilan OpenGL® berasal dari penentuan lokasi mouse pada layar dua dimensi (2D) dari posisi dan sudut yang mungkin berubah-ubah dalam pemandangan, posisi kamera. Selain itu, karena rendering dari perspektif manusia benar-benar 2D, tidak ada cara bagi pengguna untuk memberikan kedalaman klik mouse di dalam adegan. Fungsi pengambilan OpenGL® memecahkan masalah kompleks ini dalam dua cara.

Yang pertama adalah, alih-alih melakukan serangkaian perhitungan terpisah untuk menerjemahkan di mana pemirsa secara abstrak dan kemudian menemukan objek di jendela rendering, fungsi tersebut sebenarnya membuat adegan seperti saat bekerja normal, dengan pengecualian bahwa rendering digunakan untuk seleksi tidak ditampilkan, itu hanya digunakan untuk menghitung posisi objek yang benar. Perbedaannya adalah, alih-alih merender seluruh area yang akan terlihat oleh pengguna, itu hanya membuat area di mana mouse berada. Ini berarti setiap objek yang dirender secara teknis berada pada titik di mana penunjuk tetikus berada.

Masalah kedua, yaitu tidak adanya cara untuk menunjukkan kedalaman area yang dipilih, diselesaikan dengan mengembalikan semua objek yang berada di bawah koordinat mouse dalam adegan. Fungsi pengambilan OpenGL® mengembalikan semua objek dalam larik bersama dengan seberapa jauh mereka dari lokasi pemirsa. Ini memungkinkan program untuk dengan cepat menemukan objek terdekat jika diinginkan.

Salah satu cara untuk memvisualisasikan pengambilan OpenGL® adalah dengan membayangkan sebuah garis, kadang-kadang disebut sebagai sinar dalam pemrograman 3D, bergerak dari lokasi penunjuk tetikus ke dalam adegan dan menjauh dari lokasi pemirsa. Setiap objek yang disentuh sinar ini ditambahkan ke array objek, bersama dengan seberapa jauh jaraknya dari penampil. Ini adalah penjelasan yang sangat sederhana tentang cara kerja salah satu bentuk pemetikan OpenGL®.
Metode lain dari pengambilan objek di OpenGL® melibatkan penempatan objek berdasarkan warna, dan itu bisa jauh lebih cepat. Metode ini merender pemandangan tetapi, alih-alih menerapkan pencahayaan dan tekstur ke objek, mereka malah dirender dengan satu warna sederhana. Setiap objek atau kelompok objek memiliki warna tersendiri. Adegan hanya dirender dalam memori dan tidak ditampilkan, jadi ini tidak memengaruhi apa yang dilihat pengguna. Alih-alih mencari tabrakan 3D antar objek, warna pada posisi kursor mouse dikembalikan, dan warna itu akan berkorelasi dengan objek tertentu.