独創アプリ開発日記 250日目 C++によるマルチプラットフォーム対応のOpenGLコード第一歩

マルチプラットフォーム対応のOpenGLコードの第一歩です。

とりあえずmacでC++を使ってウィンドウを表示します。

各種OSで動作させるためにGLFWを利用します。GLFWはオープンソースのマルチプラットフォーム対応ライブラリで、Window表示やコンテキスト、入力イベントなどを扱えます。GLEWはOpenGL拡張を手軽に用いることができる便利ツールで、こちらも利用します。インストールしましょう。

brew install glfw
brew install glew

コードは以下の通りです。徹夜で書き上げました。解説?初めて利用するライブラリなので解説できるほどの知識は持っていません・・・

#include <iostream>
#include <GL/glew.h>
#include <GLFW/glfw3.h>

using namespace std;

int main() {
    // GLFW init
    if (glfwInit() == GL_FALSE) {
        cout << "failed to glfwInit" << endl;
        return 1;
    }
    atexit(glfwTerminate);
    
    // create window
    GLFWwindow *const window(glfwCreateWindow(1200, 720, "GameInsWindow", NULL, NULL));
    if (NULL == window) {
        cout << "failed to create window" << endl;
        return 1;
    }
    
    // OpenGL 4.1
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 1);

    // make context
    glfwMakeContextCurrent(window);
    glfwSwapInterval(1);
    
    // GLEW init
    if (GLEW_OK != glewInit()) {
        cout << "failed to glewInit" << endl;
        return -1;
    }

    // clear
    glClearColor(0.0f, 0.5f, 0.0f, 1.0f);
    
    while (glfwWindowShouldClose(window) == GL_FALSE) {
        glClear(GL_COLOR_BUFFER_BIT);
        glfwSwapBuffers(window);
        glfwPollEvents();
    }
    
    return 0;
}

コンパイルしましょう。IDE?CMake?なにそれ美味しいの?

g++ Program.cpp -lglfw -lglew -framework OpenGL

とりあえずmacで動作することを確認しました。

明日はLinux(Ubuntu)や、EdgeやCortanaの利用を強制してくる邪悪なWindowsでも動作確認を行なっていきます。

コメントを残す

メールアドレスが公開されることはありません。