You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过鼠标输入暂停GLUT框架下2D图形的自动旋转?

实现点击鼠标停止图形旋转的修改方案

你只需要对现有代码做4处修改即可实现需求:

1. 新增全局旋转控制变量

在全局变量定义区域添加一个布尔变量,控制旋转是否开启:

GLfloat angle = 0.0f;
int refreshMills = 30;
bool isRotating = true; // 新增:控制旋转状态,默认开启旋转

2. 补全鼠标回调函数逻辑

点击鼠标时切换旋转状态,这里设置为任意鼠标按键按下时触发切换,你也可以按需限定为左键:

void mouse(int button, int state, int x, int y) {
    // 鼠标按键按下时切换旋转状态
    if (state == GLUT_DOWN) {
        isRotating = !isRotating;
    }
}

3. 修改角度增量逻辑

只有旋转状态开启时,才更新旋转角度,修改display函数末尾的角度更新代码:

glutSwapBuffers();
// 仅当旋转开启时增加角度
if (isRotating) {
    angle += 2.0f;
}

4. 启用鼠标事件注册

取消main函数中glutMouseFunc行的注释,让GLUT能够响应鼠标事件:

glutDisplayFunc( display );
glutMouseFunc ( mouse );   // 取消该行注释,注册鼠标事件回调
glutSpecialFunc( special );

修改完成后运行程序,点击任意鼠标按键即可停止旋转,再次点击即可恢复旋转效果,原有方向键控制移动的功能不受影响。


内容的提问来源于stack exchange,提问作者uwu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 07:15:07