自己动手写游戏引擎二(D3D游戏场景)

这一节课,我们要做一个D3D的开发环境出来,基于VC++6.0/DirectX9

我们需要的头文件和库文件d3d9.h d3d9.lib

 

首先,开发之前,我们要了解两个东西(具体意义,参考SDK帮助文件)

IDirect3D9* pIDirect3D9;//D3D接口对象

IDirect3DDevice9* pIDirect3DDevice9;//D3D设备

我们创建D3D开发环境的目的,就是要把上面这两个东西创建出来。

以后的开发中,pIDirect3DDevice9到处都用得到。

 

创建D3D设备创建的步骤:

步骤1:创建接口对象

步骤2:显示属性的设置

步骤3:设备功能检测

步骤4:创建D3D设备

 

分析:

步骤2显示属性的设置,全屏模式和窗口模式有差别,要分别处理

步骤3我们采用HAL硬件抽象层。进行检测选择,选择硬件,软件渲染的方式

步骤2和步3为步骤4 D3D设备的创建做准备

 

流程如下:

pIDirect3D9=Direct3DCreate9(D3D_SDK_VERSION);

 

D3DDISPLAYMODe d3ddm;

pIDirect3D9->GetAdapterDisplayMode(D3DADAPTER_DEFAULT,&d3ddm);

D3DPRESENT_PARAMETERS d3dpp;

ZeroMemory(&d3dpp,sizeof(d3dpp));

If(bFullScreen)

{

   //填充d3dpp结构体(具体细节参考SDK帮助)

}

else

{

   //填充d3dpp结构体(具体细节参考SDK帮助)

}

 

pIDirect3D9->GetDeviceCaps(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,&d3dcaps)

if(d3dcaps.DevCaps&实际功能)

{

   bHardware=true;

}

else

{

  bHardware=false;

}

 

 

If(bHardware)

{

   pIDirect3D9->CreateDevice(D3DADAPTER_DEFAULT,

D3DDEVTYPE_HAL,

hWnd,

D3DCREATE_HARDWARE_VERTEXPROCESSING,

&d3dpp,

&pIDirect3DDevice9);

}

else

{

  pIDirect3D9->CreateDevice(D3DADAPTER_DEFAULT,

D3DDEVTYPE_HAL,

hWnd,

D3DCREATE_SOFTWARE_VERTEXPROCESSING,

&d3dpp,

&pIDirect3DDevice9);

}

到此,我们需要的两个东西D3D接口对象和D3D设备就都创建出来了,我们的D3D场景初始化也完成了

谁都知道,重复的代码谁都不喜欢写,因为那费时又有点无聊,呵呵,为了方便以后我们开发的使用,我们对D3D的初始化同样做了封装,上面的讲的所有的功能细节,都有我们的类去完成,你只要调用时设定几个参数,一切就OK了。

最后,你以后只需要写下面几行代码,就可以完成D3D设备的初始化,并创建出一个你想要的窗口。

CEngineApp EngineApp;

CEngineFrame EngineFrame;

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

EngineFrame.CreateD3DFrame(EngineApp.GetWndHwnd(),800,600,false);

如果你想要一个全屏的窗口,只要把最后一行的false改为true就可以了,细节的东西,就交给我们的类去实现了

是不是很简单

我们CEngineFrame类功能很强大的,我们后边会一步步填加一些功能,去完善它!

效果预览

呵呵,效果看起来和第一课一样,但这个窗口已经是D3D初始化后的窗口了,在这个窗口中,你可以创造出很奇妙的东西,我们慢慢来,不着急!

 

今天是周末,快十点了,要休息一下了,过我的私生活……

明天有时间,我们继续下一课,开始做图了哦,顶点渲染,到时候你会看到用D3D做出来的空间图形!

 

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

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

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

我的邮箱Ysong.Lee@hotmail.com

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值