性格悪い人が優勝

ID3DXSprite::Drawメソッドに関して質問です。

ID3DXSprite::Drawメソッドの第3引数でスプライトの
中心を識別する座標を指定できますが、
この座標を画像の様に中心にセットします(単に2で除算するだけですが)。

スプライト上では中心を(0,0)と扱うので、仮にこのスプライトを
左上にあわせて描画するとします。

なお、スプライトのサイズと、ウィンドウのクライアントサイズは
完全に一致しているとします。

単純に中心までの幅はX、中心までの高さはXとなりますので、
スプライトをX、Y分だけ右下にずらせば
問題なく描画されるかと思っていたのですが、
何故か画像内の結果上の様に地味に左上に描画されてしまいます。

そこで画像内の結果下の様にそれぞれにさらに0.5pixlずらして描画しますと
これは想像どおりの位置で描画されます。

インターネットで調べるとテクスチャの描画の際には0.5pixl云々という記述が
あるのですが、この場合でも0.5pixlのずれを意識する必要があるのでしょうか?
それとも私自身、根本的に座標の求め方に問題があるのでしょうか?

どうか、ご指摘お願いします。

「ID3DXSprite::Drawメソッ」の質問画像

A 回答 (1件)

うろ覚えで、もうあまり詳しくもありませんので


参考までに。。。

まず、お使いの環境にもよると思います。
DirectX9時代、古いグラフィックカードなどの
制限でテクセルのアライメントを必要とした場合に
この0.5アラインの問題が発生します。

なので、この症状が起こっている環境を
ずっと使う、或いは上記の環境も視野に
入れたソフトウェアを作るならば、
意識する必要がでてきます。

が、基本的に、現在の主流になっている
カードのほとんどで、これらは対策や
準拠化がなされていますし、DirectX10以降では
この問題を対策する必要はありません。

別段、座標の求め方などに問題が
あるわけでもないと思います(たぶん。。。)

テクセルアライメントについては、
DirectX9なら、たしかドキュメントに記載が
あったはずなので、一読してみる
と良いかもしれません。
    • good
    • 0
この回答へのお礼

"テクセルのアライメント"でググってみると、MDSNにその旨が記載されていました。

…イジメですかね、マイクロソフト。Win32APIといい、ややこしいことが多すぎますね。
まさか、根本的に概念が異なるとは…。
自分的には、ピクセルは基本、Win32APIで整数値のみ指定できたので、UINTあたりでキャストしているものとばっかり思っていました。
実際に、10/1pixlが使用できるんですね。

とてもためになりました。ありがとうございます。

お礼日時:2010/06/13 00:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!