在win7中编程垂直回扫

programming vertical retrace in win7

本文关键字:垂直 编程 win7      更新时间:2023-10-16

嗨,最近我在编程一个同步部分,它严格要求等待垂直回扫。所以我使用了一条特权指令:_inp(0x3DA)&0x08。但是,此指令具有特权,需要安装port95NT.exe才能在我的旧XP计算机上正常工作。现在使用Win7时,会出现运行时警告以阻止我执行,而且我也不能在64位系统上安装port95NT.exe。那么,有人有其他想法来检测64位Win7上垂直回扫中新帧的开始吗?

Microsoft设计了DirectX等API,这样开发人员就不必像这样干扰硬件级别的操作。现代Windows版本可能无法再直接访问该硬件端口。

如果有可用的工具包,您可以从DirectDraw API尝试WaitForVerticalBlank()。如果使用的是Direct3D,则可以尝试D3DPRESENT_INTERVAL_ONEPresent(),以强制更新等待到垂直同步之后。

首先,现代平板电脑确实是这样工作的。每个像素必须定期刷新。有一个行/列选通和垂直刷新率。虽然没有像CRTS那样实际"消隐",但有一个垂直回扫,行/列值返回原点。对于双(或三)缓冲系统,在此间隔期间必须交换缓冲区,以避免帧撕裂。此外,所有专业视频应用程序都必须进行帧同步,以提供平滑的帧切换,或者与相机和其他工作室设备进行"枪战"。