-1

OpenGL C++ で 2D ゲームを作成しようとしています。マウスの動きを使って三角形をスクロールしたい。だから私は最初に三角形を描きます。これまでのところ、マウスを動かすと三角形をスクロールさせることに成功しました。

私はこれらの2行を使用しました:

case WM_MOUSEMOVE:
    X += (GLfloat)LOWORD(lParam);

次に、描画関数で次のようにします。

glTranslatef(x,0.0f,0.0f);

というわけで、ここまでマウスの動きに合わせて三角形が動いています。しかし、問題は、マウスを左に移動すると左に移動し、マウスを右に移動すると右に移動することです。

マウスをどのように動かしても、三角形は右に移動し、左には移動しません。マウスを上下に動かしても右にしか動かない。

どうすればこれを解決できますか?

4

1 に答える 1

0

これは、glTranslatef が現在の行列に対して相対的に変換するという事実に関係しています。変換するたびに、現在の状態に追加 (技術的に乗算) されます。

glLoadIdentity=の代わりに使用してそこに追加することをお勧めします。+=通常、各フレームの開始時に glLoadIdentity を呼び出します。マトリックスを初期状態にリセットします。これは、翻訳が期待どおりに機能することを意味します。glLoadIdentity のより良い説明とその背後にある数学については、この質問を参照してください。

于 2013-05-16T11:06:29.583 に答える