サイトトップ

Director Flash 書籍 業務内容 プロフィール

Adobe Flash非公式テクニカルノート

Starlingフレームワークの最適化 − 状態の変更をできるだけ少なく

ID: FN1206002 Product: Flash CS6 and above Platform: All Version: 11 and above/ActionScript 3.0

Starling Wiki「Performance Optimization」にコンテンツを最適化するコツが紹介されています。本稿はその中から「Minimize State Changes」(状態の変更を最小限にする)の内容をご説明します。


01 StarlingフレームワークのGPU描画
Starlingフレームワークは、Stage3Dを通してGPUによりオブジェクトを描画します。そして、GPUは大量のデータを一気に描く力に優れています。

Starlingフレームワークでステージに表示するオブジェクト(DisplayObject)として、もっともよく使われるのがQuadオブジェクトです(テクスチャを表示するためにやはりよく用いられるImageオブジェクトもQuadクラスを継承します)。Starlingは多くのQuadオブジェクトを、できるだけまとめてGPUに送ろうとします。ところが、プロパティの似通ったQuadオブジェクトしか、まとめられません。異なる「状態」(state)のQuadオブジェクトがあると、「状態の変更」(state change)が起こり、それまでにまとめたQuadオブジェクトが描画されてしまいます。

状態を決めるおもなプロパティはつぎのとおりです。状態はできるだけ変えないようにした方が、描画は最適化できます。


02 Quadオブジェクトの着色
初期のiPadなどモバイルデバイスでは、テクスチャに「着色」すると描画が滑らかでなくなります。着色とはつぎのような設定です。

Starlingフレームワークは、着色されていないイメージの描画を最適化しています。そのため、オブジェクトに着色するかしないかで、状態の変更が起こってしまいます。着色のプロパティQuad.alphaQuad.colorを使うときには、この点に留意すべきでしょう。

着色のあるなしが頻繁に変わると、そのたびに状態の変更が生じ、描画が必要以上に重くなります。そうせざるを得ない場合には、おおもとの親オブジェクトに1未満(たとえば0.999)のアルファを設定する手があります。アルファは子インスタンスにも適用されますので、Starlingは着色による状態の変更がないものとして扱います。

03 Starling.showStatsプロパティでフレーム当たりの描画数を確かめる
Starling.showStatsプロパティtrueにすると、コンテンツの動作情報が示されます。2012年7月18日に動作情報としてフレーム当たりの描画回数が加わりました。状態の変更が多ければ、描画回数も増えます。描画回数をできるだけ少なくすることが最適化につながります。


作成者: 野中文雄
更新日 2012年7月31日 03「Starling.showStatsプロパティでフレーム当たりの描画数を確かめる」を追加
作成日: 2012年6月7日


Copyright © 2001-2012 Fumio Nonaka.  All rights reserved.