Установка DirectX для разработчиков игр

В этой статье рассматриваются некоторые распространенные вопросы о среде выполнения DirectX и использовании DirectSetup для установки DirectX.

Важно!

Устаревший пакет SDK Для DirectX находится в конце срока службы, но он по-прежнему доступен для поддержки старых игр, учебников и проектов. Новые проекты не должны использовать его. Использование устаревшего пакета SDK для DirectX требует использования устаревшей версии DirectSetup для таких компонентов, как D3DX9, D3DX10, D3DX11, XAudio 2.7, XInput 1.3 и XACT. Дополнительные сведения о текущем состоянии пакета SDK для DirectX см. в разделе Где находится пакет SDK Для DirectX? и в записи блога Not So Direct Setup.

Среда выполнения DirectX

Среда выполнения DirectX состоит из основных компонентов и дополнительных компонентов.

Основные компоненты, такие как Direct3D и DirectInput, считаются частью операционной системы. Основные компоненты для DirectX 9.0c не изменились с момента выпуска пакета SDK DirectX summer 2004 Update и соответствуют тому, что было выпущено в Microsoft Windows XP с пакетом обновления 2 (SP2), Windows XP Pro x64 Edition и Windows Server 2003 с пакетом обновления 1 (SP1). Windows Vista включает DirectX 10, который поддерживает модель драйвера дисплея Windows (WDDM) и Direct3D 10.x. Windows 7 и Windows Vista поддерживают DirectX 11, которая поддерживает Direct3D 11, Direct2D, DirectWrite, программное устройство отрисовки WARP10 и уровни функций 10level9. Дополнительные сведения см. в разделе API графики в Windows .

Необязательные компоненты выпускаются в обновлениях пакета SDK Для DirectX и включают D3DX, XACT, XAudio2, XINPUT, Managed DirectX и другие подобные компоненты. Многие из дополнительных компонентов регулярно обновляются для интеграции отзывов клиентов и предоставления новых функций.

Номер версии DirectX

Номер версии DirectX, например 9.0c, относится только к версии основных компонентов, таких как Direct3D, DirectInput или DirectSound. Это число не охватывает версии различных дополнительных компонентов, выпущенных в пакете SDK для DirectX, таких как D3DX, XACT, XINPUT и т. д.

Как правило, номер версии DirectX не имеет смысла, за исключением краткой ссылки на основные биты времени выполнения. Этот номер не следует использовать для проверка, если правильная среда выполнения DirectX уже установлена, так как она не учитывает необязательные компоненты DirectX.

Библиотеки DirectX

В прошлом необязательные компоненты пакета SDK для DirectX, включая D3DX, были выпущены в виде статических библиотек. Однако теперь они выпускаются как динамически похожие библиотеки (DLL) из-за повышенного спроса на более совершенные методы обеспечения безопасности. Библиотеки DLL позволяют обслуживать ранее выпущенный код. Если эти компоненты были развернуты как статические библиотеки, корпорация Майкрософт не сможет устранить проблемы безопасности, обнаруженные после выпуска.

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

Хотя обеспечить установку библиотек DLL в системе не так просто, как просто связаться со статическими библиотеками, в пакет SDK для DirectX были внесены некоторые изменения, чтобы устранить проблемы модели DLL:

  • Распространяемый компонент DirectX можно настроить так, чтобы он содержал только те компоненты, которые требуются приложению, чтобы свести к минимуму размеры дистрибутива и мультимедиа.
  • Распространяемая папка Program Files\DirectX SDK\Redist\теперь содержит файл шкафа (.cab) для всех возможных дополнительных компонентов, поэтому вам не нужно копать старый пакет SDK, чтобы найти их.
  • При установке пакета SDK устанавливаются все возможные дополнительные компоненты.
  • Распространяемый компонент DirectX, содержащий все необязательные компоненты, доступен как в виде веб-установщика, так и в виде загружаемого пакета; Дополнительные сведения см. в центре разработчиков DirectX (DirectX).

Установка DirectX установщиком игры

Ниже приведены рекомендации по добавлению установки DirectX в установщик игры.

Термин Описание
Устанавливайте распространяемые компоненты каждый раз.
Процесс установки игры должен устанавливать распространяемые компоненты DirectX во время каждой установки, не позволяя пользователям отказаться от нее. Если вы разрешите отказаться от использования, то некоторые пользователи будут догадываться, что они не нуждаются в этом, и если они действительно делают, игра не будет запускаться.
Дайте установщику DirectX проверка для дополнительных компонентов.
Не предполагайте, что последние необязательные компоненты уже установлены в системе, так как клиентский компонент Центра обновления Windows и пакеты обновления не предоставляют никаких дополнительных компонентов DirectX. Вы должны установить среду выполнения DirectX, запустив dxsetup.exe напрямую или вызвав DirectSetup.
Настройка без уведомления.
Запустите программу установки в автоматическом режиме, чтобы пользователи случайно не пропустит обновление среды выполнения DirectX. Это можно сделать, запустив dxsetup.exe с помощью следующей команды:
   path-to-redistributable\dxsetup.exe /silent
