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

27

28    friend    INT WINAPI AppMain(

29    HINSTANCE hlnst,

30    HINSTANCE,

31    LPSTR,

32    INT);

33    friend    HRESULT InitD3D(

34    HWND hWnd);

35    friend    VOID CleanupD3D();

36    };_

В классе d3d_app есть private-элементы данных для приложения, окна и Direct3D. Например, в строке 5 листинга 2.1 объявлена переменная applnitialized. Значение этого элемента указывает, вызывалась ли функция InitAppO класса d3d_app. Эта переменная используется приложением. В строке 8 определена переменная WindowTitle, используемая окном приложения. В строках 11-14 определены переменные, используемые DirectX.

В листинге 2.1 также содержатся прототипы public-методов класса d3d_app (они начинаются со строки 17). Конструктор класса d3d_app приводит все элементы данных в известные состояния. Это необходимо для правильного функционирования объекта d3d_app. Функция InitAppO передает начальные значения из игры элементам данных объекта d3d_app.

В строке 22 определена функция D3DRenderingDevice () класса d3d_app. Эта функция получает указатель на устройство рендеринга Di-rect3D. Играм нужен этот указатель, чтобы использовать функциональность Direct3D. Большинство игр используют также вершинный буфер. В классе d3d_app есть переменная для хранения указателя на этот буфер и функции для чтения и изменения значения этой переменной. Прототипы этих функций содержатся в строках 24-26.

В строках 28-35 класс d3d_app содержит объявления функций AppMain (), Init3D() и Cleanup3D(), дружественных этому классу. Когда я читал курс программирования на C++ в колледже, я настоятельно рекомендовал избегать использовать дружественные функции, поскольку они подавляют инкапсуляцию объектов. Однако в этом случае дружественные функции необходимы, чтобы предоставлять интерфейс между платформой физического моделирования и функциями, которые нужны для работы программы в Windows.

Не нужно объявлять переменную типа d3d_app в вашей программе. Платформа уже делает это, объявляя переменную theApp. Эта переменная доступна во всех файлах .срр, в которые включен заголовочный файл PM3DApp.h.

ФУНКЦИИ WINMAINQ И APPMAINQ

В каждой программе для Windows должна присутствовать функция WinMain (). Чтобы вам не пришлось писать ее самому, эта функция включена

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