Cinder一巡り #1

Cinderのセットアップ

http://libcinder.org/

ダウンロードページからダウンロードするか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をインストールした場所を聞かれるので、場所を指定してあげます。

プロジェクトの設定は以下の様にしました。

f:id:sDaigo:20130323192907p:plain

"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 );