« スプライトアニメツールを急ぐ | メイン | テンプレートと多重定義された関数のポインタ »

2007年12月31日

アニメーションライブラリ:: テンプレートでバイナリ増大中

    

2日で実行ファイルが 1MB も大きくなった。
ソースコードはあまり増えていない。
テンプレートによって肥大した。
どのような処理かというと画像のコピー部分。
演算として、通常(アルファ)、覆い焼き(リニア)、焼き込み(リニア)、乗算、スクリーン、オーバーレイ、ハードライト、ソフトライト、覆い焼きカラー、焼き込みカラー、比較(明)、比較(暗)、差の絶対値、除外の14種類をサポートしていて、これらが関数オブジェクトになっている。
で、矩形コピーは、回転の有無、拡大縮小の有無、透過の有無で分かれている。
さらに、回転と拡大縮小の時には、近傍点とバイリニアで分かれている。
他に、不透明として扱うのと、マスク(アルファだけコピー)、置換マップがあって、上記のものほどではないが分かれている。

それでこれらがテンプレートとして書かれているということで、分岐されている分大量にコードが生成されて、実行ファイルが大きくなることに。
そして、末端の処理となる演算用の関数オブジェクトの MMX 版と SSE2 版を作ろうとしているのだが、これをやるとさらに3倍になることが予想される。
つまり、画像コピー部分だけで 3MB。
でかい。
現状、すべて C++ Builder で作っているが、イントリンシックの MMX を使うために、画像コピー処理部分は DLL にして VC に持っていこうと考えている。
なので、VC の最適化で少しサイズが縮んでくれないかなぁと少し期待。
でかいことには変わりないんだろうけど。

まあ、最近はネットワークも速いし、数 MB 程度なら気にならないかな。
と自分を納得させ中。



投稿者 Takenori : 2007年12月31日 01:50




comments powered by Disqus
Total : Today : Yesterday : なかのひと