OpenFrameworks doc 日本語訳

ナビゲーション

最近の更新履歴

リファレンス

OpenFrameworks document (APIリファレンス) 日本語訳
(OpenFrameworks official website) http://www.openframeworks.cc/
(About OpenFrameworks)http://www.openframeworks.cc/about
このサイトについて
About this website

当ウェブサイトはOpenFrameWorks documentationの非公式の日本語翻訳サイトです.

This website is unofficial Japanese translation of OpenFrameWorks doc Page.


OpenFrameworksとは、C++でシリアル通信、静止画、動画、音声などが簡単に扱えるライブラリです.

OpenFrameworks is C++ library which serial communications, picture, animation,sound etc can be easily treated.


OpenFrameworksは、ザック・リーバーマン氏とテオ・ワトソン氏 によって開発されています.

OpenFrameworks is developed by Zach Lieberman and Theo Watson.


翻訳者と公開の目的
Translator and purpose of opening to the public


翻訳者:塚原裕平

translator:Yuhei Tsukahara

E-mail:


当ウェブサイトは、OpenFrameworksの理解ををより簡単にし、 またいろいろな人に広める為に製作しました.

To make OpenFrameworks easy to understand more and to make it known to various people, this Web site was produced.


翻訳について
About trancelation

原文は英語で書かれており、この訳文はオフィシャルなものではありません.

The original is written in English, and this translation is not official.


なるべく忠実で分かりやすい翻訳を心がけていますが、至らない点や誤りがある可能性があります.

There is a possibility in which the mistake is found though a faithful translation is borne in mind.


もし、誤訳・誤字・脱字・不適切な表現などを発見された場合は、E-mailでご連絡ください.

Please contact me with E-mail when you discovered mistranslation, erratum, omission of a word, and improper expression etc.


また翻訳者の判断により、意訳・変更・追加が行われている場合があります.

Moreover,The free translation, the change, and the addition might be done by the translator's judgment.


その場合も訳文が正しいとは限りません.

In that case, the translation is not necessarily correct.


なお,免責事項として,本訳を利用者が利用するにあたり,いかなる損害に対しても訳者はその責を負いません.

The translator assume no responsibility for any damage resulting from the use of this translation.


openframeworks-資料 [原文]

このページはOpenFrameworks-API資料のトップページです.
addon[原文]のページにあるライブラリの捕捉もあります.
このAPIは試作中の為、どんな訂正、追加、コメントも大歓迎です.

PDFでOF0.03のコードも調べる事ができます.ここ[原文]現在はリンク切れ

この資料は pre-release 0.03を対象としています.
(以前の資料についてはこちら0.01[原文] 0.02[原文])


ofSimpleApp ofGraphics ofSoundStream
ofSimpleAppクラス ofGraphics関数 ofSoundStreamクラス
void setup() void ofBackground(...) void ofSoundStreamSetup(...)
void update() float * ofBgColorPtr() void ofSoundStreamSetup(...)
void draw() void ofSetBackgroundAuto(...) void ofSoundStreamStop()
void exit() bool ofbClearBg() void ofSoundStreamStart()
void keyPressed(...) void ofSetCircleResolution(...) void ofSoundStreamEnd()
void keyReleased(...) void ofSetRectMode(...) void ofSoundStreamListDevices()
void mouseMoved(...) void ofGetRectMode(...)
void mouseDragged(...) void ofRect(...) ofSoundPlayer
void mousePressed(...) void ofTriangle(...) ofSoundPlayerクラス
void mouseReleased(...) void ofCircle(...) void ofSoundStopAll()
void audioReceived(...) void ofEllipse(...) void ofSoundSetVolume(...)
void audioRequested(...) void ofLine(...) float * ofSoundGetSpectrum(...)

void ofCurve(...) void loadSound(...)
ofUtils void ofBezier(...) void unloadSound()
ofUtils関数 void ofSetPolyMode(...) void play()
float ofGetFrameRate() void ofBeginShape(...) void stop()
void ofSetFrameRate(...) void ofVertex(...) void setVolume(...)
void ofSetVerticalSync(...) void ofCurveVertex(...) void setPan(...)
void ofSleepMillis(...) void ofBezierVertex(...) void setSpeed(...)
void ofHideCursor() void ofNextContour(...) void setPaused(...)
void ofShowCursor() void ofEndShape(...) void setLoop(...)
int ofGetWindowPositionX() void ofNoFill() void setMultiPlay(...)
int ofGetWindowPositionY() void ofFill() void setPosition(...)
void ofSetWindowPosition(...) void ofSetColor(...) float getPosition()
int ofGetScreenWidth() void ofSetColor(...) bool getIsPlaying()
int ofGetScreenHeight() void ofSetColor(...) float getSpeed()
int ofGetWidth() void ofEnableAlphaBlending() float getPan()
int ofGetHeight() void ofDisableAlphaBlending()
void ofSetWindowShape(...) void ofEnableSmoothing() ofVideoPlayer
void ofSetFullscreen(...) void ofDisableSmoothing() ofVideoPlayerクラス
void ofToggleFullscreen() void ofDrawBitmapString(...) bool loadMovie(...)
int ofGetWindowMode()
void closeMovie()
void ofSetWindowTitle(...) ofImage void play()
int ofNextPow2(...) ofImageクラス void stop()
float ofGetElapsedTimef() void loadImage(...) void idleMovie()
int ofGetElapsedTimeMillis() void saveImage(...) bool isFrameNew()
int ofGetFrameNum() void allocate(...) unsigned char * getPixels()
int ofGetSeconds() unsigned char * getPixels() float getPosition()
int ofGetMinutes() void setImageType(...) float getSpeed()
int ofGetHours() void resize(...) float getDuration()
void ofLaunchBrowser(...) void grabScreen(...) void setPosition(...)
string ofToDataPath(...) void clone(...) void setVolume(...)
string ofToString(...) void setUseTexture() void setLoopState(...)
string ofGetVersionInfo() void draw(...) void setSpeed(...)

