Geri Çağırmaları Belirtme
Bir tessellation için en fazla beş geri çağırma işlevi belirtebilirsiniz. Belirtmediğiniz işlevler mozaikleme sırasında çağrılmaz ve döndürebilecekleri herhangi bir bilgi alamazsınız. geri çağırma işlevlerini gluTessCallbackile belirtirsiniz.
gluTessCallback fonksiyonu, geri çağırma fonksiyonu fn'yi tessellation nesnesi tessobjile ilişkilendirir. Geri çağırma türü, türüparametresi tarafından belirlenir, bu da GLU_BEGIN, GLU_EDGE_FLAG, GLU_VERTEX, GLU_ENDveya GLU_ERRORolabilir. Beş olası geri çağırma işlevi aşağıdaki prototiplere sahiptir.
Geri çağırma işlevi | Prototip |
---|---|
GLU_BEGIN | voidbaşlat(GLenumtürü ); |
GLU_EDGE_FLAG | voidedgeFlag(GLbooleanflag ); |
GLU_VERTEX | voidköşe(**void ***veri); |
GLU_END | voidend( void); |
GLU_ERROR | voidhatası(GLenumerrno ); |
Geri çağırma işlevini değiştirmek için yeni işlevle gluTessCallback çağırın. Bir geri çağırma işlevini yenisiyle değiştirmeden ortadan kaldırmak için, uygun işlev için gluTessCallback'e null işaretçi geçirin.
Döşeme işlemi devam ederken, geri çağırma işlevleri, OpenGL işlevlerini kullanma şeklinize benzer şekilde çağrılır; glBegin, glEdgeFlag, glVertexve glEnd.
GLU_BEGIN geri çağırma işlevi üç olası parametreden biriyle çağrılır:
- GL_TRIANGLE_FAN
- GL_TRIANGLE_STRIP
- GL_TRIANGLES (OpenGL üçgenleri)
GLU_BEGIN geri çağırma işlevini çağırdıktan sonra ve GLU_ENDile ilişkili geri çağırma işlevini çağırmadan önce GLU_EDGE_FLAG ve GLU_VERTEX geri çağırmalarının bir bileşimi çağrılır. İlişkili köşeler ve kenar bayrakları, glBegin(GL_TRIANGLE_FAN), glBegin(GL_TRIANGLE_STRIP) veya glBegin(GL_TRIANGLES**)** ile eşleşen glEndarasında OpenGL'de oldukları gibi yorumlanır.
Kenar bayrakları üçgen fanda veya üçgen şeritte anlamlı olmadığından, GLU_EDGE_FLAGile ilişkilendirilmiş bir geri çağırma işlevi varsa, GLU_BEGIN yalnızca GL_TRIANGLESile çağrılır. GLU_EDGE_FLAG geri çağırma işlevi, OpenGL glEdgeFlag işlevine benzer şekilde çalışır.
Tessellation sırasında bir hata meydana gelirse, hata geri çağırma işlevi çağrılır. Hata geri çağırma işlevine bir GLU hata numarası geçirilir. gluErrorString işleviyle hatayı açıklayan bir karakter dizesi alabilirsiniz.