В Direct3D 11 отсутствует GetRasterStatus, как определить период пустого изображения по вертикали?

Я обновляю приложение, в котором измерение времени представления стимула на экране требует наибольшей точности. В настоящее время он написан с помощью DirectDraw, который давно был выпущен на пастбище, и есть необходимость обновить нашу графическую библиотеку.

Способ, которым мы измеряем время презентации, использует определение конца периода вертикального пустого поля. В частности, мне нужно знать с максимально возможной точностью, когда все, что было перевернуто на первичную поверхность (или представленное в цепочке обмена), на самом деле отображается экраном. Обнаружение линии сканирования может повысить достоверность этого измерения, но я мог бы работать, только обнаруживая, когда вертикальный пустой период закончился сразу после вызова Flip or Present.

Direct 3D 9 имеет IDirect3DDevice9: : Метод GetRasterStatus , который возвращает структуру D3DRASTER_STATUS, которая включает логическое значение InVBlank,который описывает, находится ли устройство в вертикальном пустом месте, а также текущую строку сканирования. DirectDraw имеет аналогичные функции ( IDirectDraw :: GetVerticalBlankStatus , также IDirectDraw :: GetScanLine, который возвращает DDERR_VERTICALBLANKINPROGRESS во время вертикального пробела, может использоваться для обнаружения VB).

Однако мне не удалось найти подобную функцию в Direct3D11. Кто-нибудь знает, была ли эта функция перемещена или удалена между Direct3D9 и Direct3D11, и если последнее, то почему?

11
задан Rob 12 July 2011 в 21:30
поделиться