gpt4 book ai didi

c++ - ScrollWheel 没有生成任何事件 - GLUT

转载 作者:行者123 更新时间:2023-11-28 04:44:52 25 4
gpt4 key购买 nike

我正在制作一个 OpenGL 应用程序,使用 GLUT 作为我的基础。我刚开始实现非控制台交互,鼠标很容易实现。然后我去实现鼠标滚动的时候,发现鼠标滚动的时候没有事件传给glutMouseFunc。我在 other forums 上看到了它应该用 34 调用它的回调到 int button 分别用于向上和向下滚动。

我尽量避免 glutMouseWheelFunc(...),因为它不是平台独立的。

那么,我怎样才能以独立于平台的方式实现滚动呢?

谢谢!

这是一个显示问题的简短代码段 -

#pragma once
#include <iostream>

#include <GL/glut.h>
#include <GL/glext.h>

void onMouse(int button, int state, int x, int y);

int main(int argc, char** argv) {
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowPosition(100,100);
glutInitWindowSize(256,256);

glutCreateWindow("Mousewheel Test");

glutMouseFunc(onMouse);

glutMainLoop();
}

void onMouse(int button, int state, int x, int y){
//Here, an event is generated for left, right, and middle clicks (though middle is the same as right...),
//but not scrolling!
std::cout << "Mouse event. Button: " << button << " state: " << state << '\n';
}

最佳答案

使用 freeglut 3.0.0 + Linux + gcc 你的例子可以工作(稍作调整,必须注册 glutDisplayFunc 否则 glut 拒绝打开窗口),滚轮在 onMouse 中报告为按钮 3 和 4。

使用 GLUT 3.7.6 + Windows 10 + Visual Studio 2017,鼠标滚轮显然无法被 glut 捕获(没有滚轮回调,鼠标和键盘的回调没有报告任何内容)。

最初的 GLUT(由 Mark Kilgard 编写)非常古老,自 2001 年以来就没有更新过 (https://user.xmission.com/~nate/glut.html),因此可能无法编写适用于任何 GLUT 和任何平台的车轮感知代码。

不管平台如何,freeglut 实现都应该正确捕获鼠标滚轮。

关于c++ - ScrollWheel 没有生成任何事件 - GLUT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49459205/

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