Поделиться через


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

Эта статья предназначена для решения некоторых распространенных вопросов о среде выполнения DirectX и использовании DirectSetup для установки DirectX.

Это важно

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

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

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

Основные компоненты, такие как Direct3D и DirectInput, считаются частью операционной системы. Основные компоненты для DirectX 9.0c не изменились с момента обновления пакета SDK DirectX summer 2004, и они соответствуют тому, что было выпущено с 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 в системе не так просто, как простое связывание со статическими библиотеками, в DirectX SDK были внесены некоторые изменения для облегчения работы с моделью DLL.

  • Распространяемый компонент DirectX можно настроить для хранения только тех компонентов, которые требуется приложению, чтобы свести к минимуму размеры дистрибутива и мультимедиа.
  • Распространяемая папка Program Files\DirectX SDK\Redist\, now contains a cabinet (.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 и не отображая пользовательский интерфейс.
Объединяйте принятие условий лицензионного соглашения.
Если вы предложите пользователю принять соглашение EULA, комбинируйте это с запросом на принятие соглашения DirectX EULA при установке в тихом режиме, чтобы запрос на принятие соглашения EULA происходил всего один раз. Запрос следует сделать перед установкой, чтобы избежать частичной установки или сбоя, если пользователь не примет.
Просто запустите 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

Добавьте эти файлы шкафа для компонентов, которые требуется установить. Если вам требуется, чтобы пользователи приложения уже имели 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. Любое из этих событий создает ненадежный процесс установки.

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

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

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

Приложения Desktop Bridge

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