次の方法で共有


コールバックの指定

テッセレーションには最大 5 つのコールバック関数を指定できます。 指定しない関数はテッセレーション中に呼び出されず、返される可能性のある情報も取得されません。 コールバック関数は gluTessCallbackで指定します。

gluTessCallback 関数は、コールバック関数 fn をテッセレーションオブジェクト tessobjに関連付けます。 コールバックのタイプは、パラメータ type によって決定されます。パラメータは、GLU_BEGINGLU_EDGE_FLAGGLU_VERTEXGLU_END、 または GLU_ERROR になります。 5 つのコールバック関数には次のプロトタイプがあります。

コールバック関数 プロトタイプ
GLU_BEGIN void begin(GLenumtype );
GLU_EDGE_FLAG void edgeFlag(GLbooleanフラグ );
GLU_VERTEX void vertex(**void ***データ );
GLU_END void 終了( void );
GLU_ERROR void エラー(GLenumerrno );

 

コールバック関数を変更するには、新しい関数を使用して gluTessCallback を呼び出します。 コールバック関数を新しいものに置き換えずに削除するには、 gluTessCallback に適切な関数の null ポインターを渡します。

テッセレーションが進むにつれて、OpenGL 関数 glBeginglEdgeFlagglVertex、および glEnd を使用する場合と同様の方法でコールバック関数が呼び出されます。

GLU_BEGIN コールバック関数は、次の 3 つのパラメータのいずれかを使用して呼び出されます。

  • 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 関数を使用して、エラーを説明する文字列を取得できます。