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

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








Новости
В PUBG вышла новая карта «Санок»
Bluehole не один месяц тестировала третью карту для PUBG, и сегодня тропическая миниатюрная карта «Санок» наконец-то вышла на общих серверах.
В Warface добавили режим «Королевская битва 2.0»
В Warface разработчики добавили режим «Королевская битва 2.0». Старая версия доработана, количество игроков увеличено с 16 до 32.