PVRTC圧縮テクスチャとか

元サイズ512x512のpngイメージは138KB(これはpng圧縮かかってるサイズ)
これをGL(UIImageとかでも多分一緒)でテクスチャロードした場合必要なメモリサイズ(グラフィックメモリ)は以下のようになる


512 x 512 x 4(RGBA8888) = 1024KB = 1MB
512 x 512 x 2(RGBA1555) = 512KB
512 x 512 x PVRTC(4bp) = 132KB
512 x 512 x PVRTC(2bp) = 68KB
(*PVRTCはイメージによって圧縮率変わります)


ただ、写真みたいなイメージならいいが、線画的なイメージだと圧縮時に元絵と結構かけ離れてしまう事があるので注意。


ばりばり3Dなリアル系ゲームなら使えるかもしれないけど。2D絵的なイメージ(ラインのエッジがはっきりしたもの)用途で圧縮テクスチャ使うのは厳しいと言わざるを得ない。(やってみれば一目瞭然)


参考URLなど
http://d.hatena.ne.jp/nakamura001/20081229/1230557939

OpenGL系おすすめサイトとか

OpenGL入門サイト系(GLESと若干API関数名など違うので注意。GL概念の把握に)
http://wiki.livedoor.jp/mikk_ni3_92/
http://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html


OpenGL/ESのリファレンス系
http://g-p-k.no-ip.org/brew/index.php?im_id=GL
http://www.khronos.org/opengles/documentation/opengles1_0/html/index.html


iPhoneでのOpenGLでの参考サイト
http://d.hatena.ne.jp/nakamura001/archive
http://idlysphere.blog66.fc2.com/category2-3.html


あとは、2Dとかならcocos2Dとかのオープンなソース眺めたり、本格的に3DならSIO2SDKとかあります。

:-)

iPhone本のエリカ女史が90日問題は平気って言ってるぽい

エリカ女史サイトの英文
http://arstechnica.com/apple/news/2009/03/app-store-refunds-will-not-bankrupt-developers.ars

以下に、翻訳して下さった方の翻訳文
http://arumumu.posterous.com/app-store-refunds-will-not-ban


また、これで言ってるiTunes Storeでは返金できないっていうサービス規定(公式)
http://www.apple.com/legal/itunes/jp/terms.html


ネット上探す限りは、間違って購入したちゃったようなケースで返金に応じる事があるが、それは例外的なもので、基本は受け付けてないらしい。
http://www.grafain.com/2009/03/17/3694.html
http://d.hatena.ne.jp/sanzunokawa/20071122/1195744541

;-p

関数内のstatic変数の初期化

class SingletonClass {
 private:
     SingletonClass(void) {}
 public:
     static SingletonClass& getInstance(void) {
         static SingletonClass singleton;
         return singleton;
     }
     void doSomething(void);
 };

こういう関数内のstatic変数、↑だとsingletonっていつ初期化入るか把握できてます?
getInstanceが呼ばれた時にsingleton変数が生成&初期化されるってちゃんと把握できてる人ってどの位いるんだろう。

シングルトン書くには便利なパターンだけど、それを知らない人が混じってると初期化のタイミングわからずにはまりそうだよね。

日本語サイトのiPhoneSDKサンプル集

古のNDA関連のせいで見れなかったnpakaさんとこのiPhoneSDKサンプルが公開になってます。
非常にスッキリとまとまっているのでおすすめ
http://www.saturn.dti.ne.jp/~npaka/iphone/index.html
http://www.saturn.dti.ne.jp/~npaka/opengl/index.html


あと、GDCiPhone関連のセッション情報とか
http://www.inside-games.jp/news/343/34376.html
http://www.inside-games.jp/news/343/34362.html

:-)

XIBのロードを切って、アプリ起動を早くしようと思った

http://d.hatena.ne.jp/miurror/20081213/1229101376#c
↑を参考に自前でVIEWを作成し、XIBを使わなくてすむようにしてみた。


ただ上の方法だけだと、XIBファイル自体のロードが切れるわけではないんでエリカ本を参考に
XIBファイル自体を削除&plistの項目(Main nib file base Name)もカットするとXIBを読み込まない作りにできる。


さらにロードしない場合、XIBで設定してたはずのUIApplicationのdelegate先が設定されなくなるので↓のようにmain.mで設定する必要あり。(でないとapplicationDidFinishLaunching呼ばれなくなっちゃう)

UIApplicationMain(argc, argv, nil, nil);
↓
delegateする@interface名を設定
UIApplicationMain(argc, argv, nil, @"myAppDelegate");

[追記]情報頂きました。この場合、window自体も自前で作る必要があるみたい。ビュー追加前にウィンドウ作成する一文追加する必要あり
http://iphone-dev.g.hatena.ne.jp/ktakayama/20090325

window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
みたいな

やってみた結果、起動時間(スプラッシュ表示時間)が4〜5秒 --> 1〜2秒になった。XIB必要としないようなタイトルならやる価値はあるかも。
ウィンドウ作成しなかったから早かっただけみたい・・・。やりようによってはアドバンテージあるのだろうか。



エリカさんのサンプルは↓のc01ってやつ。
(ちなみにこのサンプルcode signエラーでるのでそれの回避方法は→ 他人のプロジェクトをビルドする方法
http://code.google.com/p/cookbooksamples/downloads/list

:-)

Automaterが凄すぎる件

要は、手順を記録したマクロ再生とかバッチ処理みたいなものなんだが、
グラフィカルに、いろんなワークフロー(バッチ処理)を作れてしまうとこがすごい

f:id:mswar:20090324180132j:image

写真をMacBook内蔵カメラで撮る
 ↓
イメージを変換かける
 ↓
イメージを適当なコピー先に移動
 ↓
xcodeでビルド
 ↓
ビルド結果を見て、CVSにUP

みたいなワークフロー処理をほぼ、グラフィカルなコマンドチップをドラッグ&ドロップするだけで作れてしまう。すげーーー。(まぁxcodeに追加するとかが無いんで、この例はインチキだけど)


コマンドチップ(部品)自体はAppleスクリプトで自作して追加もできるみたい


基本的な使い方
http://www.openspc2.org/reibun/Automator/

perlとか、UNIXシェルスクリプトなんかからも呼び出せるみたいでほんと素敵すぎる。
http://d.hatena.ne.jp/makog/20081118/1227028048

関係ないけどシェルからスポットライトの検索結果など取得するコマンドとか
http://plusd.itmedia.co.jp/pcupdate/articles/0507/12/news027_3.html

:-)