OpenGL基础1

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

OpenGL编程基础OpenGL介绍课程概要OpenGL简介绘制简单的物体相机的设置物体的颜色光照显示列表纹理映射导入3D模型选择和反馈本章内容OpenGL图形系统OpenGLAPI的特点GLUT工具包第一个OpenGL程序3/38内容进度OpenGL图形系统OpenGLAPI的特点GLUT工具包第一个OpenGL程序4/38关于本课程的学习具备一定的C语言基础(函数、条件语句、循环语句、结构体)具备一定的数学知识(立体几何)对3D图形编程有一定的兴趣OpenGL图形系统什么是3D图形程序?如:反恐精英,魔兽世界,极品飞车OpenGL的含义OpenGraphLibrary(开放式图形库),是一组函数的集合OpenGL作用可以生成可交互的、三维运动物体的、彩色的图像流行的3D图形库Direct3D(DirectX中的一部分)支持的平台:Windows平台、Xbox游戏机OpenGL支持的操作系统:Windows、Linux、Unix、Machintosh、FreeBSD、AIX、PS2、PS3等等OpenGL具有更良好的跨平台特性以及可移植性。内容进度OpenGL图形系统OpenGLAPI的特点GLUT工具包第一个OpenGL程序8/38OpenGLAPI的特点OpenGL函数名常以gl、glu或glut开头如:glBegin();//开始绘制一个图形glEnd();//图形绘制结束gluLookAt();//设置相机位置等属性gluNewTess();//创建一个网格化对象glutCreateWindow();//创建一个OpenGL窗口glutSolidTeapot();//绘制一个茶壶OpenGLAPI的特点OpenGL数据类型常以GL开头如:GLint//整型数据,相当于C语言中的intGluint//整型数据,相当于C语言中的unsignedGLfloat//单精度数据,相当于C语言中的floatGLdouble//双精度数据,相当于C语言中的doubleGLbyte//字节数据,相当于C语言中的byteGLenum//枚举型数据,相当于C语言中的enumOpenGLAPI的特点OpenGL符号常量以GL_、GLU_、GLUT_开头如:GL_POINTS//绘制点GL_TRIANGLES//绘制三角形GL_QUADS//绘制矩形GL_FOG//设置雾的效果GLUT_DOUBLE//设置双缓存GLU_VERSION//关于OpenGL的版本GLU_TESS_BEGIN//开始网格化绘图我的习惯文字中的重点,我会用红色表示程序中的数据类型和保留字,我会用蓝色表示程序中的函数,我会用深红色表示程序中的变量,我会用灰色表示程序中的符号常量,我会用紫色表示程序中的运算符及常量,我会用黑色表示程序中的注释,我会用绿色表示/*输出x,y中较大的数*/#include“stdio.h”#definePRICE50intmain(){intx,y,max;x=3;y=6;if(xy)max=x;elsemax=y;printf(“max=%d\n,max);return0;}例:学习资源《OpenGL编程指南(第四版)》(红宝书)《OpenGL参考手册》《3DComputerGraphics》OpenGL官方网站:准备工作VisualC++6.0或更高版本的开发工具OpenGL实用工具包(GLUT)GLUT提供了一套方便OpenGL编程的函数,如创建窗口、检测键盘鼠标事件等等下载地址:内容进度OpenGL图形系统OpenGLAPI的特点GLUT工具包第一个OpenGL程序16/38GLUT的安装Glut实用工具包应包括下以3个文件Glut32.dllGlut32.libGlut.h分别将3个文件放到指定的目录下将glut32.dll放到[%systemroot%\system32]目录下将glut32.lib放到[VisualStdio安装目录\VC98\Lib]目录下将glut.h放到[VisualStdio安装目录\VC98\Include\GL]目录下GLUT的作用在任意平台下创建绘图窗口在任意平台下检测键盘事件在任意平台下检测鼠标事件简单地创建三维物体如:球体、圆环、茶壶等常用的GLUT函数voidglutInit(int*argc,char**argv);功能:初始化GLUT并处理命令行参数参数:argc,argv与C语言中main()函数的argc,argv相同返回值:无备注:无注意:应在调用其它GLUT函数前调用glutInit();常用的GLUT函数voidglutInitDisplayMode(GLuintmode);功能:指定OpenGL窗口的显示模式指定显示模式使用RGBA模式或颜色索引模式。指定使用单缓存或双缓存。指定窗口是否关联深度缓存、模板缓存、累积缓存参数:mode:设置显示模式;可取下列值GLUT_RGBA:设置RGBA显示模式GLUT_INDEX:设置颜色索引模式GLUT_SINGLE:采用单缓存模式GLUT_DOUBLE:采用双缓存模式常用的GLUT函数GLUT_DEPTH:启用深度缓存GLUT_STENCIL:启用模板缓存GLUT_ACCUM:启用累积缓存返回值:无备注:参数间可以用“|”运算符组合起来,即同时设置多个功能,如:glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE|GLUT_DEPTH);上述函数设置OpenGL窗口的显示模式为RGBA模式,采用双缓存模式的显示方法,并启用深度缓存以记录三维物体的深度坐标(Z坐标)。注意:有些参数不能同时被设置不能同时使用GLUT_RGBA和GLUT_INDEX不能同时使用GLUT_SINGLE和GLUT_DOUBLE21/38常用的GLUT函数voidglutInitWindowPosition(intx,inty);功能:设置OpenGL窗口在屏幕中的位置参数:x,y:指定窗口左上角在屏幕上的位置返回值:无常用的GLUT函数voidglutInitWindowSize(intwidth,intheight);功能:指定窗口的大小,像素为单位参数:width:指定窗口长度height:指定窗口的宽度返回值:无常用的GLUT函数intglutCreateWindow(char*string);功能:使用OpenGL场景创建一个窗口参数:string:窗口的标题栏文字返回值:创建窗口的标识符注意:调用glutMainLoop()之前,窗口不会被显示出来常用的GLUT函数voidglutDisplayFunc(函数名);功能(最重要的函数):指定显示场景的回调函数参数:函数名:显示场景的函数名称返回值:创建窗口的标识符常用的GLUT函数voidglutMainLoop();功能:进入GLUT事件处理循环,且永不停止参数:无返回值:无备注:调用该函数后,程序开始事件处理创建的窗口被显示出来被渲染的内容被显示出来内容进度OpenGL图形系统OpenGLAPI的特点GLUT工具包第一个OpenGL程序27/38第一个OpenGL程序程序由3个部分组成:voidinit();函数用于初始化OpenGL环境voiddisplay();函数用于渲染OpenGL场景intmain(intargc,char**argv);函数C语言主函数程序需要包含的头文件#includeGL/GL.H#includeGL/GLU.H#includeGL/GLUT.H28/38第一个OpenGL程序程序需要的库文件#pragmacomment(lib,“opengl32.lib”)#pragmacomment(lib,“glu32.lib”)#pragmacomment(lib,“glut32.lib”)程序需要调用的DLLOpengl32.dllGlu32.dllGlut32.dll程序代码:Demo129/38本章内容总结流行的3D图形库OpenGLDirect3DOpenGLAPI的特点GLUT工具包Glut32.dllGlut32.libGlut.hGlut函数30/38

1 / 30
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功