OpenGL游戏编程.ppt
《OpenGL游戏编程.ppt》由会员分享,可在线阅读,更多相关《OpenGL游戏编程.ppt(47页珍藏版)》请在三一办公上搜索。
1、嵌入式课程设计介绍,课程内容授课方式技术储备考核方法最终目标,课程内容,用C/C+语言实现跨平台的水果忍者游戏,授课方式,理论授课和实际操作相结合一节理论课程一节操作课程把项目分解到每节课程中以项目推动课程根据课程进展进行分组讨论,考核方法,行为考核(30分)+项目成绩考核(70分)=100,最终目标,熟悉C/C+语言能够用C/C+语言解决一个实际问题掌握编程思路,6,OpenGL(Open Graphics Library,开放图形库),是一个二维/三维的计算机图形和模型库,它源于SGI(Silicon Graphics inc.)公司为其图形工作站开发的IRIS GL,在跨平台移植过程中发
2、展成为OpenGL。目前,OpenGL已成为开放的国际图形标准。,OpenGL简介,技术储备,C语言基础包括常见的函数、指针、数组、字符串、结构体等C+语言基础包括面向对象编程思想、类、对象、继承、多态常见的数据结构包括链表、队列、哈希表OPENGL API函数的使用跨平台QtCreator开发环境的使用,OpenGL概述,从程序开发人员的角度来看,OpenGL是一组绘图命令的API集合。利用这些API能够方便地描述二维和三维几何物体,并控制这些物体按某种方式绘制到显示缓冲区中。OpenGL的API集提供了物体描述、平移、旋转、缩放、光照、纹理、材质、像素、位图、文字、交互以及提高显示性能等方
3、面的功能,基本涵盖了开发二、三维图形程序所需的各个方面。,跨平台特性 OpenGL与硬件、窗口和操作系统是相互独立的。为了构成一个完整功能的图形处理系统,其设计实现共分 5 层:图形硬件、操作系统、窗口系统、OpenGL和应用软件。因而,OpenGL可以集成到各种标准窗口和操作系统中。例如,操作系统包括UNIX,Windows NT,Windows 95/98,DOS等;窗口系统包括X Windows,Microsoft Windows等。OpenGL图形函数定义独立于任何程序设计语言,在各种编程语言中,如C,C+,FORTRAIN,Ada和Java等,都可以调用OpenGL的库函数。,Ope
4、nGL组成,OpenGL是一种API,包括了多个图形函数,主要由以下函数库组成。(1)OpenGL核心库:gl(2)OpenGL实用程序库:glu(3)OpenGL编程辅助库:aux(4)OpenGL实用程序工具包(OpenGL utility toolkit,GLUT):glut(5)Windows专用库:wgl(6)Win32 API函数库,2023/11/8,11,OpenGL中的数据类型,函数命名约定,OpenGL函数都遵循一个命名约定,即采用以下格式:例如函数glColor3f(),gl表示这个函数来自库gl.h,color表示该函数用于颜色设定,3f表示这个函数采用了三个浮点数参数
5、。,OpenGL中的颜色,在OpenGL中,一种颜色用红、绿、蓝成分的混合来表示,每种成分的值范围是0.0到1.0。,OpenGL初步编程,在Windows下开发和创建一个OpenGL程序的基本步骤:第一步,选择一个编译环境,如QtCreator 第二步,安装GLUT工具包 第三步,建立一个OpenGL工程 第四步,编译连接 第五步,执行程序,OpenGL初步编程,OpenGL库和头文件:动态库:opengl32.dll glu32.dll glut32.dll 放入windowssystem32目录下静态库:opengl32.lib glu32.lib glut32.lib放入qt安装目录的
6、LIB目录下头文件:gl.h glu.h glut.h放入qt安装目录的IncludeQtOpengGL文件夹下,gult库常用函数,glutInit函数Void glutInit(int*argc,char*argv)功能:初始化glut库函数,从main函数中接收argc和argv参数glutInitDisplayModeglutInitDisplayMode(unsigned int mode)功能:用于设置窗口的缓冲区和颜色模式的选择参数:mode一般可以选择单缓冲和双缓冲GLUT_SIGNAL或者GLUT_DOUBLE颜色选择GLUT_RGBA,glut常用函数2,glutWindo
7、wPositionvoid glutInitWindowPosition(int x,int y);功能:定义要创建窗口出现在屏幕中的位置参数:x窗口出现的x轴坐标。glutInitWindowSizevoid glutInitWindowSize(int width,int height);功能:创建窗口的大小glutDisplayFunglutDisplayFunc(void(*func)(void);功能:glutDisplayFunc函数用于注册一个绘图函数,这样操作系统在必要时刻就会对窗体进行重新绘制操作。类似于windows程序设计中处理WM_PAINT消息。具体来说呢,就是设置一
8、个函数当需要进行画图时就调用这个函数,glut常用函数3,glutReshapeFunglutReshapeFunc(void(*func)(int width,int height);功能:窗口重绘函数,单窗口大小发生变化时必须重新绘制窗口,func函数指针就是重绘的函数glutMainLoopglutMainLoop(void);功能:进入GLUT事件处理循环,让所有的与“事件”有关的函数调用无限循环glutPostRedisplayglutPostRedisplay(void);功能:功能类似于直接调用显示回调函数display(),但该函数允许实现在对何时真正需要调用显示回调函数而作出
9、决策时,变得更加“智能化”。在GLUT遍历整个事件循环时,必然会检索到许多要求窗口重绘的事件。如果每次都去直接调用显示回调函数,窗口必然会被多次绘制。而使用glutPostRedisplay()之后,就使得在遍历消息队列的整个过程中,只对窗口重绘一次,#include#include#include/函数RenderScene用于在窗口中绘制需要的图形void RenderScene(void)/用当前清除色清除颜色缓冲区,即设定窗口的背景色glClear(GL_COLOR_BUFFER_BIT);/设置当前绘图使用的RGB颜色 glColor3f(1.0f,0.0f,0.0f);/使用当前颜
10、色绘制一个填充的矩形glRectf(100.0f,150.0f,150.0f,100.0f);/刷新OpenGL命令队列glFlush();,/函数ChangeSize是窗口大小改变时调用的登记函数void ChangeSize(GLsizei w,GLsizei h)if(h=0)h=1;/设置视区尺寸glViewport(0,0,w,h);/重置坐标系统,使投影变换复位glMatrixMode(GL_PROJECTION);glLoadIdentity();/建立修剪空间的范围 if(w=h)glOrtho(0.0f,250.0f,0.0f,250.0f*h/w,1.0f,-1.0f);e
11、lse glOrtho(0.0f,250.0f*w/h,0.0f,250.0f,1.0f,-1.0f);glMatrixMode(GL_MODELVIEW);glLoadIdentity();/函数SetupRC用于初始化,常用来设置场景渲染状态void SetupRC(void)/设置窗口的清除色为白色 glClearColor(1.0f,1.0f,1.0f,1.0f);,void main(void)/初始化GLUT库OpenGL窗口的显示模式glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);/创建一个名为GLRect的窗口glutCreateWindow
12、(GLRect);/设置当前窗口的显示回调函数和窗口再整形回调函数glutDisplayFunc(RenderScene);glutReshapeFunc(ChangeSize);SetupRC();/启动主GLUT事件处理循环glutMainLoop();,22,画点、线和面glBegin(GL_POINTS);glVertex3f(0.0f,0.0f,0.0f);glVertex3f(10.0f,10.0f,10.0f);glEnd();计算机中的图元只是把一组顶点或顶点列表解释为屏幕上绘制的某些形状,而顶点是用函数glVertex3f来定义,该函数中的参数指明定义点的x、y和z坐标。,用
13、OpenGL绘图,2023/11/8,23,2023/11/8,24,在绘制三角形的过程中,三个顶点将三角形封闭的过程是有序的,即三角形的构成路径具有方向性,我们把指定顶点时顺序和方向的组合称为“绕法”。在一个全部由不透明封闭表面组成的场景中,背面多边形是永远看不见的。剔除这些不可见的多边形对于加速图形的渲染有很大的益处。开启和关闭剔除功能 可以调用带GL_CULL_FACE参数的glEnable和glDisable函数。默认剔除功能是关闭的。如果一个虚构的对象的顶点是按照多边形内部 顺时针的方向进行绘制的,那么可以称这个多边形基于窗口坐标的投影是顺时针的。反之,则为逆时针。glFrontFa
14、ce就是用来指定多边形在窗口坐标中的方向是逆时针还是顺时针的。GL_CCW说明逆时针多边形为正面,而GL_CW说明顺时针多边形为正面。默认是逆时针多边形为正面glFrontFace(GL_CW);glFrontFace(GL_CCW);,(1)视图变换:指定观察者或摄影机的位置;(2)模型变换:在场景中移动对象;(3)模型视图变换:描述视图变换与模型变换结合(4)投影变换:对视见空间进行修剪和改变大小;(5)视见区变换:对窗口的最终输出进行缩放;,OpenGL中的变换,模型坐标变换,1)平移变换:void glTranslatefd(TYPE x,TYPE y,TYPE z);2)旋转变换:v
15、oid glRotatefd(TYPE angle,TYPE x,TYPE y,TYPE z);3)比例变换:void glScalefd(TYPE x,TYPE y,TYPE z);以上变换既可用于模型变换也可用于视点变换,所有变换在视点坐标中进行。,投影变换,1)平行投影:void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble near,GLdouble far);前4个参数是坐标,后两个是距离。2)透视投影:void glFrustum(GLdouble left,GLdouble R
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OpenGL 游戏 编程
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6513272.html