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

После уменьшения значения счетчика может оказаться, что к объекту класса mesh_data больше не обращается ни один объект класса d3d_roesh. Если это так, то оператор присваивания удаляет объект класса mesh_data в строках 25-28.

Затем оператор присваивания записывает в указатель meshData адрес объекта класса mesh_data, на который указывает указатель meshData в копируемом объекте. Это делается в строке 31. Кроме того, он увеличивает значение счетчика ссылок, поскольку к объекту класса mesh_data теперь обращается еще один объект класса d3d_mesh. Оператор присваивания завершается как обычно — возвращая копию объекта-получателя.

Единственная оставшаяся задача в подсчете ссылок - удаление объектов класса d3d_mesh. Деструктор этого класса приведен в строках 40-50. Когда удаляется объект класса d3d_mesh, он перестает обращаться к данным модели. Поэтому деструктор уменьшает значение счетчика обращений в строке 43. Если к объекту класса mesh_data больше нет обращений, этот объект тоже можно удалить. Деструктор класса mesh_data выполняет операции очистки, требуемые Direct3D.

Подсказка

Методика подсчета ссылок основана на подходе, описанном в статье 29 книги Scott Meyers «More Effective C++» (издательство Addison-Wesley).

Эта книга и связанная с ней книга «Effective C++» (те же автор и издательство) очень полезны всем программистам, работающим на языке C++. Прочитав их вы сможете заметно повысить уровень своих познаний в C++.

Итоги

На компакт-диске, поставляемом с книгой, есть пример программы, показывающий, как использовать класс d3d_mesh. Он находится в папке Source\Chapter06\MeshSpin. В программе используется сетчатая модель тигра, поставляемая в составе SDK DirectX. Готовя программу к компиляции, скопируйте файлы tiger.х и tiger.bmp из подпапки SDK Media в папку проекта. При работе программа должна отображать вращающуюся модель тигра на синем фоне.

Мы продвинулись от рендеринга простых объектов, состоящих из нескольких треугольников, до рендеринга сложных объектов, представленных сетчатыми моделями с текстурами. Научившись выполнять рендеринг сложных объектов, мы можем перейти к моделированию движения ЗБ-объектов.








Новости
Новый ролик Fallout 76 посвятили совместной работе
Компания Bethesda опубликовала новый ролик Fallout 76, продолжающий серию обучающих видео «Время приключений».
Battle for Azeroth: до 120-го уровня добрались за пять часов
Первый в мире игрок 120-го уровня появился уже через четыре с лишним часа после открытия аддона.