Windows の典型的なアーキテクチャは、OS ライブラリではなくメイン ループを制御できるため、Mac とは異なります。CVDisplayLink に相当するものは必要ありません (ただし、API が優れていれば、特定の情報をそれほど知る必要はありません)。これを達成するために)。
無限にスピンするループを使用している場合は、ループの最後で vsync を待っても問題ありません。複数のウィンドウがある場合は、すべてのレンダリングが送信された後、「メイン更新ループ」が vsync を待って終了するように、それに応じてレンダリングをスケジュールする必要があります。
通常、私は次のようなものを持っています:
while(!toldToQuit)
{
Render();
Update();
WaitForVsync();
}
これにより、(次のフレームの) 更新のための CPU 作業が、レンダリングのための GPU 作業と並行して発生することができます...
SwapBuffers( HDC ) は、ドライバーがデフォルトの動作として vsync を持っている場合、vsync を待ちます。そうでない場合、vsync を設定するための wgl 拡張機能があります - wglSwapIntervalEXT( int ):
http://www.opengl.org/registry/specs/EXT/wgl_swap_control.txt
私が常に「非 vsyncing」を達成する方法は、単一のバッファリングをレンダリングし、SwapBuffers を呼び出さないことです... wglSwapIntervalEXT( 0 ) は、テストしたどのハードウェアでもこれを達成しないためです。