На компакт-диске можно найти файлы, определяющие все основные структуры данных, используемых в игре, и необходимые классы для работы с ними.

Информацию о структуре файлов данных для игры Quake можно найти по следующему адресу:

www.gamers.org/dEngine/quake/spec/quake-spec34/qkmenu.htm

Упражнения

1. Модифицируйте программу wolf4.cpp, добавив в нее работу со спрайтами и под держку сразу нескольких текстур.

2. Модифицируйте файл doom4.cpp, добавив в него текстурирование горизонтальных поверхностей и поддержку спрайтов (их следует брать из wad-файла).

3. Напишите процедуру текстурирования произвольной выпуклой грани, используя один из интерполяционых методов. При этом считается, что для каждой вершины грани заданы ее текстурные координаты. Процедура должна поддерживать использование mip-mapping.

4. На основе классов для работы с pak-файлом напишите программы для показа уровня игры. С этой целью потребуется изменить класс SBuffer, убрав оттуда сравнения отрезков, поскольку все грани будут поступать в порядке front-to-back. Класс SBuffer должен поддерживать вывод в него произвольных (не обязательно выпуклых) граней и вывод текстурированных отрезков в z-буфер.

Приложение ВЫЧИСЛЕНИЯ С ФИКСИРОВАННОЙ ТОЧКОЙ

Несмотря на все преимущества вычислений с плавающей точкой (большой диапазон представимых величин, легкость использования)? в ряде случаев использование вычислений с плавающей точкой нежелательно. Основные причины этого заключаются в том, что, во-первых, не на всех процессорах вычисления с плавающей точкой реализованы достаточно эффективно и, во-вторых, преобразования между целыми и вещественными числами занимают слишком мною времени. Если первый недостаток для ряда современных процессоров (Pentium, Pentium II, PowerPC) преодолен, то второй недостаток все еще остается в силе. Поэтому для получения достаточно высокого быстродействия в ряде случаев целесообразно заменить часть операций с вещественными числами на работу с целыми числами. Причем желательно, чтобы можно было по-прежнему работать с дробными числами.


⇐ Предыдущая| |Следующая ⇒