aoUpdaterバグ見つかりました

「ボタンに実行ファイルを登録してもファイルが実行できない」と報告がありました。

特定のフォルダで aoUpdater を使用した場合に発生する不具合で、既に対処も終わり、現在テスト中です。

ver.2.00 では発生しない問題のため、現在 ver.2.00 のみダウンロード出来るようになってます。

aoUpdater を更新しました

久しぶりの更新です。

アップデートできるときの通知が地味と言うことで、ダイアログ通知、タスクトレイ通知、ツールチップ表示の3種類の方法を用意しました。

3種類の通知

3種類の通知

ver.2.00 を使用している場合、update.dll のセルフアップデートで ver.2.10 にできます(セルフアップデートのやり方はマニュアルを参照して下さい)。

 

aoUpdater

http://aodamatei.sakura.ne.jp/aoupdater/

 

OpenGL でマルチサンプリング

OpenGL でマルチサンプリングを使うのにちょっとハマったので備忘録として残して置こうかと。

以下、マルチサンプリングを使う場合の初期化です。

 

1. ウィンドウの作成(ダミーです)

2. OpenGL コンテキスト作成

3. 拡張機能の初期化(glewInit)

4. wglChoosePixelFormatARB() でピクセルフォーマットNo. を取得

5. OpenGL コンテキストの破棄

6. ウィンドウの削除

7. ウィンドウ作成(本番用)

8. 取得したピクセルフォーマットNo. で DescribePixelFormat() と SetPixelFormat() を実行

9. OpenGL コンテキスト作成

10. 拡張機能の初期化(glewInit)

…以下、初期化やらなにやらを。

 

注意することは wglChoosePixelFormatARB() ピクセルフォーマットNo. を取得後、OpenGL コンテキストやデバイスコンテキストだけでなく、ウィンドウ自体も一度削除しないといけないことです。手元の環境ではウィンドウを削除しない場合、 8. の SetPixelFormat() が必ず失敗しました。

 

あと、マルチサンプリングの初期化に成功したら

glEnable( GL_MULTISAMPLE );

glEnable( GL_SAMPLE_ALPHA_TO_COVERAGE );

でマルチサンプリングを有効にしてください。

また、マルチサンプリングの状態を確認するといいと思います。

glGetIntegerv( GL_SAMPLE_BUFFERS, &buffers );

glGetIntegerv( GL_SAMPLES, &samples );

 

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 ディスク上のフォルダ)

 

aoUpdater 更新しました

アップデータでファイルを更新できなかった場合でも、バージョンが最新になってしまうバグを修正しました。

また、ファイルが最新状態でも強制的にアップデートできるようにしました。

現在、1.xx 系と UAC 対応の ver.2.xx 系の2つを並行開発している状態です。1.xx 系は主にバグフィックスのみとし、新機能の盛り込みは 2.xx 系に反映していく予定です。

【注意】

1.00 ~ 1.02 → 1.03 は update.dll を更新することでオンラインアップデートできますが(マニュアル P12 を参考にしてください)、1.xx 系 → 2.xx 系はオンラインでのアップデートは出来ません。