トップページ > Stage > レンダリング品質を指定する



概要

レンダリング品質を指定してみましょう。

例えば曲線が描かれたオブジェクトがあるとします。
そのオブジェクトを拡大縮小させると輪郭部分にギザギザが出来ます。その事をジャギーといいます。
そのジャギー対策のため、アンチエイリアシングという処理を行うとギザギザが目立たなくなります。

レンダリング品質はそのアンチエイリアシングの処理に影響を与えます。


円が描かれているBitmapを拡大させるとこういう風になります。
明らかにギザギザ部分が出ていますね。

レンダリング品質に"LOW"を指定するとこのようになり、アンチエイリアシングは一切行われません。


レンダリング品質に"MEDIUM"を指定しています。


レンダリング品質に"HIGH"を指定しています。


レンダリング品質に"BEST"を指定しています。


という風にレンダリング品質を高くすれば表示が綺麗になります。
しかし、品質を高くすればするほど負担がかかるので注意してください。
このあたりはCPU使用率を見ながら自分で調整するしかないですね。


Graphicsで描いたベクターの曲線も拡大縮小すれば、ギザギザの部分が出てきます。

"LOW"を指定したものです。


"HIGH"を指定したものです。

ビットマップほど顕著ではありませんが違いが分かると思います。


さて、実際にレンダリング品質を指定するコードを書いてみましょう。

stage.quality = StageQuality.BEST;
// stage.quality = "best";
 
qualityプロパティにStageQuality.BESTを代入しています。
文字列の"best"で指定しても構いません。


  • StageQuality.LOW / "low"
    • アンチエイリアシング処理は行われません。
  • StageQuality.MEDIUM / "medium"
    • 2x2ピクセルグリッドを使用してアンチエイリアス処理を行います。
  • StageQuality.HIGH / "high"
    • 4x4ピクセルグリッドを使用してアンチエイリアス処理を行います。デフォルトはこのHIGHが設定されます。
  • StageQuality.BEST / "best"
    • 4x4ピクセルグリッドを使用してアンチエイリアス処理を行います。どんなビットマップにもアンチエイリアス処理を適用します。

上に行くほど品質は悪くなりますが、処理の負担が軽くなります。


検証用コード

package
{
	import flash.display.Sprite;
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.StageQuality;
 
	public class Main extends Sprite
	{
		public function Main()
		{
			stage.quality = StageQuality.BEST;
 
			var circle:Sprite = new Sprite();
			circle.graphics.beginFill(0x0);
			circle.graphics.drawCircle(0, 0, 15);
			circle.graphics.endFill();
			circle.scaleX = circle.scaleY = 10;
 
			var bd:BitmapData = new BitmapData(circle.width, circle.height, false);
			bd.draw(circle);
			var bitmap:Bitmap = new Bitmap(bd);
			bitmap.scaleX = bitmap.scaleY = 10;
			addChild(bitmap);
		}
	}
}
 

|新しいページ|検索|ページ一覧|RSS|@ウィキご利用ガイド | 管理者にお問合せ
|ログイン|