void draw(...) void setPaused(...)
ofMath int type; void setUseTexture(...)
ofMath関数 int width, height, bpp; void draw(...)
void ofSeedRandom()
void draw(...)
void ofSeedRandom(int val) ofTexture int width, height;
float ofRandom(...) ofTextureクラス float speed;
float ofRandomf() void allocate(...) bool bLoadedMovie;
float ofRandomuf() void clear()

void loadData(...) ofVideoGrabber
ofSerial void loadScreenData(...) ofVideoGrabberクラス
ofSerialクラス void draw(...) void listDevices()
void enumerateDevices() void draw(...) void setDeviceID(...)
void setVerbose(...)
void setUseTexture(...)
bool setup() ofTrueTypeFont void setVerbose(...)
bool setup(...) ofTrueTypeFontクラス void initGrabber(...)
bool setup(...) void loadFont(...) void initGrabber(...)
int writeBytes(...) void loadFont(...) void close()
string readBytes(...) float getLineHeight() void grabFrame()
bool writeByte(...) void setLineHeight(...) bool isFrameNew()
unsigned char readByte() float stringWidth(...) unsigned char * getPixels()
void close() float stringHeight(...) void videoSettings()

void drawString(...) void draw(...)

bool bLoadedOk; void draw(...)

bool bAntiAlised; int width, height;

bool bFullCharacterSet;

ofSimpleApp   
OpenFrameworksエンジンは"app"カテゴリ内に含まれ、
proce55ingのように基本的なクラスは既に用意されています。
OpenFrameworksでは、さまざまなイベント実行関数が含まれているクラスを"ofSimpleApp"としています。
OpenFrameworksでプロジェクトを作る時、
"ofSimpleApp"
から受け継いだアプリケーションやクラスを使用する為には、"main.cpp"を使用します。
動作テストでコードを書く時には、
ぜひOpenFrameWorksで既に定義されているupdateやdrawなどの関数を
もう一度自分で打ち込んでみてください.
アプリケーションの起動直後に一度だけ呼ばれます.
読み込まれたファイルや変数を効率的に配置します.
繰り返し実行される関数です.
変数を更新をするので、drawの直前に置くのが理想的です.
例えば、"testApp.h"で定義されている"xpos"という変数を考えてみましょう.

void setup(){
	xpos = 0;
}

void update(){
	xpos += 1;
	if (xPos > ofGetWidth()) xPos = 0;
}

void draw(){
	ofRect(xPos, 30,10,10);
}
更新の直後に定期的に実行されます.
ここに描画するものを書き込みます.

void draw(){
	ofSetColor(255,255,255);
	ofNoFill();
	ofRect(20,20,100,100);
}
プログラムが終了される時には、
この関数を呼び出さなければいけないので、
プログラムにこの関数を加えてください.
キーボードが押された瞬間に呼び出されます.
押されたキーがどのボタンなのか判断できます.

void keyPressed(int key){

	if (key == 't'){
		; // 条件で実行したいコード
	} else if (key == ' '){
		; // 他の条件で実行したいコード
	}
}
文字コードだけでなく、F1-F12,Down, Enterのようなキーも使えます.

OF_KEY_BACKSPACE,
OF_KEY_RETURN,
OF_KEY_PRINTSCR,
OF_KEY_F1 - OF_KEY_F12,
OF_KEY_LEFT,
OF_KEY_UP,
OF_KEY_RIGHT,
OF_KEY_DOWN,
OF_KEY_PAGE_UP,
OF_KEY_PAGE_DOWN,
OF_KEY_HOME,
OF_KEY_END,
OF_KEY_INSERT
 キーボードが離された瞬間に呼び出されます.
押されたキーがどのボタンなのか判断できます..

void keyReleased(int key){

	if (key == 't'){
		; // 条件で実行したいコード
	} else if (key == ' '){
		; // 他の条件で実行したいコード
	}
}
文字コードだけでなく、F1-F12,Down, Enterのようなキーも使えます.

OF_KEY_BACKSPACE,
OF_KEY_RETURN,
OF_KEY_PRINTSCR,
OF_KEY_F1 - OF_KEY_F12,
OF_KEY_LEFT,
OF_KEY_UP,
OF_KEY_RIGHT,
OF_KEY_DOWN,
OF_KEY_PAGE_UP,
OF_KEY_PAGE_DOWN,
OF_KEY_HOME,
OF_KEY_END,
OF_KEY_INSERT
マウスが動いた時に使う事ができます.
マウスのx,y座標を受け取る事ができます.
マウスがドラッグされた時に使う事ができます.
マウスボタン変数は、左か右でのドラッグが一般的です.
これもマウスのx,y座標を受け取る事ができます.
マウスのボタンが押された時に使う事ができます.
x,y座標と共に、ボタン(左、右、中心)が渡されます.
音声入力を接続する場合、
ofSetupAudioを通じて音声の値がバッファに入った時、
この機能を使う事ができます.

ステレオ入力のようなマルチチャンネルの場合、
浮動小数点配列だけではなく、バッファのサイズやチャンネル数を得る事ができます.

入力(音声データのfloat配列)のサイズは、以下の通り:
bufferSize * nChannels;

