GLUNURBSCALLBACK
Section: Misc. Reference Manual Pages (3G)
索引
xjman
名前
gluNurbsCallback
- NURBS オブジェクトのコールバックを定義する
書式
void gluNurbsCallback(
GLUnurbs* nurb,
GLenum which,
_GLUfuncptr CallBackFunc )
delim $$
引き数
- nurb
-
NURBS オブジェクト(gluNewNurbsRenderer を使って作る)を指定する。
- which
-
定義するコールバックを指定する。
有効な値は
GLU_NURBS_BEGIN, GLU_NURBS_VERTEX, GLU_NURBS_NORMAL, GLU_NURBS_COLOR, GLU_NURBS_TEXTURE_COORD, GLU_NURBS_END, GLU_NURBS_BEGIN_DATA, GLU_NURBS_VERTEX_DATA, GLU_NURBS_NORMAL_DATA, GLU_NURBS_COLOR_DATA, GLU_NURBS_TEXTURE_COORD_DATA, GLU_NURBS_END_DATA, GLU_NURBS_ERROR
である。
- CallBackFunc
-
コールバックが呼び出す関数を指定する。
説明
gluNurbsCallback は、NURBS オブジェクトが使うコールバックを
定義するために使われる。
指定されたコールバックが既に定義されていたら、新しいコールバックに
置き換えられる。
CallBackFunc が NULL であれば、このコールバックは呼び出されなく
なり、関連付けられていたデータは(もしあれば)失われる。
エラー用コールバックを除き、これらのコールバックは NURBS の
テセレーション処理に使われ(GLU_NURBS_MODE に
GLU_NURBS_TESSELLATOR が設定されている時)、
テセレーションの結果として得られる OpenGL のポリゴンプリミティブを
返す。
各コールバックには 2 種類のバージョンがある点に注意すること。
すなわち、ユーザデータを指すポインタを持つものと持たないものである。
あるコールバックに対して両方のバージョンが指定された場合は、
ユーザデータを指すポインタを持つ方が使われる。
``userData'' は前回の gluNurbsCallbackData の呼び出しで
指定されたポインタのコピーである点に注意すること。
エラー用コールバック関数は、GLU_NURBS_MODE の値に関係なく
有効となる。
他の全ての種類のコールバック関数は、
GLU_NURBS_MODE に GLU_NURBS_TESSELLATOR が
設定されている場合だけ有効となる。
有効なコールバックは以下の通りである:
GLU_NURBS_BEGIN
開始コールバックはプリミティブの開始を示す。
この関数は GLenum 型の引き数をひとつ取る。
引き数の値には GL_LINES, GL_LINE_STRIP,
GL_TRIANGLE_FAN, GL_TRIANGLE_STRIP,
GL_TRIANGLES, GL_QUAD_STRIP のいずれかを指定できる。
デフォルトでは開始コールバックは NULL である。
このコールバックの関数プロトタイプは次のようになる:
-
void begin ( GLenum type );
- GLU_NURBS_BEGIN_DATA
-
GLU_NURBS_BEGIN コールバックとほぼ同じであるが、ポインタ引き数
がひとつ多い点が異なる。このポインタは前回の
gluNurbsCallbackData の呼び出しの際に指定されたポインタの
コピーである。
デフォルトのコールバック関数は NULL である。
このコールバックの関数プロトタイプは次のようになる:
-
void beginData (GLenum type, void *userData);
- GLU_NURBS_VERTEX
-
頂点コールバックはプリテミィブの頂点を示す。
頂点の座標は引き数 ``vertex'' に格納される。
生成された全ての頂点の次元は 3 である。つまり、同次座標系は
アフィン座標系に変換される。
デフォルトの頂点コールバック関数は NULL である。
このコールバックの関数プロトタイプは次のようになる:
-
void vertex ( GLfloat *vertex );
- GLU_NURBS_VERTEX_DATA
-
GLU_NURBS_VERTEX コールバックとほぼ同じであるが、ポインタ引き数
がひとつ多い点が異なる。このポインタは前回の
gluNurbsCallbackData の呼び出しの際に指定されたポインタの
コピーである。
デフォルトのコールバック関数は NULL である。
このコールバックの関数プロトタイプは次のようになる:
-
void vertexData ( GLfloat *vertex, void *userData );
- GLU_NURBS_NORMAL
-
法線コールバックは、頂点上に法線が生成されると呼び出される。
法線の成分は引き数 ``normal'' に格納される。
NURBS 曲線の場合、このコールバック関数はユーザが法線マップ
(GL_MAP1_NORMAL)を与えた場合のみ有効となる。
NURBS 曲面の場合、法線マップが(GL_MAP2_NORMAL)が与えられると、
生成される法線は法線マップから算出される。
法線マップが与えられていなければ、曲面の法線は GL_AUTO_NORMAL
が有効な場合の評価処理に対する説明と同様の方法で算出される。
デフォルトの法線コールバックは NULL である。
このコールバックの関数プロトタイプは次のようになる:
-
void normal ( GLfloat *normal );
- GLU_NURBS_NORMAL_DATA
-
GLU_NURBS_NORMAL コールバックとほぼ同じであるが、ポインタ引き数
がひとつ多い点が異なる。このポインタは前回の
gluNurbsCallbackData の呼び出しの際に指定されたポインタの
コピーである。
デフォルトのコールバック関数は NULL である。
このコールバックの関数プロトタイプは次のようになる:
-
void normalData ( GLfloat *normal, void *userData );
- GLU_NURBS_COLOR
-
色コールバックは、頂点上に色が生成されたときに呼び出される。
色の要素は引き数 ``color'' に格納される。
このコールバックは、ユーザがカラーマップ((GL_MAP1_COLOR_4
または GL_MAP2_COLOR_4)を指定した場合のみ有効になる。
``color'' は 4 つの要素(R, G, B, A)を持つ。
デフォルトの色コールバック関数は NULL である。
このコールバックの関数プロトタイプは次のようになる:
-
void color ( GLfloat *color );
- GLU_NURBS_COLOR_DATA
-
GLU_NURBS_COLOR コールバックとほぼ同じであるが、ポインタ引き数
がひとつ多い点が異なる。このポインタは前回の
gluNurbsCallbackData の呼び出しの際に指定されたポインタの
コピーである。
デフォルトのコールバック関数は NULL である。
このコールバックの関数プロトタイプは次のようになる:
-
void colorData ( GLfloat *color, void *userData );
- GLU_NURBS_TEXTURE_COORD
-
テクスチャコールバックは頂点上にテクスチャ座標系が生成されたときに呼び
出される。
これらの座標系は引き数 ``texCoord'' に格納される。
テクスチャ座標系の数は 1, 2, 3, 4 のいずれかであり、指定された
テクスチャマップの種類によって決まる
(GL_MAP1_TEXTURE_COORD_1,
GL_MAP1_TEXTURE_COORD_2,
GL_MAP1_TEXTURE_COORD_3,
GL_MAP1_TEXTURE_COORD_4,
GL_MAP2_TEXTURE_COORD_1,
GL_MAP2_TEXTURE_COORD_2,
GL_MAP2_TEXTURE_COORD_3,
GL_MAP2_TEXTURE_COORD_4)。
テクスチャマップが指定されていない場合は、このコールバック関数は
呼び出されない。
デフォルトのテクスチャコールバック関数は NULL である。
このコールバックの関数プロトタイプは次のようになる:
-
void texCoord ( GLfloat *texCoord );
GLU_NURBS_TEXTURE_COORD_DATA-
GLU_NURBS_TEXTURE_COORD コールバックとほぼ同じであるが、
ポインタ引き数がひとつ多い点が異なる。
このポインタは前回の gluNurbsCallbackData の呼び出しの際に
指定されたポインタのコピーである。
デフォルトのコールバック関数は NULL である。
このコールバックの関数プロトタイプは次のようになる:
-
void texCoordData (GLfloat *texCoord, void *userData);
- GLU_NURBS_END
-
このコールバックはプリミティブの終わりで呼び出される。
デフォルトの終了コールバック関数は NULL である。
このコールバックの関数プロトタイプは次のようになる:
-
void end ( void );
- GLU_NURBS_END_DATA
-
GLU_NURBS_END コールバックとほぼ同じであるが、ポインタ引き数
がひとつ多い点が異なる。このポインタは前回の
gluNurbsCallbackData の呼び出しの際に指定されたポインタの
コピーである。
デフォルトのコールバック関数は NULL である。
このコールバックの関数プロトタイプは次のようになる:
-
void endData ( void *userData );
- GLU_NURBS_ERROR
-
エラー用関数は、エラーが起きたときに呼び出される。
この関数は GLenum 型の引き数をひとつ取る。これは発生したエラーを示す。
NURBS 固有のエラーは 37 個あり、GLU_NURBS_ERROR1 から
GLU_NURBS_ERROR37 までの名前が付いている。
エラーの内容を説明する文字列は gluErrorString を使って
得ることができる。
注意
gluNurbsCallback はバージョン 1.2 以降の GLU でしか使えない。
GLU バージョン 1.2 では、which には GLU_ERROR しか指定で
きない。
GLU_ERROR は GLU バージョン 1.3 では使うべきではなく、
GLU_NURBS_ERROR の方が好ましい。
CallBackFunc に指定できる他の全ての値は、GLU バージョン 1.3 以降
でのみ利用できる。
関連項目
gluErrorString(3G),
gluNewNurbsRenderer(3G),
gluNurbsCallbackData(3G),
gluNurbsProperty(3G)
Index
- 名前
-
- 書式
-
- 引き数
-
- 説明
-
- 注意
-
- 関連項目
-
Time: 07:01:13 GMT, January 12, 2009