OpenGL de プログラミング - 曲面::メッシュでの描画
現在地 >> メニュー >> 基本編12 >> OpenGL::曲面 >> 曲面::メッシュでの描画
関連:曲面::glMap()関数

メッシュでの描画


「glEvalCoord2f()関数」などで描画する以外に、メッシュで描画する方法がある。

手順


手順は曲面::glMap()関数と同じほぼ同じだが、「エバリュエータの設定」に加え、
「グリッドの設定」を行う。

描画は「glEvalMesh2()関数」で行う。

グリッドの設定


glMapGrid2f()などで設定する。


glMapGrid2f(
 	GLint un,   //u方向の分割数
 	GLfloat u1, //u1,u2:方向のパラメータ関係。たいていは(u1,u2)=(0,1)
 	GLfloat u2, 
 	GLint vn,   //v方向の分割数
 	GLfloat v1, //v1,v2:方向のパラメータ関係。たいていは(v1,v2)=(0,1)
 	GLfloat v2
)



[例]

// 制御点
float CtlPoint[]=
{
	0.0, 0.0, 0.0,  0.2, 0.3, 0.0,  0.4, 0.3, 0.0,  0.6, 0.0, 0.0,
	0.0, 0.2, 0.2,  0.2, 0.5, 0.2,  0.4, 0.5, 0.2,  0.6, 0.2, 0.2,
	0.0, 0.2, 0.4,  0.2, 0.5, 0.4,  0.4, 0.5, 0.4,  0.6, 0.2, 0.4,
	0.0, 0.0, 0.6,  0.2, 0.3, 0.6,  0.4, 0.3, 0.6,  0.6, 0.0, 0.6,
};
  ... ...
//分割数
const float Uslice = 10;
const float Vslice = 20;
  ... ...
//---エバリュエータの設定---//
	glMap2f(GL_MAP2_VERTEX_3, 0.0, 1.0, 3, 4, 0.0, 1.0, 3*4, 4,CtlPoint);
	glMapGrid2f(Uslice,0,1,Vslice,0,1); 
	glEnable(GL_MAP2_VERTEX_3); //有効化


描画


描画は
glEvalMesh2(GLenum mode, たいてい0, u方向の分割数, たいてい0,v方向の分割数)
で行う。

「GLenum mode」には「GL_POINT」、「GL_LINE」、「GL_FILL」の3つを指定できる。


[例]

//分割数
const float Uslice = 10;
const float Vslice = 20;
 ... ...
glEvalMesh2(GL_LINE,0,Uslice,0,Vslice); //描画





サンプルコード >> 曲面::まとめコード1_2