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
GL_INVALID_ENUM
type bukan nilai yang diterima.
GL_INVALID_ENUM
ukurannya negatif.
GL_INVALID_OPERATION
glFeedbackBuffer dipanggil saat mode render GL_FEEDBACK, atau glRenderMode dipanggil dengan argumen GL_FEEDBACK sebelum glFeedbackBuffer dipanggil setidaknya sekali.
GL_INVALID_OPERATION
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
Gl.h
Pustaka
Opengl32.lib
DLL
Opengl32.dll

Lihat juga

glBegin

glEnd

glGet

glLineStipple

glPassThrough

glPolygonMode

glRenderMode

glSelectBuffer