OPENGL中glut处理鼠标滚轮输入

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
侵删

上一篇:【OpenGL ES 太好玩了】图形渲染管线


下一篇:opengl实现骨骼动画-(1)原理