The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Релиз Mesa 24.0, свободной реализации OpenGL и Vulkan "
Отправлено Аноним, 02-Фев-24 18:40 
> Вот это "фиксированное время" для расчёта кадра не с потолка ведь берётся.

Берётся достаточно большим, чтобы обсчитать больше, но достаточно малым, чтобы чаще обновлять сцену (например, интерполированное положение движущегося объекта), чтобы игрок не замечал дискретного шага времени. Обычно это 30 Гц. Связь с частотой монитора косвенная: оба пытаются подстроиться под "частоту обновления" человеческого глаза (24-25 Гц). Такая же как с видеороликами с частотой 25-30 Гц для экономии места с почти незаметным глазу падением качества в движении.

Физическая подсистема (особенно, если это специализированная, модульная библиотека) выполняется в отдельном потоке (thread) от обработки вывода и ввода. Она, когда нужно, снимает состояние ввода на момент и/или обрабатывает очередь накопленных событий. Графическая подсистема обновляется на основе состояния сцены, также на момент, также в одностороннем порядке. Когда игрок увидит готовый кадр, тот уже может сильно отличаться от реального (времени) состояния мира. (Поэтому видеовывод требует большей частоты обновления.) Связь между подсистемами косвенная, на уровне планировщика потоков ОС.
Из-за этого многие данные в подсистемах дублируются. Например, при обсчете столкновений используется не настоящая геометрия, а заранее подготовленные на её основе геометрические коллайдеры. Не только для скорости, но из-за разницы времени выполнения и архитектур (CPU/GPU).

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

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру