资源预览内容
第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
第9页 / 共13页
第10页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
5、创建一个空白的OpenGL程序框架NeHe SDK是把Nehe的教程中所介绍的所有功能,以面向对象的形式,提供给编程人员快速开发的一套编程接口。在下面的教程中,我将按NeHe SDK源码的功能分类,一步一步把这套api介绍给大家。如果你觉得有更好的学习方法,或者有其他有益的建议,请联系我。zhouwei02mails.tsinghua.edu.cn,zhouwei506mails.gucas.ac.cn我在第四课的基础上,把公共的功能提取出来,并删除了特定的绘制函数,就完成了这个空白的程序框架,它可以使用基本的OpenGL绘制命令,并提供视口,文本,纹理类的接口,实用他们可以快速创建你想要的效果。这个框架分为两个部分,启用main.cpp文件完成创建窗口,提供必需的全局变量和执行程序循环等固定的功能。在以后的演示程序中一般不在改变。draw.cpp文件完成具体的绘制操作,它随你的应用而变化。main.cpp的所有功能在前面的课程中都详细讲解过,这里只是把整个程序结构在说明一下,让你有一个清晰的认识。下面是它的七大结构1. 头文件和全局变量 2. Windows主函数 3. 根据用户设置配置OpenGL的窗口 4. 创建OpenGL运行的窗口,并返回窗口的句柄 5. 设置绘制字体的参数 6. 程序循环 7. 退出程序 我们一一介绍如下:1、头文件和全局变量#include opengl.h/ 包含创建OpenGL程序的框架类#include splash.h/ 创建配置对话框#include view.h/ 包含视口类的声明#include text.h/ 包含2D文字类的声明#include texture.h/ 包含纹理类的声明#pragma comment( lib, NeheSDK.lib )/ 包含NeheSDK.lib库using namespace NeHe;/ 使用NeHe名字空间Viewview;/ 创建视口类Text2Dtext2D;/ 2D文字类Texturetex;/ 使用全局变量Texture类的实例inttexID;/ 使用全局变量texID,保存加载的纹理ID2、Windows主函数int WINAPI WinMain(HINSTANCE hInstance, / 程序实例句柄 HINSTANCE hPrevInstance, / 前一个程序实例句柄 LPSTR lpCmdLine, / 命令行参数 int nCmdShow) / Window 显示状态OpenGL WinOpenGL;/ OpenGL类3、根据用户设置配置OpenGL的窗口/*根据用户设置配置OpenGL的窗口*/ 显示配置对话框 SplashResolutionres;/ 记录分辨率SplashDepthdepth;/ 记录颜色深度boolfs;/ 是否全屏 if(!DoSplash(setup.cfg,&res,&depth,&fs)return 1;int width,height;/ 窗口的大小int bpp;/ 颜色位深/ 设置分辨率switch(res)case sr640x480:width=640;height=480; break;case sr800x600:width=800;height=600; break;case sr1024x768:width=1024; height=768; break;default:width=800; height=600;/ 设置颜色位深switch(depth)case sd8bit:bpp=8;break;case sd16bit:bpp=16;break;case sd32bit:bpp=32;break;default:bpp=32;/ 设置是否全屏WinOpenGL.SetFullScreen(fs=true) ? true : false); /*根据用户设置配置OpenGL的窗口:结束*/4、创建OpenGL运行的窗口,并返回窗口的句柄/*创建OpenGL运行的窗口,并返回窗口的句柄*/ 创建我们的OpenGL窗口if (!WinOpenGL.CreateGLWindow(DancingWinds OpenGL Framework, width, height, bpp, WinOpenGL.GetFullScreen()return 0; / 失败,则退出/ 返回窗口类Window *win=WinOpenGL.GetWindow();/*创建OpenGL运行的窗口,并返回窗口的句柄:结束*/5、设置绘制字体的参数/*设置绘制字体的参数*/TextType ttype;/ 设置字体结构ttype.name=Courier New;/ 字体名称为Courier Newttype.size=24;/ 字体大小为24ttype.bold=false;/ 不使用粗体ttype.italic=false;/ 不使用斜体ttype.underline=false;/ 不使用下划线text2D.Setup(&WinOpenGL,ttype);/ 设置字体/*设置绘制字体的参数:结束*/6、程序循环/*程序循环*/bool finish=false;/ 执行程序循环while(!finish)/ 绘制场景finish=!WinOpenGL.DrawGLScene();/ 按ESC退出if(!finish)finish=win-GetKey(VK_ESCAPE);/*程序循环:结束*/7、退出程序/*退出程序*/ / 关闭 WinOpenGL.KillGLWindow(); return 0; / 退出程序/*退出程序:结束*/到这里框架结构就完成了,下面我们进入到draw.cpp文件中。这个文件主要完成你特定功能的绘制操作,为了以后的演示方便,我们定义了一些默认函数,当你熟悉了以后,完全可以使用自己的函数替代这些功能简单的“玩具函数:)”。它主要提供了绘制函数的接口,完成以下四个功能:1. 头文件和全局变量 2. 绘制三棱锥 3. 初始化场景 4. 设置默认的视口棱台体 5. 绘制场景 我们一一介绍如下:1、头文件和全局变量#include opengl.h/ 包含创建OpenGL程序的框架类#include view.h/ 包含视口类的声明#include text.h/ 包含2D文字类的声明#include texture.h/ 包含纹理类的声明#pragma comment( lib, NeheSDK.lib )/ 包含NeheSDK.lib库using namespace NeHe;/ 使用NeHe名字空间extern Viewview;/ 使用全局变量View类的实例extern Text2Dtext2D;/ 使用全局变量Text2D类实例extern Texturetex;/ 使用全局变量Texture类的实例extern inttexID;/ 使用全局变
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号