gluTessCallback 函式
gluTessCallback函式會定義鑲嵌物件的回呼。
語法
void WINAPI gluTessCallback(
GLUtesselator *tess,
GLenum which,
void (CALLBACK *fn)()
);
參數
-
苔 絲
-
使用 gluNewTess) 建立的鑲嵌物件 (。
-
-
正在定義的回呼。 下列值有效:GLU_TESS_BEGIN、GLU_TESS_BEGIN_DATA、GLU_TESS_EDGE_FLAG、GLU_TESS_EDGE_FLAG_DATA、GLU_TESS_VERTEX、GLU_TESS_VERTEX_DATA、GLU_TESS_END、GLU_TESS_END_DATA、GLU_TESS_COMBINE、GLU_TESS_COMBINE_DATA、GLU_TESS_ERROR和GLU_TESS_ERROR_DATA。
如需這些回呼的詳細資訊,請參閱下列一節。
-
Fn
-
要呼叫的函式。
傳回值
此函式不會傳回值。
備註
使用 gluTessCallback 指定要由鑲嵌物件使用的回呼。 如果已經定義指定的回呼,則會加以取代。 如果 fn 為 Null,則現有的回呼會變成未定義。
鑲嵌物件會使用這些回呼來描述您指定的多邊形如何分成三角形。
每個回呼各有兩個版本,一個具有您可以定義的多邊形資料,另一個沒有。 如果指定這兩個版本的特定回呼,將會使用您指定的多邊形資料回呼。 gluTessBeginPolygon的polygon_data參數是呼叫gluTessBeginPolygon時所指定的指標複本。
以下是有效的回呼:
回呼 | 描述 |
---|---|
GLU_TESS_BEGIN | 叫用GLU_TESS_BEGIN回呼的方式類似 glBegin ,以指出 (三角形) 基本專案的開頭。 函式會採用 GLenum類型的單一引數。 如果您將 GLU_TESS_BOUNDARY_ONLY 屬性設定為 GL_FALSE,則引數會設定為 GL_TRIANGLE_FAN、GL_TRIANGLE_STRIP 或 GL_TRIANGLES。 如果您將 GLU_TESS_BOUNDARY_ONLY 屬性設定為 GL_TRUE,則引數會設定為 GL_LINE_LOOP。 此回呼的函式原型如下所示: void開始 (GLenum類型) ; |
GLU_TESS_BEGIN_DATA | GLU_TESS_BEGIN_DATA與GLU_TESS_BEGIN回呼相同,不同之處在于它會採用額外的指標引數。 當您呼叫 gluTessBeginPolygon時,此指標與提供的不透明指標相同。 此回呼的函式原型為:voidbeginData (GLenum類型、void * polygon_data) ; |
GLU_TESS_EDGE_FLAG | GLU_TESS_EDGE_FLAG回呼類似于 glEdgeFlag。 函式會採用單一布林值旗標,指出哪些邊緣位於多邊形界限上。 如果旗標GL_TRUE,則後續的每個頂點都會開始位於多邊形界限上的邊緣;也就是說,將內部區域與外部區域分開的邊緣。 如果旗標GL_FALSE,則後續的每個頂點都會開始位於多邊形內部的邊緣。 如果在進行第一個頂點回呼之前叫用定義) ,則GLU_TESS_EDGE_FLAG回呼 (。 由於三角形風扇和三角形帶不支援邊緣旗標,因此如果未提供邊緣旗標回呼,則不會使用 GL_TRIANGLE_FAN 或 GL_TRIANGLE_STRIP 呼叫開始回呼。 相反地,風扇和帶狀結構會轉換成獨立的三角形。 此回呼的函式原型如下: voidedgeFlag (GLboolean旗標) ; |
GLU_TESS_EDGE_FLAG_DATA | GLU_TESS_EDGE_FLAG_DATA回呼與GLU_TESS_EDGE_FLAG回呼相同,不同之處在于它會採用額外的指標引數。 當您呼叫 gluTessBeginPolygon時,此指標與提供的不透明指標相同。 此回呼的函式原型為:voidedgeFlagData (GLboolean旗標、void * polygon_data) ; |
GLU_TESS_VERTEX | 開始回呼和結束回呼之間會叫用GLU_TESS_VERTEX回呼。 它類似于 glVertex ,它會定義鑲嵌程式所建立之三角形的頂點。 函式會採用指標作為其唯一引數。 此指標與您定義頂點時所提供的不透明指標相同, (請參閱 gluTessVertex) 。 此回呼的函式原型為:void頂點 (void * vertex_data) ; |
GLU_TESS_VERTEX_DATA | GLU_TESS_VERTEX_DATA與GLU_TESS_VERTEX回呼相同,不同之處在于它會採用額外的指標引數。 當您呼叫 gluTessBeginPolygon時,此指標與提供的不透明指標相同。 此回呼的函式原型為:voidvertexData (void * vertex_data,void * polygon_data) ; |
GLU_TESS_END | GLU_TESS_END回呼的用途與 glEnd相同。 它表示基本類型的結尾,而且不採用任何引數。 此回呼的函式原型為: voidend (void) ; |
GLU_TESS_END_DATA | GLU_TESS_END_DATA回呼與GLU_TESS_END回呼相同,不同之處在于它會採用額外的指標引數。 當您呼叫 gluTessBeginPolygon時,此指標與提供的不透明指標相同。 此回呼的函式原型為:voidendData (void * polygon_data) ; |
GLU_TESS_COMBINE | 呼叫GLU_TESS_COMBINE回呼,以在鑲嵌偵測到交集或合併特徵時建立新的頂點。 函式採用四個引數:三個元素的陣列,每一個類型為 Gldouble。 四個指標的陣列。 四個元素的陣列,每一個類型都是 GLfloat。 指標的指標。 此回呼的函式原型如下: voidcombine (GLdoublecoords[3], void * vertex_data[4], GLfloatweight[4], void **outData) ; 頂點定義為最多四個現有頂點的線性組合,儲存在vertex_data中。 線性組合的係數會依權數來指定;這些權數一律加總至 1.0。 即使部分加權為零,所有頂點指標都有效。 coords 參數會提供新頂點的位置。 配置另一個頂點、使用vertex_data和權數插補參數,並在 outData 中傳回新的頂點指標。 轉譯回呼期間會提供此控制碼。 呼叫 gluTessEndPolygon之後,請釋放記憶體。 例如,如果多邊形位於三維空間中的任意平面,而且您將色彩與每個頂點產生關聯,則GLU_TESS_COMBINE回呼看起來可能如下所示: 當鑲嵌偵測到交集時,GLU_TESS_COMBINE或GLU_TESS_COMBINE_DATA回呼 (請參閱下列) 必須定義,而且必須將非Null 指標寫入 dataOut。 否則會發生GLU_TESS_NEED_COMBINE_CALLBACK錯誤,而且不會產生任何輸出。 (這是鑲嵌和轉譯期間可能發生的唯一錯誤。) |
GLU_TESS_COMBINE_DATA | GLU_TESS_COMBINE_DATA回呼與GLU_TESS_COMBINE回呼相同,不同之處在于它會採用額外的指標引數。 當您呼叫 gluTessBeginPolygon時,此指標與提供的不透明指標相同。 此回呼的函式原型為:voidcombineData (GLdoublecoords[3], void *vertex_data[4], GLfloatweight[4], voidoutData, void * **polygon_data) ; |
GLU_TESS_ERROR | 發生錯誤時會呼叫GLU_TESS_ERROR回呼。 一個引數的類型為 GLenum;指出發生的特定錯誤,且設定為下列其中一項:GLU_TESS_MISSING_BEGIN_POLYGON GLU_TESS_MISSING_END_POLYGON GLU_TESS_MISSING_BEGIN_CONTOUR GLU_TESS_MISSING_END_CONTOUR GLU_TESS_COORD_TOO_LARGE GLU_TESS_NEED_COMBINE_CALLBACK 呼叫 gluErrorString 以擷取描述這些錯誤的字元字串。 此回呼的函式原型如下所示: voiderror (GLenumerrno) ; GLU 程式庫會插入遺漏的呼叫或呼叫,以從前四個錯誤復原。 GLU_TESS_COORD_TOO_LARGE表示某些頂點座標超過絕對值中預先定義的常數GLU_TESS_MAX_COORD,而且值已受到限制。 (座標值必須夠小,兩個可以乘以不溢位。) GLU_TESS_NEED_COMBINE_CALLBACK表示鑲嵌偵測到輸入資料中兩個邊緣之間的交集,而且未提供GLU_TESS_COMBINE或GLU_TESS_COMBINE_DATA回呼。 不會產生任何輸出。 |
GLU_TESS_ERROR_DATA | GLU_TESS_ERROR_DATA回呼與GLU_TESS_ERROR回呼相同,不同之處在于它會採用額外的指標引數。 當您呼叫 gluTessBeginPolygon時,此指標與提供的不透明指標相同。 此回呼的函式原型為:voiderrorData (GLenumerrno、void * polygon_data) ; |
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 |
Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 |
Windows 2000 Server [僅限傳統型應用程式] |
標頭 |
|
程式庫 |
|
DLL |
|