DirectX9のID3DXSprite::Draw()メソッドで、回転角をfloat型のラジアンで渡すのです
が、例えば45度回転させる場合は、ラジアンで渡すので
Rotate = 45 / 180 * M_PI
となると思うのですが、どの回転角度(45、90、135、180)で試しても、
どれも同じに描画されてしまいます。
角度の求め方が間違っているのと思うのですが、原因がわからず困っています。
45 / 180
の部分が整数同士の除算なので0になっていると思う。
eeさんの意見に同じですけれど、
これってビルド時に警告が出ませんでしったけ?
開発環境が良く分からないから何とも言いかねますけれど。
警告が出たときは警告の内容をきちんと把握した上で
対処を決めないと駄目ですよ。
もし、コンパイルオプションで警告レベルを下げているのであれば、
止めた方が良いです。
警告を無くすようにコーディングした方がバグも潰せますから。
ちなみに警告ってwarningの事です。
# 定数0で除算しているわけではなく、整数演算で割り算した結果が0になるだけなので、
# C++としては意図通りの挙動ですし、lint系のツールでもでもかけない限り静的な警告はでないで
しょう。
# 少なくともVC7.1ではLevel4でも警告は出ませんでした。(これが0除算ならerror C2124ですが)
# 警告が出る前提でのお小言はどうでしょうか。
すいません、確認までしてから書き込むべきでした。
0除算ではなくて型変換の警告が出るかと思ったんですが、
出ませんね。
良く考えたら逆の場合は出るんでしょうけれど、
longからfloatならでないですね。
floatからlongなら出るだろうけれど。
失礼しました。
みなさんが仰られている通りにどうやら整数で割っていた為に正確な値が取れていなか
ったようです。
DirectDrawの時はこの記述で動いていたのですが、たまたま上手く動作していただけみ
たいですね。
今度からきちんと正確な値を代入してみます。
回答してくださりありがとうございました。助かりました。
#蛇足ですが、提示の45や180は(Lもないので)longではなくintで、int→float。