忍者ブログ
[106]  [105]  [104]  [103]  [102]  [101]  [100]  [99
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

今日はopenFrameworksをいじくってみよう。WiiRemoteはまったく出てこなかった!

例によって個人的な備忘録ですので・・・。

まずはライブラリをインポートしてコンパイルを通すところから。
仕事でも使うようになったとはいえ、未だにVC++のソリューションおよびプロジェクトの仕組みがイマイチ分かってない。
とりあえず \apps\example\ に入ってる適当なサンプルプロジェクトを開いて、ビルドしてみる。
なんか警告がいっぱい出たけど、とりあえずコンパイルが通って何かしら表示された。

次に適当なサンプルプロジェクトの中身を作業用フォルダにコピーしてみよう。テストプログラムでは文字が表示されるのが一番わかり易いと思い、"fontsExample"というプロジェクトをコピー。
コピー先の作業用フォルダでソリューションを開いたけど、当然ながらライブラリへのリンクが切れた。プロジェクトのプロパティを修正しなおそうかと思ったけど、コンパイルオプションとかでもライブラリパスを指定してあり、修正はかなり面倒なので、ライブラリとの相対位置関係が変わらないような場所に作業用フォルダを移動した。
コピー先でもコンパイルが通ったので、チョコチョコいじくってみようかな。
20100509-1.png

とりあえず、openFrameworksの大まかな仕組みを、簡単に確認してみよう。
サンプルプロジェクトはこんな感じになってる。
main.cpp
#include "ofMain.h"
#include "testApp.h"
#include "ofAppGlutWindow.h"
int main( ){
	ofAppGlutWindow window; // GLUTからopenGLのウインドウを作成
	ofSetupOpenGL(&window, 800,700, OF_WINDOW);
	ofRunApp( new testApp()); // testAppを起動
}
testApp.h
#ifndef _TEST_APP
#define _TEST_APP
#include "ofMain.h"
class testApp : public ofBaseApp
{
public:
	void setup();
	void update();
	void draw();
	void exit();
	void keyPressed(int key);
	void keyReleased(int key);
	void mouseMoved(int x, int y );
	void mouseDragged(int x, int y, int button);
	void mousePressed(int x, int y, int button);
	void mouseReleased();
	void mouseReleased(int x, int y, int button);
	void windowResized(int w, int h);
	void audioReceived( float * input, int bufferSize, int nChannels );
	void audioRequested( float * output, int bufferSize, int nChannels );
};
#endif
基本的にはofBaseAppクラスを継承してアプリケーションクラスを定義する。様々なイベント発生時に呼び出される関数はofBaseAppに用意されていて、testApp側ではヘッダファイルで宣言して、オーバーライドしてあげるだけでいい。簡単すぎて気味が悪いくらい。
ところでmain関数ではGLUTという、初めて聞く仕組みが使われている。ググッてみるとopenGLを使う際に環境による違いを吸収してくれる仕組み(Utility Toolkit)の名前だそうで。


ところで、少し脱線。main関数の
	ofRunApp( new testApp()); // testAppを起動
ってところでメインの描画ループに入る事は明らかなのだけど、じゃあtestAppをdeleteしているのは誰?
ofAppRunner(クラス名ではなくモジュール名)に含まれるofRunApp関数の中には以下のような記述があった。
	atexit(ofExitCallback);
ofExitCallbackは同じくofAppRunnerで定義されている関数で、この関数の中でtestAppのデストラクタが呼び出されている。
じゃあ、atexit関数って何よ。恥ずかしながら、これはCの標準関数ですってよ。動作は名前の通り。
というわけで、どうやらプログラム終了時にはtestAppはちゃんとdeleteされているらしい、と。


とりあえずサンプルプログラムのフォントをIPAフォントに変更してみよう。と思ったら、oFはマルチバイト文字を表示出来ないみたいだ。で、ググッたら出てきたofTrueTypeFontWSクラスを使わせていただくことにした。
あれ?文字が化けてる?確認したら、ソースの文字コードがUTF-8になっていた(VS2008の標準?)。なので、UNICODEで保存してコンパイルし直したら、問題なく日本語が表示されました。
20100509-2.png

次はそろそろoFプロジェクトにWiiYourself!をインクルードしてみよう。
PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
26歳のハローワールド
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
最新コメント
[11/27 gyzwviyehl]
[11/18 Tepexaxyonelo]
[09/12 gomFolley]
[08/16 CypeBachCoece]
[06/02 gb]
[03/06 kishima]
[01/18 KNDY]
[01/16 kage]
[12/23 KNDY]
[12/23 kage]
最新トラックバック
ブログ内検索
アクセス解析
プロフィール
HN:
knd
HP:
自己紹介:
絶賛迷走中。
UNIQLO CALENDAR
忍者ブログ [PR]