fungsi glSelectBuffer
Fungsi glSelectBuffer menetapkan buffer untuk nilai mode pilihan.
Sintaks
void WINAPI glSelectBuffer(
GLsizei size,
GLuint *buffer
);
Parameter
-
ukuran
-
Ukuran buffer.
-
Buffer
-
Mengembalikan data pilihan.
Mengembalikan nilai
Fungsi ini tidak mengembalikan nilai.
Kode kesalahan
Kode kesalahan berikut dapat diambil oleh fungsi glGetError .
Nama | Makna |
---|---|
|
ukurannya negatif. |
|
Fungsi ini dipanggil saat mode render GL_SELECT. |
|
Fungsi ini dipanggil antara panggilan ke glBegin dan panggilan yang sesuai ke glEnd. |
Keterangan
Fungsi glSelectBuffer memiliki dua parameter: buffer adalah penunjuk ke array bilangan bulat yang tidak ditandatangani, dan ukuran menunjukkan ukuran array. Parameter buffer mengembalikan nilai dari tumpukan nama (lihat glInitNames, glLoadName, glPushName) saat mode penyajian GL_SELECT (lihat glRenderMode). Fungsi glSelectBuffer harus dikeluarkan sebelum mode pemilihan diaktifkan, dan tidak boleh dikeluarkan saat mode penyajian GL_SELECT.
Pilihan digunakan oleh programmer untuk menentukan primitif mana yang digambar ke beberapa wilayah jendela. Wilayah ini didefinisikan oleh tampilan model saat ini dan matriks perspektif.
Dalam mode pemilihan, tidak ada fragmen piksel yang dihasilkan dari rasterisasi. Sebaliknya, jika primitif berpotongan volume klip yang ditentukan oleh frustum tampilan dan bidang kliping yang ditentukan pengguna, primitif ini menyebabkan hit pilihan. (Dengan poligon, tidak ada hit yang terjadi jika poligon dimusnahkan.) Ketika perubahan dilakukan pada tumpukan nama, atau ketika glRenderMode dipanggil, rekaman hit disalin ke buffer jika ada temuan yang terjadi sejak peristiwa terakhir tersebut (baik perubahan tumpukan nama atau panggilan glRenderMode ). Rekaman hit terdiri dari jumlah nama dalam tumpukan nama pada saat peristiwa; diikuti oleh nilai kedalaman minimum dan maksimum dari semua simpul yang mengenai sejak peristiwa sebelumnya; diikuti dengan nama tumpukan konten, nama bawah terlebih dahulu.
Nilai kedalaman yang dikembalikan dipetakan sedih sehingga nilai bilangan bulat terbesar yang tidak ditandatangani sesuai dengan kedalaman koordinat jendela 1,0, dan nol sesuai dengan kedalaman koordinat jendela 0,0.
Indeks internal ke dalam buffer diatur ulang ke nol setiap kali mode pemilihan dimasukkan. Setiap kali rekaman hit disalin ke dalam buffer, indeks bertahap untuk menunjuk ke sel tepat melewati akhir blok namesthat adalah, ke sel berikutnya yang tersedia. Jika rekaman hit lebih besar dari jumlah lokasi yang tersisa dalam buffer, data sebanyak yang dapat disalin, dan bendera luapan diatur. Jika tumpukan nama kosong saat rekaman hit disalin, rekaman tersebut terdiri dari nol diikuti oleh nilai kedalaman minimum dan maksimum.
Mode pemilihan keluar dengan memanggil glRenderMode dengan argumen selain GL_SELECT. Setiap kali glRenderMode dipanggil saat mode render GL_SELECT, itu mengembalikan jumlah rekaman hit yang disalin ke buffer, mengatur ulang bendera luapan dan penunjuk buffer pilihan, dan menginisialisasi tumpukan nama menjadi kosong. Jika bit luapan diatur saat glRenderMode dipanggil, jumlah rekaman hit negatif dikembalikan.
Konten buffer tidak terdefinisi hingga glRenderMode dipanggil dengan argumen selain GL_SELECT.
GlBegin/glEnd primitif dan panggilan ke glRasterPos dapat menghasilkan hit.
Fungsi berikut mengambil informasi yang terkait dengan glSelectBuffer:
glGet dengan argumen GL_NAME_STACK_DEPTH
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung |
Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung |
Windows 2000 Server [hanya aplikasi desktop] |
Header |
|
Pustaka |
|
DLL |
|