《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

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

阅读更多
个人分类: OpenGL
想对作者说点什么? 我来说一句

OpenGL编程基础(第3版)源码.zip

2012年10月10日 422KB 下载

openGL编程基础

2009年12月20日 1.67MB 下载

SWT编程基础

2011年11月14日 2.33MB 下载

OpenGL编程基础

2011年11月09日 579KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