1

重複の可能性:
Glutマウスの座標

600x600のウィンドウがあるとしましょう。
マウスイベントを受信すると、マウスの実際の位置がわかりません。OpenGLでは、これを使用してポイントを描画します。

(-0.5,0.5) | (0.5,0.5)
           |
 --------(0,0)-------
           |
           |
(-0.5,-0.5) | (0.5,-0.5)

しかし、ウィンドウのサイズに応じてGLUTマウスイベントを受信すると、異なる座標を取得します。相対(ウィンドウに対する)座標系が必要です。これを取得するにはどうすればよいですか?

4

2 に答える 2

4

glutはウィンドウスペースでマウス座標を提供すると確信しています(つまり、ウィンドウが800x600で、マウスの位置が中央にある場合は、x:400、y:300になります)。上に投稿したopenglスペースでは、次のようにします。

float x = (400 / 800) - 0.5f; //0.0
float y = (300 / 600) - 0.5f; //0.0

したがって、一般的なバージョンは次のようになります。

float mouseX = (theGlutMouseXCoordinate / theGlutWindowWidth) - 0.5f;
float mouseY = (theGlutMouseYCoordinate / theGlutWindowHeight) - 0.5f;
于 2012-10-12T22:36:54.833 に答える
1

たぶん私はあなたの質問を読み間違えているか、答えを単純化しすぎていますが、あなたはただ次のようなものを探しているのではありません:

float x = mouse.x / screen.width;  //x now in [0,1]
float y = mouse.y / screen.height; //y now in [0,1]
x-=0.5f;
y-=0.5f;

または逆に:

float wx = (x + 0.5f) * screen.width;
float wy = (Y + 0.5f) * screen.height;
于 2012-10-12T22:36:29.630 に答える