読者です 読者をやめる 読者になる 読者になる

Shut the fuck up and write some code

グダグダ言わずにコードを書きたいブログ

openFrameworks 0.8 iOS版を使うときの注意

openFrameworksでアプリを作ってみようと本格的に触り始めてみるも色々と詰まるところが多いので、メモを残す。他のことにも気がついたら追記していきたいと思う。

ofxiPhoneではなくofxiOS

そもそもの話ですが名称が変わったので注意。

iPhoneの向きを指定する定数

0.8以前は

#define  OFXIPHONE_ORIENTATION_PORTRAIT      OF_ORIENTATION_DEFAULT  // UIDeviceOrientationPortrait
#define OFXIPHONE_ORIENTATION_UPSIDEDOWN    OF_ORIENTATION_180      // UIDeviceOrientationPortraitUpsideDown
#define OFXIPHONE_ORIENTATION_LANDSCAPE_RIGHT  OF_ORIENTATION_90_RIGHT // UIDeviceOrientationLandscapeRight
#define OFXIPHONE_ORIENTATION_LANDSCAPE_LEFT  OF_ORIENTATION_90_LEFT  // UIDeviceOrientationLandscapeLeft

となっていたが、0.8から廃止となって

enum ofOrientation{
    OF_ORIENTATION_DEFAULT = 1, 
    OF_ORIENTATION_180 = 2,
    OF_ORIENTATION_90_LEFT = 3,
    OF_ORIENTATION_90_RIGHT = 4,
    OF_ORIENTATION_UNKNOWN = 5
};

というコードになっている。向き指定したい時は

ofxiOSSetOrientation(OFXIPHONE_ORIENTATION_LANDSCAPE_LEFT);

ではなくて

ofxiOSSetOrientation(OF_ORIENTATION_90_LEFT);

となる。

これはCHANGELOGにも書いてある。

projexctGeneraterでプロジェクトファイルを生成するとスーパークラスの名称が違う

SDKに同梱されているprojexctGeneraterというアプリを使うと使いたいaddonを最初から入っている状態でプロジェクトファイルを作ってくれる便利なツールですが、これを使って生成するとtestApp.hで継承しているクラス名が間違っている。

class testApp : public ofxiOS{

となっていて根本的に間違っているので

class testApp : public ofxiOSApp{

と修正してやる。

ちなみにmyAppsフォルダ入っているemptyExampleは正しくなっている。

OpenGL ES 2.0を使う

0.8から対応したので使えるようにする。main.mmに以下を追記。

int main(){
    ofAppiOSWindow * window = new ofAppiOSWindow();
    window->enableRendererES2();
    ofSetupOpenGL(1024,768, OF_FULLSCREEN);         // <-------- setup the GL context
    ofRunApp(new testApp);
}

windowのRendererをES2にする。

ビルドしてアプリが起動した時にログに

Creating OpenGL ES2 Renderer

と出力されていたら成功。

   

Getting Started With Openframeworks
Zachary Lieberman
Oreilly & Associates Inc
売り上げランキング: 173,275