Cinder一巡り #1
Cinderのセットアップ
ダウンロードページからダウンロードするかGitを使う。
以下は、Gitでクローンしてビルドする方法です。
% git clone git@github.com:cinder/Cinder.git
Boostをダウンロード
現時点でCinderのバージョンは0.8.4で、Boost1.4.8が必要になります。
http://sourceforge.net/projects/boost/files/boost/1.48.0/
Boostをダウロードしたら、解凍しCinderのディレクトリに"boost"という名前で移動します。Boost自体はビルドする必要は無いですが、Cinderのビルドに必要になります。
% cd PATH/TO/boost_1_48_0.tar.gz % tar xvzf boost_1_48_0.tar.gz % mv boost_1_48_0 boost % mv boost PATH/TO/Cinder/. % cd PATH/TO/Cinder
Cinderのビルド
% cd xcode % ./fullbuild.sh . . . ** BUILD SUCCEEDED **
ひと通りセットアップが完了したのでCinder/samplesの中にあるサンプルを動かして確認してみます。
Cinderプロジェクトを作成する
CinderにはTinderBoxというプロジェクトジェネレーターが付属しているので、それを使います。TinderBoxはCinder/tools以下にあります。
初回起動時にはCinderをインストールした場所を聞かれるので、場所を指定してあげます。
プロジェクトの設定は以下の様にしました。
"Create"を押すと、指定した場所にBaseAppディレクトリができるので、xcode/Base.xcodeprojを開きます。 実行すると黒いウィンドウが表示されればOKです。
画面の描画はSource/HelloWorldApp.cppで行なっています。
// Cinderをインクルード #include "cinder/app/AppBasic.h" #include "cinder/gl/gl.h" // 名前空間 using namespace ci; using namespace ci::app; using namespace std; // ベースとなるアプリケーションのクラス // CinderのAppBasicクラスを継承する class HelloWorldApp : public AppBasic { public: void setup(); void mouseDown( MouseEvent event ); void update(); void draw(); }; // アプリケーションの実行時に一度だけ呼ばれる void HelloWorldApp::setup() { } // クリックした時に実行される void HelloWorldApp::mouseDown( MouseEvent event ) { } // draw()の前に毎フレーム(デフォルトは30fps)呼ばれる // 主に計算、データの処理などを行うのに使う void HelloWorldApp::update() { } // スクリーンに何かを描画するのに使う void HelloWorldApp::draw() { // ウィンドウの背景を黒にする gl::clear( Color( 0, 0, 0 ) ); } // プログラムを実行する。レンダリングにOpenGLを使うように指定する。 CINDER_APP_BASIC( HelloWorldApp, RendererGl )
ウィンドウ内の座標は左上が原点になるので、例えば、線を描画したい場合はdraw()に以下の様に記述します。また、デフォルトでは640x480pxのウィンドウで30fpsになりますが、ウィンドウサイズを変えたい場合にはprepareSettingsというメソッドを用意してあげます。
#include "cinder/app/AppBasic.h" #include "cinder/gl/gl.h" using namespace ci; using namespace ci::app; using namespace std; class HelloWorldApp : public AppBasic { public: void prepareSettings( Settings *settings ); void setup(); void mouseDown( MouseEvent event ); void update(); void draw(); }; void HelloWorldApp::prepareSettings( Settings *settings ) { settings->setWindowSize( 1024, 768 ); settings->setFrameRate(60.0f); } void HelloWorldApp::setup() { } void HelloWorldApp::mouseDown( MouseEvent event ) { } void HelloWorldApp::update() { } void HelloWorldApp::draw() { // clear out the window with black gl::clear( Color( 0, 0, 0 ) ); gl::drawLine( Vec2f(0.0f, 0.0f), Vec2f(getWindowWidth(), getWindowHeight()) ); gl::drawLine( Vec2f(0.0f, getWindowHeight()), Vec2f(getWindowWidth(), 0.0f) ); } CINDER_APP_BASIC( HelloWorldApp, RendererGl );