我想使用glutmotionfunc()来获取拖动动作开始时的x位置和结束,即所以我可以得到x的变化.有一个简单的方法吗?
我认为glutmotionfunc()不会像你期望的那样发挥作用.
注册回调不会在拖动结束只调用一次.相反,每次鼠标移动时都会调用它,同时按下按钮.
这里的想法是能够为每一个小拖动动作不断更新场景.
要获得调用之间的移动,您必须存储之前获得的值.哦,不要忘记将存储的值标记为无效,如果同时按钮被释放.否则你会得到一些有趣的结果.
所以这里是一般的想法
int old_x=0;
int old_y=0;
int valid=0;
void mouse_func (int button, int state, int x, int y) {
old_x=x;
old_y=y;
valid = state == GLUT_DOWN;
}
void motion_func (int x, int y) {
if (valid) {
int dx = old_x - x;
int dy = old_y - y;
/* do something with dx and dy */
}
old_x = x;
old_y = y;
}
Run Code Online (Sandbox Code Playgroud)
不要忘记用glutMotionFunc和连接两个回调glutMouseFunc
| 归档时间: |
|
| 查看次数: |
4625 次 |
| 最近记录: |