DXGI_SWAP_EFFECT 详解

Options for handling pixels in a display surface after calling IDXGISwapChain1::Present1.

ENUM valuepresentation modeMSAA supportbuffer countoperation on buffer after present
DISCARDbitblt (bit block transfer)true1, if buffer count is greater than 1, only first buffer is useddiscard
SEQUENTIALbitbltfalse>1persist
FLIP_SEQUENTIALflipfalse>1persist
FLIP_DISCARDflipfalse, also doesn’t support partial rendering1discard

说明

  • 当使用 DXGI_SWAP_EFFECT_FLIP_SEQUENTIALDXGI_SWAP_EFFECT_SEQUENTIAL ,又希望支持 MSAA ,必须使用另外一个单独的 Render Target ,在该目标上进行 MSAA 渲染,并将结果通过 ResolveSubresourceSwap ChainBack Buffer 里。

  • DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL 性能最好,且支持的特性较多。

  • 尽管 flip 模式有一些优势,某些应用仍然会选择 bitblt 模式。因为 bitblt 模式是混合 GDIDirectX 展示的唯一方法。

IDXGISwapChain::Present

SyncInterval

对于 bitblt 模式(包括 DXGI_SWAP_EFFECT_DISCARD , DXGI_SWAP_EFFECT_SEQUENTIAL ),可选值如下:

0 不做同步,立即显示。
1-4 在 1-4 个 vertical blank 后同步显示。

对于 flip 模式(包括 DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL ),可选值如下:

0 取消前一个展示帧的剩余时间;如果队列中还有新的帧,丢弃当前帧。
1-4 在 1-4 个 vertical blank 后同步显示。

Flip presentation model queue

Suppose the following frames with sync-interval values are queued from oldest (A) to newest (E) before you call Present.

A: 3, B: 0, C: 0, D: 1, E: 0

When you call Present, the runtime shows frame A for only 1 vertical blank interval. The runtime terminates frame A early because of the sync interval 0 in frame B. Then the runtime shows frame D for 1 vertical blank interval, and then frame E until you submit a new presentation. The runtime discards frames B and C.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值