Конгер Д.
Физика для разработчиков компьютерных игр
стр. 246

Рендеринг объекта класса d3d_rigid_body

Как и обновление объекта класса d3d_rigid_body, рендеринг выполняется двумя функциями. Первая из этих функций — RenderFrame (), вызываемая платформой. Код этой функции приведен в листинге 9.6.

Как видно из листинга 9.6, функция RenderFrame () заново задает матрицы отображения и проецирования при рендеринге каждого кадра. Вы вправе спросить, необходимо ли это.

Учитывая, что позиция наблюдения и видимая область остаются неизменными, ответ - нет. Для этого примера можно перенести вызовы функций в строках 4-11 в функцию Gamelnitialization ().

Тогда почему же они расположены здесь? Чтобы проиллюстрировать один момент. В большинстве игр матрицу отображения нужно обновлять при просчете каждого кадра, поскольку камера непрерывно движется в мире игры. Матрица проецирования тоже непрерывно изменяется. Если в вашей игре будет также, то обе матрицы нужно задавать заново при рендеринге каждого нового кадра. Их можно задавать в функции UpdateFra-me (), но это должно быть последним действием функции. Если программе нужно изменить их, это лучше делать здесь, в функции RenderFrame ().

Рендеринг тигра выполняет вызываемый функцией RenderFrame () метод d3d_rigid_body: : Render (), код которого приведен в листинге 9.7.

Как и для материальных точек, метод Render () для твердых тел гораздо проще, чем метод Update (). Метод Render () сохраняет ранее использовавшуюся глобальную матрицу и задает свою. Затем выполняется рендеринг сетчатой модели в заданной позиции, а после этого восстанавливается ранее сохраненная глобальная матрица.






Новости
Косплей Сенуя из Hellblade: Senua’s Sacrifice
Редакция Геймбокса не могла не поделиться с вами прекрасным отечественным косплеем на Сенуя из Hellblade: Senua's Sacrifice.
Bethesda подала в суд на Warner Bros. за Westworld
Как утверждает издание TMZ, компания Bethesda Softworks подала в суд на кинокомпанию Warner Bros. и студию Behaviour Interactive.