自己动手写游戏引擎一(Windows窗口框架)
来源:互联网 发布:台湾人 大陆网络发达 编辑:程序博客网 时间:2024/04/30 12:59
前言:
以前做的东西写的代码现在回头看有些会觉得“凌乱”,这段刚好有时间, 想把以前的基础的东西整理一下,顺便写这个简单的DirectX入门教程。
这个教程,我们只讲流程,关于一些细节的东西,概念,函数参数的意义等,不了解得地方,在SDK帮助或者搜索引擎搜一下很容易得到答案
由于知识水平有限,写得很可能有不准确的地方,请指出,我一定会做合理的修改。
在这个教程中,我们会一步一步的做一个简单的“游戏引擎”,呵呵,这里我们就把称为游戏引擎,跟ORGE和NeL相比我们的确很幼稚,它只是个“玩具”,但它确实能为我们的游戏开发初学者,提供方便,越往后,越是大的东西越能感觉出它的便利。最后,我们再利用我们的引擎,做几个Demo出来,看看它的效果!
引擎包括以下主要功能:
游戏框架,场景管理模块
消息/数据输入的管理模块(键盘,鼠标,游戏杆)
顶点处理模块
纹理处理模块
光照,材质处理模块
Mesh数据处理与优化模块
独立的粒子系统模块
大规模室外地形渲染系统模块
环境特效模块:天空,烟雾,火焰,雨,雪,水等
声音处理模块
---------------------------------------------------------------------------------------------------------------------
现在就开始我们的第一课 Windows窗口框架
任何的游戏,都要在窗口中显示,我们就先来做一个窗口,以后的每一节,都会用到这个窗口的。
目标:很简单,完成一个通用的Window窗口,我们先不涉及任何D3D的东西,这样可以方便你理解Window窗口的通用设计模式
最后,我们自己封装一个窗口类,什么注册窗口类,创建窗口,显示窗口,设置窗口的消息处理函数,这些都由我们这个类搞定。以后再需要Window窗口的时候,只要写两行代码,没骗你,只有两行啊,就可以生成Windows窗口拉,呵呵,是不是很方便!
其实Window窗口的生成过程很简单,以下三步就可以搞定了
步骤1:注册窗口类(绑定消息处理函数)WNDCLASSEX
步骤2:创建窗口CreateWindow();
步骤3:更新和显示窗口
流程如下
WNDCLASSEX cs;
cs数据的填充(参考MSDN)
RegisterClassEx(&cs);
hWnd=CreateWindow(…参数参考MSDN…);
ShowWindow(m_hWnd,nCmdShow);
UpdateWindow(m_hWnd);
熟悉了窗口生成的流程,我们就可以方便的封装一个窗口类了,方便我们的使用。
这跟MFC都API的封装是一个道理
其实,每个人,都可以按照自己的想法,需要,进行切合实际的封装!
类具体实现就是调用基本的API也很简单,呵呵,看源代码了,代码注释还是挺详细的!
然后,用下面两行代码,调用我们自己封装的类,就可以生成Window窗口
使用方式:
CEngineApp EngineApp;
EngineApp.CreateWnd("Lesson1",hInstance,nShowCmd);
效果预览
呵呵,代码真的只有两行,是不是很方便!
第一课结束了,很轻松简单,我们在此基础上一步步的,构件我们自己的引擎。
再高的摩天大楼,都是从地基开始的嘛.
下一课程,我们会介绍创建D3D场景的方法,当然,也是做了一个简单的封装,到时候,你可以随意创建出你想要的D3D的窗口,任意大小,全屏也可以哦
如果您要使用我写的东西,我很高兴请写明出处就可以,也尊重一下作者的劳动成果嘛
您愿意使用我的引擎代码,可以联系我,我发给您。
如果您对引擎的修改有建议,通知我,我很高兴!
我的邮箱Ysong.Lee@hotmail.com
- 自己动手写游戏引擎一(Windows窗口框架)
- 自己动手写cocos2dx游戏引擎(一)——引擎入口
- 《自己动手写框架3》:业务流程引擎设计
- 自己动手写游戏引擎二(D3D游戏场景)
- 自己动手写cocos2dx游戏引擎(二)——applicationDidFinishLaunching
- 自己动手写cocos2dx游戏引擎(三)——Director对象
- 自己动手写cocos2dx游戏引擎(四)——窗体GLView
- 自己动手写cocos2dx游戏引擎(五)——渲染对象
- 自己动手写cocos2dx游戏引擎(八)——Node节点
- 自己动手写PHP框架(一)
- 自己动手写框架
- 自己动手写AJAX框架
- 自己动手写ajax框架
- 自己动手写MVC框架
- 自己动手写Struts框架
- 自己动手写注解框架
- 自己动手写正则表达式引擎
- 自己动手写ORM框架(一):目标效果预览
- Shock!!!
- 单元测试进行曲
- 不知道有没有必要写一个Javascript的算法库……
- JavaScript实用技巧集锦
- SQL中,怎么样自动生成表的更新脚本
- 自己动手写游戏引擎一(Windows窗口框架)
- 测试文章
- dtree在Struts应用实例--文件目录的便历和生成目录树
- 终结完整编
- 回忆
- 进销存系统数据库设计报告
- DbExpress drivers for MySQL V5.0
- Introduction To Alpha Blending
- 爱大免费课程