fungsi glFeedbackBuffer
Fungsi glFeedbackBuffer mengontrol mode umpan balik.
Sintaks
void WINAPI glFeedbackBuffer(
GLsizei size,
GLenum type,
GLfloat *buffer
);
Parameter
-
ukuran
-
Jumlah maksimum nilai yang dapat ditulis ke dalam buffer.
-
jenis
-
Konstanta simbolis yang menjelaskan informasi yang akan dikembalikan untuk setiap puncak. Konstanta simbolis berikut diterima: GL_2D, GL_3D, GL_3D_COLOR, GL_3D_COLOR_TEXTURE, dan GL_4D_COLOR_TEXTURE.
-
Buffer
-
Mengembalikan data umpan balik.
Nilai kembali
Fungsi ini tidak mengembalikan nilai.
Kode kesalahan
Kode kesalahan berikut dapat diambil oleh fungsi glGetError .
Nama | Makna |
---|---|
|
type bukan nilai yang diterima. |
|
ukurannya negatif. |
|
glFeedbackBuffer dipanggil saat mode render GL_FEEDBACK, atau glRenderMode dipanggil dengan argumen GL_FEEDBACK sebelum glFeedbackBuffer dipanggil setidaknya sekali. |
|
Fungsi ini dipanggil antara panggilan ke glBegin dan panggilan yang sesuai ke glEnd. |
Keterangan
Fungsi glFeedbackBuffer mengontrol umpan balik. Umpan balik, seperti pilihan, adalah mode OpenGL. Mode dipilih dengan memanggil glRenderMode dengan GL_FEEDBACK. Saat OpenGL berada dalam mode umpan balik, tidak ada piksel yang dihasilkan oleh rasterisasi. Sebaliknya, informasi tentang primitif yang akan dirasterisasi disalurkan kembali ke aplikasi menggunakan OpenGL.
Fungsi glFeedbackBuffer memiliki tiga argumen:
- buffer adalah penunjuk ke array nilai floating-point tempat informasi umpan balik ditempatkan.
- ukuran menunjukkan ukuran array.
- jenis adalah konstanta simbolis yang menjelaskan informasi yang diumpankan kembali untuk setiap puncak.
Anda harus mengeluarkan glFeedbackBuffer sebelum mode umpan balik diaktifkan (dengan memanggil glRenderMode dengan argumen GL_FEEDBACK). Mengatur GL_FEEDBACK tanpa membuat buffer umpan balik, atau memanggil glFeedbackBuffer saat OpenGL dalam mode umpan balik, adalah kesalahan.
Keluarkan OpenGL dari mode umpan balik dengan memanggil glRenderMode dengan nilai parameter selain GL_FEEDBACK. Ketika Anda melakukan ini saat OpenGL berada dalam mode umpan balik, glRenderMode mengembalikan jumlah entri yang ditempatkan dalam array umpan balik. Nilai yang dikembalikan tidak pernah melebihi ukuran. Jika data umpan balik membutuhkan lebih banyak ruang daripada yang tersedia di buffer, glRenderMode mengembalikan nilai negatif.
Sementara dalam mode umpan balik, setiap primitif yang akan dirasterisasi menghasilkan blok nilai yang disalin ke dalam array umpan balik. Jika melakukannya akan menyebabkan jumlah entri melebihi maksimum, glFeedbackBuffer sebagian menulis blok sehingga mengisi array (jika ada ruang yang tersisa sama sekali), dan mengatur bendera luapan. Setiap blok dimulai dengan kode yang menunjukkan jenis primitif, diikuti dengan nilai yang menjelaskan simpul primitif dan data terkait. Fungsi glFeedbackBuffer juga menulis entri untuk bitmap dan persegi piksel. Umpan balik terjadi setelah pemusnahan poligon dan interpretasi glPolygonMode poligon telah terjadi, sehingga poligon yang dimusnahkan tidak dikembalikan dalam buffer umpan balik. Ini juga dapat terjadi setelah poligon dengan lebih dari tiga tepi dipecah menjadi segitiga, jika implementasi OpenGL merender poligon dengan melakukan penguraian ini.
Anda dapat menyisipkan penanda ke dalam buffer umpan balik dengan glPassThrough.
Berikut ini adalah tata bahasa untuk blok nilai yang ditulis ke dalam buffer umpan balik. Setiap primitif ditunjukkan dengan nilai identifikasi unik diikuti oleh beberapa simpul. Entri poligon menyertakan nilai bilangan bulat yang menunjukkan berapa banyak simpul yang diikuti. Vertex diumpankan kembali sebagai beberapa jumlah nilai floating-point, seperti yang ditentukan oleh jenis. Warna disalurkan kembali sebagai empat nilai dalam mode RGBA dan satu nilai dalam mode indeks warna.
feedbackList < feedbackListItem | feedbackItem
feedbackItem < point | lineSegment | polygon | bitmap | pixelRectangle | passThru
titik < GL_POINT_TOKEN puncak
lineSegment < GL_LINE_TOKEN vertex vertex | puncak GL_LINE_RESET_TOKEN verteks
poligon < GL_POLYGON_TOKEN n polySpec
polySpec < polySpec vertex | vertex vertex vertex
bitmap < GL_BITMAP_TOKEN vertex
pixelRectangle < GL_DRAW_PIXEL_TOKEN puncak | puncak GL_COPY_PIXEL_TOKEN
nilai GL_PASS_THROUGH_TOKEN passThru <
< puncak 2d | 3d | 3dColor | 3dColorTexture | 4dColorTexture
Nilai 2d <
Nilai nilai 3d <
Warna nilai nilai 3dColor <
Nilai nilai 3dColorTexture < nilai warna tex
Nilai nilai 4dColorTexture < nilai nilai warna tex
warna < rgba | indeks
nilai nilai nilai rgba <
nilai indeks <
nilai nilai nilai tex <
Parameter nilai adalah angka floating-point, dan n adalah bilangan bulat floating-point yang memberikan jumlah simpul dalam poligon. Berikut ini adalah konstanta floating-point simbolis: GL_POINT_TOKEN, GL_LINE_TOKEN, GL_LINE_RESET_TOKEN, GL_POLYGON_TOKEN, GL_BITMAP_TOKEN, GL_DRAW_PIXEL_TOKEN, GL_COPY_PIXEL_TOKEN, dan GL_PASS_THROUGH_TOKEN. GL_LINE_RESET_TOKEN dikembalikan setiap kali pola stipple baris diatur ulang. Data yang dikembalikan sebagai puncak tergantung pada jenis umpan balik.
Tabel berikut memberikan korespondensi antara jenis dan jumlah nilai per puncak; k adalah 1 dalam mode indeks warna dan 4 dalam mode RGBA.
Jenis | Koordinat | Warna | Tekstur | Jumlah total nilai |
---|---|---|---|---|
GL_2D | x, y | 2 | ||
GL_3D | x, y, z | 3 | ||
GL_3D_COLOR | x, y, z | k | 3 + k | |
GL_3D_COLOR_TEXTURE | x, y, z, | k | 4 | 7 + k |
GL_4D_COLOR_TEXTURE | x, y, z, w | k | 4 | 8 + k |
Koordinat puncak umpan balik berada dalam koordinat jendela, kecuali w, yang berada dalam koordinat klip. Warna umpan balik dinyalakan, jika pencahayaan diaktifkan. Koordinat tekstur umpan balik dihasilkan, jika pembuatan koordinat tekstur diaktifkan. Mereka selalu diubah oleh matriks tekstur.
Fungsi glFeedbackBuffer , ketika digunakan dalam daftar tampilan, tidak dikompilasi ke dalam daftar tampilan melainkan segera dijalankan.
Fungsi berikut mengambil informasi yang terkait dengan glFeedbackBuffer:
glGet dengan argumen GL_RENDER_MODE
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 |
|