我想在 OpenGL GLUT 程序中使用鼠标滚轮来放大和缩小场景?我怎么做?
Freeglut 的 glutMouseWheelFunc 回调与版本相关,并且在 X 中不可靠。使用标准鼠标功能并测试按钮 3 和 4。
OpenGlut 对 glutMouseWheelFunc 状态的注释:
由于缺乏有关鼠标的信息,无法
此时在 X 上正确实现这一点。该功能的使用
限制了应用程序的可移植性。 (此功能确实适用于
X,只是不可靠。)鼓励您使用该标准,
可靠的鼠标按钮报告,而不是滚轮事件。
使用标准的 GLUT 鼠标报告:
#include <GL/glut.h>
<snip...>
void mouse(int button, int state, int x, int y)
{
// Wheel reports as button 3(scroll up) and button 4(scroll down)
if ((button == 3) || (button == 4)) // It's a wheel event
{
// Each wheel event reports like a button click, GLUT_DOWN then GLUT_UP
if (state == GLUT_UP) return; // Disregard redundant GLUT_UP events
printf("Scroll %s At %d %d\n", (button == 3) ? "Up" : "Down", x, y);
}else{ // normal button event
printf("Button %s At %d %d\n", (state == GLUT_DOWN) ? "Down" : "Up", x, y);
}
}
<snip...>
glutMouseFunc(mouse);
正如OP所说,这“非常简单”。他只是错了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)