次の方法で共有


コールバックの指定

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

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

コールバック関数 プロトタイプ
GLU_BEGIN voidbegin(GLenumtype );
GLU_EDGE_FLAG voidedgeFlag(GLbooleanフラグ );
GLU_VERTEX voidvertex(**void ***data );
GLU_END voidend( void );
GLU_ERROR voiderror(GLenumerrno );

 

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

テセレーションが進むにつれて、コールバック関数は、OpenGL 関数 glBeginglEdgeFlagglVertexglEnd の使用方法と同様の方法で呼び出されます。

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

  • 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に関連付けられているコールバック関数がある場合、 GLU_BEGIN コールバックは GL_TRIANGLES でのみ呼び出されます。 GLU_EDGE_FLAGコールバック関数は、OpenGL glEdgeFlag 関数と同様に機能します。

テセレーション中にエラーが発生した場合は、エラー コールバック関数が呼び出されます。 エラー コールバック関数には GLU エラー番号が渡されます。 gluErrorString 関数を使用して、エラーを説明する文字列を取得できます。