データは、交互に重なって来るので、
例えば、2つのチャンネル(左/右)をリクエストすると、サンプルは以下のように来ます.

l r l r l r l r l r ....
0 1 2 3 4 5 6 7 8 9 ....
チャンネル"j"の"n"番目のサンプルにアクセスするには、以下のように書きます.

input[n*(nChannels) + j];
音声出力を接続する場合、
ofSetupAudioを通じて音声の値がバッファに出力される時、
この機能を使う事ができます.

ステレオ出力のようなマルチチャンネルを必要とする場合、
浮動小数点情報だけではなく、バッファサイズやチャンネル数を得る事ができます.
   ofUtils 
ofUtils関数は基本機能や基本ユーティリティをOFプログラムに送る関数です.
 浮動小数点で現在のフレームレートを返します.

メモ:このコードはofAppRunnerに実装されています.
フレーム率を指定する事によって、フレームレートをセットします.

垂直同期信号は画面更新をロックしてしまうので、
プログラムやビデオカードレベルによっては同期できない場合もあります.

メモ:このコードはofAppRunnerに実装されています.

グラフィックカードの垂直同期信号のオンとオフをセットします
場合によってはカードの設定が優先されるかもしれません

改善の為にOpenGLオプションのカードの設定をチェックし、
"ソフトウェア"に垂直同期を選ぶ事を許可してください.

メモ:このコードはofAppRunnerに実装されています.
グラフィックカードの垂直同期信号のオンとオフをセットします
場合によってはカードの設定が優先されるかもしれません

改善の為にはOpenGLオプションのカードの設定をチェックし、
"ソフトウェア"に垂直同期を選ぶ事を許可してください.

メモ:このコードはofAppRunnerに実装されています.
指定したミリセックで強制的にプログラムを中断します.

メモ:このコードはofAppRunnerに実装されています.
マウスカーソルを隠します.

メモ:このコードはofAppRunnerに実装されています.
マウスカーソルを表示します.

メモ:このコードはofAppRunnerに実装されています.
プログラム左上端のx座標を返します.
メモ:このコードはofAppRunnerに実装されています.
プログラム左上端のy座標を返します.

メモ:このコードはofAppRunnerに実装されています.
指定したx,y座標にウィンドウを動かします.
例えば、(0,0)を指定すれば、ウィンドウの左上端が画面の左上端に移動します.

メモ:このコードはofAppRunnerに実装されています.
スクリーンサイズの横ピクセル数を返します.

メモ:このコードはofAppRunnerに実装されています.
スクリーンサイズの縦ピクセル数を返します.

メモ:このコードはofAppRunnerに実装されています.
アプリウィンドウの横ピクセル数を返します.
アプリウィンドウの縦ピクセル数を返します.
アプリウィンドウのサイズをセットします.

メモ:このコードはofAppRunnerに実装されています.
ウィンドウの最大化の使用可能、不可能を設定します

メモ:このコードはofAppRunnerに実装されています.
ウィンドウモードとフルスクリーンモードを切り替えます.
ウィンドウの状態を追う必要はありません.

メモ:このコードはofAppRunnerに実装されています.
ウィンドウモードを返します

サンプル:


int mode = ofGetWindowMode();
		
if(mode == OF_WINDOW){
	printf("mode is: window mode\n");	
}else if(mode == OF_FULLSCREEN){
	printf("mode is: fullscreen mode\n");		
}else if(mode == OF_GAME_MODE){
	printf("mode is: game mode\n");	
}
メモ:このコードはofAppRunnerに実装されています.
キャプションバーに表示される文字列を指定します.

メモ:このコードはofAppRunnerに実装されています.
入力される2進数の最大値を返します

例えば、50を入力すると、64が返され,401を入力すると512が返されます
アプリ立ち上げからの経過時間を返します.
アプリ立ち上げからの経過時間をミリセックで返します.

1000[ミリ秒]=1[秒]
アプリ立ち上げからのフレーム数を返します.
システム時間の秒を返します.(0から59まで)
システム時間の分を返します.(0から59まで)
システム時間の分を返します.(0から23まで)
 デフォルトのブラウザを使い、指定したURLを表示します.
OpenFrameWorksは、データやフォルダ内の全てのファイルを、アプリと同レベルであるとして扱います.
ファイルがOpenFrameworkクラスを用いて読み込まれる時、(例:ofVideoPlayer)
相対パスである必要があります.
ファイルパスを相対パスに変換するのにこの関数を使います.
ウィンドウ、マック、リナックスなどにはすべて異なる相対パスがあります.
あなたが自作クラス、自作アドオンを作成し、データ/フォルダからファイルを読み込む場合、この関数が大切です.
string ofToString(double value, float precision = 7);
string ofToString(int value);

数値を文字列に変えるのを簡単にする為に、その数の主な数値を取り出します.

浮動小数点である'precision'(精度)は使いたい小数の位数です.

'precision'(精度)
のデフォルトの値は「7」で、
もし定義する必要がないならば、最初の項だけでかまいません.

例:文字数を指定して、キャプションバーにフレームレートを表示する.

string str = "framerate is "; 						
str += ofToString(ofGetFrameRate(), 2)+"fps"; 
ofSetWindowTitle(str);
//set the window title to "framerate is 45.30fps"

以下のフォーマットで、OpenFrameworsのバーションを文字列で返します.

'of version: OF_X.XX'

X.XXにはバーション番号が入ります.
     ofMath    
基本的なOpenFrameWorksアプリの数学ユーティリティです.
乱数が常に異なるように、クロックタイムでの乱数発生を設定します.
乱数が常に同じになるように、値を渡して乱数発生を設定します.
val0からval1までの間での乱数を返します.

