最終更新: mikk_ni3_92 2008年10月05日(日) 17:06:48履歴
現在地 >> メニュー >> 基本編13
INDEX:基本編12 << 基本編13 >> 基本編14
テセレータオブジェクトの作成、消去は
の関数で行う。
[例]
テセレータに渡すとテセレーションを行い、その後OpenGLの命令を実行する。
この時、どんな処理をするのかを登録する。
void gluTessCallback(GLUtessellator *tess, GLUenum type, void (*fn)())
※詳しくはリファレンス参照。
[例]
テセレータに座標を渡すと勝手にテセレーションを行う。
これは、「glBegin()関数」、「glEnd()関数」と似ている。
※使う関数は以下の4つ
[例]
void gluTessVertex(GLUtessellator *tess, GLdouble cords[3], void *vertexData)
― 第1引数 ―
テセレータを指定。
― 第2引数 ―
テセレーションに使う座標を指定。
― 第3引数 ―
実際のレンダリングに使うデータ。
INDEX:基本編12 << 基本編13 >> 基本編14
テセレータオブジェクトの作成、消去は
- GLUtessellator* gluNewTess() → 作成
- void gluDeleteTess(GLUtessellator *tess) → 消去
の関数で行う。
[例]
//テセレータオブジェクト GLUtesselator *tess; ... ... tess = gluNewTess(); //テセレータの作成 ... ... gluDeleteTess(tess); //テセレータの削除
テセレータに渡すとテセレーションを行い、その後OpenGLの命令を実行する。
この時、どんな処理をするのかを登録する。
void gluTessCallback(GLUtessellator *tess, GLUenum type, void (*fn)())
※詳しくはリファレンス参照。
[例]
tess = gluNewTess(); ... ... gluTessCallback(tess, GLU_TESS_BEGIN, (void (__stdcall*)(void))glBegin); //glBegin() gluTessCallback(tess, GLU_TESS_END, (void (__stdcall*)(void))glEnd); //glEnd() gluTessCallback(tess, GLU_TESS_ERROR, (void (__stdcall*)(void))TessErr); //エラー処理 gluTessCallback(tess, GLU_TESS_VERTEX, (void (__stdcall*)(void))glVertex3dv); //glVertex()関係
テセレータに座標を渡すと勝手にテセレーションを行う。
これは、「glBegin()関数」、「glEnd()関数」と似ている。
- 「gluTessBeginPolygon()関数」、「gluTessEndPolygon()関数」でテセレーションの範囲を指定し、
- 「gluTessBeginContour()関数」、「gluTessEndContour()関数」の間に「gluTessVertex()関数」で頂点を記述する
※使う関数は以下の4つ
- void gluTessBeginPolygon(GLUtessellator *tess, void *userData)
- void gluTessEndPolygon(GLUtessellator *tess)
- void gluTessBeginContour(GLUtessellator *tess)
- void gluTessEndContour(GLUtessellator *tess)
- void gluTessVertex(GLUtessellator *tess, GLdouble cords[3], void *vertexData) //double型
[例]
//頂点座標 double vdata[4][3]={{0.2, 0, 0}, {0.4, 0.4, 0}, {0.2, 0.2, 0}, {0, 0.3, 0}}; ... ... gluTessBeginPolygon(tess, 0); gluTessBeginContour(tess); gluTessVertex(tess, vdata[0], vdata[0]); gluTessVertex(tess, vdata[1], vdata[1]); gluTessVertex(tess, vdata[2], vdata[2]); gluTessVertex(tess, vdata[3], vdata[3]); gluTessEndContour(tess); gluTessEndPolygon(tess);
void gluTessVertex(GLUtessellator *tess, GLdouble cords[3], void *vertexData)
― 第1引数 ―
テセレータを指定。
― 第2引数 ―
テセレーションに使う座標を指定。
― 第3引数 ―
実際のレンダリングに使うデータ。