Bagikan melalui


Menentukan Poligon menjadi Tessellated

Anda menentukan poligon (mungkin berisi lubang) yang akan dipesan menggunakan:

Untuk poligon tanpa lubang, proses spesifikasinya persis seperti di OpenGL:

  1. Mulailah dengan gluBeginPolygon.
  2. Panggil gluTessVertex untuk setiap vertex di batas.
  3. Akhiri poligon dengan panggilan ke gluEndPolygon.

Jika poligon terdiri dari beberapa kontur, termasuk lubang dan lubang dalam lubang, Anda menentukan kontur satu demi satu, mendahului masing-masing dengan gluNextContour. Ketika Anda memanggil gluEndPolygon, itu menandakan akhir kontur akhir dan memulai tessellation. Anda dapat menghilangkan panggilan ke gluNextContour sebelum kontur pertama. Fungsi gluBeginPolygon memulai spesifikasi poligon untuk di-tesselasikan dan mengaitkan objek tessellation, tessobj, dengannya. Fungsi panggilan balik yang akan digunakan adalah fungsi yang Anda ikat ke objek tessellation dengan gluTessCallback.

Fungsi gluTessVertex menentukan verteks dalam poligon yang akan di-tessellated. Panggil gluTessVertex untuk setiap vertex di poligon. Parameter tessobj fungsi adalah objek tessellation yang akan digunakan, v berisi koordinat vertex tiga dimensi, dan data adalah penunjuk arbitrer yang dikirim ke panggilan balik yang terkait dengan GLU_VERTEX. Biasanya, data berisi data puncak, koordinat tekstur, informasi warna, atau apa pun yang mungkin diperlukan aplikasi.

Fungsi gluNextContour menandai awal kontur berikutnya ketika beberapa kontur membentuk batas poligon yang akan di-tessellated. Parameter jenis fungsi dapat GLU_EXTERIOR, GLU_INTERIOR, GLU_CCW, GLU_CW, atau GLU_UNKNOWN. Konstanta ini hanya berfungsi sebagai petunjuk untuk tessellation. Jika Anda membuatnya benar, tessellation mungkin berjalan lebih cepat. Jika Anda salah mendapatkannya, mereka diabaikan, dan tessellation masih berfungsi.

Untuk poligon dengan lubang, satu kontur adalah kontur eksterior, dan yang lainnya adalah interior. Jika Anda tidak memanggil gluNextContour segera setelah gluBeginPolygon, kontur pertama diasumsikan berjenis GLU_EXTERIOR.

GLU_CW dan GLU_CCW menunjukkan poligon berorientasi searah jarang dan berlawanan arah jarang. Memilih mana yang searah jarang dan yang berlawanan arah jarang semena-mena dalam tiga dimensi, tetapi dalam bidang apa pun, ada dua orientasi yang berbeda; gunakan jenis GLU_CW dan GLU_CCW secara konsisten. Gunakan GLU_UNKNOWN jika Anda tidak tahu mana yang akan digunakan.

Fungsi gluEndPolygon menunjukkan akhir spesifikasi poligon. Ini juga menunjukkan bahwa tessellation dapat mulai menggunakan objek tessobj.