IDirect3DDevice9::Clear

为了渲染并显示一个场景,此步骤中示例代码的做法是:清除后备缓冲,并设置为蓝色,将后备缓冲中的内容提交到前台缓冲中,最后将前台缓冲呈现给屏幕。

为了清除一个场景,需要调用IDirect3DDevice9::Clear方法。

//  Clear the back buffer to a blue color
g_pd3dDevice -> Clear(  0 , NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB( 0 , 0 , 255 ),  1.0f 0  );

IDirect3DDevice9::Clear的前两个参数,告知Direct3D所要清除一系列矩形的大小和地址。这些矩形描述了那些在渲染目标表面的,即将被清除的区域。

大多数情况下,你仅仅使用一个覆盖整个渲染目标的矩形。为了达到这个目的,需要将第一个参数设置为0,同时第二个参数设置为NULL。第三个参数决定了此方法的行为。你可以指定不同的标志位,从而来清理渲染目标表面,关联的深度缓冲,模板缓冲,或者是他们三者的任意组合。这个指南并没有使用深度缓冲,所以D3DCLEAR_TARGET是唯一使用了的标志位。最后三个参数分别对应渲染目标,深度缓冲以及模板缓冲清理后的预设数值。CreateDevice示例工程将渲染目标的清理颜色设置为蓝色(D3DCOLOR_XRGB(0,0,255))。最后两个参数会被忽略掉,因为没有设置相应的标志位。

在清理之后,CreateDevice示例工程告知Direct3D可以开始进行渲染,之后它发出信号表示渲染已经完成。代码如下:

//  Begin the scene.
g_pd3dDevice -> BeginScene();

//  Rendering of scene objects happens here.

//  End the scene.
g_pd3dDevice -> EndScene();

IDirect3DDevice9::BeginScene和IDirect3DDevice9::EndScene方法用来通知系统渲染何时开始,何时完成。你可以在这两个方法之间调用其它渲染方法。如果某个渲染方法失败,你应该在再次调用BeginScene之前调用EndScene方法。

在渲染场景之后,你需要调用IDirect3DDevice9::Present方法来显示它。

g_pd3dDevice -> Present( NULL, NULL, NULL, NULL );

前两个参数分别代表了源矩形和目标矩形。由于此示例中是将整个后备缓冲提交到前台缓冲中,所以这两个参数设置为NULL。第三个参数用来设置接受呈现的目标窗口。由于这个参数被设置为NULL,则会默认使用D3DPRESENT_PARAMETERS中的hWndDeviceWindow成员所代表的窗口。第四个参数代表了“脏矩形区域”,在大多数情况下都应该设置为NULL。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值