例:ofRandom(-30,20)

では、-30から20の間の乱数を返します.
-1から1までの間の乱数を返します.
0から1までの間の乱数を返します.
   ofSerial    
シリアルポートインターフェイスのプラットフォームのクラスです.
ポートとBPSを指定する事ができ、データの読み書きができます.
どのポートを使用するかは明らかなはずです.
ポート設定のコードは手動で設定しなければならない事に、注意してください.

例:Arduinoユーザーはどのデバイスがオンになっているか確認します.

ofSerialクラスは最初に接続する事のできるデバイスと通信しようとします.
利用可能なシリアルデバイスを表示します.

マックとリナックスでは、以下のように表示されます.

device 0 - cu.modem 
device 1 - cu.USA19H181P1.1
その他のPCでは以下のようになります.

device 0 - COM2 
device 1 - COM4
コンソールから送られてくるメッセージやエラーを表示/非表示にします.
9600bpsで、最初に利用可能なデバイスを試します.
成功したならばtrueを、失敗したならばfalseを返します.

ofSerial mySerial;
if( mySerial.setup() ){
	printf("serial is setup!\n");	
}
与えられたポート名とBPSでシリアルポートを開きます.
マックとリナックスでは以下のように表示されます.

ofSerial mySerial;
mySerial.setup("/dev/cu.USA19H181P1.1", 9600);
その他のPCでは以下のようになります.

ofSerial mySerial;
mySerial.setup("COM4", 9600);
リストから、もしくは設定されたBPSに基づいてシリアルポートを開きます.
コード命令は、システムから見つかる最初のシリアルデバイスを開きます.

ofSerial mySerial;
mySerial.setup(0, 9600);
接続されているシリアルデバイスに、バイト型の文字を書き出します.
書き出されたバイト数が返されます.

ofSerial mySerial;
mySerial.setup(0, 9600);
int numSent = mySerial.writeBytes("Hello World");
接続されたシリアルデバイスに"length"で指定したバイト数だけ読み込みます.
読み込まれたバイトを文字列に変換して返します.
以下は、文字列"allbyte"の中に読み込まれた全てのバイトを入れるコードです.

ofSerial mySerial;
mySerial.setup(0, 9600);
string bytesReturned  = "";
string allBytes       = "";
int nBytesRead        = 0;
while((bytesReturned = mySerial.readBytes(3)).length() > 0){
	nBytesRead += bytesReturned.length();
	allBytes   += bytesReturned;
};

printf("read %i bytes - bytes are: %s \n", nBytesRead, allBytes.c_str() );
接続されたシリアルデバイスに1バイトを書き込みます.
成功すると、trueを返します.

ofSerial mySerial;
mySerial.setup(0, 9600);
unsigned char myByte = 225;
mySerial.writeByte(myByte);
1バイトを読み込み、返します.

ofSerial mySerial;
mySerial.setup(0, 9600);
unsigned char myByte = 0;
myByte = mySerial.readByte();
printf("myByte is %i \n", myByte);

シリアルデバイスとの接続を閉じます.
     ofGraphics      
ofGraphicsは、OpenGLのドローコマンドの簡単なラッパーです.
RGB(0~255)として背景色をセットします.
背景は draw()コマンドが実行される前に自動的に消去されます.
背景が変わらないようにするには、
(アプリケーションの始まりに)"setup()"の中でこの関数を呼び出してください.
背景色が変わったら、"update()"でこの関数を呼び出せます.
背景色を取得します.
要素数4(R,G,B,A)の配列で返し、値は0.0~1.0です.

float * bgColor = ofBgColorPtr();
//それぞれの値を取得
float r = bgColor[0];
float g = bgColor[1];
float b = bgColor[2];
float a = bgColor[3];
背景消去機能をオート(デフォルト)でするかどうかを指定します
オートにしないなら、(drawが始まる)毎フレームで背景消去は行われません.
いつでも"ofBackground"が呼ばれます.
背景消去機能がオートである(true)か、手動であるか(false)を教えてくれます.
ofCircleコマンドの精密度を設定します.
デフォルトでは円は22ポイントですが、
より大きな円を書く必要があるなら、このコマンドを使って精密度を調節できます.
全ての円はOpenGLによって最適化されます.

void ofCircle参照
長方形を描く為に設定されるコマンドで
長方形の左上角を指定して描画するか、
長方形の中心を指定して描画するかを指定します

オプションは、
OF_RECTMODE_CORNER :左上角指定
OF_RECTMODE_CENTER :中心指定
です.
長方形の描画モードが
OF_RECTMODE_CORNER :左上角指定
OF_RECTMODE_CENTER :中心指定
のどちらであるか返します.
 (x,y)座標、幅、高さで与えられた長方形を描きます.
(x1,y1)(x2,y2)(X3,Y3)で与えられた点に三角形を書きます.
(x,y)を中心に半径radiusの円を書きます.
実は円は小さな三角形の集合体なのですが、
その精密度はプログラムの最初で22に設定されますが、修正する事が出来ます
点(x,y)と幅(w)高さ(h)から楕円を書きます.
2点 (x1,y1),(x2,y2)で直線を書きます.
(x0,y0)から(x3.y3)までベジェ曲線を書きます.
曲線は(x1,y1)(x2,y2)の制御点とどちらかの端点との線に接するように描かれます.
多角形の重なりあう部分の設定をします.

