指定回呼
您可以為鑲嵌指定最多五個回呼函式。 您未指定的任何函式都不會在鑲嵌期間呼叫,而且您不會取得任何可能傳回的資訊。 您可以使用 gluTessCallback 來指定回呼函式。
gluTessCallback 函式會將回呼函式 fn 與 tessellation 物件 tessobj 產生關聯。 回呼的類型取決於參數類型,它可以GLU_BEGIN、GLU_EDGE_FLAG、GLU_VERTEX、GLU_END或GLU_ERROR。 五個可能的回呼函式具有下列原型。
回呼函式 | 原型 |
---|---|
GLU_BEGIN | void begin(GLenumtype ): |
GLU_EDGE_FLAG | void edgeFlag(GLboolean旗標 ): |
GLU_VERTEX | void 頂點(**void ***data ): |
GLU_END | void end( void ): |
GLU_ERROR | void error(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回呼的一些組合。 相關聯的頂點和邊緣旗標會與 glBegin(GL_TRIANGLE_FAN)、glBegin(GL_TRIANGLE_STRIP)或 glBegin(GL_TRIANGLES**)** 和相符的 glEnd 之間的 OpenGL 一樣解譯。
因為邊緣旗標在三角形風扇或三角形帶中沒有意義,如果有與GLU_EDGE_FLAG相關聯的回呼函式,則只會使用 GL_TRIANGLES 呼叫GLU_BEGIN回呼。 GLU_EDGE_FLAG回呼函式的運作方式類似於 OpenGL glEdgeFlag 函式。
如果在鑲嵌期間發生錯誤,則會叫用錯誤回呼函式。 錯誤回呼函式會傳遞 GLU 錯誤號碼。 您可以使用 gluErrorString 函式來取得描述錯誤的字元字串。