水平撕裂DirectX9

时间:2012-06-12 16:16:48

标签: c++ image video directx

我一直在尝试使用顶点着色器和像素着色器(非常基本的)在Win7下使用DirectX9开发视频捕获显示应用程序。但是,正在显示的图像显示出一些撕裂,始终位于屏幕上的相同位置。规格如下

  • 正在通过网络摄像头捕获视频
  • 显示屏未处于全屏模式
  • 屏幕刷新率为60Hz
  • D3DPRESENT_INTERVAL_ONE用于强制刷新率(在某些论坛上找不到,但不起作用)

我尝试用所有可用的方法修改最后一个参数只是为了意识到D3DPRESENT_INTERVAL_ONE给了我一个一致的(总是在屏幕上的同一位置)撕裂。

我知道“启用”V-Sync可以解决我的问题,但我似乎无法在网上找到任何关于此的信息(是的,我知道,DirectX9已经过时了),所以任何帮助都会非常理解!

1 个答案:

答案 0 :(得分:1)

如果不能让你撕裂,请使用D3DPRESENT_INTERVAL_DEFAULT

此标志还启用V-sync。来自文档:

  

D3DPRESENT_INTERVAL_DEFAULT使用默认的系统计时器分辨率   而D3DPRESENT_INTERVAL_ONE则调用timeBeginPeriod进行增强   系统计时器分辨率这提高了垂直同步的质量,   但消耗的处理时间略长。两个参数都试图   垂直同步。