direct3dDirect3D研究院之创建第一个DX3D项目(一)

数码快讯 2020-05-2252未知admin

  创建项目完成后,先不要着急创建文件,让我们先对进行一下设置,这是至关重要的,很多情况下出现的错误就是因为配置错误造成的,特别是对于初学者。

  再打开的属性配置窗口中,选择“VC++目录”选项,然后将DirectX SDK的“包含目录”(Include)以及“库目录”(Lib)添加进去。然后在“链接器”-“输入”选项的“附加依赖项”中添加d3d9.lib,这样我们的基本属性就配置完成了,点击“确定”退出属性配置窗口。

  D3DPRESENT_PARAMETERS结构体定义了Direct3D设备的信息,在对相关参数进行赋值之前,先将所有参数归零处理,不然,有可能造成创建Direct3D设备失败。D3DPRESENT_PARAMETERS中信息有很多,在此我们只是用其中三个:Windowed = true,表示已窗口模式显示;SwapEffect指定系统如何将后台缓冲区的内容提交到前台,SwapEffect = D3DSWAPEFFECT_DISCARD,表示后台缓冲区的内容提交到前台后,清除后台缓冲区内容;BackBufferFort指后台缓冲区像素格式,BackBufferFort = D3DFMT_UNKNOWN,表示后台缓冲区像素格式和当前使用的显卡的像素格式是相同的。

  Direct3D对象的CreateDevice方法,创建了Direct3D设备,第一个参数表示使用哪一块显卡,一般情况下为D3DADAPTER_DEFAULT,使用当前显卡;第二个参数表示Direct3D的设备类型,在此我们将其设置为硬件抽象层D3DDEVTYPE_HAL;第三个参数就是方法传入的窗口句柄;第四个参数为Direct3D设备的行为标志,在此选择D3DCREATE_SOFTWARE_VERTEXPROCESSING,表示由Direct3D软件进行顶点运算;第五和第六个参数分别为指向d3arams的指针和Direct3D设备指针的地址。

  此方法主要是Direct3D资源,因为不管Direct3D对象还是Direct3D设备对象都是COM对象,所以,在此必须调用Release方法,使COM对象的引用计数-1。并且,必须先Direct3D设备对象,再Direct3D对象(因为Direct3D设备对象是通过Direct3D对象创建的)。

  从Render()方法中我们可以看出,Direct3D设备对象是一切Direct 3D图形绘制的基础。

  首先Clear方法,作用是清空后台缓冲区,其中参数分别为:count,表示pRect参数的矩形的数量,如果pRect为NULL,则count必须为0,如果pRect是有效的指针,则count必须不为0;pRect存储着需要清空的矩形区域;Flags参数表示要清空的缓冲区,此处设置为D3DCLEAR_TARGET,表示清空颜色缓冲区;Color参数表示以什么颜色填充清空后的缓冲区的每个像素的颜色;Z参数表示清空深度缓冲区(ZBUFFER)后每个像素的深度值;Stencil表示清空模板缓冲区后每个像素的模板值。

  BeginScene()方法,必须在进行图形渲染之前调用此方法,而在图形渲染结束后,必须调用EndScene()方法,并且,两者必须成对出现。

  Render的最后一个方法Present方法,是将在后台渲染的东西翻转到前台,这样就完成了图形渲染的过程。其中Present的第一个参数,表示后台源矩形指针,一般为NULL,direct3d表示整个后台区域;第二个参数表示前台目标矩形指针,一般为NULL,表示整个前台区域;第三个参数表示当前渲染图形的窗口句柄,一般情况为NULL;第四个参数为最小更新区域指针,一般为NULL。并且,在InitD3D方法中的D3DPRESENT_PARAMETERS结构的SwapEffect参数的值不是D3DSWAPEFFECT_COPY的时候,Present的第一、二、四个参数必须为NULL。

  在这里使用方法PeekMessage,而不使用GetMessage方法,因为GetMessage会在此等待,直至有消息到来,PeekMessage在没有消息时会直接返回,这样,我们的Render方法就在系统空闲之时得以运行(着对于我们的游戏至关重要,direct3d谨记)。

  至此,我们的第一个Direct3D项目就结束了,其中了很多东西,需要仔细研究。

  希望此文能对刚刚学习Direct3D编程的朋友有所帮助,当然,如有不足之处还请指出,我们共同学习进步。direct3d

原文标题:direct3dDirect3D研究院之创建第一个DX3D项目(一) 网址:http://www.lhyq.net/shumakuaixun/2020/0522/90481.html

Copyright © 2010-2020 落花有情 版权所有  

联系QQ:1352848661