delphi实例10--深入OpenGL游戏开发.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
delphi实例10--深入OpenGL游戏开发

实例十 用OpenGL实现星空闪电图 【程序说明】 实例九实现的OpenGL星体没有什么使用功能,而本例的星空闪电图则有一定的实用价值,因为不仅实现了背景贴图和声音资源的播放,还实现在背景上加载了一个OpenGL几何实体。随着闪电的不断旋转,背景和闪电的颜色都不断忽明忽暗地变化着,很有星空闪电的效果。本例程序运行结果如图10-1所示。 图10-1 用OpenGL实现星空闪电图 【编程思路】 本例同实例九不一样的地方就是它是完全在Delphi环境下实现的。因此,我们可以从这个实例中一步一步地学会如何在Delphi环境下创建一个声影具备的OpenGL动画游戏。下面是这个实例的一些关键技术。 1、在控制台环境下创建自定义的窗口。 2、Delpi环境下OpenGL初始环境设置。 3、用OpenGL技术绘制场景和闪电。 4、背景贴图技术。 5、声音媒体的播放。 这些技术的具体实现请参考后面的代码部分。 【编程步骤】. 1.按照前面介绍的方法,新建一个控制台应用程序。 2.编写代码 (1)在控制台环境下创建自定义的窗口,并根据具体情况初始化OpenGL设备环境。 function glCreateWnd(Width, Height : Integer; Fullscreen : Boolean; PixelDepth : Integer) : Boolean; var wndClass : TWndClass; // 窗口类型 dwStyle : DWORD; // 窗口风格 dwExStyle : DWORD; // 窗口扩张风格 dmScreenSettings : DEVMODE; // 屏幕设置 PixelFormat : GLuint; // OpenGL渲染设置 h_Instance : HINST; // 当前实例 pfd : TPIXELFORMATDESCRIPTOR; //OpenGL窗口相关设置 ResHandle : THandle; //声音资源句柄 begin …………(创建一个窗口,详细代码见光盘) //设置OpenGL窗口 with pfd do begin nSize:= SizeOf(TPIXELFORMATDESCRIPTOR); nVersion := 1; dwFlags:= PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER; iPixelType := PFD_TYPE_RGBA; // RGBA颜色格式 cColorBits := PixelDepth; // OpenGL颜色深度 cDepthBits := 16; // 指定深度缓冲区的深度 iLayerType := PFD_MAIN_PLANE; end; PixelFormat := ChoosePixelFormat(h_DC, @pfd); //设置刚才设置的象素格式 if (PixelFormat = 0) then begin glKillWnd(Fullscreen); MessageBox(0, 不能找到一个合适的象素格式!, 错误, MB_OK or MB_ICONERROR); Result := False; Exit; end; //设置象素格式 if (not SetPixelFormat(h_DC, PixelFormat, @pfd)) then begin glKillWnd(Fullscreen); MessageBox(0, 不能设置象素格式, 错误, MB_OK or MB_ICONERROR); Result := False; Exit; end; //创建一个OpenGL 渲染环境 h_RC := wglCreateContext(h_DC); if (h_RC = 0) then begin glKillWnd(Fullscreen); MessageBox(0, 不能创建一个OpenGL 渲染环境, 错误, MB_OK or MB_ICONERROR);

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档