自己动手写游戏引擎一(Windows窗口框架)

来源:互联网 发布:台湾人 大陆网络发达 编辑:程序博客网 时间:2024/04/30 12:59

 

前言:

以前做的东西写的代码现在回头看有些会觉得“凌乱”,这段刚好有时间, 想把以前的基础的东西整理一下,顺便写这个简单的DirectX入门教程。

这个教程,我们只讲流程,关于一些细节的东西,概念,函数参数的意义等,不了解得地方,在SDK帮助或者搜索引擎搜一下很容易得到答案

由于知识水平有限,写得很可能有不准确的地方,请指出,我一定会做合理的修改。

在这个教程中,我们会一步一步的做一个简单的“游戏引擎”,呵呵,这里我们就把称为游戏引擎,跟ORGENeL相比我们的确很幼稚,它只是个“玩具”,但它确实能为我们的游戏开发初学者,提供方便,越往后,越是大的东西越能感觉出它的便利。最后,我们再利用我们的引擎,做几个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);

 

熟悉了窗口生成的流程,我们就可以方便的封装一个窗口类了,方便我们的使用。

这跟MFCAPI的封装是一个道理

其实,每个人,都可以按照自己的想法,需要,进行切合实际的封装!

类具体实现就是调用基本的API也很简单,呵呵,看源代码了,代码注释还是挺详细的!

然后,用下面两行代码,调用我们自己封装的类,就可以生成Window窗口

使用方式:

CEngineApp EngineApp;

EngineApp.CreateWnd("Lesson1",hInstance,nShowCmd);

效果预览

呵呵,代码真的只有两行,是不是很方便!

第一课结束了,很轻松简单,我们在此基础上一步步的,构件我们自己的引擎。

再高的摩天大楼,都是从地基开始的嘛.

下一课程,我们会介绍创建D3D场景的方法,当然,也是做了一个简单的封装,到时候,你可以随意创建出你想要的D3D的窗口,任意大小,全屏也可以哦

 

如果您要使用我写的东西,我很高兴请写明出处就可以,也尊重一下作者的劳动成果嘛

您愿意使用我的引擎代码,可以联系我,我发给您。

如果您对引擎的修改有建议,通知我,我很高兴!

我的邮箱Ysong.Lee@hotmail.com

 

 

原创粉丝点击