我一直在尝试使用顶点着色器和像素着色器(非常基本的)在 Win7 下使用 DirectX9 开发视频捕获显示应用程序。然而,正在显示的图像显示出一些撕裂,总是在屏幕上的同一位置。规范如下
- 正在通过网络摄像头拍摄视频
- 显示不是全屏模式
- 屏幕刷新率为 60Hz
- D3DPRESENT_INTERVAL_ONE 用于强制获得良好的刷新率(在某些论坛上找到,但不起作用)
我尝试用所有可用的参数修改最后一个参数,结果发现 D3DPRESENT_INTERVAL_ONE 给我一个一致的(总是在屏幕上的相同位置)撕裂。
我知道“启用”V-Sync 可能会解决我的问题,但我似乎无法在网上找到任何关于此的信息(是的,我知道,DirectX9 已经过时了),所以任何帮助都非常有用不胜感激!
最佳答案
如果不会出现撕裂现象,请使用 D3DPRESENT_INTERVAL_DEFAULT
。
此标志还启用垂直同步。来自文档:
D3DPRESENT_INTERVAL_DEFAULT uses the default system timer resolution whereas the D3DPRESENT_INTERVAL_ONE calls timeBeginPeriod to enhance system timer resolution. This improves the quality of vertical sync, but consumes slightly more processing time. Both parameters attempt to synchronize vertically.
关于c++ - 水平撕裂 DirectX9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11000627/