- ベストアンサー
【OpenGL ドラッグ&ドロップのやり方教えて下さい】
現在OpenGLでプログラミングをおこなっているのですが、分からないことがあるので教えていただければと思います。 ウィンドウ内に物体を置いて、それをマウスでドラッグ&ドロップのように移動させるプログラムをgltranslateで作ってみたのですが、うまくいきません。 ドラックして移動させるという動作をどの様に実現すればよいのでしょうか?プログラミング初心者なので、わかりやすく教えていただければと思います。 また、参考になるプログラム等あるサイトなどあれば教えてください。宜しくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
OpenGLのユーティリティの中には、マウスに関してこんな定義があります。 /* Mouse buttons. */ #define GLUT_LEFT_BUTTON 0 #define GLUT_MIDDLE_BUTTON 1 #define GLUT_RIGHT_BUTTON 2 /* Mouse button state. */ #define GLUT_DOWN 0 #define GLUT_UP 1 なんで、これを適当に追加してやります glTranslatef(shiftX,shiftY,0);//void displayとかの中に 次、mouse関数を定義 void mouse(int btn, int state, int x, int y){ if(state == GLUT_DOWN){ mouseX = x; mouseY = y; } else if(btn==GLUT_MIDDLE_BUTTON){ shiftX += 0.01f*(x - mouseX); shiftY -= 0.01f*(y - mouseY); display(); } } glutMouseFunc(mouse); //main関数の中に こんなんで動くと思いますが、あなたのソースが無いのでなんとも言えません笑
その他の回答 (1)
- tettsu
- ベストアンサー率30% (4/13)
どのようにうまくいかないのか分からないので、答えになるかどうかわからないですが、 一般的には下記のような流れで書けば良いと思います。 1.マウスダウンのイベントを受け取る 2.マウスダウンフラグを真にする 3.ドラッグのイベント 4.マウスダウンフラグが真なら物体の座標を変更 5.描画処理 6.マウスアップのイベントを受け取るまで、3~5を繰り返し 7.マウスダウンフラグを偽にする