合成しました (ADW の展開)2012/02/01 00:00:00

透明度などを考慮して合成してあります

AzDrawing2 のデータ展開 on HSP の続き

AzDrawing の場合、色は必ず単色レイヤなので、豪快にテーブル引を行う事にしました

テーブルサイズは 256×256×3 で 192KiB です

 

きちんと合成されました

が、計算コストを考えると、1タイルが 4,096ピクセルで、0 の時はスキップしているので、実際に計算しなければならないピクセルは “1タイル平均だと 1,500ピクセル程度かなー?” と言う感じがします (統計を取って見りゃいいんですが、面倒なのでパス)

仮に 1,500 ピクセルだとした場合、196,608 回の計算が発生するのは、132タイル以上有る場合になります (4,096ピクセルが全部埋っている場合は 48タイル以上)

 

実際の所、小さい画像の場合はテーブル計算の時間が無駄になっていますが、それなりに描画されている大きな画像ではテーブル計算の方が計算コストが下がりますし、テーブル計算自体は、今時の CPU の計算量からすると大した時間が掛る訳でも無いので、この際無視します

ただ……、計算式を見ると、フルカラーだと一部の計算のみテーブル化し、残りは毎回計算する方が速そうです (多少の色の狂いを無視するのなら、高速化する手法が無い訳でも無いですし……)

 

ゲームなんかで合成する場合は、頻度が多い場合は微細な色の狂いを無視し、頻度が低い場合は真面目に計算するのがいいのでしょうか?

まあ、DirectX を使う場合は、GPU が勝手に計算してくれますけど……