こんにちは最近、垂直帰線を厳密に待つ必要がある同期部分をプログラミングしていました。そこで、これを行うために特権命令を使用しました: _inp(0x3DA) & 0x08. ただし、この手順は特権が必要であり、私の古い XP コンピュータで正しく機能するには、port95NT.exe をインストールする必要があります。Win7 になると、ランタイム警告が発生して実行できなくなり、64 ビット システムに port95NT.exe をインストールすることもできません。それで、64ビットWin7の垂直帰線で新しいフレームの開始を検出する他のアイデアを持っている人はいますか?
2 に答える
Microsoft は、開発者がこのようなハードウェア レベルの操作をいじる必要がないように、DirectX のような API を設計しました。最新の Windows バージョンでは、そのハードウェア ポートに直接アクセスする方法がなくなっている可能性があります。
WaitForVerticalBlank()
ツールキットが利用可能な場合は、DirectDraw API から試すことができます。Direct3D を使用している場合は、垂直同期の直後まで更新を強制的に待機させるD3DPRESENT_INTERVAL_ONE
ことができます。Present()
まず第一に、最新のフラットパネルはそのように機能します。各ピクセルは定期的に更新する必要があります。行/列ストローブと垂直リフレッシュ レートがあります。CRTS の場合のように実際に「空白にする」ことはありませんが、行/列の値が元に戻される垂直リトレースがあります。ダブル (またはトリプル) バッファリング システムの場合、フレームのティアリングを避けるために、この間隔でバッファを交換する必要があります。さらに、すべてのプロフェッショナル ビデオ アプリケーションは、スムーズなフレーム切り替えを提供するため、またはカメラやその他のスタジオ ギアとの「ガンロック」のために、フレーム同期する必要があります。