> ヘッダの構造覗いて0x93での32bitRGBA形式であることなどは判明したのですが、この場合unSwizzleせずにヘッダ部分全体をDXT1のものに置き換えることでDDSファイルとして読み込むことが出来る…ということでしょうか?
32bit RGBAは1ピクセルが32bit(4byte)で構成されています。
R、G、B、Aそれぞれの要素が1byteで256段階の階調を持ちます。
SwizzleされているかはヘッダのTIDの次にくる4byte目の値で判別できます。(前回の書き込みを参照)
DXTは1ピクセルを32bitでは持っていません。
DXT1〜DXT5までありますがそれぞれデータの持ち方が異なります。
因みにDXTは15bitでRGBを持ち2x2ピクセルの色の差でデータを圧縮しています。Aを何bitで持つかで1〜5が変わってきます。
> と勉強しながらやってみたのですが、どのように変換しても色の潰れたDDSファイルになってしまいます。
> この機会にデータの勉強をしたいのですが、
こういうことを勉強というのはどうかと思いますが、もし勉強というスタンスであればもっと悩み、知識を増やし勉強するべきです。
0から始めたのなら1日でわかるものではないと思います。
今はネットで検索すればいろいろ資料が出てきます。
DDSファイルはどういうものなのか?何故、私がBMPやPNGではなくDDSを選択したのか。
DXT1とはどういったアルゴリズムで圧縮し展開するのか。
これらの謎を解くにも沢山の知識を得なければなりません。
何も知らずにダンプエディタで数値を見てもわけがわからないと思います。
もし、いろいろなデータ構造を知っていると数値の並びを眺めただけで、これは何のデータか。どのような圧縮状態なのかなど予測や識別できるようになります。
映画マトリックスで特訓中のネオに暗号化された画面を見せ「これは赤いドレスの女だ」というシーンがあります。
まさにあの状態です。数値の配列を見てどんなデータかわかるようになってきます。その為には普段からいろいろなファイルをダンプエディタで眺め、データ配列をしていると記憶しておく必要があります。
こういうこと積み重ねることで今後、自力でデータ解析をし展開ツールを作成することが可能となるでしょう。
「勉強したいから教えて」
私は貴方の先生ではありませんw
「勉強したけど、この部分がわからない」
であればご協力します。