Конгер Д.
Физика для разработчиков компьютерных игр
стр. 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. Но мы не будем этого делать. Хоть свет и физическое явление, он не рассматривается в данной книге. Мы занимаемся созданием реалистично ведущих себя, а не красиво выглядящих объектов.

Новости
Авторы Just Cause показали новый трейлер Generation Zero
Avalanche Studios представила новый трейлер Generation Zero и объявила, что закрытое бета-тестирование пройдёт этой осенью (записаться можно на официальном сайте).
Возможно, SEGA отказалась от защиты Denuvo в переиздании Shenmue I II
Ранее издательство SEGA, разместив в Steam информацию о переиздании Shenmue I & II, указало, что проект будет оснащаться защитой Denuvo.