2012年6月21日木曜日

OpenGL事始め3

背景を塗りつぶしたら,次は点でも表示してみよう.

// 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);

    // 点を描画
    glBegin(GL_POINTS);
    {
        glVertex2f(0.f, 0.f);
    }
    glEnd();
    glFlush();
}

glBegin(描画方法)からglEnd()の間に点を描画したい座標をglVertex2f()で指定してやると,点が描画される.この場合,中心に白い点が描画される.ただし,凄く小さくて分かりづらい.

そこで,少しサイズを大きくしてみる.サイズの指定は,glPointSize();

// 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);

    // 点のサイズを指定
    glPointSize(32.f);
    glBegin(GL_POINTS);
    {
        glVertex2f(0.f, 0.f);
    }
    glEnd();
    glFlush();
}

四角くでかい点が出る.ちなみに,このglPointSizeの位置をBeginとEndの間に持ってきても上手く動かない.更に点に丸みを付けてみる.glEnableにGL_POINT_SMOOTHという引数を渡すだけ.

// 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);

    glEnable(GL_POINT_SMOOTH);
    glPointSize(32.f);
    glBegin(GL_POINTS);
    {
        glVertex2f(0.f, 0.f);
    }
    glEnd();
    glFlush();
}

0 件のコメント:

コメントを投稿