Directx sdk что это

Обновлено: 05.07.2024

Введение

Эта книга представляет собой введение в программирование интерактивной трехмерной компьютерной графики с использованием DirectX 9.0, в котором основное ударение делается на разработку игр. Прочитав ее, вы изучите основы Direct3D, после чего сможете перейти к изучению и применению более сложных технологий. Раз вы держите в руках эту книгу, у вас есть начальное представление о том, что представляет собой DirectX. С точки зрения разработчика DirectX — это набор API (интерфейсов программирования приложений) для разработки мультимедйных приложений на платформе Windows. В этой книге мы сосредоточимся на ограниченном подмножестве DirectX, называемом Direct3D. Как видно из названия, Direct3D — это API, используемый для разработки приложений с трехмерной графикой.

Книга разделена на четыре части. В первой части исследуются математические инструменты, применяемые в остальных частях книги. Во второй части объясняются базовые технологии трехмерной графики, такие как освещение, текстурирование, альфа-смешивание и работа с трафаретами. Третья часть посвящена использованию Direct3D для реализации различных более интересных техник и приложений, таких как выбор объектов, визуализация ландшафтов, системы частиц, настраиваемая виртуальная камера, а также загрузка и визуализация трехмерных моделей (X-файлов). Темой четвертой части являются вершинные и пиксельные шейдеры, включая каркасы эффектов и новый (появившийся в DirectX 9.0) высокоуровневый язык шейдеров. Настоящее и будущее трехмерных игр неразрывно связано с использованием шейдеров, и, посвящая им целую часть, мы хотели получить книгу, соответствующую современному состоянию дел в программировании графики.

Наконец вы можете задаться вопросом — какие игры вы сможете разрабатывать после прочтения этой книги. Чтобы ответить на него лучше всего пролистать книгу и взглянуть на типы разрабатываемых приложений. Это поможет вам представить типы игр, которые можно разработать, основываясь на рассматриваемых в книге методах и вашей собственной изобретательности.

Предпосылки

Эта книга разрабатывалась таким образом, чтобы служить учебником начального уровня. Однако это не означает, что она будет простой для людей, не имеющих опыта программирования. Ожидается, что читатель хорошо знает алгебру, тригонометрию, свою среду разработки (т.е. Visual Studio), C++ и фундаментальные структуры данных, такие как массивы и списки. Опыт программирования для Windows тоже будет полезен, но он не обязателен — получить начальные сведения о программировании для Windows можно в Приложении А.

Необходимые средства разработки

Рекомендуемое оборудование

Приведенные ниже рекомендации предназначены тем, кто хочет, чтобы примеры программ работали с приемлемой частотой кадров. Любой пример может выполняться с использованием устройства REF, которое осуществляет программную эмуляцию всех функциональных возможностей Direct3D. Поскольку все возможности эмулируются программно, приложения будут работать очень медленно. Более подробно устройство REF будет обсуждаться в главе 1.

Примеры программ из второй части книги очень просты и должны работать на старых бюджетных моделях видеокарт, таких как Riva TNT и аналогичные. Примеры программ из третьей части требуют большего числа геометрических преобразований и используют некоторые новые возможности, такие как точечные спрайты. Для них рекомендуется использовать видеокарты уровня GeForce 2. Примеры программ, приведенные в четвертой части, используют вершинные и пиксельные шейдеры. Поэтому для того, чтобы они выполнялись в реальном времени, вам потребуется видеокарта с поддержкой шейдеров, такая как GeForce 3.

Для кого предназначена эта книга

Создавая эту книгу мы адресовали ее следующим категориям читателей:

  • Программистам со средним уровнем знаний С++, которые хотят узнать о программировании трехмерной графики с использованием последней версии Direct3D — Direct3D 9.0.
  • Программистам трехмерной графики, обладающим опытом работы с другими API (например, OpenGL), которые хотят узнать о Direct3D 9.0.
  • Программистам, имеющим опыт работы с Direct3D, которым требуется соответствующая текущему состоянию дел книга, описывающая последнюю версию Direct3D, включая вершинные и пиксельные шейдеры, высокоуровневый язык шейдеров и каркасы эффектов.

Установка DirectX 9.0


Рис. I.1. Для разработки приложений при установке DirectX лучше выбрать вариант Debug

Рис. I.1. Для разработки приложений при установке DirectX лучше выбрать вариант Debug, поскольку это упростит отладку

Помните, что отладочные DLL работают медленнее, чем дистрибутивные. Поэтому при компиляции передаваемого в продажу приложения следует использовать дистрибутивные версии.

Настройка среды разработки

Для написания приложений, использующих DirectX вам следует выбрать тип приложения Win32 Application . Кроме того, в VC++ 6.0 и 7.0 вы должны указать пути к каталогам с заголовочными и библиотечными файлами DirectX чтобы VC++ мог найти необходимые файлы. В нашем случае заголовочные и библиотечные файлы DirectX расположены по путям D:\DXSDK\Include и D:\DXSDK\Lib , соответственно.

Местоположение каталога DirectX DXSDK на вашем компьютере может быть другим. Оно зависит от пути, который вы задали во время установки.

Обычно программа установки DirectX SDK сама добавляет эти пути в VC++ за вас. Однако, если это не произошло, проделайте все вручную, выполнив следующие действия:

В VC++ 6.0 выберите в меню команду Tools | Options | Directories и введите пути к заголовочным и библиотечным файлам DirectX, как показано на рис. I.3.


Рис. I.3. Добавление путей к включаемым и библиотечным файлам DirectX в VC++ 6.0

