http://blog.csdn.net/loveclover

第二步:初始化Direct3D

当窗口被创建以后,CreateDevice示例工程通过在WinMain中调用InitD3D自定义函数,展示了Direct3D的初始化过程。当你创建好一个应用程序窗口之后,你就已经准备好初始化用来渲染场景的那些Direct3D对象了。这个过程包括:创建对象,设置显示参数(presentation parameters)最终创建Direct3D设备。

在创建一个Direct3D对象之后,使用IDirect3D9::CreateDevice方法来创建一个设备,并且用来枚举设备,类型,模式等等。

if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
    
return E_FAIL;

需要传递给Direct3DCreate9函数的唯一参数总应该是D3D_SDK_VERSION。这样可以通知Direct3D包含了正确的头文件。它的值是不断递增的,一旦头文件或者其它发生改变都需要重新生成应用程序。如果版本不匹配,Direct3DCreate9函数调用将会失败。

通过填充D3DPRESENT_PARAMETERS的各个字段,你可以指定你的3D应用程序的各种行为。CreateDevice示例工程设置Windowed字段为TRUE,SwapEffect字段为D3DSWAPEFFECT_DESCARD,BackBufferFormat字段为D3DFMT_UNKNOWN。

D3DPRESENT_PARAMETERS d3dpp; 
ZeroMemory( 
&d3dpp, sizeof(d3dpp) );
d3dpp.Windowed 
= TRUE;
d3dpp.SwapEffect 
= D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat 
= D3DFMT_UNKNOWN;

最后一步使用IDirect3D9::CreateDevice方法来创建Direct3D设备,如下所示:

if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
                                  D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                                  
&d3dpp, &g_pd3dDevice ) ) )

前面的代码片段使用D3DADAPTER_DEFAULT标志,表示使用默认的显示适配器(显卡)来创建设备。在大多数情况下,系统仅仅有一块显示适配器,除非安装有多块显卡。指定DeviceType字段为D3DDEVTYPE_HAL,表明你要使用硬件设备而不是软件设备。这段代码使用D3DCREATE_SOFTWARE_VERTEXPROCESSING来告诉系统使用软件顶点处理。请注意这里,如果你使用D3DCREATE_HARDWARE_VERTEXPROCESSING来告知系统使用硬件顶点处理,你将在那些能够支持硬件顶点处理的显卡上获得很大的性能提升。

到现在为止,Direct3D已经被初始化了,下一步是要确保你有一种机制来处理系统消息。详见第三步:处理系统消息。

posted on 2008-02-28 17:02 Sure 阅读(715) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
<2008年2月>
272829303112
3456789
10111213141516
17181920212223
2425262728291
2345678

导航

统计

常用链接

留言簿(5)

随笔分类

随笔档案

相册

搜索

最新评论

阅读排行榜

评论排行榜