摘要:
以下代码使用了位图字体.它在每个雪人的上方显示一个数字.该数字可以用鼠标右键的弹出菜单来设置. 阅读全文
posted @ 2013-10-28 14:46
Clotho_Lee
阅读(432)
评论(0)
推荐(0)
摘要:
位图字体一般是二维字体.虽然我们会把它放到三维世界,但这些字体没有厚度,也不能渲染和测量,只能翻译.除此之外,字体会一直面向镜头,像一张广告牌一样.虽然这个可以看作是潜在的缺点,但另一方面看我们也不用考虑字体的方向问题.
本节我们会演示GLUT函数如何显示位图文本到屏幕.这里用到glutBitmapCharacter函数来写入字符.原型如下: 阅读全文
posted @ 2013-10-28 14:40
Clotho_Lee
阅读(2498)
评论(0)
推荐(0)
摘要:
这里我们准备包含一些前面几节展示过的素材.我们准备添加菜单到应用程序,子菜单和菜单交换.
直接复制粘贴下面代码到你的项目.鼠标右键会打开菜单.按键's'和'c'会生效到菜单选项. 阅读全文
posted @ 2013-10-28 14:11
Clotho_Lee
阅读(383)
评论(0)
推荐(0)
摘要:
GLUT甚至可以在应用程序过程中更改整个菜单.提供了两个函数: glutSetMenu和glutGetMenu.原型如下:
void glutSetMenu(int menu);
menu - 上一个创建菜单的索引值
该函数可以让我们切换菜单,例如在应用程序上下文中切换. 阅读全文
posted @ 2013-10-28 14:06
Clotho_Lee
阅读(513)
评论(0)
推荐(0)
摘要:
肯定会有菜单需要被修改的状况出现.GLUT运行我们修改和删除菜单项.修改菜单项的函数原型如下:
void glutChangeToMenuEntry(int entry, char *name, int value);
entry - 菜单项的索引值,介乎于1和菜单项总数之间
name - 新菜单项的名
value - 菜单项被选中时传递给回调函数的值 阅读全文
posted @ 2013-10-28 12:34
Clotho_Lee
阅读(961)
评论(0)
推荐(0)
摘要:
上一节我们介绍了如何创建普通菜单和如果绑定用户选定的菜单到处理事件.下面来介绍分层子菜单.
子菜单的创建和菜单用的是同一个函数.创建后插入到菜单的函数glutAddSubMenu原型如下: 阅读全文
posted @ 2013-10-28 12:26
Clotho_Lee
阅读(1581)
评论(0)
推荐(0)
摘要:
弹出菜单也是GLUT的一部分.虽然没有实现所有的窗体系统的弹出菜单的功能,但是GLUT也完成了一些非常有用的部分.为应用程序添加菜单,并提供一个简单的途径来交互和用键盘选择选项,避免了记住所有快捷键的麻烦.
第一步我们必须先创建一个菜单.GLUT的glutCreateMenu函数原型如下:
int glutCreateMenu(void (*func)(int value));
func - 为新创建的菜单提供菜单事件的处理函数. 阅读全文
posted @ 2013-10-28 12:15
Clotho_Lee
阅读(1609)
评论(0)
推荐(1)
摘要:
以下是前面几节的完整整合代码: 阅读全文
posted @ 2013-10-28 10:35
Clotho_Lee
阅读(454)
评论(0)
推荐(0)
摘要:
上一节的示例中我们用键盘更改镜头的方向.这一节我们用鼠标来代替.
当用户按下鼠标左键时我们会记录鼠标的X轴位置.当鼠标移动时我们会检测新的X轴位置,并利用位移差距设置一个deltaAngle变量.该变量会加到初始角度以计算镜头当前的方向.
鼠标点击时的X轴位置也需要变量来保存. 阅读全文
posted @ 2013-10-28 10:30
Clotho_Lee
阅读(524)
评论(0)
推荐(0)
摘要:
上一节我们讨论了怎么用GLUT的键盘函数跟OpenGL应用程序进行交互.现在来探讨鼠标的.GLUT的鼠标接口提供了一堆可选的事件来添加鼠标交互,来监测鼠标点击和鼠标移动.
监测鼠标点击事件
和键盘事件一样,GLUT提供了响应鼠标点击事件的注册回调函数.函数名是glutMouseFunc,也是在程序的初始化语句中被调用.原型如下:
void glutMouseFunc(void (*func)(int button, int state, int x, int y)); 阅读全文
posted @ 2013-10-27 14:28
Clotho_Lee
阅读(2330)
评论(0)
推荐(0)
浙公网安备 33010602011771号