您可以為曲面剖分指定最多五個回調函式。 您未指定的任何功能都不會在鑲嵌期間被呼叫,因此您也無法得到其可能返回的資訊。 您可以使用gluTessCallback來指定回呼函式。
gluTessCallback 函式會將回呼函式 fn 與 tessellation 物件 tessobj 產生關聯。 回呼的類型取決於參數類型,它可以GLU_BEGIN、GLU_EDGE_FLAG、GLU_VERTEX、GLU_END或GLU_ERROR。 五個可能的回呼函式具有下列原型。
| 回呼函式 | 原型 |
|---|---|
| GLU_BEGIN | voidbegin(GLenumtype ): |
| GLU_EDGE_FLAG | voidedgeFlag(GLboolean旗標 ): |
| GLU_VERTEX | void頂點(**void ***data ): |
| GLU_END | voidend( void ): |
| GLU_ERROR | voiderror(GLenumerrno ): |
若要變更回呼函式,請使用新的函式呼叫 gluTessCallback。 若要排除回呼函式而不將它取代為新的回呼函式,請為適當的函式傳遞 gluTessCallback Null 指標。
隨著鑲嵌過程的進行,呼叫回呼函式的方式類似於您使用 OpenGL 函數 glBegin、glEdgeFlag、glVertex 和 glEnd 的方式。
使用 三個可能參數之一叫用GLU_BEGIN 回呼函式:
- GL_TRIANGLE_FAN
- GL_TRIANGLE_STRIP(三角形條帶)
- GL_TRIANGLES
呼叫GLU_BEGIN回呼函式之後,並在呼叫與GLU_END相關聯的回呼函式之前,會叫用GLU_EDGE_FLAG和GLU_VERTEX回呼的一些組合。 相關聯的頂點和邊緣旗標的解釋方式與 OpenGL 中在 glBegin(GL_TRIANGLE_FAN)、glBegin(GL_TRIANGLE_STRIP)、glBegin(GL_TRIANGLES) 和對應的 glEnd 之間是一樣的。
因為邊緣旗標在三角形風扇或三角形條帶中沒有意義,如果有與GLU_EDGE_FLAG相關聯的回調函式,則只會在與GLU_BEGIN回調函式中使用GL_TRIANGLES。 GLU_EDGE_FLAG回呼函式的運作方式類似於 OpenGL glEdgeFlag 函式。
如果在鑲嵌過程中發生錯誤,將會調用錯誤回呼函數。 錯誤回呼函式會傳遞 GLU 錯誤號碼。 您可以使用 gluErrorString 函式來取得描述錯誤的字元字串。