もちゅるの日常

特に決まっていないざっくばらんなブログ

D3DXComputeNormalMap がうまく動かない

 会社で DirectX のヘルプを見ていて、D3DXComputeNormalMap なる関数を見つけて
「あら、これで簡単なツール作れるな。」って思い、家に帰って早速試して見たがうまくいかず。
流れとしては、外部ファイルからテクスチャを作成して、そのテクスチャから法線マップを作成、保存しているだけ。


 ヘルプ見ても特に問題ないし、ウェブのサンプル見ても問題ない。
コピペしても動かないし何でか原因不明。


 ファイルから作成したテクスチャだと失敗するけど、作成した空のテクスチャだと成功するみたい。
でも当然書き込まれたファイルは空っぽ。


 しょうがないので一旦空のテクスチャを作成し、 UpdateSurface で空テクスチャにコピーしてから
書き込んだらうまくいった。


なかなか頭の中と現実が一致しないね。

重要メソッド一覧

// 外部ファイルからテクスチャを作成する。Exなしでも大丈夫なはず。
D3DXCreateTextureFromFileEx( ... )
// 空のテクスチャを作成する。
D3DXCreateTexture( ... )
// 外部テクスチャのサーフェイスから空テクスチャのサーフェイスにコピーする役割
UpdateSurface( ... )
// 高さマップを法線マップに書き換える
D3DXComputeNormalMap( ... )
// 外部に保存する
D3DXSaveTextureToFile( ... )