[译]GLUT教程 - 鼠标】的更多相关文章

Lighthouse3d.com >> GLUT Tutorial >> Input >> The Mouse 上一节我们讨论了怎么用GLUT的键盘函数跟OpenGL应用程序进行交互.现在来探讨鼠标的.GLUT的鼠标接口提供了一堆可选的事件来添加鼠标交互,来监测鼠标点击和鼠标移动. 监测鼠标点击事件 和键盘事件一样,GLUT提供了响应鼠标点击事件的注册回调函数.函数名是glutMouseFunc,也是在程序的初始化语句中被调用.原型如下: void glutMouseF…
http://www.lighthouse3d.com/tutorials/glut-tutorial/ GLUT是OpenGL Utility Toolkit的意思.作者Mark J. Kilgard把它设计成跨平台的库.所以不用管x-window或者微软的windows系统.Kilgard先实现了x-window版本,然后Nate Robins移植到微软的windows系统下.感谢他们俩. 利用GLUT你可以5行代码实现一个OpenGL窗体,再用3-4行代码实现你的鼠标键盘事件. GLUT令…
Lighthouse3d.com >> GLUT Tutorial >> Avoiding the Idle Func >> glutPostRedisplay 直到所有源代码都使用显示函数作为空闲函数.这意味着当没有任何事件要处理的时候GLUT会调用显示函数,也就是说,它会尽可能频繁的调用显示函数. 这个一个建立交互程序的简单方法.当你的回调函数处理完键盘事件后,显示函数会自动被调用,屏幕会被重绘. 我们要做的只是把显示函数和空闲函数注册到同一个回调函数. 如果我们的…
Lighthouse3d.com >> GLUT Tutorial >> Subwindows >> Creating and Destroying Subwindows 利用GLUT我们可以定义子窗体,例如切分主窗体到不同区域,每个子窗体有自己的OpenGL上下文和回调函数.一个可行的程序是可以同时提供几种相同场景的视觉. 为了创建子窗体,我们可以使用glutCreateSubWindow函数,原型如下: int glutCreateSubWindow(int par…
Lighthouse3d.com >> GLUT Tutorial >> Extras >> Game Mode 根据GLUT官网的说明,GLUT的游戏模式是为开启高性能全屏渲染而设计的.有些GLUT功能像弹出菜单和子窗体会因为增强性能而关闭.本节介绍GLUT的游戏模式.关于这个主题的教程和代码是可用的.由于我找不到官方文档,也没有其它教程关于这个主题,所以我不保证这节所有的内容都是对的.我建了一堆测试例子来尝试分析游戏模式的工作原理,但毕竟不同硬件的测试有限,所以会存…
Lighthouse3d.com >> GLUT Tutorial >> Pop-up Menus >> The Code So Far IV 以下代码使用了位图字体.它在每个雪人的上方显示一个数字.该数字可以用鼠标右键的弹出菜单来设置. #include <stdlib.h> #include <stdio.h> #include <math.h> #ifdef __APPLE__ #include <GLUT/glut.h&…
Lighthouse3d.com >> GLUT Tutorial >> Pop-up Menus >> The Code So Far III 这里我们准备包含一些前面几节展示过的素材.我们准备添加菜单到应用程序,子菜单和菜单交换. 直接复制粘贴下面代码到你的项目.鼠标右键会打开菜单.按键's'和'c'会生效到菜单选项. #include <stdlib.h> #include <math.h> #ifdef __APPLE__ #includ…
Lighthouse3d.com >> GLUT Tutorial >> Pop-up Menus >> Sub Menus 上一节我们介绍了如何创建普通菜单和如果绑定用户选定的菜单到处理事件.下面来介绍分层子菜单. 子菜单的创建和菜单用的是同一个函数.创建后插入到菜单的函数glutAddSubMenu原型如下: void glutAddSubMenu(char *entryName, int menuIndex); entryName - 子菜单名 menuIndex…
Lighthouse3d.com >> GLUT Tutorial >> Pop-up Menus >> Popup Menus 弹出菜单也是GLUT的一部分.虽然没有实现所有的窗体系统的弹出菜单的功能,但是GLUT也完成了一些非常有用的部分.为应用程序添加菜单,并提供一个简单的途径来交互和用键盘选择选项,避免了记住所有快捷键的麻烦. 第一步我们必须先创建一个菜单.GLUT的glutCreateMenu函数原型如下: int glutCreateMenu(void (*…
Lighthouse3d.com >> GLUT Tutorial >> Input >> Moving the Camera III 上一节的示例中我们用键盘更改镜头的方向.这一节我们用鼠标来代替. 当用户按下鼠标左键时我们会记录鼠标的X轴位置.当鼠标移动时我们会检测新的X轴位置,并利用位移差距设置一个deltaAngle变量.该变量会加到初始角度以计算镜头当前的方向. 鼠标点击时的X轴位置也需要变量来保存. float deltaAngle = 0.0f; ; 注意…