Конгер Д.
Физика для разработчиков компьютерных игр
стр. 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 () сохраняет ранее использовавшуюся глобальную матрицу и задает свою. Затем выполняется рендеринг сетчатой модели в заданной позиции, а после этого восстанавливается ранее сохраненная глобальная матрица.






Новости
Вышел новый тизер Project Melies от разработчиков Layers of Fear
Bloober Team и Gun Media представили новый тизер хоррора Project Melies, посвящённого немому кино.
В популярной игре спрятали кошелек с деньгами
Как написал Криси в своем блоге на Hackernoon, пароль от кошелька был разделен на две части и спрятан на две разные планеты виртуальной вселенной No Man’s Sky.