预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共13页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

5、创建一个空白的OpenGL程序框架 NeHeSDK是把Nehe的教程中所介绍的所有功能,以面向对象的形式,提供给编程人员快速开发的一套编程接口。在下面的教程中,我将按NeHeSDK源码的功能分类,一步一步把这套api介绍给大家。如果你觉得有更好的学习方法,或者有其他有益的建议,请联系我。zhouwei02@mails.tsinghua.edu.cn,zhouwei506@mails.gucas.ac.cn 我在第四课的基础上,把公共的功能提取出来,并删除了特定的绘制函数,就完成了这个空白的程序框架,它可以使用基本的OpenGL绘制命令,并提供视口,文本,纹理类的接口,实用他们可以快速创建你想要的效果。 这个框架分为两个部分,启用main.cpp文件完成创建窗口,提供必需的全局变量和执行程序循环等固定的功能。在以后的演示程序中一般不在改变。draw.cpp文件完成具体的绘制操作,它随你的应用而变化。 main.cpp的所有功能在前面的课程中都详细讲解过,这里只是把整个程序结构在说明一下,让你有一个清晰的认识。下面是它的七大结构 头文件和全局变量 Windows主函数 根据用户设置配置OpenGL的窗口 创建OpenGL运行的窗口,并返回窗口的句柄 设置绘制字体的参数 程序循环 退出程序 我们一一介绍如下: 1、头文件和全局变量 #include"opengl.h" //包含创建OpenGL程序的框架类 #include"splash.h" //创建配置对话框 #include"view.h" //包含视口类的声明 #include"text.h" //包含2D文字类的声明 #include"texture.h" //包含纹理类的声明 #pragmacomment(lib,"NeheSDK.lib") //包含NeheSDK.lib库 usingnamespaceNeHe; //使用NeHe名字空间 View view; //创建视口类 Text2D text2D; //2D文字类 Texture tex; //使用全局变量Texture类的实例 int texID; //使用全局变量texID,保存加载的纹理ID 2、Windows主函数 intWINAPIWinMain(HINSTANCEhInstance,//程序实例句柄 HINSTANCEhPrevInstance,//前一个程序实例句柄 LPSTRlpCmdLine,//命令行参数 intnCmdShow)//Window显示状态 { OpenGLWinOpenGL; //OpenGL类 3、根据用户设置配置OpenGL的窗口 /******************************************************根据用户设置配置OpenGL的窗口********************************************************/ //显示配置对话框 SplashResolution res; //记录分辨率 SplashDepth depth; //记录颜色深度 bool fs; //是否全屏 if(!DoSplash("setup.cfg",&res,&depth,&fs)) return1; intwidth,height; //窗口的大小 intbpp; //颜色位深 //设置分辨率 switch(res) { casesr640x480: width=640; height=480;break; casesr800x600: width=800; height=600;break; casesr1024x768: width=1024; height=768;break; default: width=800;height=600; }; //设置颜色位深 switch(depth) { casesd8bit: bpp=8; break; casesd16bit: bpp=16; break; casesd32bit: bpp=32; break; default: bpp=32; }; //设置是否全屏 WinOpenGL.SetFullScreen((fs==true)?true:false); /*****************************************************根据用户设置配置OpenGL的窗口