テクスチャフォーマット

透過されないのでもしかしたらと思ってテクスチャ画像ロード時にD3DFMT_A8R8G8B8*1への変換を指定してみたら見事に透過されました(ディスプレイのフォーマットをわざわざ取得して渡してた)。
多分テクスチャフォーマットはディスプレイに合わせる・画像ファイルの形式のまま・どれかで決め打ちの三択になるような気がするんだけど、例えば私のPCの場合(多分他もほぼそうだと思うけど)ディスプレイのフォーマットはD3DFMT_X8R8G8B8*2でアルファがないんですよね。まあディスプレイなんで当然なんだけど。あるフォーマットにアルファを付け加える関数とかないですよねー。2Dゲームでのメインの処理が画像の描画である以上なんかこういうの合わせておきたくなるんだが…。ピクセルのブリットじゃなくて3Dポリゴンへのテクスチャ貼り付けだからそんなに変わらなかったりする?(いや自分で調べろって話か…)
一応今のところはD3DFMT_A8R8G8B8のDDSファイルが一番じゃね?って感じ。



追記
256x256の透過付きうにょうにょを1000回描いてみましたが、D3DFMT_A8R8G8B8でもD3DFMT_UNKNOWN(pngファイルのまま、D3DFMT_P8になる)でもほとんど変わりませんでした。弾幕とかあるしとか思って最初10000回描いたら重くて死にました。


追記
またCOMポインタを(shared_ptrで間接的に)deleteしてぶっ壊れました。デバッガの呼び出し履歴も壊れるし、デストラクタだろうという見当はつくもののメンバ変数を凝視しながらひらめかないと解決できず、非常に良くないバグだと思います。ほんとなんとかならんのか。

*1:1ピクセルがアルファ、赤、緑、青、の順で8bitずつ、32bitですね

*2:Xは未使用、バツって見てもいいかもしれない