ПРОГРАМИРУЕМ 3D ГРАФИКУ ИСПОЛЬЗУЯ DirectX

       

Кто бы мог подумать: трехмерный


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

Содержание раздела