OpenGL编程3.ppt_第1页
OpenGL编程3.ppt_第2页
OpenGL编程3.ppt_第3页
OpenGL编程3.ppt_第4页
OpenGL编程3.ppt_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、OpenGL编程 Ls,1,OpenGL编程,河南科技大学电信学院 主讲:刘刚,Face,OpenGL编程 Ls,2,2.3 显示回调函数,void glutDisplayFunc( void (*f1) (void) ),显示回调,窗口每次需要重画时,都会调用f1()函数。 f1()格式固定,无参数。 可用全局变量在函数之间传值,OpenGL编程 Ls,3,2.8 二维投影(正交投影特例),void gluOrtho2D(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top),二维投影,创建一个将二维坐标投影到屏幕上的矩阵。

2、裁剪区域是一个左下角为(left, bottom),右上角为(right, top)的矩形。,分析运行: ortho2D.c,OpenGL编程 Ls,4,2.8.1 坐标系统转换,坐标转换,设置两种矩阵 视口变换(GL_MODELVIEW) 投影变换(GL_PROJECTION),步骤: 1. 指定改变何种矩形glMatrixMode(mode) 2. 设置为单位矩阵glLoadIdentity(); 3. 修改矩阵gluOrtho2D();,OpenGL编程 Ls,5,2.8.2 设置视口,视口,Void glViewport(GLint x, GLint y, GLsizei w, GLs

3、izei h) 在窗口中指定一个用于显示图像的像素矩形 左下角坐标在(x, y),w、h 为宽度和高度。,分析运行: viewport.c,OpenGL编程 Ls,6,投影平面,屏幕窗口,映射,平面物体,平面物体,视口,OpenGL编程 Ls,7,作业,编制一个小程序,要求绘制一个矩形,四个点的逻辑坐标为(0.5,0.5),(0.5,1),(1,1),(1,0.5)。二维投影平面的坐标原点为左下角,x、y半轴的幅值均为2。且假定视口的大小为整个窗口(窗口的大小自定)。生成的窗口标题上要有班级学号姓名。,OpenGL编程 Ls,8,Chap3 交互与动画,Chap3,OpenGL编程 Ls,9,

4、3.1 重画回调函数,void glutReshapeFunc( void (*f2) (int width, int height) ),重画回调,窗口大小发生变化时,会调用f2()函数, 窗口新的宽度和高度会返回到函数f2()。 f2()格式固定,有两个参数:宽度和高度。执行完f2(),自动调用显示回调函数。,分析运行: reshape.c,OpenGL编程 Ls,10,3.2 空闲回调函数,void glutIdleFunc( void (*f3) (void) ),空闲回调,只要没有等待处理的事件,就执行函数f3,分析运行: idle.c,void glutPostRedisplay(

5、 void),当前调用返回之后,将请求执行显示回调函数,OpenGL编程 Ls,11,3.4 双缓存处理,void glutSwapBuffers( void),双缓存处理,交换前台缓存和后台缓存,需要初始化设置,分析运行: dbuff.c,glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB),OpenGL编程 Ls,12,3.5 键盘回调函数,void glutKeyboardFunc( void (*f4) (unsigned char key, int x, int y) ),键盘,函数f4是在按下键盘上任一按键(unsined char key)时调用

6、。 鼠标位置(int x, int y)是从窗口左上角开始算的像素数。,分析运行: keys.c,glutGetModifiers ()GLUT_ACTIVE_SHIFT GLUT_ACTIVE_CTRL GLUT_ACTIVE_ALT,OpenGL编程 Ls,13,GLUT_KEY_F1 GLUT_KEY_F12 GLUT_KEY_LEFTGLUT_KEY_UP GLUT_KEY_RIGHTGLUT_KEY_DOWN GLUT_KEY_PAGE_UPGLUT_KEY_PAGE_DOWN GLUT_KEY_HOMEGLUT_KEY_END GLUT_KEY_INSERT,3.5.1 特殊按键处

7、理,void glutSpecialFunc( void (*f5) (int key, int x, int y) ),键盘,函数f5是在按下键盘上一特殊按键时调用。 特殊按键在glut.h 中定义 鼠标位置(int x, int y)是从窗口左上角开始算的像素数。,分析运行: skeys.c,OpenGL编程 Ls,14,3.6 鼠标回调函数,void glutMouseFunc( void (*f6) (int button, int state, int x, int y) ),鼠标,函数f6是在产生鼠标事件时调用。 鼠标位置(int x, int y)是从窗口左上角开始算的像素数。,

8、分析运行: buttons.c,button GLUT_LEFT_BUTTON GLUT_MIDDLE_BUTTON GLUT_RIGHT_BUTTON,state GLUT_UP GLUT_DOWN,OpenGL编程 Ls,15,3.7 鼠标运动,void glutMotionFunc( void (*f7) ( int x, int y) ),鼠标,函数f7是在鼠标移动且有鼠标键被按下时被调用。移动事件,分析运行: buttons.c,void glutPassiveMotionFunc( void (*f8) ( int x, int y) ),函数f8是在鼠标移动且没有鼠标键被按下时被

9、调用。 被动鼠标事件,void glutEntryFunc( void (*f9) ( int state) ),函数f9是在鼠标进入/离开OpenGL窗口时被调用。 state GLUT_ENTERED/GLUT_LEFT,OpenGL编程 Ls,16,3.8 菜单,int glutCreateMenu( void (*f10) ( int value) ),菜单,创建一个使用回调函数f10的顶级菜单。,分析运行: menus.c,void glutAddMenuEntry( void (*f11) ( char *name, int value) ),向当前菜单添加一个名称为name的菜单项, value是返回给回调函数的值。,void glutAttatchMenu (int button ),将当前菜单附加给指定鼠标键 GLUT_RIGHT_BUTTON GLUT_MIDDLE_BUTTON GLUT_LEFT_BUTTON,OpenGL编程 Ls,17,3.9 空回调函数,菜单,消除一个回调函数,把 NULL 作为新的回调函数名称传递。,OpenGL编程 Ls,18,3.1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论