photo

コード書いとる??

2015年度の講師業が一区切りつきました。

これから一ヶ月くらいは花見とかで呑んだくれる生活ですよ!!
今年度は土曜日も仕事入ってたから許してくれるよね!!!!
次年度の準備があるので無理ですが。


さて今年度の授業で使っているライブラリをチェックしてみたら、まぁ軒並みバージョンアップしとるわけです。

GLFW 3.1→3.2
FreeType 2.5.3→2.6.3
Eigen 3.2.4→3.2.8
libpng 1.6.?→1.6.21

というわけでせっせと更新作業。ついでに授業で使ってる拙作フレームワークも手直し。

Eigenはヘッダファイルをコピーするだけ〜

その他ライブラリはCMakeでプロジェクトを生成してビルド...てかそのCMakeもバージョンアップしとるw


GLFWはビルドオプションで指定していた GLFW_USE_DWM_SWAP_INTERVAL が廃止されてる。

これはWindows Vistaから導入された描画システム向けの設定なのだが、GLFWのビルド時に正しく指定できてないとフレームバッファ更新とモニタの更新が同期しなくなってしまうという恐ろしい状況になってしまうのだ!! (全速力で画面が更新される事態になる)

これ毎回ビルドするたびに「あれ?? ONだっけOFFだっけ????」ってなってたので、実行時に自動的に解決してくれるようになって有難い限り。
glfwSwapInterval呼び出し時に、よきに計らってくれるらしいよ(未確認)

そしてdoxygenが使える環境ならライブラリのフルビルドでリファレンスマニュアルも生成してくれますw

OSX版のGLFWは描画ウインドウが他のウインドウに全て覆い隠されたりすると全速力で更新されるという困ったちゃんなのだが、これは以下のようにウインドウのフォーカスを自前で把握するようにして回避できることが判明。

//
// サンプルコードとして必要最低限の内容です
// 悪しからず
// 

#include <GLFW/glfw3.h>

// Windowのフォーカスを自分で把握できるようにする bool is_focus = false; void focusCallback(GLFWwindow*, int value) { is_focus = value ? true : false; } int main() { glfwInit(); GLFWwindow* window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL); glfwMakeContextCurrent(window); // Windowのフォーカスが変更になった時のコールバックを指定 glfwSetWindowFocusCallback(window, focusCallback); while (!glfwWindowShouldClose(window)) { /* Render here */ /* Swap front and back buffers */ glfwSwapBuffers(window); if (!is_focus) { // フォーカスがない時は何がしかイベントを待つ glfwWaitEvents(); } glfwPollEvents(); } glfwTerminate(); }

うむ。


FreeTypeは以前書いた手順で再ビルド。インクルードファイルの構成やフォルダ名が変更になっていたので、使っているプロジェクト側でも対応作業が必要だった。インクルードパスの設定から include/freetype2 の指定を無くせてスッキリ。


みたいな感じで滞りなく終了!!
手元にVisualStudioが無いのでWindows版のライブラリ更新は後日改めて。

ではまた次回!!