D3DXComputeNormalMap がうまく動かない
会社で DirectX のヘルプを見ていて、D3DXComputeNormalMap なる関数を見つけて
「あら、これで簡単なツール作れるな。」って思い、家に帰って早速試して見たがうまくいかず。
流れとしては、外部ファイルからテクスチャを作成して、そのテクスチャから法線マップを作成、保存しているだけ。
ヘルプ見ても特に問題ないし、ウェブのサンプル見ても問題ない。
コピペしても動かないし何でか原因不明。
ファイルから作成したテクスチャだと失敗するけど、作成した空のテクスチャだと成功するみたい。
でも当然書き込まれたファイルは空っぽ。
しょうがないので一旦空のテクスチャを作成し、 UpdateSurface で空テクスチャにコピーしてから
書き込んだらうまくいった。
なかなか頭の中と現実が一致しないね。
重要メソッド一覧
// 外部ファイルからテクスチャを作成する。Exなしでも大丈夫なはず。 D3DXCreateTextureFromFileEx( ... ) // 空のテクスチャを作成する。 D3DXCreateTexture( ... ) // 外部テクスチャのサーフェイスから空テクスチャのサーフェイスにコピーする役割 UpdateSurface( ... ) // 高さマップを法線マップに書き換える D3DXComputeNormalMap( ... ) // 外部に保存する D3DXSaveTextureToFile( ... )