Частота обновления OpenGL в Qt 4 - PullRequest
2 голосов
/ 13 декабря 2010

Я разрабатываю приложение в Qt 4.7, которое использует OpenGL. Я знаю, updateGL () должен быть вызван, чтобы обновить представление, делая обмен из буфера, но как часто это должно быть сделано? Это должно быть сделано как можно чаще, потому что я показываю анимацию (то есть без статических изображений).
Я знаю, что наибольшая скорость (fps) будет кратна обновлению монитора. Давайте предположим, что вертикальное обновление монитора, если 50 Гц. updateGL () следует вызывать максимум каждые 20 мс.
Что произойдет, если updateGL () 'займет более 20 мсек?
Там будет любая проблема, если я вызову updateGL () каждые, скажем, 1 мс? (то есть переполнение стека очередями updateGL () события вызова?

1 Ответ

5 голосов
/ 13 декабря 2010

Своп обычно ожидает vsync, поэтому вы можете вызывать его так часто, как захотите, вы не будете получать сдвиги или артефакты (если вы беспокоитесь).

В отношении событий Qt, либо используйтеQTimer, установленный на fast (он молча отбрасывает события, если они не обрабатываются достаточно быстро, то есть не наращивают очередь событий), или вы можете опубликовать событие перерисовки в конце updateGL, по сути вызывая себя.

Последнее может вас не устраивать, но это аккуратный способ обеспечить, чтобы ваша петля рисования работала как можно быстрее, но не быстрее.;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...