可能なのは以下の通りです
OF_POLY_WINDING_ODD -
OF_POLY_WINDING_NONZERO -
OF_POLY_WINDING_POSITIVE -
OF_POLY_WINDING_NEGATIVE -
OF_POLY_WINDING_ABS_GEQ_TWO -
新しい形状を作成する時に宣言します.
この宣言以降に頂点の座標を入力し、
最後に"ofEndShape()"を呼び出す必要があります.

//星を描く
ofSetPolyMode(OF_POLY_WINDING_NONZERO);
ofBeginShape();
  ofVertex(400,135);
  ofVertex(215,135);
  ofVertex(365,25);
  ofVertex(305,200);
  ofVertex(250,25);
ofEndShape();
形状の点の1つを指定します.
"ofBeginShape()"
"ofEndShape()"の間で呼び出してください.
形状の点の1つを指定します.
ofVertexとの違いは、
2つの点を結び、形状を縁取る線が曲線であるか、直線であるかです.
曲線はcatmull-rom式を使って自動的に生成されます.
"ofBeginShape()"
"ofEndShape()"の間で呼び出してください.
3つの点からのベジェ曲線を描きます.
"ofBeginShape()"
"ofEndShape()"の間で呼び出してください.
形状の終了と画面への描画をプログラムに指示します.
"bClose"
変数をtrueに設定すれば、自動的に形状を閉じます
この関数を宣言しなければ、形状を見る事はできません
選択された色で、後に指示する図形の輪郭を書きます.
選択された色で、後に指示する図形の形状を塗りつぶします
 描画カラーにRGBを0~255までを設定します.

例:赤(0xff0000)にします.
ofSetColor(255,0,0);
描画カラーにRGBAを0~255までを設定します.
アルファ値(透明度)については、
まず透過混合を可能にして、(パフォーマンスの為にデフォルトではオフになっている)
適切なz-オーダー(背面の画像)を描画します.

例:透明な赤い長方形を描きます:

ofEnableAlphaBlending();	// アルファブレンディングを開始
ofSetColor(255,0,0,127);	// 赤 透明度50%
ofRect(20,20,100,100);
ofDisableAlphaBlending();	// アルファブレンディングを終了(忘れてはいけない)
16進数でRGBを指定します.
16進数は、色を表現するにあたり便利です.

例:

ofSetColor(0xffffff);  // 白  (255,255,255)
ofSetColor(0x000000);  // 黒  (0,0,0);
ofSetColor(0x00ff00);  // 緑  (0,255,0);
OpenGLの混合モードをオン/オフします
パフォーマンスの為に、デフォルトでオフになっているアルファブレンディングを可能にします.
これは、OpenGLで混合モードをオンにする一般的な命令です.
混合モードをオフにします.
スムージングを開始します.
現在の機能は線でのみ働きます
線をふさいだ時、閉じられた形状に対して滑らかな線にします.
スムージングを終了します.
現在の機能は線でのみ働きます
線をふさいだ時、閉じられた形状に対して滑らかな線にします.
 点(x,y)でビットマップに変換した文字列を描画します.

例:このようにテキストを画面に出す事ができます.

ofDrawBitmapString("hi!!", 100,100);
複数行はこのようにします.

ofDrawBitmapString("a test\nof multiline\ntext", 100,100);
動的な文字列も使う事が出来ます.

例:フレーム率を表示する.

string fpsStr = "frame rate: "+ofToString(ofGetFrameRate(), 2);
ofDrawBitmapString(fpsStr, 100,100);
注意:
ofDrawBitmapStringは、glDrawPixelsによる過剰機能のラッパです.
いくつかのグラフィックカードでは、glDrawPixelsは動作が遅いかもしれません.
その場合は、選択肢としてアンチエリアスされていない小さな書体で
"ofTrueTypeFont"を試してみると良いかもしれません.
ofImageクラスは"freeImage"と呼ばれるライブラリのラッパのクラスです.
OpenFrameworkプロジェクトで、画像を読み込んだり、保存したり、描画するのに良く使われます.
fileNameによって画像を読み込みます
ファイル名に基づき、効率の良いファイルタイプを選定します.
相対パスでファイルを探します.
例:exeファイルと同じフォルダ内にある"icon.gif"を呼びます.
下階層フォルダも指定できます.

myImage.loadImage("images/icon.gif");
fileNameで指定して画像を保存します.
ファイル名に基づき、効率の良いファイルタイプを指定します.
exeファイルとの相対で指定します.
例:スクリーンショットを画像に保存します

myImage.grabScreen(0,0,500,500);
myImage.saveImage("partOfTheScreen.png");
動的にファイル名を付ける事もできます.


myImage.grabScreen(0,0,500,500);
char fileNameStr[255];
printf(fileNameStr, "partOfTheScreen_%0.2i.png", snapCounter++);
myImage.saveImage("partOfTheScreen.png");
 画像に幅(w)と高さ(h)を指定します.

OF_IMAGE_GRAYSCALE,
OF_IMAGE_COLOR,
OF_IMAGE_COLORALPHA
ピクセルにアクセスします.
データを捕獲して、好きなように使う事が出来ます

グレイスケールイメージを使いたいなら、
要素数が(width*height)のピクセル配列を使えます.

カラー画像を使う時は、
要素数はRGBを折り混ぜて、(width*height*3)となります.

アルファカラーを使う時は、
RGBAを折り混ぜて、(width*height*4)となります.
イメージを別のタイプにコンバートします.

例:カラー画像を読み込み、グレイスケールに変換します.

