gpt4 book ai didi

c++ - 使用 glutmotionfunc 在运动开始和结束时获取 x 位置

转载 作者:行者123 更新时间:2023-11-30 00:36:45 25 4
gpt4 key购买 nike

我想使用 glutmotionfunc() 来获取拖动运动开始和结束时的 x 位置,即这样我就可以获得 x 的变化。有没有一种简单的方法可以做到这一点?

最佳答案

我认为 glutmotionfunc() 没有按照您期望的方式工作。

注册的回调不是仅在拖动完成时调用一次。相反,每次在按下按钮时移动鼠标时都会调用它。

这里的想法是能够为每个小的拖动 Action 持续更新场景。

要在调用之间进行移动,您必须存储之前获得的值。哦,如果同时释放了按钮,请不要忘记将存储的值标记为无效。否则你会得到一些有趣的结果。

这里是总体思路

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;
}

不要忘记用 glutMotionFuncglutMouseFunc 连接两个回调

关于c++ - 使用 glutmotionfunc 在运动开始和结束时获取 x 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15147515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com