1) если вы хотите, чтобы ваше отображение отображалось только при возникновении vsync, используйте D3DPRESENT_INTERVAL_DEFAULT или D3DPRESENT_INTERVAL_ONE.
2), если вы хотите выполнить некоторую обработку, пока Present () ожидает vsync, вы можете использовать флаг D3DPRESENT_DONOTWAIT с IDirect3DSwapChain9 :: Present, он вернет D3DERR_WASSTILLDRAWING, если презентация (и vsync) еще не состоялась.Вы можете вызвать IDirect3DDevice9 :: GetSwapChain, чтобы получить цепочку обмена по умолчанию.
3) Вы также можете использовать IDirect3DDevice9 :: GetRasterStatus, чтобы определить, находится ли растр (строка сканирования) в области вертикальной синхронизации.Для этого требуется поддержка драйверов и аппаратного обеспечения, вы можете определить, поддерживает ли это ваш компьютер, проверив D3DCAPS9.Caps на наличие D3DCAPS_READ_SCANLINE.Все современное графическое оборудование, о котором я знаю, имеет такой предел, но оно также может зависеть от возраста / типа используемого монитора / телевизора.
Извлечено из: http://www.gamedev.net/topic/319407-wait-for-vsync/