Так и должно быть.Сообщение от Maximus_G
Если при 100Гц (10мс/кадр) рендеринг занимает 11мс, то значит через 10мс (на момент обновления) кадр еще не готов, и он пропускается (отображается тот же кадр, что и в предыдущий раз).
Если у тебя двойная буферизация, то через 11мс кадр уже готов, но отображается предыдущий, а этот, готовый, будет отображаться только через 20мс от начала его рендеринга (т.е. через одно обновление). Итого, пропускается ровно один кадр.
Через 20 мс (т.е. после 2 рефрешей) новый кадр отобразится, и предыдущий будет свободен для рендеринга очередного (третьего) кадра, и ситуация повториться, т.к. он, скорее всего тоже не успеет отрендериться за 10мс (соседние кадры, как правило, строятся на одной или на похожих сценах).
Если ему выставить тройную буферизацию, то ситуация изменится:
1. Первый кадр (1) отображается на экране, пока рендериться следующий (2).
2. Через 10мс наступает рефреш, но след. кадр (2) еще не готов. По-этому отображается опять кадр (1).
3. Через 11мс (1мс после рефреша) кадр (2) готов. Кадр (1) отображается на мониторе, кадр (3) - свободен. Запоминаем кадр (2) и начинаем рендерить кадр (3). Допустим, он будет обсчитываться тоже 11мс.
4. Имейте в виду, что в этот момент отображается все еще кадр (1), а физический движок уверен, что обсчитывает кадр (3), т.е. картинка на экране отстает на 20мс от положения вещей в физическом пространстве
5. Через 20мс кадр (2) уже готов, кадр (3) обсчитывается (и будет обсчитываться еще 2мс). Отображаем кадр (2), и кадр (1) (который висел все это время) уже свободен для рассчета.
6. Через 22мс кадр (3) готов, отображется кадр (2) и кадр (1)- свободен. Начинаем рендерить кадр (1) - четвертый по счету кадр от начала.
7. Через 30мс кадр (3) готов, и начинает отображаться. Кадр (2)- освобождается для рендеринга, кадр (1)- рендерится (и бедут рассчитываться еще 3мс).
И т.д.
Как видим, в первом случае четвертый кадр №3 последовательности отображается через 40мс (4 кадра) от начала последовательности, ФПС падают вдвое (дублируется каждый второй кадр, в нашем примере с 11мс на осчет кадра и 10мс на смену кадра на мониторе).
Во втором случае- на том же железе кадр №3 последовательности отображается через 30мс от начала последовательности, ФПС падают на 10% (дублируется каждый 10 кадр).
Если отключить верт. синхронизацию, то кадр №3 последовательности отображается через 22мс от начала последовательности, ФПС соответствует возможностям железа.
По-идее "prerender limit" в nVidia должен отвечать именно за количество доступных буфферов в режиме вертикальной синхронизации. Чем больше это количество, тем "глаже" ступеньки ФПС.
Средний ФПС растет, но падает интерактивность (картинка отстает от физики на эти самые "prerender limit" кадров), что при низком (меньше 30) ФПС дает нам более 100мс задержки.
Но в хелпе РиваТюнера указано, что это количество кадров, которые готовит процессор видеокарточке, а не видеокарточка- монитору. Надеюсь, там ошибка.




Ответить с цитированием