Конгер Д.
Физика для разработчиков компьютерных игр
стр. 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 (). Чтобы вам не пришлось писать ее самому, эта функция включена

Новости
Антивирусы и облачные сервисы портят сохранения Dark Souls Remastered
Вчера комьюнити-менеджер Bandai Namco под ником Izmar подтвердил проблему в Steam, посоветовав ограничить доступ антивирусов и других программ вроде облачных сервисов Google и Amazon к файлам ремастера Dark Souls.
Facebook анонсировала новую игровую платформу с интерактивными видео
«Facebook анонсировала несколько новых функций видеотрансляций, которые позволят пользователям сделать свои прямые трансляции похожими на игры с опросами и викторинами», — отмечает The Verge.