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

Объявив нужные ей переменные, функция lnitD3D() создает объект Direct3D. Если объект успешно создается, то в строках 18-21 листинга 2.4 задаются параметры экрана. Если вы хотите более тщательно настраивать эти параметры, добавьте private-элементы данных в класс d3d_app. Добавьте в функцию InitApp () этого класса параметры, которые позволят вам присваивать значения новым элементам данных при вызове функции InitAppO. Затем перепишите код в строках 18-21 так, чтобы в структуру помещались значения этих элементов данных, и используйте эти значения для задания параметров экрана.

Затем функция InitD3D() пытается создать устройство Direct3D. Сначала она пытается использовать HAL в строках 27-30. Если это не удается, то она пытается использовать программную эмуляцию в строках 34-40.

Платформа делает несколько попыток инициализации, прежде чем сдаться. Это важно. Direct3D позволяет использовать аппаратные вершинные процессоры. Если в компьютере пользователя установлена видеокарта, возраст которой более трек лет, она, вероятно, не содержит вершинных процессоров. Если бы платформа не пыталась использовать программную обработку вершин, многие пользователи не смогли бы играть в вашу игру.

Создав устройство Direct3D, функция InitD3D () отключает отсечение невидимых поверхностей. Отсечение невидимых поверхностей означает, что Direct3D игнорирует полигоны, нормальные векторы которых указывают в направлении от точки наблюдения. Хотя отсечение и ускоряет обработку, оно может помешать получить нужное изображение. Это еще один момент, из-за которого вы, возможно, захотите добавить дополнительные возможности настройки. Их можно добавить тем же описанным выше способом, что и возможности настройки экрана, то есть добавить private-элементы данных в класс d3d_app, проинициализировать их в функции InitAppO и обратиться к этим элементам данных в строках 51-53.

В строке 57 функция InitD3D () отключает возможности Direct3D по моделированию освещения. Это делается потому, что в примерах программ из нескольких последующих глав эти возможности не используются. Позже я продемонстрирую процесс добавления возможностей настройки. Мы создадим возможность включать и выключать возможности моделирования освещения при вызовах функции InitApp ().

ИНИЦИАЛИЗАЦИЯ ИГРЫ

Если вы посмотрите на функцию AppMain () (листинг 2.3), то увидите, что она вызывает функцию InitD3D (), а затем позволяет игре выполнить дополнительную инициализацию. Для этого вызывается функция PostD3DI-nitialization О . Эту функцию должна предоставлять ваша игра.

Функция PostD3DInitialization() может выполнять все, что вы посчитаете нужным. Например, она может выводить заставку с названием и эмблемой издателя. Эта функция также может отображать основное меню игры, чтобы позволить игроку начать новую игру или загрузить ранее сохраненную.



Новости
Разработчики Theme Hospital создают новую игру Two Point Hospital
Осенью должен состояться выход нового игрового проекта Two Point Hospital, над которым работают создатели симулятора Theme Hospital.
Геймеры собирают деньги на помощь русским сиротам
Сервис Humble Store и компания Tripwire Interactive поддержат организацию Change30. Британцы предоставляют помощь русским сиротам.