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

Если Windows успешно создает окно программы, функция AppMain () вызывает функцию PreD3DInitialization(). PreD3DInitializati-on () - это еще одна функция, которая нужна платформе, но должна быть предоставлена вашей игрой. Если в игре не будет функции PreD3DIniti-alization(), ее не удастся скомпилировать. Эта функция предоставляет игре возможность выполнить все операции, которые ей нужно выполнить до инициализации Direct3D. Функция возвращает TRUE, если она выполнилась успешно, и FALSE, если нет. Если вашей игре не нужно выполнять никаких действий, прежде чем инициализировать Direct3D, функция PreD3DInitialization() должна просто возвращать TRUE.

Далее функция AppMain () инициализирует Direct3D, вызывая функцию платформы InitD3D (). Эта функция рассматривается в следующем разделе. Если InitD3D() удается инициализировать Direct3D, она возвращает значение S_OK - стандартный код состояния в Windows. Если почему-либо инициализация не удается, InitD3D() возвращает значение E_FAIL - код ошибки в Windows.

Проинициализировав Direct3D, функция AppMain () вызывает функцию PostD3DInitialization (). Эту функцию тоже должна предоставлять игра. В ней можно выполнять любые нужные игре действия.

В строках 69-81 функция AppMain () выполняет стандартные для Windows-программ операции. Она отображает окно программы и запускает цикл обработки сообщений. Если сообщений, ожидающих обработки, нет, то функция AppMain () вызывает функцию UpdateFrame (). Именно в этой функции выполняются все операции, необходимые для рисования изображения. Собственно сцена рисуется вызовом функции Render () в строке 85 листинга 2.3. Эта функция вызывает функцию RenderFrame (), которую должна предоставлять игра.

ИНИЦИАЛИЗАЦИЯ DIRECT3D

Инициализацию Direct3D в платформе выполняет функция InitD3D (). Ее код приведен в листинге 2.4.

Листинг 2.4. Функция lnitD3D()

1    HRESULT InitD3D(HWND hWnd)

2    {

3    HRESULT hr = S_OK;

4    D3DPRESENT_PARAMETERS d3dpp;

5

6    // Создаем объект Direct3D.

7    if((theApp.direct3D    =

8    Direct3DCreate 9(D3D_SDKJVERSION))—NULL)

9    {

10    // Если объект не удалось создать...

11    hr = E_FAIL;

12    }



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