《OpenGL编程基础》第三章笔记1

个人认为,第三章分两个部分,第一部分介绍了一些glut工具。第二部分介绍了OpenGL的工作方式。

首先,glut的工具:

1 重绘回调函数

void glutReshapeFunc(void (*newShape)(int width, int height))

当窗口的尺寸改变事,会执行方法newShape。newShape的参数分别是窗口的宽度和高度。newShape可以由程序员自定义实现、替换。

在main函数中通过 glutReshapeFunc(newShape);语句来注册newShape函数,这样,在改变窗口尺寸后,newShape将被执行。

打个比方,我们申明了一个函数叫 plant_a_Watermelon_as_window(int width, int height) { /*种个跟窗口一样大个瓜 :D */ }

然后在main函数中用glutReshapeFunc注册:glutReshapeFunc(plant_a_Watermelon_as_window).

这样,当改变窗口大小时,窗口的地里总是有个跟窗口一样大的瓜。大笑


2 Idel回调函数

void glutIdleFunc(void (*myIdle(void))

当事件队列为空时。函数muIdle将被执行。简单的理解,当窗口就那么摆到屏幕上,不去理他,不按键盘也不动鼠标,就看着它。那么这个myIdle将被执行。

在main函数中通过 glutIdleFunc(myIdle);语句来注册myIdle函数,这样,在恰当时间,myIdle将被执行。


3 键盘,鼠标,

void glutKeyboardFunc(void (*f)(unsigned char key, int x, int y))

当按下按键时,执行f函数。x,y是按下按键时鼠标的坐标


void glutSpecialFunc(void (*f)(int key, int x, int y))

当按下特殊按键时,执行f函数,特殊按键包括F1,方向键等等,key即按下的按键值(例如GLUT_KEY_F1, GLUT_KEY_UP等等)。x,y是按下按键时鼠标的坐标

int glutGetModifiers()

判断按键组合试试用:例如Ctrl+c这么表示:

if(glutGetModifiers()==GLUT_ACTIVE_CTRL && key =='c'){ /* copy*/ }


void glutMouseFunc(void (*f)(int button, int state, int x, int y))

当鼠标被按键被点击时,执行f函数。botton取值GLUT_RIGHT_BUTTON等,state取值GLUT_DOWN、GLUT_UP。


void glutMotionFunc(void (*f)(int x, int y))

当鼠标按键被按下并且移动时,执行f函数

void glutPassiveMotionFunc(void (*f)(int x, inty))

当鼠标按键没有按下仅仅移动时,执行f函数


void glutEntryFunc(void (*f)(int state))

当鼠标进入或者离开窗口时,执行f函数。state的值可能是GLUT_ENTERED或者GLUT_LEFT

如果我需要,那么你进入我的田地,或者离开我的田地,都要跟我打报告大笑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值