2012-06-12 67 views
1

我一直在使用顶点着色器和像素着色器(非常基本的)在Win7下开发DirectX9视频捕获显示应用程序。然而,正在显示的图像显示出一些撕裂,总是在屏幕上的相同位置。该规范是以下水平撕裂DirectX9

  • 视频正在通过一个网络摄像头
  • 显示器是不是在全屏模式下拍摄
  • 屏幕的刷新率是60Hz
  • D3DPRESENT_INTERVAL_ONE被用来迫使一个良好的刷新率(在一些论坛上发现,没有工作,虽然)

我试图修改此最后一个参数的所有可用才知道原来D3DPRESENT_INTERVAL_ONE给我一个一致的(总是在屏幕上的相同位置)撕裂。我知道“启用”V-Sync可能可以解决我的问题,但我似乎无法在网上找到任何有关此信息(是的,我知道,DirectX9已经过时了),所以任何帮助将会是非常感激!

回答

1

使用D3DPRESENT_INTERVAL_DEFAULT如果它不给你撕裂。

该标志还启用了V-sync。从技术文档:

D3DPRESENT_INTERVAL_DEFAULT使用默认的系统计时器的分辨率 而D3DPRESENT_INTERVAL_ONE调用timeBeginPeriod以增强 系统计时器的分辨率。这提高了垂直同步的质量,但是消耗的处理时间稍微多一点。这两个参数都会尝试 垂直同步。