現在の画面解像度での離散ピクセル座標の範囲だけでなく、マウスからより高精度の値を読み取ることが役立つ場合があるように思われます。明らかに、GUIではこれは必要ありませんが、一部のゲームでは、画面解像度と関連付けることすら意味がない場合があります。
生のアナログ値ではなく、ピクセル座標として読み取る必要があるのはなぜですか?
現在の画面解像度での離散ピクセル座標の範囲だけでなく、マウスからより高精度の値を読み取ることが役立つ場合があるように思われます。明らかに、GUIではこれは必要ありませんが、一部のゲームでは、画面解像度と関連付けることすら意味がない場合があります。
生のアナログ値ではなく、ピクセル座標として読み取る必要があるのはなぜですか?
少なくともWindowsでは、高解像度のレポートをサポートするデバイスの場合、マウスの位置を画面の座標に変換するのではなく、0から0xffffまでの高解像度の座標を取得できます。
高解像度のポイントを取得します。ポイントは、x座標とy座標の両方で0から65,535(0xFFFF)の範囲になります。これは、描画タブレットなどの絶対座標ポインティングデバイスによって提供される解像度です。
http://msdn.microsoft.com/en-us/library/windows/desktop/ms646259(v=vs.85).aspx
ここでの1つの答えに従って、Macでサブピクセル解像度を達成するために非標準のスケーリングを使用できます。
OSXでの高解像度と高フレームレートのマウス座標?(または他の解決策?)
その質問に対するどちらの回答も受け入れられませんでしたが、さらに調査する価値があるかもしれません。
WindowsはWM_INPUT
、WM_MOUSEMOVE
DirectInputとXInputだけでなく、とを使用します。
デフォルトでWM_MOUSEMOVE
は、完全に整数ベースのメインWindows GUIのみをサポートしますが、とを同時に実装する場合はWM_INPUT
、WM_MOUSEMOVE
サブピクセル精度でマウスカーソルを移動できます。
一人称シューティングゲーム、Webブラウザ(ズームされたページとスクロールバー)、画像編集プログラム(GIMP、Adobe Photoshop / Illustrator、Paint.NETなど)など、一部のプログラムは明らかにこれを最大限に活用します。 )。
さらに、マウスの送信WM_INPUT
と送信を同時に行いWM_MOUSEMOVE
、Windowsシェルでネイティブにサポートすることで、一般的にマウスの動きがスムーズになります。これを最大限に活用するには、Windowsでのマウスカーソルの動作方法を変更して、SignedDistanceFieldsやScalableVectorGraphicsを使用してカーソルのエッジを決定し、ClearTypeフォントレンダリングのバリアントを実装できるようにする必要があります(これにより、適切なモーションブラー、ライティングなど、他の視覚効果も可能になる場合があります。
編集:事実のほぼ2年後、誰かが私の誕生日に私の投稿のフォーマットを更新したことを知りました。素晴らしい、ありがとう。
これは、使用する言語と環境によって異なります。
たとえば、PharoまたはSqueaksmalltalkで実行されているMorphicGUIは、座標としてフロートを使用します
これは、ここで受け入れられた回答にリストされています。
Morphicは元々自己で実装されていました
マウスはアナログまたは浮動小数点の値を提供しないためです。それはすでに翻訳です。
[編集]-1についてコメントしたい人はいますか?