全体像は以下。
void DrawAQuad() {
glClearColor(1.0, 1.0, 1.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-1., 1., -1., 1., 1., 20.);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0., 0., 10., 0., 0., 0., 0., 1., 0.);
glBegin(GL_QUADS);
glColor3f(1., 0., 0.); glVertex3f(-.75, -.75, 0.);
glColor3f(0., 1., 0.); glVertex3f( .75, -.75, 0.);
glColor3f(0., 0., 1.); glVertex3f( .75, .75, 0.);
glColor3f(1., 1., 0.); glVertex3f(-.75, .75, 0.);
glEnd();
}
上から順に・・・
void glClearColor( GLclampf red , GLclampf green , GLclampf blue , GLclampf alpha );
バッファを初期化する色情報を設定する。float型で0.0〜1.0で指定する。void glClear(GLbitfield mask);実際のバッファを初期化。以下定数の組み合わせで初期化対称を設定。
定数 | 解説 |
---|---|
GL_COLOR_BUFFER_BIT | カラー バッファ |
GL_DEPTH_BUFFER_BIT | デプス バッファ |
GL_ACCUM_BUFFER_BIT | アキュムレーション バッファ |
GL_STENCIL_BUFFER_BIT | ステンシル バッファ |
※ステンシルバッファ
・・・ステンシルは型板という意味。塗料を塗る時に型板で塗らない箇所を作る
ように、OpenGLでも点を描画するかしないかのマスクを設定する
※アキュムレーションバッファ
void glMatrixMode(GLenum mode);
OpenGLには3つの変換行列があり、操作対称の行列を指定
定数 | 解説 |
---|---|
GL_MODEVIEW | モデルビュー変換行列 |
GL_PROJECTION | 投影変換行列 |
GL_TEXTURE | テクスチャ行列 |
void glLoadIdentity(void);
行列の初期化。
void glOrtho(GLdouble left, GLdouble right, GLdouble bottom
GLdouble top, GLdouble near, GLdouble far);
現在の行列と正射影行列の乗算を行う。
void gluLookAt(///);
以下サイト参照。void glBegin(GLenum mode);頂点データの指定開始。モードは以下定数を指定。
定数 解説 GL_POINTS 各頂点を単独の点として扱う 頂点 n は、点 n を意味し n この点が描画される GL_LINES 2つの頂点をペアとし、それぞれのペアを独立した線分として扱う GL_LINE_STRIP 最初の頂点から最後の頂点まで、線分を連結して描画する GL_LINE_LOOP すべての頂点を線分で連結する GL_TRIANGLES 3つの頂点をペアとし、それぞれ独立した三角形として扱う GL_TRIANGLE_STRIP 連結した三角形のグループを描画する GL_TRIANGLE_FAN 最初の頂点を軸に、連結した三角形のグループを描画する GL_QUADS 4つの頂点をペアとし、それぞれ独立した四角形として扱う GL_QUAD_STRIP 連結した四角形のグループを描画する GL_POLYGON 単独の凸ポリゴンを描画する 参考URL
0 件のコメント:
コメントを投稿