OPENGL中glut处理鼠标滚轮输入
glutMouseFunc
在OpenGL中处理鼠标事件是比较方便的,GLUT已经为我们的注册好了函数,只需要我们定义方法。使用函数glutMouseFunc,并调用自己定义的方法函数,这样当发生鼠标事件时就会自动调用我们的方法。
不过,由于默认的OpenGL库中,不含接收鼠标滚轮输入的库函数,故很多的滚轮控制缩放相关的功能实现,需要配置重构的OpenGL库。
这些资源在网上需要下载以及积分。
由于本人希望找到一种不需要CSDN的积分的方法,于是在网上找呀找呀,终于找到了一种方法。解决方案如下:
解决方案
古老的GLUT 库不支持滚轮.但是,像 FreeGLUT 这样的GLUT更高版本可以实现.
在FreeGLUT中使用滚轮非常简单.方法如下:
声明一个回调函数,每当滚动滚轮滚动时应调用该回调函数.这是原型:
void mouseWheel(int, int, int, int);
使用(免费)GLUT函数 glutMouseWheelFunc()注册回调.
glutMouseWheelFunc(mouseWheel);
定义回调函数.第二个参数给出滚动的方向. +1表示正向,-1表示反向.
void mouseWheel(int button, int dir, int x, int y)
{
if (dir > 0)
{
// Zoom in
}
else
{
// Zoom out
}
return;
}
对惹,前提是有freeglut这个库,以及,在头文件中
#include <GL/freeglut_ext.h>
至此,就可以不用配置重构的OpenGL库从而实现鼠标滚轮的功能函数啦~~~
转自
[1]: https://www.itbaoku.cn/post/1641581/do
侵删