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

Каждый раз, создавая объект класса d3d_mesh (и, соответственно, объект класса roesh_data), игра должна инициализировать данные в объекте mesh_data значениями 0 или NULL. Эту инициализацию выполняет конструктор класса roesh_data. Кроме того, конструктор присваивает элементу referenceCount значение 1, поскольку, если объект класса mesh_data создается, то к нему обращается как минимум один объект d3d_mesh.

Единственная функция, которая должна будет записывать данные в модель в этой программе, — это метод d3d_mesh: :Load(). В этой реализации данные в модели не изменяются в ходе работы программы. Это утверждение может не соответствовать истине в некоторых играх. Например, можно загрузить плоскую модель участка местности с данными

о текстурах и материалах, а затем создать на этом участке холмы и впадины, изменяя координаты у отдельных вертексов. В этом случае программа должна предоставлять доступ к отдельным вертексам. В нашем примере такая возможность не нужна, и мы ее не предоставляем.

При удалении объекта класса mesh_data вызывается деструктор, приведенный в строках 11-35 листинга 6.5. Деструктор выполняет операции, рассмотренные ранее в разделе «Очистка сетчатой модели». Сначала он удаляет массив материалов. Вспомните, что это массив структур, которые можно просто освободить. С другой стороны, текстуры хранятся в массиве указателей на COM-объекты. Поэтому деструктору приходится просматривать весь массив и вызывать функцию COM Release () для каждого элемента этого массива. Это делает цикл, приведенный в строках 20-26 листинга 6.5. После освобождения всех структур деструктор удаляет их массив в строке 27. И, наконец, деструктор освобождает саму сетчатую модель.

Подсчет ссылок выполняют основной конструктор, конструктор копирования, деструктор и оператор присваивания в классе d3d_mesh. Их код приведен в листинге 6.6.








Новости
Gamescom 2018 стартует в августе
Крупнейшая ежегодная игровая конференция Gamescom 2018, посвященная компьютерным играм, пройдет с 21 по 25 августа 2018 года.
Spyro Reignited Trilogy будет включать две версии саундтрека трёх игр
В Spyro Reignited Trilogy игроки смогут выбирать саундтрек: оригинальный или современный, записанный специально для сборника.