OpenGL 中 GLUT 消息事件处理函数
来源:互联网 发布:吸入麻醉药mac值 编辑:程序博客网 时间:2024/05/18 01:19
GLUT 这是一套 OpenGL 的辅助函数库,他使我们能十分简单的设置各种消息处理函数,而且与平台无关,也就是说如果使用glut 在windows 下编译通过的程序无需更改便可在 Linux, 和 Mac OS 下的编译运行,这一点是十分有用的,要知道 Win32 API 繁琐的代码走出了 Windows 的窗户可什么也干不了。给 GLUT
void glutKeyboardFunc(void (*func)(unsigned char key, int x, int y))
void glutMouseFunc(void (*func)(int button, int state, int x, int y))
当鼠标移动式我们还可以通过下面的函数来设置鼠标移动消息的处理函数
void glutMotionFunc(void (*func)(int x, int y))
下面我们将看到一个完整的例子,通过输入来控制三维物体的旋转
#include <math.h>
#include <gl/glut.h>
#include <gl/gl.h>
bool mouseisdown=false;
bool loopr=false;
int mx,my;
int ry=30;
int rx=30;
void timer(int p)
{
}
void mouse(int button, int state, int x, int y)
{
}
void motion(int x, int y)
{
}
void special(int key, int x, int y)
{
}
void display()
{
//glutSolidTeapot(0.5);
}
int main(int argc, char** argv)
{
}
运行这个程序我们会发现一个茶壶,我们可以通过鼠标和键盘的方向键来控制它的旋转,而按下鼠标右键则可以让这个茶壶自动旋转,这里还有几个函数我们要注意一下
void glutWireTeapot(GLdouble size) 在当前的 OCS 坐标中心画一个以size为大小的茶壶。
void glutSpecialFunc(void (*func)( int key, int x, int y)) 这个函数与glutKeyboardFunc的区别在于前者是用来响应键盘上的特殊按键,如方向键和控制键等。而后者则是用来响应键盘上的字符按键。
void glutTimerFunc(int delay, (void (*func)( int parameter),int parameter) 这个函数相当于win32 api 中的timer 定时器,也是在delay毫秒后放出一个定时器消息,而这里的func 则为这个消息的处理函数, patameter为附加参数。这里有一点要注意这个函数是一次性的,如果要重复使用可以在func中继续调用glutTimerFunc,而且这个功能是可以叠加的,在opengl 内部将他们看成许多个不同的定时器,这也就是为什么我们在上面的例子中连续按下鼠标右键会加快旋转的速度。
- OpenGL 中 GLUT 消息事件处理函数
- 【OpenGL】glut 消息事件处理函数 glutMainLoop();
- 【OpenGL】glut 消息事件处理函数 glutMainLoop();
- OpenGL中GLUT 按键处理
- OpenGL中GLUT 按键处理
- OpenGL中常用的 GLUT 函数
- OpenGL基础:glut处理鼠标事件(含滚轮输入)
- opengl glut glutMainLoop()函数
- 【OpenGL】GLUT函数说明
- Glut处理鼠标事件
- Glut处理鼠标事件
- Glut处理鼠标事件
- Glut处理鼠标事件
- OpenGL 中常用的 GLUT 函数…
- opengl/glut的若干函数
- Win32事件消息处理函数
- OpenGL的函数(GLU, GLUT)
- OpenGL(2)GLUT库菜单函数API
- 微软官网下载正版WIN
- 通过运行时获取某个类下所有的属性
- java基础(二),hello word
- 数据结构-线性表
- 如何将路径中的中文换成%
- OpenGL 中 GLUT 消息事件处理函数
- 判断当前控制器是否是根控制器
- hdu 5662
- REST API
- Android Studio 2.0 稳定版新特性介绍
- Android五大布局
- 上海地铁游移动APP需求分析
- 关于MySQL
- c++基本应用