Можно ли компенсировать синхронизацию Vsync Android на аппаратном уровне? - PullRequest
0 голосов
/ 26 июня 2018

Чтобы уточнить, я хотел бы компенсировать фактическое время, когда происходит следующее обновление экрана.

Я создаю многопользовательскую игру, в которой сервер отправляет пакеты клиентам с частотой 60 Гц, и я хотел бы, чтобы эти клиенты получили эти пакеты за пару мс до начала следующего кадра.

Я полагаю, что у каждого клиента время Vsync не синхронизировано относительно друг друга.Это может сделать игру более отзывчивой к некоторым игрокам, чем к другим, когда они имеют одинаковый пинг к серверу

Я использую Unity и разрабатываю для Android / iOS.К сожалению, мобильные платформы заставляют Vsync.Поэтому я надеюсь, что смещение Vsync является возможным решением.

Например, игнорирование всех проблем непредсказуемых задержек пинга и приложений, работающих с постоянной скоростью 60FPS:

Предположим, что пакеты прибывают ТОЧНО60 Гц клиенту A, и это происходит за 2 мс до начала кадра.Таким образом, clientA имеет пакет, готовый для обработки следующим кадром.

ClientB, который также принимает пакеты ТОЧНО 60 Гц, но для него он приходит через 2 мс ПОСЛЕ начала кадра.Это означает, что кадр уже запущен, поэтому ему нужно дождаться следующего кадра для обработки пакета.

Следовательно, clientB последовательно отстает от clientA на 16,6666 мс.

Если есть способ компенсировать Vsync на аппаратном уровне.Поскольку кадр clientB начинается за 2 мс до прибытия пакета, если мы можем сместить или задержать начало кадра на 4 мс.Затем пакет прибудет за 2 мс до начала кадра и будет готов к обработке к этому времени.Затем, конечно, следующий грядущий Vsyncs происходит в установленное время.

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

Заранее спасибо.

...