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



Новости
Авторы Just Cause показали новый трейлер Generation Zero
Avalanche Studios представила новый трейлер Generation Zero и объявила, что закрытое бета-тестирование пройдёт этой осенью (записаться можно на официальном сайте).
Возможно, SEGA отказалась от защиты Denuvo в переиздании Shenmue I II
Ранее издательство SEGA, разместив в Steam информацию о переиздании Shenmue I & II, указало, что проект будет оснащаться защитой Denuvo.