Re: 座標が小数の画像を滑らかに表示したい ( No.1 ) |
- 名前:憂煉 日時:2008/04/06 22:47
ソースコードを覗いてみたら浮動点少数を整数に変換して表示していました。
確かDirectXの描画ではfloatやdoubleを座標に使うことが多かったはずなのですが、わざわざ整数にしているのには何か訳がありそうです。
それと、見ていて気づいたのですが整数型で引数を受け取るDrawRotaGraphが内部的にDrawRotaGraphFを呼んでいて、さらにその中でキャストされているのが気になります。
整数→浮動少数→整数のキャストが行われています。
あと、ST_DrawXX系の関数は引数が多い関数が多いのでinline指定した方がいいと思います。
おそらくコンパイラが勝手に最適化するとは思いますが。
|
Re: 座標が小数の画像を滑らかに表示したい ( No.2 ) |
- 名前:管理人 日時:2008/04/13 01:23
> しんしゃさん
SetDrawMode( DX_DRAWMODE_BILINEAR );
でバイリニアモードに変更した後、DrawGraphF で小数点以下の座標を
渡すようにすれば綺麗に描画されます。
サンプルをアップしましたので宜しければご覧下さい。
http://homepage2.nifty.com/natupaji/temp/TamaTest.zip
因みに、サンプルで使用している画像のようにαチャンネルで縁取り
をしている画像の方が滑らかになります。
> 憂煉さん
確かに DirectDraw 用の描画コードでは速度のために整数に戻していますが、
多くの環境で使用される Direct3D 用の描画コードでは整数に変換した値は
描画領域判定にのみ使用していますので、DrawGraphF等の末尾Fの関数と
バイリニア描画で滑らかな描画は実現できるようになっています。
inline については了解しました。
|
Re: 座標が小数の画像を滑らかに表示したい ( No.3 ) |
- 名前:しんしゃ 日時:2008/04/13 15:20
すみません。
サンプルと比べてソースを見直してみたら、計算するときに
型変換がうまくできてなくて切り捨てた値を入れていたみたいです。
皆さん回答ありがとうございました。
|