myImage.loadImage("somethingColor.jpg");
myImage.setImageType(OF_IMAGE_GRAYSCALE);
//グレイスケールにします
画像を(w,h)で指定した新しいサイズに変更します.
大きくしたり、小さくしたりできます.
OpenGLウィンドウを画像に変換します
必要であるならば、割り当てや、サイズ変更をします.
momの複製をします.

myImage.loadImage("somethingColor.jpg");
myOtherImage.clone(myImage); //この瞬間、myOtherImageも
                             //somethingColor.jpgを示します
テクスチャの割り当てと使用を行います.
画像が変換された場合には、openGLテクスチャにアップロードされます.
画面に表示する必要はなく、グラフィックカードにメモリを保存する場合もです.
OpenFrameworkに画像を読み込む前に、呼び出してください

myImage.setUseTexture(false);
myImage.loadImage("blah.gif");
多くの場合は、ofImageは画面に読み込まれたり、描画されますが、
デフォルトではテクスチャを用意しています.
内部のテクスチャを通して、左上点(x,y)に幅(w),高さ(h)の画像を描画します.
内部のテクスチャを通して、左上点(x,y)に画像を描画します.サイズは元の画像のままです.
 画像の種類です.
OF_IMAGE_GRAYSCALE,
OF_IMAGE_COLOR,
OF_IMAGE_COLOR_ALPHA.

if (myImage.type == OF_IMAGE_GRAYSCALE){
	; ///
}
int width, height, bpp;
width:幅
height:高さ
bpp:色深度
"ofTexture"は、OpenGLテクスチャをサポートする為のラッパーです.
具体的には、OpenGLの 非2^n テクスチャ を使ってグラフィックデータをアップロードする事を許可します.
OpenGLテクスチャを割り当てる時に呼ばれます.
幅(w)と高さ(h)が必ずしも2の累乗である必要はありません.(=非2^n テクスチャであるという事)
しかし、テクスチャに送るデータを格納するのに十分大きい必要があります.
"internalGlDataType"
には、OpenGLのどのようなテクスチャを保存するかを記載します.

例:グレイスケールテクスチャを使うなら、"GL_LUMINANCE"を使います.
"loadData()"
を使って、どのタイプのデータでもアップロードはできますが、
OpenGLはグレイスケールとして情報を格納します.

タイプは他に以下のようなものがあります
GL_RGB;
GL_RGBA;
既にテクスチャメモリに何か割り当てられている場合に、
テクスチャを消去し,メモリを開放します.
グラフィックカードのメモリをコントロールする必要があるなら役に立ちます.
所定の幅(w)と高さ(h)で、unsigned chars型配列をテクスチャに読み込みます.
読み込みデータフォーマットも指定します.

データフォーマットオプション:
GL_LUMINANCE;
GL_RGB;
GL_RGBA;

例:割り当てられているテクスチャに200*100PixelのRGB配列をアップロードします.

unsigned char pixels[200*100];
for (int i = 0; i < 200*100; i++){
	pixels[i] = (int)(255 * ofRandomuf());
}
myTexture.loadData(pixels, 200, 100, GL_RGB);
画面の領域を捕獲し、テクスチャに読み込みます.
捕獲したい領域の、左上位置(x,y)幅(w)と高さ(h)を指定します.
"allocate()"を使って、画面から読み込みたい領域より十分大きなテクスチャを割り当てた事を確認してください
与えられた(x,y)座標、幅(w)と高さ(h)に対してテクスチャを描画します.
与えられた(x,y)座標に対してテクスチャを描画します. 幅と高さはテクスチャの元の値です.
ofTrueTypeFontクラスは、openframeworksにフォントをロードするインターフェイスを提供します.
フォントはテクスチャに変換され、スクリーンに描画することができます.

あなたがフォントをロードする時、いくつかのオプションがあります.

-フォントはどのサイズで示されるか、
-アンチエイリアスするかどうか
-完全な文字セット、もしくは文字セットかどうか
(通常のアスキーコードに、アクセント、ウムラウトを加えた延長アスキー)

デフォルトは、アンチエイリアスされた非完全文字セットです
ライブラリにはfreetypeを使用します.

freetypeはある著作権問題の関係で、true typeを暗に示しています.
特に非アンチエイリアスで小さな文字は綺麗に表示しません.
しかし、我々はそれで十分だと判断しています.
より大きなサイズで使われるからです.
ファイル名でフォントをロードし、所定のフォントサイズでテクスチャへ返します.
データ/フォルダでフォントファイルを探します。
例:フォントサイズ32でarialフォントを載せます:


// 宣言
ofFont myFont;
...

myFont.loadFont("arial.ttf", 32);
フォントをロードします.
フォント名とサイズに加えて、2つのフラグを渡す事ができます.

_bAntiAliased:アンチエイリアスされるか
_bFullCharacterSet:完全な文字セットか
タイプフェイスの行の高さのフロート値を返します.
行の高さはフォントサイズに基づいて計算され、
調整をすることができます.
複数行の表示に役に立ちます.
画面に表示するテキストの高さを指定します.
タイプフェイスに表示する文字列を与えると、ピクセルで幅を返します.
タイプフェイスに表示する文字列を与えると、ピクセルで高さを返します.
画面の座標(x,y)にタイプフェイスの文字列を描画します.

例:スクリーンにテキストを表示する為にはこのように書きます

//宣言
ofFont myfont;
.....

//セットアップ
myfont.loadFont("arial.ttf", 32);

//描画
myfont.drawString("hi!!", 100,100);
複数行の場合は、
myfont.drawString("a test\nof multiline\ntext", 300,300);

動的に発生する文字列を使用する事もできます.

例:フレーム率を表示する

