iPhone 開発での Sandy Bridge(HD3000)トラブル

MacBookPro13(SnowLeopard) を使って iPhone の開発を行っていたところ、 iOS SDK 4.1 で OpenGL ES Application のテンプレートからプロジェクトを作成して、そのままビルド&実行すると、iOS simulator 上で作成したアプリケーションが起動直後に終了してしまいました。Lion にしても症状変わらず。

 

http://www.iphonedevsdk.com/forum/iphone-sdk-game-development/75003-opengl-calls-causes-simulator-crash-sandy-bridge-mcbook.html

 

なるほど、xxxViewController.m の glDrawArrays() に問題があると。

確かに glDrawArrays() をコメントアウトすると異常終了しなくなります。

 

試しに他の描画関数を使ってみたところ

 

× glDrawArrays()

× glDrawElements()

× glBegin()~glEnd() ← ES では未実装

 

でした。やっぱり。

 

結局、App Store から Xcode4 をダウンロード+インストールしたら iOS SDK が 4.3 になり、正常動作するようになりました。

 

基本 Windows+VisualStudio なので、Mac にはなかなか慣れないです(´・ω・`)

ビルドの高速化

VisualStudio でのビルドの高速化をいくつか。

 

1. コンパイルの並列化

 

コンパイルオプションに /MP8(もしくは /MP4) を付ける。

ベンチマーク的には CPU コア数の2倍を設定すると一番速いかな。

 

2.RAMディスクを使ったビルド

 

(1) RAM ディスクを作る(Dataram RAMDisk 等)

(2) 環境変数 RAMTEMP を設定する( 例)RAMTEMP=r:\temp)

(3) VisualStudio で以下の設定を行う

 

中間フォルダを↓に変更

$(RAMTEMP)\$(SolutionName)\$(ProjectName)\$(Configuration)\

 

デバックコマンドとリンカーの出力ファイルを↓に変更

$(SolutionDir)$(Configuration)\$(TargetName)$(TargetExt)

 

これでビルド作業のほとんどが RAM ディスク行えます。

 

3. ipch フォルダと .sdf ファイルの保存先を RAM ディスクにする

[ツール]→[オプション]の中の[テキストエディター]→[C/C++]→[詳細]

 

常にフォールバック位置を使用 → True

フォールバック位置 → 出力フォルダ(RAM ディスク上のフォルダ)