DirectDraw: можно ли заблокировать основную поверхность?

У меня есть устаревшая игра, в которой используется DirectDraw2, который рисует в два буфера: лицевую и тыльную, где лицевая сторона — это основная поверхность (на экране), а задняя часть — внеэкранный буфер.
Теперь в основном цикле он красиво блокирует передний буфер, делает его отрисовку назад и вперед, а затем снова разблокирует.
Тем не менее, в той же игре код главного меню просто держит передний буфер заблокированным все время.

После этих двух, казалось бы, противоречивых наблюдений у меня есть пара вопросов о блокировке и разблокировке, на которые не отвечают ни MSDN, ни Google.

  • Может ли видеокарта отображаться на мониторе, пока передний буфер заблокирован?
  • Если это возможно, есть ли преимущества для разблокировки снова; при условии, что мы не намерены выполнять какие-либо аппаратные блиты.
  • Что произойдет, если вы заблокируете во время обновления vsync? Это ждет, или вы просто получаете доступ к буферу?
  • От чего зависит «частота кадров», с точки зрения количества обновлений монитора. Это происходит каждый раз, когда вызывается разблокировка, или она просто соответствует частоте обновления экрана, независимо от нашей блокировки / разблокировки. В таком случае, мы получаем слезы?

Я думал, что это будет работать как Direct3D, где вы блокируете буфер вершин, но нужно разблокировать его, прежде чем графический процессор сможет работать с ним.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]