嗨,最近我正在编写一个严格要求等待垂直回扫的同步部分。所以我使用了特权指令来执行此操作:_inp(0x3DA) & 0x08。但是,这个指令是特权的,需要安装 port95NT.exe 才能在我的旧 XP 计算机上正常工作。现在谈到Win7时,出现运行时警告以阻止我执行,我也不能在64位系统上安装port95NT.exe。所以有人有其他想法来检测 64 位 Win7 上垂直回溯中新帧的开始吗?
问问题
499 次
2 回答
3
微软设计了 DirectX 之类的 API,这样开发人员就不必像这样搞乱硬件级别的操作了。现代 Windows 版本可能不再有任何方法可以直接访问该硬件端口。
如果您有可用的工具包,您可以尝试WaitForVerticalBlank()
使用 DirectDraw API。如果您使用的是 Direct3D,您可以尝试D3DPRESENT_INTERVAL_ONE
强制Present()
更新等到垂直同步之后。
于 2012-07-31T20:53:15.690 回答
0
首先,现代平板确实是这样工作的。每个像素必须定期刷新。有一个行/列频闪和一个垂直刷新率。尽管没有像 CRTS 那样实际“消隐”,但有一个垂直回溯,其中行/列值返回到原点。对于双(或三)缓冲系统,必须在此间隔期间交换缓冲区以避免帧撕裂。此外,所有专业视频应用程序都必须进行帧同步,以提供平滑的帧切换,或者用于与摄像机和其他演播室设备的“枪锁”。
于 2013-05-30T18:37:02.480 回答