2012年6月21日木曜日

OpenGL事始め2

コードは書きつつも,アウトプットが無さ過ぎなのでちょっと書いておく.

OpenGL事始め1で書いたコードに追加する感じで.

背景を塗りつぶす
だいたいの入門書で取り合えず背景を特定の色で塗りつぶす方法が最初に紹介されている気がする.OpenGLだと,glClear関数を呼び出す.描画関係の処理はglutDisplayFunc()に渡した関数の中に書く.

// main.cpp
#include <GLUT/glut.h>

void display();

int main(int argc, char * argv[])
{
    glutInit(&argc, argv);
    glutCreateWindow("");
    glutDisplayFunc(display);
    glutMainLoop();

    return 0;
}

void display()
{
    // 色バッファを指定した色で埋める
    glClear(GL_COLOR_BUFFER_BIT);

    // 描画コマンド実行指示
    glFlush();
}

glClear関数は,いくつかのビットフラグになっている定数を指定することで,その定数で指定されたバッファの内容を指定された値で埋めてくれる.今回の場合,色が保存されているバッファを指定した色で埋めている.

最後のglFlush関数は呼び出しておかないと,描画が実行されなかったり.

glClearのデフォルト値は,RGBAで(0, 0, 0, 0)になっているので,何も指定しないと画面が黒になる.
色を指定する場合は,次のようにglClearColorにRGBAを指定する.

// main.cpp
#include <GLUT/glut.h>

void display();

int main(int argc, char * argv[])
{
    glutInit(&argc, argv);
    glutCreateWindow("");
    glutDisplayFunc(display);
    // 青色で塗りつぶすようにする
    glClearColor(0.f, 0.f, 1.f, 1.f);
    glutMainLoop();

    return 0;
}

void display()
{
    // 色バッファを指定した色で埋める
    glClear(GL_COLOR_BUFFER_BIT);

    // 描画コマンド実行指示
    glFlush();
}

R(赤),G(緑),B(青),A(アルファ)を0.0fから1.0fの範囲で指定する.

ちなみに,glClearColorの位置をglutCreateWindowの前にすると落ちる.

0 件のコメント:

コメントを投稿