OpenGL覚え書き2 描画

デフォルトの状態では原点がウインドウの中心で、幅高さが1.0の座標系で設定されています。

描画色の設定

glColor**関数で色を設定します。
例えばglColor3fはfloat型の値RGB値を引数にする関数、glColor4dはdouble型のRGBA値を引数にします。
RGBの値は0.0〜1.0で指定します。

glColor3f(0.7,0.7,1.0)

矩形の描画

glRect*関数を使います。

glRectf(0,0,1.0,1.0)

int,short,float,double型の引数の場合はそれぞれglRecti,glRects,glRectf,glRectdというコマンドが対応しています。

頂点座標による描画

glVertex**関数で頂点を定義することができます。

glVertex2f(0.0,0.0)
glVertex3f(0.0,0.0,1.0)
glVertex4f(0.0,0.0)

配列を引数にしたglVertex**v関数も与えられています。

    v=[0.1,0.2]
    glVertex2dv(v)

glBegin,glEndの間に描画したい頂点の座標を設定します。

    glBegin(GL_TRIANGLE_STRIP)
    v=[-0.5,-0.2]
    glVertex2dv(v)    
    glVertex2d(0.,0.)
    glVertex2d(0.7,0.7)
    glVertex2d(0.,0.7)
    glEnd()

頂点に対応した図形描画するためのモードがいくつか用意されており、glBeginの引数で定めることができます。
それぞれのモードは以下の通りです。
8個の頂点{1,2,3,4,5,6,7,8}を描画したとき、

GL_POINTS 各点を別々に描画
GL_LINES 直線1-2,直線3-4,直線5-6,直線7-8
GL_LINE_STRIP 直線1-2-3-4-5-6-7-8
GL_LINE_LOOP 直線1-2-3-4-5-6-7-8-1(ループ状)

6個の頂点{1,2,3,4,5,6}を描画したとき、

GL_TRIANGLES 三角形(123),三角形(456)
GL_TRIANGLE_STRIP 三角形(123),三角形(234),三角形(345),三角形(456)
GL_TRIANGLE_FAN 三角形(123),三角形(134),三角形(145),三角形(156)

8個の頂点{1,2,3,4,5,6,7,8}を描画したとき、

GL_QUADS 四角形(1234),四角形(5678)
GL_QUAD_STRIP 四角形(1234),四角形(3456),四角形(5678)
GL_POLYGON 12345678を頂点とする多角形

GLUTによる描画

GLUTのいくつかのコマンドを使うと複雑な立体を簡単に描画することができます。ソリッドかワイヤーモデルかによって次のようなコマンドが提供されています。
glutSolid〜
glutWire〜
〜として、Cube、Sphere、Cone、Torus、Tetrahedron、Octahedron、Dodecahedron、Icosahedronが用意されており、それぞれ立方体、球、円錐、トーラス、正四面体、正八面体、正十二面体、正二十面体、ティーポットを描くことができます。

glutSolidTeapot(0.2)
glutWireCube(0.2)
glutWireSphere(0.2,20,20)
glutWireCone(0.2,0.1,20,20)
glutWireTorus(0.1,0.3,20,20)