所以,我在窗口应用程序中使用 D3D。
我使用以下参数启动了 D3D:
windowed: true;
backbufferformat: D3DFMT_X8R8G8B8;
presentinterval: D3DPRESENT_INTERVAL_ONE;
swapeffect: DISCARD
每次调用 OnPaint 时,我都会将图像渲染到后缓冲区并将其呈现到前面。
据我所知(MSDN 也是这么说的),一旦我设置了D3DPRESENT_INTERVAL_ONE
,vsync 就可以工作了。
但在这种情况下,水平拖动时图像会撕裂。
(似乎图像上有一条线,线下方的图像显示在监视器上,然后是上面的部分。)
一些网站说 D3DPRESENT_INTERVAL_ONE 在窗口应用程序中不起作用。
无论如何,我怎样才能启用垂直同步?
ps 我终于发现 D3D vsync 是启用的,而有些窗口设置不正确,可能是窗口本身没有同步。不过,我还没有查看设置。