読者です 読者をやめる 読者になる 読者になる

SourceChord

C#とXAML好きなプログラマの備忘録。最近はWPF系の話題が中心です。

GLFWを使ってみた

OpenGLでちょろっとウィンドウ表示をする時などには、GLUTをよく使っていたのですが、
近年(と言っても随分前から)ではGLFWというものもよく使われているようです。
http://www.glfw.org/documentation.html

先日↓に書いた、NupenGLというパッケージをインストールすると、このGLFWも利用できるようになるので、使ってみました。

とはいっても、自分は最近あまりC++を積極的に使ってないので、 HelloWorldレベルのコードをメモ書き程度で・・・

参考リンク

↓のあたりを参考にやってみます。
http://www.glfw.org/documentation.html
http://marina.sys.wakayama-u.ac.jp/~tokoi/?date=20120906

サンプル

公式ページのドキュメントなどを参考に、ウィンドウ表示と四角形の描画をしてみました。

f:id:minami_SC:20170513180554p:plain

#include <GLFW/glfw3.h>
#pragma comment(lib, "opengl32.lib")

void disp(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_POLYGON);
    glColor3d(1.0, 0.0, 0.0);
    glVertex2d(-0.9, -0.9);
    glColor3d(0.0, 1.0, 0.0);
    glVertex2d(0.9, -0.9);
    glColor3d(0.0, 0.0, 1.0);
    glVertex2d(0.9, 0.9);
    glColor3d(1.0, 1.0, 0.0);
    glVertex2d(-0.9, 0.9);
    glEnd();
    glFlush();
}

int main(void)
{
    GLFWwindow *window;

    // GLFWの初期化
    if (!glfwInit()) { return -1; }

    // GLFWのウィンドウ生成
    window = glfwCreateWindow(640, 480, "Hello GLFW!!", NULL, NULL);
    if (!window) {
        glfwTerminate();
        return -1;
    }

    glfwMakeContextCurrent(window);

    while (!glfwWindowShouldClose(window)) {
        // 描画処理を行う関数呼び出し
        disp();

        // バッファの入れ替え
        glfwSwapBuffers(window);

        // マウスやキーボードなどのイベント取得
        glfwPollEvents();
    }

    glfwTerminate();
    return 0;
}