Предисловие
Кто бы мог подумать:
трехмерный синтез с наложением текстур в
реальном времени на компьютере PC стоимостью в
$1000! Такое стало возможным благодаря сочетанию
невероятного роста вычислительной мощности
процессоров с изощрениями разработчиков пакетов
трехмерного синтеза, и, вероятно, отчасти
благодаря появлению дешевых акселераторов
трехмерной графики (хотя и без них, на <чистом>
процессоре можно добиться превосходных
результатов). Остается сущий пустяк - реализовать
этот потенциал. Помимо самых разнообразных
программных библиотек для работы с трехмерной
графикой, рынок PC прямо-таки завален аппаратными
ЗО-акселераторами. Несчастные разработчики игр,
у которых и так хватало головной боли с
совместимостью для всех обычных видеокарт,
заведомо не смогут угнаться за дьявольской
фантазией производителей ЗО-акселераторов.
Однако на сцене появляется
Direct3D. Пакет выполняет функции посредника:
он объединяет схожие
возможности различных аппаратных средств в
едином API. Кроме того, Direct3D содержит собственный,
вполне достойный механизм трехмерной
визуализации (rendering). Отныне вам, разработчику игр
(а может быть, дизайнеру САПР или <воскресному>
программисту), остается лишь вызвать несколько
простых функций, чтобы на экране, как по
волшебству, заплясали трехмерные фигуры.
И все же без ложки дегтя
дело не обходится - исходный вариант Direct3D
проектировался в расчете на старый добрый язык С,
а правоверные программисты нашего времени
предпочитают объектно-ориентированный стиль
популярного C++. В сущности, первое, что пытается
сделать любой квалифицированный программист на
C++, когда он сталкивается с новым API на языке С, -
это создать классы-оболочки на C++.
Итак, мы сталкиваемся с
двумя серьезными проблемами. В наши дни
программисту приходится не столько писать свой
собственный код, сколько думать о том, какую
системную функцию следует вызвать. Кроме того,
программисты желают <завернуть> API на языке С в
<покрывало> C++. Познакомьтесь с Найджелом
Томпсоном. Он решил за вас обе проблемы. С
использованием его библиотеки, написанной на C++,
вы сможете легко создавать изображения, для
которых бы иначе потребовался убийственный
объем кода на С с <сырыми> вызовами Direct3D.
Вы, читатель этой книги,
выигрываете во многих отношениях. Вы знакомитесь
с трехмерной графикой и можете работать с ней из
C++. Direct3D позволяет создавать картинки независимо
от того, какую комбинацию программных/аппаратных
средств для трехмерной графики вы установили у
себя на этой неделе. Отныне следует
сосредоточить свое внимание на том, что
рисовать, а не на том, как это делать. Найджел,
впрочем, тоже выигрывает, поскольку вы купили его
книгу. И я выигрываю тоже - я люблю игры, а теперь
можно надеяться на появление новых хороших
игрушек. Так что принимайтесь за дело!
Джим Блинн, специалист по
компьютерной графике, Microsoft
Далее... |