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

матрица нужна, чтобы определить местоположение объекта в 3D-npo-странстве. Однако в Direct3D может существовать одновременно только одна глобальная матрица. Поэтому методу Render () приходится выполнять следующие действия:

1.    Сохранить ранее использовавшуюся глобальную матрицу.

2.    Выбрать глобальную матрицу объекта класса d3d_point_mass как используемую в данный момент.

3.    Выполнить рендеринг модели объекта класса d3d_point_mass.

4.    Восстановить ранее использовавшуюся глобальную матрицу, сохраненную в шаге 1.

С помощью этих шагов метод Render () позиционирует объект в ЗБ-пространстве и выполняет рендеринг этого объекта, не повреждая ранее использовавшуюся глобальную матрицу. Если бы метод Render () не сохранял и не восстанавливал ранее использовавшуюся матрицу, то перемещение, примененное к объекту класса d3d_point_mass, применялось бы и к объектам, рендеринг которых выполнялся бы после рендеринга этого объекта. Результаты были бы как минимум нежелательными.

В листинге 7.4 показано, что метод Render () класса d3d_point_mass последовательно выполняет перечисленные в списке выше действия. Сначала объявляется временная переменная для хранения ранее использовавшейся глобальной матрицы. Затем с помощью функции Direct3D GetTransform() глобальная матрица сохраняется в этой переменной. В строках 11-12 матрица, хранящаяся в объекте класса d3d_point_mass, выбирается в качестве глобальной. Затем выполняется рендеринг - для этого в строке 16 вызывается метод d3d_mesh: : Render (). В строках 19-21 восстанавливается ранее использовавшаяся глобальная матрица.

Применение класса d3d_point_mass

Итак, теперь у нас есть готовый к применению класс d3d_point_mass. Давайте используем его в программе. Но прежде чем мы это сделаем, я хочу немного поговорить об освещении в Direct3D. Мы воспользуемся некоторыми возможностями Direct3D по моделированию освещения, чтобы получить в примере программы реалистично выглядящий шар.

ВКЛЮЧЕНИЕ МОДЕЛИРОВАНИЯ ОСВЕЩЕНИЯ В DIRECT3D

Игре можно заметно добавить реалистичности, используя возможности моделирования освещения, присутствующие в Direct3D. Мы могли бы глубоко погрузиться в обсуждение поведения света в природе и моделирования этого поведения в Direct3D. Но мы не будем этого делать. Хоть свет и физическое явление, он не рассматривается в данной книге. Мы занимаемся созданием реалистично ведущих себя, а не красиво выглядящих объектов.

Новости
Авторы Max Payne раскритиковали крупные игры
Глава по коммуникации студии Remedy Томас Пуха заявил, что в нынешних реалиях игрового рынка его команде пришлось реорганизовать производство.
Ubisoft выпустит эксклюзивную фигурку Father’s Calling
Компания Ubisoft сообщила, что коллекционная фигурка Father’s Calling, представляющая собой лидера организации «Врата Эдема» из Far Cry 5, поступит в продажу 22 марта 2018 года по цене 3999 рублей.