ページ

2014年6月21日土曜日

Cent OSでOpenGL 5 - 描画処理 -

今回でやっとOpenGLのメイン部分を解読。
全体像は以下。

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_LINES2つの頂点をペアとし、それぞれのペアを独立した線分として扱う
GL_LINE_STRIP最初の頂点から最後の頂点まで、線分を連結して描画する
GL_LINE_LOOPすべての頂点を線分で連結する
GL_TRIANGLES3つの頂点をペアとし、それぞれ独立した三角形として扱う
GL_TRIANGLE_STRIP連結した三角形のグループを描画する
GL_TRIANGLE_FAN最初の頂点を軸に、連結した三角形のグループを描画する
GL_QUADS4つの頂点をペアとし、それぞれ独立した四角形として扱う
GL_QUAD_STRIP連結した四角形のグループを描画する
GL_POLYGON単独の凸ポリゴンを描画する
参考URL

0 件のコメント:

コメントを投稿