или путем вызова DirectSetup без отображения пользовательского интерфейса.
Объединение приемок лицензионного соглашения.
Если вы предлагаете пользователю принять лицензионное соглашение, объедините это с запросом на принятие лицензионного соглашения DirectX при установке в автоматическом режиме, чтобы запрос на принятие EULAs был только один раз. Запрос должен выполняться перед установкой, чтобы, если пользователь не согласится, вы не получите сбой и частичную установку.
Просто запустите dxsetup или вызовите DirectSetup.
Так как номер версии DirectX не относится ни к чему, кроме основных компонентов DirectX, не проверка установленной версии перед запуском dxsetup.exe или вызовом DirectSetup. Кроме того, не проверка существования файла, чтобы проверить, установлен ли дополнительный компонент, так как обычно это не правильно определяет, когда компонент существует, но требует обновления. Однако пакет установки DirectX быстро определит это и выполнит правильное действие.

Небольшие пакеты установки

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

В зависимости от минимальных спецификаций может даже не потребоваться включать основные файлы кабинетов DirectX 9.0c в распространяемую папку установочного носителя. Большинство установок Windows XP имеют пакет обновления 2 (SP2), который включает основные компоненты DirectX 9.0c, поэтому операция установки DirectX будет очень быстрой и не потребует перезагрузки. Самый маленький пакет, который можно создать, составляет около 3 МБ, и его можно сжать примерно до половины этого размера. Такой пакет содержит одну версию библиотеки DLL D3DX и требует наличия DirectX 9.0c.

Минимальный набор файлов, необходимый для сборки распространяемого пакета, — это следующие файлы, расположенные в папке Redist пакета SDK для DirectX (Program Files\DirectX SDK\Redist):

  • dxsetup.exe
  • dsetup32.dll
  • dsetup.dll
  • dxupdate.cab

Добавьте к этим cab-файлы для компонентов, которые требуется установить. Если требуется, чтобы пользователи приложения уже имели DirectX 9.0c, вам не нужно включать DirectX.cab или dxnt.cab, которые составляют большую часть необходимого пространства. DirectX.cab требуется только для Windows 98 и Windows ME; dxnt.cab требуется только для Windows 2000, Windows XP и Windows XP с пакетом обновления 1 (SP1); и dxdllreg_x86.cab требуется только для Windows 2000, Windows XP RTM, Windows XP с пакетом обновления 1 (SP1) и Windows Server 2003 RTM. Кроме того, если вы не используете DirectShow или предполагаете, что он уже установлен, можно опустить BDA.cab, BDANT.cab и BDAXP.cab.

Примечание

Можно предположить, что у пользователей приложения уже есть DirectX 9.0c, если он был установлен в предыдущей версии приложения, вы заставляете пользователей вручную обновляться с помощью веб-установщика или предполагаете, что у них есть Windows XP с пакетом обновления 2 (SP2) или более поздней версии.

Продолжая работу с этим примером, если вы используете только 32-разрядную версию D3DX за апрель 2006 г., можно добавить Apr2006_d3dx9_30_x86.cab. Если вы используете 32-разрядную 32-разрядную версию XINPUT за август 2006 г., добавьте Aug2006_xinput_x86.cab.

Если у вас есть собственное 64-разрядное приложение, необходимо добавить версии _x64. Однако если у вас есть 32-разрядное приложение, работающее в 64-разрядной ОС, будут работать 32-разрядные версии библиотек DLL.

Затем вы можете распространить этот пакет файлов и запустить DirectSetup в автоматическом режиме или запустить dxsetup.exe в командной оболочке в автоматическом режиме. Не забывайте защищать этот пакет при проверке версий файлов и убедитесь, что пользователи не могут отказаться от запуска программы установки DirectX. Любое из этих событий создает процесс установки, который может быть ошибочной.

Внутреннее развертывание отладочной среды выполнения DirectX

Среды выполнения отладки компонентов DirectX устанавливаются при установке пакета SDK DirectX, но установка пакета SDK на каждом тестовом компьютере может быть болезненным. Необходимо спроектировать процесс установки, чтобы скопировать библиотеки DLL среды выполнения отладки из Program Files\Microsoft DirectX SDK\Developer Runtime\architecture\ в Windows\system32\ или в папку игры.

Однако настоятельно рекомендуется не просто копировать выпущенные библиотеки DLL времени выполнения, так как их легко забыть удалить для конечного продукта. Вместо этого поместите файлы установки DirectX в общую папку и запустите программу установки автоматически из общей папки.

приложения мост для классических приложений

мост для классических приложений приложения, использующие D3DX9, D3DX10, D3DX11, XAudio 2.7, XInput 1.3 или XACT, должны скачать платформу Microsoft.DirectX.x86 или Microsoft.DirectX.x64 для параллельного развертывания этих устаревших компонентов пакета SDK для DirectX. Кроме того, можно удалить все такие зависимости (см. руководство разработчика для распространяемой версии XAudio 2.9 и записи блога Living without D3DX и XINPUT и Windows 8).