Bagikan melalui


Menentukan Panggilan Balik

Anda dapat menentukan hingga lima fungsi panggilan balik untuk tessellation. Fungsi apa pun yang tidak Anda tentukan tidak dipanggil selama tessellation, dan Anda tidak mendapatkan informasi apa pun yang mungkin telah mereka kembalikan. Anda menentukan fungsi panggilan balik dengan gluTessCallback.

Fungsi gluTessCallback mengaitkan fungsi panggilan balik fn dengan objek tessobj objek tessobj. Jenis panggilan balik ditentukan oleh jenis parameter, yang dapat GLU_BEGIN, GLU_EDGE_FLAG, GLU_VERTEX, GLU_END, atau GLU_ERROR. Lima kemungkinan fungsi panggilan balik memiliki prototipe berikut.

Fungsi panggilan balik Prototipe
GLU_BEGIN void begin(jenis GLenum);
GLU_EDGE_FLAG void edgeFlag(bendera GLboolean);
GLU_VERTEX void vertex(**void ***data );
GLU_END void end( void );
GLU_ERROR void error(GLenumerrno );

 

Untuk mengubah fungsi panggilan balik, panggil gluTessCallback dengan fungsi baru. Untuk menghilangkan fungsi panggilan balik tanpa menggantinya dengan yang baru, berikan gluTessCallback pointer null untuk fungsi yang sesuai.

Saat tesselulasi berlanjut, fungsi panggilan balik dipanggil dengan cara yang mirip dengan cara Anda akan menggunakan fungsi OpenGL glBegin, glEdgeFlag, glVertex, dan glEnd.

Fungsi panggilan balik GLU_BEGIN dipanggil dengan salah satu dari tiga parameter yang mungkin:

  • GL_TRIANGLE_FAN
  • GL_TRIANGLE_STRIP
  • GL_TRIANGLES

Setelah memanggil fungsi panggilan balik GLU_BEGIN , dan sebelum memanggil fungsi panggilan balik yang terkait dengan GLU_END, beberapa kombinasi panggilan balik GLU_EDGE_FLAG dan GLU_VERTEX dipanggil. Simpul terkait dan bendera tepi ditafsirkan persis seperti di OpenGL antara glBegin(GL_TRIANGLE_FAN), glBegin(GL_TRIANGLE_STRIP), atau glBegin(GL_TRIANGLES**)** dan glEnd yang cocok.

Karena bendera tepi tidak masuk akal dalam kipas segitiga atau strip segitiga, jika ada fungsi panggilan balik yang terkait dengan GLU_EDGE_FLAG, panggilan balik GLU_BEGIN hanya dipanggil dengan GL_TRIANGLES. Fungsi panggilan balik GLU_EDGE_FLAG berfungsi secara analog ke fungsi GlEdgeFlag OpenGL.

Jika ada kesalahan selama tessellation, fungsi panggilan balik kesalahan dipanggil. Fungsi panggilan balik kesalahan dilewatkan nomor kesalahan GLU. Anda dapat memperoleh string karakter yang menjelaskan kesalahan dengan fungsi gluErrorString.