openFrameworksをちょっとさわってみた

Processing(またはproce55ing)の設計に影響を受けたC++フレームワークopenFrameworksとやらをいじってみました。
processingっていうのはjava環境で動くプログラミング言語で、アート屋さんが手軽にグラフィックやアニメーションできるよう開発されたもの、らしい。oFってのはC++でそれくらい手軽にプログラム開発するためのフレームワークってところですね。
基本的にはopenGL/glutの薄いラッパ、それに各種音声/動画/フォント等のライブラリを統合してある。ビデオキャプチャとかシリアル通信までカバーしてて、けっこう多機能。機能的にはうちの研究室でのアプリ開発にぴったりなので、現在試験中。

サイズでかい

VC++版は70Mもある……! その大半を占めるのは同梱のサンプルプログラムの一時ファイル(消しとけ!)

ビルドについて

多機能なだけに依存ライブラリいっぱい、依存DLLいっぱい。プロジェクトの設定も面倒。サンプルプロジェクトを改変して使うのが一番簡単でしょうね。一から作る場合、以下の設定をしてやる必要が(相対パスなので適当に変更すべし)。

追加インクルードディレクト
.\libs\openFrameworks;.\libs\openFrameworks\graphics;.\libs\openFrameworks\app;.\libs\openFrameworks\sound;.\libs\openFrameworks\utils;.\libs\openFrameworks\communication;.\libs\openFrameworks\video;.\libs\glut;.\libs\rtAudio;.\libs\QTDevWin\CIncludes;.\libs\free_type_2.1.4\include;.\libs\free_type_2.1.4\include\freetype2;.\libs\freeImage;.\libs\fmod\inc;.\libs\videoInput\include;.\libs\glee\include
追加ライブラリディレクト
.\libs\glut\;.\libs\rtAudio\;.\libs\freeImage\;.\libs\free_type_2.1.4\lib\;.\libs\QTDevWin\Libraries;.\libs\fmod\lib;.\libs\videoInput\lib;.\libs\glee\lib
追加の依存ファイル
kernel32.lib glut32.lib rtAudioD.lib fmodvc.lib videoInput.lib libfreetype.lib FreeImage.lib qtmlClient.lib dsound.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib GLee.lib
特定のライブラリの無視
atlthunk.lib;LIBC.lib
openFrameworkライブラリのコンパイル

プロジェクトにlib/openframework以下のソースファイルをだーと追加しちゃうのが一番楽。ただし全部入れると関数がバッティングするので、ofSoundStream,ofQtVideoGrabber,ofQtVideoPlayer,ofAudio,ofAudioStreamあたり外すとうまくいく(この辺よくわかってないけど)。

サンプルいくつか読んでみた

基本的に2Dアプリでの使用を前提としている。3D関係はサポートなし(OpenGLを直接呼べば使用できる)。あとラップが中途半端で、GLのテクスチャをラップしたクラスにglBindTexture相当がないとか(ひどい……)。なんだかんだで、使うときはあれこれソースを改変する必要が出てきそうな。あとけっこういい加減な実装というか、エラー出力をstdoutに吐くのはやめなさいよ……