Adobe Flash非公式テクニカルノート Starlingフレームワークの最適化 − 状態の変更をできるだけ少なく
Starling Wiki「Performance Optimization」にコンテンツを最適化するコツが紹介されています。本稿はその中から「Minimize State Changes」(状態の変更を最小限にする)の内容をご説明します。 01 StarlingフレームワークのGPU描画 Starlingフレームワークでステージに表示するオブジェクト(DisplayObject)として、もっともよく使われるのがQuadオブジェクトです(テクスチャを表示するためにやはりよく用いられるImageオブジェクトもQuadクラスを継承します)。Starlingは多くのQuadオブジェクトを、できるだけまとめてGPUに送ろうとします。ところが、プロパティの似通ったQuadオブジェクトしか、まとめられません。異なる「状態」(state)のQuadオブジェクトがあると、「状態の変更」(state change)が起こり、それまでにまとめたQuadオブジェクトが描画されてしまいます。 状態を決めるおもなプロパティはつぎのとおりです。状態はできるだけ変えないようにした方が、描画は最適化できます。
02 Quadオブジェクトの着色
Starlingフレームワークは、着色されていないイメージの描画を最適化しています。そのため、オブジェクトに着色するかしないかで、状態の変更が起こってしまいます。着色のプロパティQuad.alphaやQuad.colorを使うときには、この点に留意すべきでしょう。 着色のあるなしが頻繁に変わると、そのたびに状態の変更が生じ、描画が必要以上に重くなります。そうせざるを得ない場合には、おおもとの親オブジェクトに1未満(たとえば0.999)のアルファを設定する手があります。アルファは子インスタンスにも適用されますので、Starlingは着色による状態の変更がないものとして扱います。 03 Starling.showStatsプロパティでフレーム当たりの描画数を確かめる 作成者: 野中文雄 Copyright © 2001-2012 Fumio Nonaka. All rights reserved. |
|||||