+にゃんにゃんにゃんこの演習+ 2013年03月

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

DXライブラリではどの画像形式を利用するべきか?(不完全版)

DXライブラリでゲームを作る際、画像形式を迷ってる人向けの記事……のはずでした。
なぜ不完全なのかは記事下部にて。






アバウトですが、PNG、DDS、TGA、BMPのファイルサイズと読み込み速度を比較してみました。

チョイスの基準としては、画像の劣化がなく、かつ透明度を扱える形式。
ARGBがないのは手元に画像をARGBで保存できるエディタがなかったからです。
PNGとTGAは圧縮形式、DDSとBMPは無圧縮形式。 BMPは8ビット形式のアルファ抜き用画像とのセット。
DXライブラリは圧縮DDSに対応してないのです(読み込むと画像が化けます


画像の内容は↓の画像を2048x2048に拡大したものです


そこそこ圧縮されてそこそこ内容の詰まった画像にしただけで、内容にあまり意味はないです


とりあえずの実測結果
VC++2008にて、2048x2048サイズの各画像を8枚読み込むのに掛かった時間を計測するプログラムを書き、
WindowsXP、Pentium4 2,8GHzの環境にて計測。

画像形式一枚あたりのファイルサイズ読み込み最速値読み込み最遅値
圧縮PNG4.14 MB6,172 ms6,548 ms
無圧縮DDS16.0 MB1,497 ms1,627 ms
圧縮TGA12.1 MB1,941 ms2,057 ms
BMP+α16.0 MB(12.0MB+4.0MB)1,743 ms1,863 ms


とりあえずわかることは、PNGは読み込みが遅いということです。
展開処理に大分処理時間を持っていかれてる様子。

そして一番読み込みが高速なのがDDS。


実は、この記事は本来「DXライブラリならPNG使わずにDDS使えよ!!」という内容になるはずだったのですが、この記事を書いている途中にDXライブラリ付属のアーカイバに「10MB以上のファイルは圧縮せずに格納する」という仕様があることが発覚。
アーカイバにて圧縮後のファイルサイズを併記し、どうせ圧縮されるんだからDDSにしようぜ!と主張しようと思ったのに、2048x2048の巨大なDDS画像じゃ16MBで圧縮されないのです。いやぁまいった。

一般的にゲーム制作で用いられる範囲のテクスチャサイズである1024x1024で計測し直そうとも思ったのですが、ファイルを用意するのが非常にめんどくさいので……


というわけでこの記事は不完全版。
適当なデータだけが残ったので、一応役に立つかなと書き残しておきます。
気が向いたら新しく計測して書き直すかも。直さないかも。
スポンサーサイト
+サークルのサイト+
森の中の猫の小屋 author:稲塚 春
+twitter+
+エントリサーチ+
+カテゴリ別エントリ+
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。