openFrameworksの構造

openFrameworks: 

ファイルツリー構造:

pre release v0.05 x-code FAT 内のフォルダの構造(位置関係)を崩してはいけません。ビルド・コンパイルするときにフォルダの相対関係から、ライブラリやヘッダファイルを探して

pre release v0.05 x-code FAT
 ├─ apps
 │    ├ addonsExamples (拡張サンプル、このフォルダの中にプロジェクトフォルダを作って、開発していく)
 │    ├ blabexamples (このフォルダの中にプロジェクトフォルダを作って、開発していく
 │    └ Examples (サンプル、このフォルダの中にプロジェクトフォルダを作って、開発していく
 ├─ blablib
 ├─ libs
 └─ other
 

openFrameworksのコンパイルテスト:

pre release v0.05 x-code FAT
 ├─ apps
 │    └ Examples
 │         ├eventsExample→openFrameworks.xcodeproj 

ビルド → すべてのターゲットをクリーニング

ビルドして実行

openFrameworks.app がプロジェクトフォルダ直下にできていること。これがビルドされた実行ファイルです。移動する場合はリソース(フォントや画像など)のフォルダ "data" も付帯すること。

verticalline どのソースを編集するか??
undeline

srcフォルダの中のソースのみ、あるいはsrcフォルダの中の自作のファイル(クラス記述) .cpp / .h のみを編集して開発を進めます。そのほかのソースは変更する必要はありませんし、変更すると不具合がでることもあります。
Xcodeでは左側のグループとファイルの中で参照できる src という グループを示します。

pre release v0.05 x-code FAT
 ├─ apps
 │    └ Examples
 │         ├  fontsExample
 │                  ├ data
 │                  └ src

さらにいえば、main.cpp はウィンドウスタイル(フルスクリーン、オーバーラップウィンドウなど)を変更するときのみ、編集します。

 blabExamples と examples でのソースの互換性

boost , boost/asio すべて、pythonScriptEngine (ScriptEngine.hxx) を使用しなければ、src フォルダのみを移動・コピーして、コンパイル・ビルドできます。

 processing を意識したopenFrameworksのスタイル

こちらのサンプルからスタートしましょう。 blab_080423.zip

pre release v0.05 x-code FAT
 ├─ apps
 │    └ blabexamples この中に解凍配置してください。

 openFrameworks 座標

OpenGLのによってすべて描画されているが、processingなどと同様の画面座標になっている。気をつけてプログラムすれば、OpenFramewoksの機能を利用しつつOpenGLでの座標系での描画ももちろん可能。

OpenGL : 画面左下 (0,0)

X軸は画面右に向かっている。

Y軸は画面に向かっている。

openFrameworks / processing: 画面左上 (0,0)

X軸は画面右に向かっている。

Y軸は画面に向かっている。

 c++ コメントアウト

// This line is commented out

/* These lines are
commented out
as you see */

 c++ ファイルの種類

.h ヘッダファイル (.hxx なども同様)

定義ファイルといってもよいです。まずはこのファイルを読むと、どのような変数が使われているか、どのようか機能が備わっているかを知る(予測する)こととができる。

.cpp 実装ファイル (.cc , .cxx なども同様)

ヘッダファイル(定義ファイル)に記された関数がどのような動作をするか、が書かれている。

 

 オブジェクト指向 c++

class (雛形)、インスタンス・オブジェクト(実体)

class (雛形)を書いて、インスタンス(オブジェクト)を作成し、プログラムの中で動作させる。

継承

既存のclass (雛形)を継承して、新たなclass (雛形)をつくれる。

文法

:: 名前空間

. ドットシンタックス

-> 参照

 c++ クラス/ class の書式

複数の変数(記憶領域)をまとめたもの

関数(計算機能など)も一緒にまとめることができる

それぞれをメンバーと呼ぶ。

以下たとえば OrenoKurasu という名前のクラスの定義

class OrenoKurasu {

int mySeisu; //mySeisuという名の 整数メンバー

double myShousu; //myShousuuという名の 倍精度小数メンバー

void myFunction(){;}  // myFunction という名の 引数を持たない () 戻り値の無い void メンバー関数

};

 c++ クラス / openFrameworks と関連付けて使われそうなクラスの定義 の例

※注意
フォントやイメージ・テクスチャは、メインのクラス testApp でデータをロード初期化し、そこへの参照をメンバーとして持たせておくこと。ソフトが複雑になっていく上で、個々のクラスがフォントやイメージをロードするのはスマートではないし、同じデータの重複ロードもありえます。すべてOpenGLで描画が行われるため、テクスチャIDなどが初期化できないこともあり、フォントやイメージ・テクスチャは、メインのクラス testApp でデータをロードしましょう。

class TextInsect {

public:

TextInsect(); // コンストラクタ

~TextInsect(); //デストラクタ

ofVector3 pos; // 自分自身の座標

ofImage *img; // テクスチャイメージへの参照

ofTrueTypeFont *font; // フォントデータへの参照

std::string title; // 文字の内容

void update(); // 座標の計算など

void draw(); // 描画

};

実験用リソースファイル

vl std ( Standard Template Library )
bd

本家  /   Standard Template Library プログラミング 日本語 (絶版書籍のweb公開版)

よくつかうもの

iostream

std::cout

<<

>>

std::endl

std::string

std::vector

イテレータ