Fungsi gluTessCallback
Fungsi gluTessCallback mendefinisikan panggilan balik untuk objek tessellation.
Sintaks
void WINAPI gluTessCallback(
GLUtesselator *tess,
GLenum which,
void (CALLBACK *fn)()
);
Parameter
-
Tess
-
Objek tessellation (dibuat dengan gluNewTess).
-
Yang
-
Panggilan balik sedang didefinisikan. Nilai berikut ini valid: GLU_TESS_BEGIN, GLU_TESS_BEGIN_DATA, GLU_TESS_EDGE_FLAG, GLU_TESS_EDGE_FLAG_DATA, GLU_TESS_VERTEX, GLU_TESS_VERTEX_DATA, GLU_TESS_END, GLU_TESS_END_DATA, GLU_TESS_COMBINE, GLU_TESS_COMBINE_DATA, GLU_TESS_ERROR, dan GLU_TESS_ERROR_DATA.
Untuk informasi selengkapnya tentang panggilan balik ini, lihat bagian Keterangan berikut ini.
-
Fn
-
Fungsi yang akan dipanggil.
Nilai kembali
Fungsi ini tidak mengembalikan nilai.
Keterangan
Gunakan gluTessCallback untuk menentukan panggilan balik yang akan digunakan oleh objek tessellation. Jika panggilan balik yang ditentukan sudah ditentukan, maka akan diganti. Jika fn adalah NULL, maka panggilan balik yang ada menjadi tidak terdefinisi.
Objek tessellation menggunakan panggilan balik ini untuk menjelaskan bagaimana poligon yang Anda tentukan dipecah menjadi segitiga.
Ada dua versi setiap panggilan balik, satu dengan data poligon yang dapat Anda tentukan dan satu tanpanya. Jika kedua versi panggilan balik tertentu ditentukan, panggilan balik dengan data poligon yang Anda tentukan akan digunakan. Parameter polygon_datagluTessBeginPolygon adalah salinan pointer yang ditentukan ketika gluTessBeginPolygon dipanggil.
Berikut ini adalah panggilan balik yang valid:
Panggilan Balik | Deskripsi |
---|---|
GLU_TESS_BEGIN | Panggilan balik GLU_TESS_BEGIN dipanggil seperti glBegin untuk menunjukkan awal primitif (segitiga). Fungsi ini mengambil argumen tunggal dari jenis GLenum. Jika Anda mengatur properti GLU_TESS_BOUNDARY_ONLY ke GL_FALSE, argumen diatur ke GL_TRIANGLE_FAN, GL_TRIANGLE_STRIP, atau GL_TRIANGLES. Jika Anda mengatur properti GLU_TESS_BOUNDARY_ONLY ke GL_TRUE, argumen diatur ke GL_LINE_LOOP. Prototipe fungsi untuk panggilan balik ini adalah sebagai berikut: bataldimulai (jenisGLenum); |
GLU_TESS_BEGIN_DATA | GLU_TESS_BEGIN_DATA sama dengan panggilan balik GLU_TESS_BEGIN kecuali dibutuhkan argumen pointer tambahan. Pointer ini identik dengan pointer buram yang disediakan saat Anda memanggil gluTessBeginPolygon. Prototipe fungsi untuk panggilan balik ini adalah: voidbeginData (jenisGLenum, polygon_data kekosongan * ); |
GLU_TESS_EDGE_FLAG | Panggilan balik GLU_TESS_EDGE_FLAG mirip dengan glEdgeFlag. Fungsi ini mengambil bendera Boolean tunggal yang menunjukkan tepi mana yang terletak pada batas poligon. Jika bendera GL_TRUE, maka setiap puncak yang mengikuti memulai tepi yang terletak di batas poligon; yaitu, tepi yang memisahkan wilayah interior dari bagian luar. Jika bendera GL_FALSE, maka setiap puncak yang mengikuti memulai tepi yang terletak di interior poligon. Panggilan balik GLU_TESS_EDGE_FLAG (jika ditentukan) dipanggil sebelum panggilan balik puncak pertama dibuat. Karena kipas segitiga dan strip segitiga tidak mendukung bendera tepi, panggilan balik awal tidak dipanggil dengan GL_TRIANGLE_FAN atau GL_TRIANGLE_STRIP jika panggilan balik bendera tepi disediakan. Sebaliknya, kipas dan strip dikonversi menjadi segitiga independen. Prototipe fungsi untuk panggilan balik ini adalah: voidedgeFlag (benderaGLboolean); |
GLU_TESS_EDGE_FLAG_DATA | Panggilan balik GLU_TESS_EDGE_FLAG_DATA sama dengan panggilan balik GLU_TESS_EDGE_FLAG kecuali dibutuhkan argumen pointer tambahan. Pointer ini identik dengan pointer buram yang disediakan saat Anda memanggil gluTessBeginPolygon. Prototipe fungsi untuk panggilan balik ini adalah: void edgeFlagData (benderaGLboolean,polygon_data kekosongan * ); |
GLU_TESS_VERTEX | Panggilan balik GLU_TESS_VERTEX dipanggil antara panggilan balik awal dan akhir. Ini mirip dengan glVertex , dan mendefinisikan puncak segitiga yang dibuat oleh proses tessellation. Fungsi mengambil pointer sebagai satu-satunya argumen. Penunjuk ini identik dengan penunjuk buram yang Anda berikan saat Anda menentukan vertex (lihat gluTessVertex). Prototipe fungsi untuk panggilan balik ini adalah: void vertex (void * vertex_data); |
GLU_TESS_VERTEX_DATA | GLU_TESS_VERTEX_DATA sama dengan panggilan balik GLU_TESS_VERTEX kecuali dibutuhkan argumen pointer tambahan. Pointer ini identik dengan pointer buram yang disediakan saat Anda memanggil gluTessBeginPolygon. Prototipe fungsi untuk panggilan balik ini adalah: voidvertexData (void * vertex_data, void * polygon_data); |
GLU_TESS_END | Panggilan balik GLU_TESS_END melayani tujuan yang sama dengan glEnd. Ini menunjukkan akhir dari primitif, dan tidak membutuhkan argumen. Prototipe fungsi untuk panggilan balik ini adalah: batalberakhir (batal); |
GLU_TESS_END_DATA | Panggilan balik GLU_TESS_END_DATA sama dengan panggilan balik GLU_TESS_END kecuali dibutuhkan argumen pointer tambahan. Pointer ini identik dengan pointer buram yang disediakan saat Anda memanggil gluTessBeginPolygon. Prototipe fungsi untuk panggilan balik ini adalah: voidendData (polygon_data kekosongan * ); |
GLU_TESS_COMBINE | Panggil panggilan balik GLU_TESS_COMBINE untuk membuat verteks baru saat tessellation mendeteksi persimpangan, atau untuk menggabungkan fitur. Fungsi ini mengambil empat argumen: Array tiga elemen, masing-masing dari jenis Gldouble. Array empat pointer. Array dari empat elemen, masing-masing jenis GLfloat. Penunjuk ke penunjuk. Prototipe fungsi untuk panggilan balik ini adalah: voidcombine(GLdoublecoords[3], void * vertex_data[4], GLfloatweight[4], void **outData); Puncak didefinisikan sebagai kombinasi linier hingga empat puncak yang ada, disimpan dalam vertex_data. Koefisien kombinasi linier diberikan berdasarkan berat; bobot ini selalu berjumlah 1,0. Semua penunjuk puncak valid bahkan ketika beberapa bobotnya nol. Parameter coords memberikan lokasi vertex baru. Alokasikan vertex lain, interpolasi parameter menggunakan vertex_data dan berat, dan kembalikan penunjuk vertex baru di outData. Handel ini disediakan selama panggilan balik penyajian. Bebaskan memori kapan-kapan setelah memanggil gluTessEndPolygon. Misalnya, jika poligon terletak di bidang arbitrer di ruang tiga dimensi, dan Anda mengaitkan warna dengan setiap puncak, panggilan balik GLU_TESS_COMBINE mungkin terlihat seperti berikut: Ketika tesselulasi mendeteksi persimpangan, panggilan balik GLU_TESS_COMBINE atau GLU_TESS_COMBINE_DATA (lihat di bawah) harus ditentukan, dan harus menulis penunjuk non-NULL ke dalam dataOut. Jika tidak, kesalahan GLU_TESS_NEED_COMBINE_CALLBACK terjadi, dan tidak ada output yang dihasilkan. (Ini adalah satu-satunya kesalahan yang dapat terjadi selama tesselulasi dan penyajian.) |
GLU_TESS_COMBINE_DATA | Panggilan balik GLU_TESS_COMBINE_DATA sama dengan panggilan balik GLU_TESS_COMBINE kecuali dibutuhkan argumen pointer tambahan. Pointer ini identik dengan pointer buram yang disediakan saat Anda memanggil gluTessBeginPolygon. Prototipe fungsi untuk panggilan balik ini adalah: combineDatayang batal (GLdoublecoords[3], void *vertex_data[4], GLfloatweight[4], void **outData, void * polygon_data); |
GLU_TESS_ERROR | Panggilan balik GLU_TESS_ERROR dipanggil ketika terjadi kesalahan. Satu argumen berjenis GLenum; ini menunjukkan kesalahan spesifik yang terjadi dan diatur ke salah satu hal berikut: GLU_TESS_MISSING_BEGIN_POLYGON GLU_TESS_MISSING_END_POLYGON GLU_TESS_MISSING_BEGIN_CONTOUR GLU_TESS_MISSING_END_CONTOUR GLU_TESS_COORD_TOO_LARGE GLU_TESS_NEED_COMBINE_CALLBACK Panggil gluErrorString untuk mengambil string karakter yang menjelaskan kesalahan ini. Prototipe fungsi untuk panggilan balik ini adalah sebagai berikut: kesalahanbatal (GLenumerrno); Pustaka GLU pulih dari empat kesalahan pertama dengan menyisipkan panggilan atau panggilan yang hilang. GLU_TESS_COORD_TOO_LARGE menunjukkan bahwa beberapa koordinat puncak melebihi GLU_TESS_MAX_COORD konstanta yang telah ditentukan sebelumnya dalam nilai absolut, dan bahwa nilai telah dijepit. (Nilai koordinat harus cukup kecil sehingga dua dapat dikalikan bersama-sama tanpa luapan.) GLU_TESS_NEED_COMBINE_CALLBACK menunjukkan bahwa tesselulasi mendeteksi persimpangan antara dua tepi dalam data input, dan panggilan balik GLU_TESS_COMBINE atau GLU_TESS_COMBINE_DATA tidak disediakan. Tidak ada output yang akan dihasilkan. |
GLU_TESS_ERROR_DATA | Panggilan balik GLU_TESS_ERROR_DATA sama dengan panggilan balik GLU_TESS_ERROR, kecuali bahwa dibutuhkan argumen pointer tambahan. Pointer ini identik dengan pointer buram yang disediakan saat Anda memanggil gluTessBeginPolygon. Prototipe fungsi untuk panggilan balik ini adalah: void errorData (GLenumerrno, void * polygon_data); |
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 |
|