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
GL_INVALID_VALUE
ukurannya negatif.
GL_INVALID_OPERATION
Fungsi ini dipanggil saat mode render GL_SELECT.
GL_INVALID_OPERATION
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
Gl.h
Pustaka
Opengl32.lib
DLL
Opengl32.dll

Lihat juga

glBegin

glEnd

glFeedbackBuffer

glInitNames

glLoadName

glPushName

glRenderMode