Рис. I.3. Добавление путей к включаемым и библиотечным файлам DirectX в VC++ 6.0

В VC++ 7.0 выберите в меню команду Tools | Options | Projects Folder | VC++ Directories и введите пути к заголовочным и библиотечным файлам DirectX, как показано на рис. 1.4.


Рис. I.4. Добавление путей к включаемым и библиотечным файлам DirectX в VC++ 7.0

Рис. I.4. Добавление путей к включаемым и библиотечным файлам DirectX в VC++ 7.0

Затем, чтобы примеры программ были корректно построены, ваш проект необходимо скомпоновать с библиотечными файлами d3d9.lib , d3dx9.lib и winmm.lib . Обратите внимание, что winmm.lib — это не библиотечный файл DirectX, а библиотечный файл с мультимедийными функциями Windows, и мы будем использовать находящиеся в нем функции работы с таймером.

В VC++ 6.0 чтобы указать библиотечные файлы для компоновки, выберите в меню команду Project | Settings , перейдите на вкладку Link и введите имена библиотек, как показано на рис. I.5.


Рис. I.5. Указание библиотекчных файлов для компоновки с проектом в VC++ 6.0

Рис. I.5. Указание библиотекчных файлов для компоновки с проектом в VC++ 6.0

Рис. I.6. Указание библиотекчных файлов для компоновки с проектом в VC++ 7.0

В VC++ 7.0 чтобы указать библиотечные файлы для компоновки, выберите в меню команду Project | Properties | Linker | Input Folder и введите имена библиотечных файлов, как показано на рис. I.6.

Рис. I.6. Указание библиотекчных файлов для компоновки с проектом в VC++ 7.0

Использование библиотеки D3DX

Начиная с версии 7.0, в состав DirectX входит библиотека D3DX (Direct3D Extension). Эта библиотека предоставляет набор функций, классов и интерфейсов, упрощающих выполнение обычных операций, связанных с трехмерной графикой, таких как математические операции, работа с текстурами и изображениями, операции с сетками и операции с шейдерами (например, компиляция и сборка). Можно сказать, что D3DX содержит много возможностей, которые были бы рутинной работой, если бы вам их пришлось выполнять самостоятельно.

На протяжении всей книги мы будем использовать библиотеку D3DX, что позволит нам сосредоточиться на более интересном материале. Например, мы предпочитаем не тратить страницы книги на объяснение того, как загружать изображения различных форматов (bmp, jpeg и т.д.) в интерфейс текстуры Direct3D, когда мы можем сделать это с помощью единственного вызова функции D3DXCreateTextureFromFile . Другими словами, D3DX делает наш труд более производительным и позволяет сосредотачиваться на более важном материале, а не тратить время на повторное изобретение колеса.

Есть и другие причины для использования D3DX:

  • D3DX является библиотекой общего назначения и может использоваться в различных типах приложений, связанных с трехмерной графикой.
  • D3DX работает быстро (по крайней мере, настолько быстро, насколько это может делать библиотека общего назначения).
  • Другие разработчики используют D3DX. Поэтому, скорее всего, вы столкнетесь с кодом, который использует D3DX. Следовательно, хотите ли вы использовать библиотеку D3DX или нет, вы должны быть знакомы с ней, чтобы суметь разобраться в коде, который использует ее.
  • D3DX уже существует и тщательно протестирована. Более того, с каждой новой версией DirectX эта библиотека совершенствуется и в нее добавляются новые возможности.

Использование документации и примеров из DirectX SDK

Документация DirectX охватывает почти все части DirectX API и поэтому очень полезна в качестве справочника. С другой стороны, документации не хватает глубины в изложении деталей, и поэтому она не столь хороша в качестве учебника. Тем не менее с каждой версией DirectX документация становится все лучше и лучше.

Как было сказано, в основном документация используется в качестве справочника. Предположим, вы наткнулись на относящийся к DirectX тип данных или функцию (скажем, функцию DSDXMatrixInverse ), о которой хотите получить больше информации. Вы просто выполняете поиск в алфавитном указателе документации и получаете описание объекта данного типа, или, в нашем случае, функции, как показано на рис. I.7.


Рис. I.7. Просмотр документации, относящейся к SDK

Рис. I.7. Просмотр документации, относящейся к SDK

В этой книге мы время от времени будем отсылать вас к документации за дополнительными сведениями.

Мы также хотели бы обратить ваше внимание на поставляемые с DirectX SDK примеры программ, работающих с Direct3D. Примеры на С++ находятся в каталоге \DXSDK\Samples\C++\Direct3D . Каждый пример демонстрирует как реализовать в Direct3D определенный эффект. Эти примеры достаточно сложны для начинающего программиста графики, но закончив читать книгу, вы будете готовы к их изучению. Исследование этих примеров хорошо подходит на роль «следующего шага» после завершения чтения этой книги.

Соглашения об оформлении кода

Соглашения об оформлении кода примеров программ достаточно просты. Отдельного упоминания заслуживают лишь два момента. Во-первых, имена переменных класса начинаются с символа подчеркивания. Например:

Имена всех глобальных переменных и функций начинаются с заглавной буквы, а имена локальных переменных и методов — со строчной. Мы находим эти приемы полезными для определения области видимости переменной или функции.

Обработка ошибок

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

Ясность

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

Примеры программ и дополнительная поддержка

Кроме учебных примеров, сайт содержит доску объявлений и чат. Мы побуждаем читателей связываться друг с другом и размещать вопросы о темах, которые им непонятны или требуют дополнительных объяснений. В большинстве случаев альтернативная точка зрения и объяснение концепции сократят время, необходимое для ее постижения.

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

Читайте также: