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



Новости
Финальный сезон The Walking Dead закончится в декабре
Создатели интерактивной драмы The Walking Dead из Telltale представили расписание выхода всех эпизодов финального сезона проекта.
Пользователи «ВКонтакте» могут официально поддержать Альянс или Орду
С 15 и до 29 августа каждый пользователь социальной сети может официально поддержать одну из двух противоборствующих сторон: Альянс или Орду.