Тройная буферизация является действительно бесплатным повышением производительности?

Таким образом, я читал много о openGL и gpus и графике в целом, и тройная буферизация получасто упоминается как предоставление бесплатного повышения производительности. Я знаю, почему это помогает; в действительности можно сделать v-синхронизацию, не будучи ограниченным framerate выбором 60 или 30 или 20 или 15 или и т.д., таким образом, можно на самом деле достигнуть, скажем, 55 футов в секунду. Но есть ли на самом деле стоимость для этого? Интуитивно, я ожидал бы трижды буферизовать для задержки произведенный одним кадром, добавляя очень маленькую задержку ко всему.

9
задан amara 16 August 2019 в 21:04
поделиться

2 ответа

При 55 кадрах в секунду один кадр немного меньше 20 мс. Так что это не совсем бесплатно, но почти всегда стоит своих денег.

Однако при 15 кадрах в секунду это может быть довольно заметно. (Кстати, это POS-ноутбук. Большинство 3D-игр у меня работают примерно так же быстро. Некоторые даже медленнее.)

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

6
ответ дан 2 November 2019 в 23:59
поделиться

Цитата из превосходной книги «Рендеринг в реальном времени» ( http://www.realtimerendering.com/ ) Акенин-Мёллер и других, стр. 835, что в значительной степени суммирует то, что вы уже предложили в ответе на свой вопрос, учитывая задержку:

«Тройная буферизация имеет одно важное преимущество перед двойной буферизацией. это система может получить доступ к ожидающему буферу, ожидая вертикального ретрейс. При двойной буферизации своп может остановить графический конвейер. [...] недостатком тройной буферизации является то, что задержка увеличивается до одного целого Рамка. Это увеличение задерживает реакцию на вводимые пользователем данные, такие как нажатия клавиш. и мышь или джойстик перемещаются. "

6
ответ дан 2 November 2019 в 23:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: