最新の記事
カテゴリ
その他のジャンル
ファン
記事ランキング
ブログジャンル
画像一覧
|
iPhoneはPowerVR MBX lite という低消費電力のモバイルデバイス向けGPUを搭載しているらしい。
カタログによると特徴は ・タイルベースの差分レンダリング ・バーテックス・ジオメトリ・プロセッサ搭載 ・OpenGLやDirectXなどの標準的なAPIやOSをサポート ・内部true color ・圧縮テクスチャー ・フルシーンアンチエイリアシング ”タイルベースの差分レンダリングは、隠面処理やピクセルブレンディング、そして差分レンダリングを可能にし、オフチップのメモリへのアクセスを低減。 ジオメトリと頂点処理をラスタライザーから分離する事により、システムのレイテンシの耐性を最大化しつつ高いスループットを実現。高度なタイリングとカリングアルゴリズムがハードウェアに実装された……” 云々。 だそうで、なんか凄い速そうなんですがね。。。 こいつを弄ってみて経験的に判かった気がする事。 ・ステートを無駄に変更しない。ラッパーをかまして前回の設定値と同じならステートを送らないとかいう工夫。とか。 ・アルファ・テスティングは使わない(GL_ALPHA_TEST)。 ・とにかく、アルファ・ブレンディング(GL_BLEND)は極力避ける。 これやると処理速度があり得ないくらいガタ落ち。 さらに、ブレンディングを使用しないことにより、デプス・バッファを使って視点に近い物体から描画することにより、隠面ピクセルの描画が避けられ、ラスタライザーの負荷を下げることができる。DirectXのマニュアルの請け売りですが。 ・ジオメトリを極力纏めて送る。glDrawElementとかの話。 何が困るって、実はフォントの描画が一番困る。アルファブレンドで抜くしかないフォント描画は重い。たかだか数十文字の描画でもFPSに変化がでる。だからってバックグラウンド色固定ってのも不便極まりない。半透明で影なんか付けちゃっていたりするので、ヤバいくらい重い。 容量的に可能であれば、テクストを一枚のスプライトとして出すのが正解かも。 もう一つ。このカタログの回路概略図に texture cacheなるブロックがあるのが気になる。このブロックはメモリーアービターを介してシステムメモリにつながっている。メモリーアービターを介してシステムメモリからRead/Writeするのは、テクスチャーだけでなく、システムメモリ側のFrameBuffer(Write), Z-Buffer(Read/Write), Display List(頂点、UV, color等バッファ)もある。この現実を考えると、このメモリ調停が大変な事になっているだろう事は容易に想像できる。 テクスチャーをこのtexture cacheに収まるだけの大きさにしておけば、システムメモリのバンド幅が緩和され、かなりの高速化になるのではないかと思われる。せめてこのテクスチャキャッシュの容量が分かればありがたいのだが。努力目標として。 そんな理由から圧縮テクスチャーを本来は使うべきだった(のだろう)。 今日マスターアップなのでもし次回があったらそうしよう。 残念ながらiPhoneは雲行きが怪しいということで、会社的にはこれにて終了となりました。来週からPSPです。 しかし、趣味でiPhoneのプログラミングは続けていくでしょう。きっと。 なんでもいいけど、App Storeもうちょっと工夫してください。あれじゃ一生懸命作っても埋もれておしまい。
by ngc1208
| 2009-02-14 05:22
| Programming
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ファン申請 |
||