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

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

ID:38580455

大小:113.00 KB

页数:6页

时间:2019-06-15

delphi实例10--深入OpenGL游戏开发_第1页
delphi实例10--深入OpenGL游戏开发_第2页
delphi实例10--深入OpenGL游戏开发_第3页
delphi实例10--深入OpenGL游戏开发_第4页
delphi实例10--深入OpenGL游戏开发_第5页
资源描述:

《delphi实例10--深入OpenGL游戏开发》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实例十用OpenGL实现星空闪电图【程序说明】实例九实现的OpenGL星体没有什么使用功能,而本例的星空闪电图则有一定的实用价值,因为不仅实现了背景贴图和声音资源的播放,还实现在背景上加载了一个OpenGL几何实体。随着闪电的不断旋转,背景和闪电的颜色都不断忽明忽暗地变化着,很有星空闪电的效果。本例程序运行结果如图10-1所示。图10-1用OpenGL实现星空闪电图【编程思路】本例同实例九不一样的地方就是它是完全在Delphi环境下实现的。因此,我们可以从这个实例中一步一步地学会如何在Delphi环境下创建一个声影具备的OpenGL动画游戏。下面是这个实例的一些关键技术。1、在控制台环境下

2、创建自定义的窗口。2、Delpi环境下OpenGL初始环境设置。3、用OpenGL技术绘制场景和闪电。4、背景贴图技术。5、声音媒体的播放。这些技术的具体实现请参考后面的代码部分。【编程步骤】.1.按照前面介绍的方法,新建一个控制台应用程序。2.编写代码(1)在控制台环境下创建自定义的窗口,并根据具体情况初始化OpenGL设备环境。functionglCreateWnd(Width,Height:Integer;Fullscreen:Boolean;PixelDepth:Integer):Boolean;varwndClass:TWndClass;//窗口类型dwStyle:DWORD;/

3、/窗口风格dwExStyle:DWORD;//窗口扩张风格dmScreenSettings:DEVMODE;//屏幕设置PixelFormat:GLuint;//OpenGL渲染设置h_Instance:HINST;//当前实例pfd:TPIXELFORMATDESCRIPTOR;//OpenGL窗口相关设置ResHandle:THandle;//声音资源句柄begin…………(创建一个窗口,详细代码见光盘)//设置OpenGL窗口withpfddobeginnSize:=SizeOf(TPIXELFORMATDESCRIPTOR);nVersion:=1;dwFlags:=PFD_DRA

4、W_TO_WINDOWorPFD_SUPPORT_OPENGLorPFD_DOUBLEBUFFER;iPixelType:=PFD_TYPE_RGBA;//RGBA颜色格式cColorBits:=PixelDepth;//OpenGL颜色深度cDepthBits:=16;//指定深度缓冲区的深度iLayerType:=PFD_MAIN_PLANE;end;PixelFormat:=ChoosePixelFormat(h_DC,@pfd);//设置刚才设置的象素格式if(PixelFormat=0)thenbeginglKillWnd(Fullscreen);MessageBox(0,'不能

5、找到一个合适的象素格式!','错误',MB_OKorMB_ICONERROR);Result:=False;Exit;end;//设置象素格式if(notSetPixelFormat(h_DC,PixelFormat,@pfd))thenbeginglKillWnd(Fullscreen);MessageBox(0,'不能设置象素格式','错误',MB_OKorMB_ICONERROR);Result:=False;Exit;end;//创建一个OpenGL渲染环境h_RC:=wglCreateContext(h_DC);if(h_RC=0)thenbeginglKillWnd(Fulls

6、creen);MessageBox(0,'不能创建一个OpenGL渲染环境','错误',MB_OKorMB_ICONERROR);Result:=False;Exit;end;//设置当前的设备环境if(notwglMakeCurrent(h_DC,h_RC))thenbeginglKillWnd(Fullscreen);MessageBox(0,'不能激活OpenGL渲染设备','错误',MB_OKorMB_ICONERROR);Result:=False;Exit;end;SetTimer(h_Wnd,FPS_TIMER,FPS_INTERVAL,nil);//初始化计算帧数的定时器R

7、esHandle:=FindResource(hInstance,'Electric','WAVE');//初始化声音设置,加载声音资源SndHandle:=LoadResource(hInstance,ResHandle);ShowWindow(h_Wnd,SW_SHOW);SetForegroundWindow(h_Wnd);//设置当前窗口一直保持在最前面SetFocus(h_Wnd);//保证窗口可以正确地缩放g

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。