Ogre3Dでアプリケーションを作ってみる

http://www.ogre3d.org/wiki/index.php/SettingUpAnApplication#XCode を参考にXcodeでOgre3Dのプログラムを書いてみる。

メモwikiからの転載なので不明瞭な部分もあると思う。不明な部分を指摘していただけるとありがたい。

Xcodeを起動してCarbon Applicationの新規作成

プロジェクト名は適当に。

  • main.nibと*_Prefix.pchを削除する。
  • main.cをmain.cppに名称変更。


main.cppを書き換える

#include <Carbon/Carbon.h>
#include "ExampleApplication.h"

class TutorialApplication : public ExampleApplication
{
protected:
public:
    TutorialApplication()
    {
    }

    ~TutorialApplication() 
    {
    }
protected:
    void createScene(void)
    {
    }
};

int main(int argc, char **argv)
{
    // Create application object
    TutorialApplication app;

    try {
        app.go();
    } catch( Exception& e ) {
        fprintf(stderr, "An exception has occurred: %s\n",
                e.what());
    }

    return 0;
}

フレームワークの追加

OgreSDKをインストールしたところから

  • Ogre.framework
  • Cg.framework

を「追加 -> 既存フレームワーク」で行う。この際、参照方法は「絶対パス」を指定しておくとあとで楽 (このプロジェクトをテンプレートにするため)

システムディレクトリ (/Systems/Libraries/Frameworks)から IOKit.frameworkも追加。

あとOgreSDKから libios.aも追加する(追加 -> 既存ファイル)。「ディスティネーショングループのフォルダに項目を追加する」にチェックを入れる。

Xcodeの左ペインはこんな風。


設定ファイルをコピーする

設定ファイル類は少々複雑で面倒なのでSamplesからもらってくる事にする.

  • plugins.cfg
  • media.cfg
  • resources.cfg

これらを OgreSDK/Samples/configから Resourcesの下へコピーする。「デスティネーショングループのフォルダに項目をコピーする」を忘れずに。

resources.cfgは以下のように書き換える。「../../../Samples → Contents/Resources」の置換をすると楽。

# Resource locations to be added to the 'boostrap' path
# This also contains the minimum you need to use the Ogre example  framework
[Bootstrap]
Zip=Contents/Resources/Media/packs/OgreCore.zip

# Resource locations to be added to the default path
[General]
FileSystem=Contents/Resources/Media
FileSystem=Contents/Resources/Media/fonts
FileSystem=Contents/Resources/Media/materials/programs
FileSystem=Contents/Resources/Media/materials/scripts
FileSystem=Contents/Resources/Media/materials/textures
FileSystem=Contents/Resources/Media/models
FileSystem=Contents/Resources/Media/overlays
FileSystem=Contents/Resources/Media/particle
FileSystem=Contents/Resources/Media/gui
FileSystem=Contents/Resources/Media/DeferredShadingMedia
Zip=Contents/Resources/Media/packs/cubemap.zip
Zip=Contents/Resources/Media/packs/cubemapsJS.zip
Zip=Contents/Resources/Media/packs/dragon.zip
Zip=Contents/Resources/Media/packs/fresneldemo.zip
Zip=Contents/Resources/Media/packs/ogretestmap.zip
Zip=Contents/Resources/Media/packs/skybox.zip

ヘッダファイルのコピー

main.cppで使っていたExampleApplication.hなどをコピーする。依存関係がわからないので OgreSDK/Samples/includeをディレクトリごとコピーする。これも「デスティネーショングループのフォルダに項目をコピーする」にチェックをいれる。

データのコピー

OgreSDK/Samples/Media をディレクトリごとResourcesにコピーする。以下のようにオプションを選ぶ。

ターゲットの設定

ターゲットで右クリック -> 情報を見る でダイアログを開く

構成の項目を「すべての構成」に、表示を「すべての設定」にする。

  • リンク
    • 「ゼロリンク」のチェックを外す
  • 検索パス
    • フレームワーク検索パスの2つ目を以下のように変更する
      • "$(HOME)/Documents/Devel/OgreSDK/Dependencies"

OgreSDKのインストール先を確実に指定するように。

  • ヘッダ検索パスに以下の2つを追加する
    • $(HOME)/Documents/Devel/OgreSDK/Dependencies/Ogre.framework/Headers
    • $(HOME)/Documents/Devel/OgreSDK/Dependencies/include

フレームワークのコピー設定

追加->新規ビルドフェーズ->新規コピーファイル

一般/デスティネーションを「フレームワーク」に変更してダイアログを閉じる

Cg.frameworkとOgre.frameworkをコピーする

以上。

ここまでできていればコンパイルと実行はできるはず。ちなみに画面の定義を何もしていないので出てくる画面は真っ黒。

手を動かしてみるとさほど難しくないことがわかるのだが、この分量は自分で見ても嫌になる。嫌になったのでここまでの作業をテンプレートにした。その作業を次に書こうと思う。

テンプレート自体はOgre3Dから提供されていたりする(Ogre3Dのページから Download -> Toolsの中に Xcode Templates)。こちらは試していないのでわからない。