Android の Canvas のパフォーマンスに不満を持っていた人には良いお知らせかもしれません。
アドビの新しいオープンソースのプロジェクトとして FastCanvas が GitHub に公開されました。FastCanvas は Android 向けの PhoneGap アプリ用に開発されたプラグインです。 (phonegap-fast-canvas-plugin)
FastCanvas は HTML5 の Canvas の機能のサブセットを提供し、より高速な描画を実現します。全ての Canvas の機能は提供されませんが、特に GPU 描画の効果が出やすい機能に特化しているとのことですので、パフォーマンスで問題のある人は試してみる価値はありそうです。
(現在提供される機能は、変形と画像の描画関連の API。目標は CanvasRenderingContext2D にできるだけ近づけたい)
FastCanvas のサンプルとして Starling を利用したゲームをポーティングした例が公開されています。 (Hungry Hero)
PhoneGap Build を使えば簡単に試せるはずですので、お時間のある時にでもお試しください。
FastCanvas の制限
と一見なかなか良さげな、FastCanvas は、通常の HTML 要素の上に表示することしかできません。ブラウザが描画する訳ではないので、この点はやむを得ない感じですが、canvas を他の HTML 要素と組み合わせて利用しているアプリではそのまま利用という訳にはいかないようです。
また、FastCanvas は画面全体を占有します。そのため、画面の一部のみで canvas を使用しているアプリもそのままのデザインでは移行できません。
もし canvas の高速な描画を必要とするのは主にゲーム系だとすれば、こちらはそれほど問題ではないかもしれません。実際、CreatJS が FastCanvas に対応すれば、嬉しい人も多そうです。
FastCanvas の特徴
さて、FastCanvas は描画処理のほとんどを専用のスレッドで行います。JavaScript の実行はブラウザのスレッド内となるため、 負荷分散が行いやすいという構造になっています。
あとは、FastCanvas では、基本的な GPU 描画の最適かテクニックがそのまま使えるという利点もあります。 (スプライトシートを使う、テクスチャの数は最低限にする、など)
FastCanvas は、描画に OpenGL ES1.1 を使用しています。未サポートの環境では自動的に HTML 標準の canvas にフォールバックするため、一旦 FastCanvas に対応したアプリは、安心してどの環境でも動作させることができます。この辺りは Flash Player で培った技術が役立っている感じです。
コメントする