ウィンドウ内に線を引いてみます。
【ConsoleApplication1.cpp】 線を引く(変更点のみ)
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINE_LOOP);
glVertex2d(-0.9, -0.9);
glVertex2d(0.9, -0.9);
glVertex2d(0.9, 0.9);
glVertex2d(-0.9, 0.9);
glEnd();
glFlush();
}
実行結果)
[解説]
void glBegin(GLenum mode)
void glEnd(void)
図形を描くには、glBegin ~ glEnd の間にその図形の各頂点の座標値を設定する関数を置きます。glBegin の引数には描画する図形のタイプを指定します。
void glVertex2d(GLdouble x, GLdouble y)
2次元の座標値を設定するのに使います。引数の型は GLdouble(double と等価)です。
引数が float 型のときは glVertex2f、int 型のときは glVertex2i を使います。
描かれる図形は (-0.9, -0.9) と (0.9, 0.9) の2点を対象核とする正方形です。これがウィンドウに対して一回り小さく描かれます。このウィンドウの大きさと図形の大きさの比率は、ウィンドウを拡大縮小しても変化しません。これはウィンドウの x軸と y軸の範囲が、それぞれ[-1, 1], [1], 1] で固定されているからです。
glBegin の引数に指定できる図形のタイプ(図形プリミティブ)には以下のようなものがあります。
GL_POINTS
点を打つ。
GL_LINES
2点を対にして、その間を直線で結ぶ。
GL_LINE_STRIP
折れ線を描く。
GL_LINE_LOOP
折れ線を描く。始点と終点の間も結ばれる。
GL_TRIANGLES
3点を組にして、三角形を描く。
GL_QUADS
4点を組にして、四角形を描く。
GL_TRIANGLE_STRIP
1辺を共有しながら帯状に三角形を描く。
GL_QUAD_STRIP
1辺を共有しながら四角形を描く。
GL_TRIANGLE_FAN
1辺を共有しながら扇状に三角形を描く。
GL_POLYGON
凸多角形を描く。
線に色を付けてみます。
【ConsoleApplication1.cpp】 線に色を付ける(変更点のみ)
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3d(1.0, 0.0, 0.0);
glBegin(GL_LINE_LOOP);
glVertex2d(-0.9, -0.9);
glVertex2d(0.9, -0.9);
glVertex2d(0.9, 0.9);
glVertex2d(-0.9, 0.9);
glEnd();
glFlush();
}
実行結果)
[解説]
void glColor3d(GLdouble red, GLdouble green, GLdouble blue)
これから描画するものの色を指定します。引数の型は GLdouble 型で、それぞれ「赤」,「緑」,「青」の強さを 0~1 の範囲で指定します。
引数が float 型のときは glColor3f、int 型のときは glCoor3i を使います。glColor3i の引数の値の範囲は 0~255 です。
図形を塗りつぶしてみます。 GL_LINE_LOOP を GL_POLYGON に変更し、背景も白色に変更してみます。
【ConsoleApplication1.cpp】 図形を塗りつぶす(変更点のみ)
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3d(1.0, 0.0, 0.0);
glBegin(GL_POLYGON);
glVertex2d(-0.9, -0.9);
glVertex2d(0.9, -0.9);
glVertex2d(0.9, 0.9);
glVertex2d(-0.9, 0.9);
glEnd();
glFlush();
}
void init()
{
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
}
実行結果)
glVertex* や glColor* のような関数の「*」の部分は、引数の型や数などを示しています。詳しくはオンラインマニュアルなどで「glVertex2d」や「glColor3d」を参照してください。