【发布时间】:2011-04-24 08:17:09
【问题描述】:
所以,我在窗口应用程序中使用 D3D。
我使用以下参数初始化 D3D:
windowed: true;
backbufferformat: D3DFMT_X8R8G8B8;
presentinterval: D3DPRESENT_INTERVAL_ONE;
swapeffect: DISCARD
每次调用 OnPaint 时,我都会将图像渲染到后台缓冲区并将其呈现到前面。
据我所知(MSDN 也是这么说的),一旦我设置了D3DPRESENT_INTERVAL_ONE,vsync 就会起作用。
但是在这种情况下,水平拖动时图像会撕裂。
(图中好像有一条线,线下方的图像显示在监视器上,然后是上面的部分。)
一些网站说 D3DPRESENT_INTERVAL_ONE 在窗口应用程序中不起作用。
我怎样才能启用垂直同步?
附言我终于发现 D3D vsync 已启用,而某些窗口设置不正确,可能是窗口本身未同步。不过,我还没有查看设置。
【问题讨论】:
-
你试过swapeffect:FLIP吗?
-
我按照你的建议试过了,但是没用..
-
TBH 我的理解一直是你不能垂直同步窗口渲染器。也许我错了,但有了这个假设,我从来没有失望过;)
-
您的目标是哪个 Windows 操作系统?
-
“窗口模式”和“全屏模式”是什么意思?没有模式,只有一系列要设置的标志。全屏只是一个没有装饰/边框的窗口,与整个屏幕大小相同。只需设置 D3DPRESENT_INTERVAL_ONE 即可使 vsync 工作。
标签: directx direct3d direct3d9 vsync