char fpsStr[255]; //文字配列
sprintf(fpsStr, "frame rate: %f", ofGetFrameRate());
myfont.drawString(fpsStr, 100,100);
フォントのロックをするかどうか設定する値です.
アンチエイリアスをするかどうか設定する値です.
フォントが完全な文字セット、または文字サブセットを含むかどうか設定する値です.
OpenFrameworksに含まれるオーディオクラスは、
簡易的な音声入出力ライブラリであるrtAudioのラッパーです.
このクラスはローレベルではたらき、
I/Oを直接サウンドカードにアクセスします.

オーディオクラスは、callbackインターフェイスをセットアップします.
一度オーディオイベントが呼ばれると、
(入力からデータを受け取るか、出力へデータを要請する、どちらかが起こる為)
simpleAppが呼ばれます.
これがcallbackです.

このcallbackはグラフィックスでレートが異なり、
オーディオクラスが実行した時でも実行され、
ofSimpleAppクラスを継承した他のイベント
( mousePressed keyPressed update )
のように、ただちに処理されます.
オーディオのセットアップをします.
nOutputsでアウトプットのチャンネル数を、
nInputsでインプットのチャンネル数を設定します.
ofSimpleAppのポインタも渡さなければいけません.

その時には、"this"を使う事ができます.

例:2つのアウトプットチャンネルを設定します.

ofSoundStreamSetup(2,0,this);
呼び出しを簡略化する為に、サンプルレート、(待ち時間の為の)バッファ数などはデフォルトにセットされます.
より詳細なオーディオシステムの設定を許可します.
オーディオストリームを停止(ポーズ)します.
オーディオストリームを開始(ポーズ解除)します.
ストリームは自動的にofSoundStreamSetupと共に始まるので
もし、ストリームを停止している場合は、単にこの関数を呼ぶだけです.
オーディオストリームを終わります.
オーディオストリームを呼ぶ事のできるデバイスのリストです.
この時点で、もしデバイスを選択するインターフェイスがなくても、
(デフォルトのデバイスが使われていて)
ただちに、その機能を使う事ができます
ofSoundPlayerクラスは、強力なオーディオユーティリティライブラリであるfmodのラッパーです.
ofSoundPlayerはサウンドファイルのロードと、再生やプロパティの操作、制御をする事ができます.
再生中の全てのofSoundPlayerオブジェクトを停止します.
"vol"で指定して、ofSoundPlayerオブジェクトのボリュームを設定します.
範囲は0~1までです.

0:無音
1:最大音
現在再生している全てのサウンドで、最高512バンドとしてnBand
fftスペクトラムの浮動小数点ポインタ配列を返します.
この関数を使いたい時は、
ofSoundSetUseSpectrum(true)
としてください
"fileName"で指定されるサウンドファイルを読み込みます

サウンドファイルには、フォーマットが
*.wav
*.aif
*.mp3
*.mp2
*.ogg
*.raw
である事を確認してください.
プログラムは、相対ファイルで探します.

オプション変数'bool stream'をtrueにすれば、
読み込んだメモリの代わりにディスクからファイルをストリーミングします.
大きなファイルをプログラムから動的に読み込む場合、多くのストリーミングファイルを感知するので、
メモリを読み込む間、短時間だけフリーズを引き起こします.

mySound.loadSound("beat.mp3");
相対ファイルも指定できます.

mySound.loadSound("sounds/beat.mp3");
現在のサウンドを停止し、アンロードします.
サウンドを再生します.

setMultiPlay()をtrueに設定していた場合、
それぞれのplay()コマンドは、新しいチャンネルにコピーされてから再生を開始し、
現在再生しているサウンドは継続して再生されます

setMultiPlay()をfalseに設定していた場合、
再生中の曲をリスタートさせます.
再生中の曲を停止させます.
"vol"で指定して、サウンドのボリュームを設定します.
範囲は0~1までです.

0:無音
1:最大音
pctで左右の音声振り分けを指定します.
範囲は0~1までです.

0.5:中心
0:左のみ
1:右のみ
再生スピードを"spd"で指定します.

1.0:通常のスピード
2.0:2倍のスピード
など
再生中のサウンドをポーズまたはポーズ解除します.
trueに指定すればサウンドがループし、
falseに指定すればループされません
サウンドを多重再生することができます

trueに設定した場合、play()関数は、新しいチャンネルで再生が開始され、
現在再生中の曲はそのまま再生が継続されます.

falseに設定した場合、play()関数は再生中のサウンドを停止します.
再生位置を指定します.
範囲は0~1です.

0:サウンドファイルの開始位置
1:サウンドファイルの終了位置
サウンドの現在の再生位置を返します
範囲は0~1です.

0:サウンドファイルの開始位置
1:サウンドファイルの終了位置
サウンドが現在再生中ならtrue
そうでないならfalse
を返します.
現在の再生スピードを返します.

1.0:通常のスピード
2.0:2倍のスピード
など
 左右の音声振り分けを返します.
範囲は0~1までです.

0.5:中心
0:左のみ
1:右のみ
ofVideoPlayerクラスはquicktimeを通してムービーファイルをロードし、
動画再生に様々なコントロールやプロパティを与えたり、
与えられたフレームのピクセルにアクセスします.
データ/フォルダの中で(相対パス?)探した動画ファイルを
'fileName'
に指定すると、動画ファイルを読み込みます.
動画は、自動的には再生されません.
動画ファイルを閉じて、リソースの割り当てを取り消します.
動画を再生します.
もし動画がポーズか停止された場合、
停止した部分を表示し続けます.
動画を止めます.
再生を可能にする為、ムービーを待機状態にします.
もしこれを宣言しない場合、動画再生中にウィンドウズによる不具合があるかもしれません.
もしピクセルフレームが新しかったら、trueを返します.

