電子書籍の厳選無料作品が豊富!

現在OpenGLでプログラミングをおこなっているのですが、分からないことがあるので教えていただければと思います。
ウィンドウ内に物体を置いて、それをマウスでドラッグ&ドロップのように移動させるプログラムをgltranslateで作ってみたのですが、うまくいきません。
ドラックして移動させるという動作をどの様に実現すればよいのでしょうか?プログラミング初心者なので、わかりやすく教えていただければと思います。
また、参考になるプログラム等あるサイトなどあれば教えてください。宜しくお願いいたします。

A 回答 (2件)

OpenGLのユーティリティの中には、マウスに関してこんな定義があります。


/* Mouse buttons. */
#define GLUT_LEFT_BUTTON0
#define GLUT_MIDDLE_BUTTON1
#define GLUT_RIGHT_BUTTON2

/* Mouse button state. */
#define GLUT_DOWN0
#define GLUT_UP1


なんで、これを適当に追加してやります
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関数の中に

こんなんで動くと思いますが、あなたのソースが無いのでなんとも言えません笑
    • good
    • 0

どのようにうまくいかないのか分からないので、答えになるかどうかわからないですが、


一般的には下記のような流れで書けば良いと思います。

1.マウスダウンのイベントを受け取る
2.マウスダウンフラグを真にする
3.ドラッグのイベント
4.マウスダウンフラグが真なら物体の座標を変更
5.描画処理
6.マウスアップのイベントを受け取るまで、3~5を繰り返し
7.マウスダウンフラグを偽にする
    • good
    • 0

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