
現在OpenGLでプログラミングをおこなっているのですが、分からないことがあるので教えていただければと思います。
ウィンドウ内に物体を置いて、それをマウスでドラッグ&ドロップのように移動させるプログラムをgltranslateで作ってみたのですが、うまくいきません。
ドラックして移動させるという動作をどの様に実現すればよいのでしょうか?プログラミング初心者なので、わかりやすく教えていただければと思います。
また、参考になるプログラム等あるサイトなどあれば教えてください。宜しくお願いいたします。
No.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関数の中に
こんなんで動くと思いますが、あなたのソースが無いのでなんとも言えません笑
No.1
- 回答日時:
どのようにうまくいかないのか分からないので、答えになるかどうかわからないですが、
一般的には下記のような流れで書けば良いと思います。
1.マウスダウンのイベントを受け取る
2.マウスダウンフラグを真にする
3.ドラッグのイベント
4.マウスダウンフラグが真なら物体の座標を変更
5.描画処理
6.マウスアップのイベントを受け取るまで、3~5を繰り返し
7.マウスダウンフラグを偽にする
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
2の補数を計算するプログラム
-
16bitで乱数を生成する方法
-
3のつく数と3の倍数を表示 C言語
-
OpenCVによる4値化について
-
最早開始時間と最遅完了時刻を...
-
【C++】関数ポインタの使い方
-
既定のコンストラクタがありま...
-
Aの値からBの値を除するとは??
-
「Aに対するBの割合」と「Aに対...
-
信頼区間の1.96や1.65ってどこ...
-
a^2の√=a が成り立たない場合
-
VB6.0での小数点の扱いについて
-
配列をnビットシフトする
-
数学 一次関数 関数 y=-3/4x+k(...
-
c languageで 簡単な質問があ...
-
C言語 エラーの原因がわからな...
-
#define _CRT_SECURE_NO_WARNIN...
-
プログラムでの数字につく”f”の...
-
C言語で複数列のデータを1列の...
-
c言語で、繰り返し文の中で、0....
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語で簡単なパックマンゲーム...
-
2の補数を計算するプログラム
-
c言語プログラミングについて f...
-
再起呼び出しの回数をカウント...
-
intとlongは同じ?
-
openCVの画像処理について
-
C言語
-
【C#】SQL文の中に変数を埋め込...
-
C言語プログラミング 漸化式に...
-
カードシャッフルのブログラム...
-
C++ Debug Errorについて教えて
-
デバッグビルドとリリースビル...
-
迷路を脱出する経路探索プログ...
-
C++デバックエラーについて詳し...
-
C++ bmp 透過処理
-
複数の共有メモリの作成
-
C言語で%を使わない余りの出し方
-
C言語
-
2次関数プログラムを描写する...
-
16bitで乱数を生成する方法
おすすめ情報