OpenGL (glfw)・環境構築 ( OS : Mac , IDE : Eclipse CDT )


OpenGL(glfw) を mac で動かす。
環境構築 から Hello World を実行するところまでをまとめる。

1. そもそも OpenGL(glfw) とは?

OpenGL についてを参照

2. 開発環境の選定

前提条件

  • OpenGL のソフトを書くには C++ の実行環境が必要
  • OpenGL のソフトを書くには glfw, freegult などのライブラリが必要

今回は...

  • C++ 開発用に Eclipse CDT を使う
    • windows や linux とも開発環境を揃えるため
  • ライブラリには glfw を使う
    • どうも freegult はもう更新止まっているみたい

3. 開発環境の構築

eclipse のインストール

  1. Eclipse Marsへアクセス
    注意: 2016.08 時点では、marsでないと glfw がうまく動かなかった
  2. Eclipse IDE for Java Developers の Mac Cocoa 64-bit をダウンロード
  3. Eclipse を起動して、Hello World が動くか確認してみる
    • mac は標準で GCC (c++コンパイラ) が入っているので、そのまま動くはず

glfw ライブラリの入手

glfw ライブラリは homebrew からでも入手できるが、それはバージョンが古いとの事。なので、glfw のソースコードからライブラリを生成する事にする。
ライブラリ生成の手順は以下の通り

  1. glfw のソースコードを入手
  2. cmake で glfw ライブラリを生成する make を生成
  3. make を実行して、glfw ライブラリを生成する

具体的な手順は以下の通り

glfw のソースコードを入手

  1. glfwサイトへアクセス
  2. Download → Source package からダウンロード

cmake のインストール

  1. cmakeサイトへアクセス
  2. Download → Latest release(3.6.1) → Mac OSX 10.6 or later から .dmg をダウンロード
  3. ダウンロードした .dmg からインストール

cmake と glfw ソースコードから makefile を生成

  1. cmake(GUI)を起動
  2. Browse Source ボタン から glfw の CMakeLists.txt が存在しているパスを指定する
    (glfw-3.2/CMakeLists.txt なら glfw-3.2 へのパスを指定する)
  3. Browse Build ボタン から 任意のパス(binを生成させたい場所) を指定
    [注意] glwfフォルダとは別のフォルダにしないと上手くいかないのかも
  4. デフォルトから変更した点は下記

    • CMAKE_ECLIPSE_VERSION を 4.5(Mars)
    • CMAKE_INSTALL_PREFIX を 任意のパス (usr/local mac は書き込めないので失敗する)
  5. Configure ボタン を押す
    -> Eclipse CDT4 - Unix Makefiles を選択
    -> リストから赤い表示がなくなるまで Configure ボタンを押す

  6. Generate ボタン を押す
    -> 成功表示が出て、2.で指定したパス直下に Makefile が存在すれば成功

[補足]
* 失敗して "Generate" をやり直す場合は、2.で指定したパスの中身を空にしてみる

makefile から glfw ライブラリを生成

  1. ターミナルを起動
  2. Makefile の存在するパスへ移動
  3. make all コマンドを実行
  4. sudo make install コマンドを実行
    -> CMAKE_INSTALL_PREFIX に指定したパスに src/libglfw3.a のようにライブラリが生成されていれば成功

4. glfw を動かしてみる

先ほどの glfw ライブラリが動くかを確認するために、最小の glfw コードを書いて動作確認をしてみる。最小の glfw ソースコードは glfw 公式の documentページ にあるのでこれを使う。

  1. eclipse CDT の起動
  2. 空の C++ Project を作成

    • 上部メニューから File ➡️ New ➡️ c++ project を選択して Next
    • Project name を適当に入力
    • Executable ➡️ Hello World C++ Project ➡️ Cross GCC を選択して Next
    • 以降は全て Next 、最後に Finish を押す
  3. project の property を開いて、以下を設定する

    • [C/C++ General] → [Path and Symbols] → [Includes] → [GNU C++] → [Add ボタン]を押して、ヘッダの存在する include/GLFW へのパスを設定する
    • [C/C++ General] → [Path and Symbols] → [Library Paths] → [Add ボタン]を押して、libglfw.3.a の存在するフォルダへのパスを設定する
    • [C/C++ General] → [Path and Symbols] → [Libraries] → [Add ボタン]を押して glfw3 と設定する。
    [補足]
    * Add の際に [Add All Configurations] にチェックを入れると Debug,Release 共に設定が反映されるので入れておくと良い。
    * libraries に登録する際は、先頭の lib と 拡張子 を消して指定するので、libglfw3.2.a → glfw3 となる。
    
    • C/C++ BUild -> Settings -> Tool Setting -> MacOSX C++ Linker -> Command: に g++ -framework OpenGL -framework Cocoa -framework IOKit -framework CoreVideo を指定
  4. Project Explore から src / main.cpp を開く

  5. main.cpp を次のように書き換える

    main.cpp
    #include <GLFW/glfw3.h>
    
    int main(void)
    {
        GLFWwindow* window;
    
        /* Initialize the library */
        if (!glfwInit())
            return -1;
    
        /* Create a windowed mode window and its OpenGL context */
        window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
        if (!window)
        {
            glfwTerminate();
            return -1;
        }
    
        /* Make the window's context current */
        glfwMakeContextCurrent(window);
    
        /* Loop until the user closes the window */
        while (!glfwWindowShouldClose(window))
        {
            /* Render here */
            glClear(GL_COLOR_BUFFER_BIT);
    
            /* Swap front and back buffers */
            glfwSwapBuffers(window);
    
            /* Poll for and process events */
            glfwPollEvents();
        }
    
        glfwTerminate();
        return 0;
    }
    
  6. Invalid Arguments のエラーが出る場合は以下を設定する

    • project の property を開く
    • [C/C++ General] → [Code Analysis] → リストから [Invalid Arguments] の Serverity を Error から Warning に変更する
  7. 実行する

    • project → build project
    • project explore を右クリック → Debug As もしくは Run As → Local C/C++ Application を選択
    • 黒いウィンドウが立ち上がれば成功

5. その他

動かした環境

  • OSX EL Capitan 10.11.6
  • Eclipse IDE for C/C++ Mars 2 Release (4.5.2) / 日本語化無し
  • glfw 3.2

参考URL