IDirect3DDevice9::Present函数

使用:Device->Present(0, 0, 0, 0);

作用:Swapthe back and front buffers.交换后台缓存和前台缓存,并提交到渲染管道,将后台缓存内容渲染出来。

详解:

HRESULT Present(

// 参数1: NULL值是全部的后台缓存矩形表面,若D3DPRESENT_PARAMETERS的SwapEffect为D3DSWAPEFFECT_COPY,则可不为NULL。

// 如果指定的矩形表面,大于后台缓存矩形表面,那么将会被后台缓存表面裁剪为后台缓存表面大小。

  [in]  const RECT *pSourceRect,

// 参数2:NULL值指定整个前台缓存表面,非空条件和矩形区域超过前台缓存表面,类似上述后台缓存表面。

  [in]  const RECT *pDestRect,

// 参数3:指定渲染目标窗口的句柄,如果NULL,则是D3DPRESENT_PARAMETERS的指定的hDeviceWindow指定的窗口。

  [in]  HWND hDestWindowOverride,
// 参数4:指定需要拷贝的后台缓存表面的大小和数据,一般是NULL,如果D3DPRESENT_PARAMETERS的SwapEffect为D3DSWAPEFFECT_COPY,那么可以不为空,设计//来仅仅是用于优化用,而实际中一般都是拷贝全部后台缓存表面像素数据到前台缓存渲染出来。
  [in]  const RGNDATA *pDirtyRegion
);
返回值:
Possible return values include: D3D_OK or D3DERR_DEVICEREMOVED (see D3DERR).
注意:不能在BeginSceneEndScene中使用。

Present will fail, returning D3DERR_INVALIDCALL, if called betweenBeginScene and EndScene pairs unless the render target is not the currentrender target (such as the back buffer you get from creating an additional swapchain). This is a new behavior for Direct3D 9.

拓展:

D3DPRESENT_PARAMETERS指定的是后台缓存和前台缓存的图形表面的参数,也就是交换链的参数。

类似窗口的::UpdateWindow(hwnd);是真正的发送消息更新渲染屏幕;  而不是::ShowWindow(hwnd, SW_SHOW),因它只是设置目标窗口对象的状态。

参考自:

http://msdn.microsoft.com/en-us/library/windows/desktop/bb174423(v=vs.85).aspx

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值