例:フレームが新しかったら、処理をする.

if (myMovie.isFrameNew()){
	;	// do something
}

現在のフレームのピクセル配列,RGB[width*height*3]のポインタを返します.
例:座標(100,20)のRGB値を取り出します.


unsigned char * pixels = myMovie.getPixels();
int widthOfLine = myMovie.width;  // 画像の幅
int red 	= pixels[(20 * widthOfLine) + 100 * 3    ];
int green 	= pixels[(20 * widthOfLine) + 100 * 3 + 1];
int blue 	= pixels[(20 * widthOfLine) + 100 * 3 + 2];
再生位置を
0:先頭
1:最後尾
として、現在の再生位置を返します.
動画の現在の再生速度を返します.
1=通常の速さ
0=ポーズ
-1=逆再生
動画の時間を秒で返します.
動画の再生位置をパーセントで指定します.
終わりまで動画のメモリを消去するのにも使えます.
ボリュームを指定します.
デフォルトは0です
動画がループするかどうかを指定します
デフォルトではループされます.
これには3つのオプションがあります.

OF_QT_LOOP_NONE - ループしません.最後のフレーム(逆再生の場合は最初のフレーム)で止まります.
OF_QT_LOOP_NORMAL - 通常のループです.(最後のフレームから、最初のフレームへ飛びます)
OF_QT_LOOP_PALINDROME - 前後にループします.
動画の再生スピードを指定します.
1=通常の速さ
2=2倍の速さ(早送り)
0=ストップ
-1=逆再生
など
動画を停止します.
trueにすればポーズとなり、falseとすればポーズ解除です
テクスチャの方法をこのオブジェクトで指定します.
画面に動画を映したい時、テクスチャを使うのが一般的です.
しかしメモリを保存したり、より良いパフォーマンスの為にテクスチャを使わないケースもあります.
テクスチャの内部使用を抑制する為には、このように動画を読み込みます.


myMovie.setUseTexture(false);
myMovie.loadMovie("blah.mov");
(x,y)座標、幅(w),高さ(h)に動画クラスのテクスチャを描画します.
(x,y)座標に動画クラスのテクスチャを描画します. サイズは元の動画のままです.
読み込まれた動画の幅と高さです.
読み込まれた動画の再生スピード
通常の速さ=1.0
逆再生=-1.0
停止=0
動画が適切にロードできたか記述するboolean型
ofVideoGrabberクラスはライブカメラへのLowレベルの接続をする為、
コンポーネントを利用してクイックタイムにラップします

ウィンドウズでは現在、VideoInputライブラリをベースとしたdirectshowが使われています.
VideoInputライブラリは、クイックタイムを上回るパフォーマンスであり、
また、クイックタイムやWinVDigをインストールしないで良いという利点があります.
"ofConstants.h""#define"では、ウインドウズの為に
quicktimeかdirectshow(デフォルト)を使うかどうかを選ぶことができます。
利用可能なキャプチャデバイスのIDをコンソールに送信します.
"setDeviceID"でIDを指定して、特定の装置を使用できます.
特定のキャプチャデバイスをdeviceIDによって指定する.
"listDevices()"を使用して利用可能なキャプチャデバイスとIDを取得できます.
テクスチャの使用方法をこのオブジェクトで指定します
動画を画面上に表示する場合、
テクスチャを使うのが一般的です.

しかしメモリを保存したり、より良いパフォーマンスの為にテクスチャを使わないケースもあります.
テクスチャの内部使用を抑制する為には、このようにシーケンスを初期化します.

myGrabber.setUseTexture(false);
myGrabber.initGrabber(320,240);
video grabberインターフェイスをデバッグするのに役立つ為、verbosityをセットします.
verbosityをセットし、initGrabber()を試してみてください.

myGrabber.setVerbose(true);
myGrabber.initGrabber(320,240);

 デフォルトか、setDeviceIDによって指定するキャプチャデバイスを初期化します.
指定した幅や高さでのセットアップを試してください.
キャプチャの寸法が利用不可能なら、以前に利用可能だった寸法に設定されます.
ピクセルを処理する前に、実際のサイズを確認するのをオススメします.

myGrabber.setVerbose(true);
myGrabber.setDeviceID(1);
myGrabber.initGrabber(320,240);
int grabW = myGrabber.width;
int grabH = myGrabber.height;
printf("asked for 320 by 240 - actual size is %i by %i \n", grabW, grabH);
sequence grabberを閉じ、割り当てられたリソースも全て閉じます.
sequence grabberから新しいデータを得る為には、
定期的に(例えば、updateにつき一度)この関数を呼ばなければいけません
新しいデータを得られるように、カメラ映像取得コンポーネント待機させます.
現在のピクセルが一つ前のフレームから変わったら返されます.
現在のフレームのピクセル配列ポインタを返します.
データは、RGBで構成され、配列番号は [width*height*3]です.
画面で、ビデオ映像の設定を読み込みます.
もし、OpenGLの設定がフルスクリーンで、この関数が呼ばれたら
始めは、ビデオ映像ウィンドウがメインウィンドウ直下に表れるかもしれません.
指定した幅(w)と高さ(h)、位置(x,y)に、movie grabberクラスの内部のテクスチャーを描きます。
movie grabberクラスから取得できる幅、高さで指定した位置(x,y)で、
movie grabberクラスの内部のテクスチャーを描きます。
movie grabberクラスから取得できる幅、高さです.