Что такое directx sdk

Что такое directx sdk

Дата создания: 2009-03-31 15:25:43
Последний раз редактировалось: 2012-02-08 08:19:22

    Ссылки на программы:

  1. DirectX End-User Runtimes (directx для запуска игр) июнь 2010. Скачать (95 мегабайт).
  2. DirectX SDK (directx для программирования) июнь 2010. Скачать (2 мегабайта).

DirectX — набор библиотек, предназначенных прежде всего для вывода графики.

Для того чтобы писать программы, в которых используется DirectX, нужно установить Directx sdk. Для запуска программ написанных с использованием DirectX, необходимо установить directx end-user runtimes. В данном уроке мы рассмотрим установку обоих компонентов.

Для разных версий DirectX используются одни и те же файлы: DirectX 9.0c на Windows XP, DirectX 10 на Windows Vista и DirectX 11 на Windows 7 — для всех этих версий подходят одни и те же установочные файлы. Т.е. для всех версий Windows нужен один и тот же архив с установочными файлами DirectX End-User Runtimes или DirectX SDK.

Установка DirectX End-User Runtimes (directx для запуска игр)

Для запуска игр и программ, написанных с использованием библиотеки Directx нужно установить directx end-user runtimes.

На вашем компьютере уже установлена одна из версий DirecX end-user runtimes. Для программ, которые мы будем создавать, вполне достаточно и старых версий, и если вам не нужна последняя версия DirectX end-user runtimes, можете переходить к следующему пункту.

Последняя на данный момент (июль 2010) версия directx end-user runtimes вышла в июне 2010г. Найти последнюю версию можно на диске с какой-нибудь недавно вышедшей игрой или скачать по ссылке в начале урока.

После того как вы скачали и запустили файл directx_jun2010_redist.exe, появится окно с лицензионным соглашением:

После нажатия на кнопку Yes, нужно будет ввести путь к временной папке, куда будет распакован архив:

После того как архив распаковался, нужно перейти в указанную вами временную папку и запустить файл DXSETUP.exe. Откроется вот такое окно:

Теперь нужно нажать два раза Далее и начнётся установка.

Всё. С установкой DirectX end-user runtimes мы закончили. Теперь, для того чтобы создавать программы, использующие возможности directx, нужно установить directx sdk. Но сначала небольшой урок истории:

Немного истории directx sdk

Прежде чем приступать к чтению уроков из данного раздела (DirectX), вы должны были изучить большую часть материалов из раздела C++. Скорее всего у вас возник ряд вопросов. И самый главный из них: как используя изученный материал, начать создавать свою игру? Ниже я попытаюсь ответить на него. По крайней мере, вы узнаете теорию. Практикой же мы займёмся позже.

До сих пор наши программы работали в досовской консоли. При этом мы использовали язык C++.

C++ — это основа. Не зная этого языка, вы не сможете создать какую-нибудь игру. Конечно адепты Паскаля, Бейсика или Фортрана (если такие есть :)) могут возразить, что на этих языка тоже можно создавать о-го-го какие игры. Только о-го-го какими, они были в середине восьмидесятых. Тогда, да, они выглядели очень круто.

Сейчас я расскажу вам очень важную вещь. Она простая, и возможно вы её уже знаете. По крайней мере, если бы кто-нибудь объяснил мне это лет десять назад, возможно вся моя жизнь сложилась бы по-другому.

Итак: "у компьютеров есть слои" (С) Шрек. 🙂 Извините, не сдержался.

У компьютеров есть уровни. Самый низкий уровень — уровень физических элементов (транзисторы и провода). Самый высокий (из тех, что мы пока знаем) — это язык C++. Именно поэтому он называется языком высокого уровня. Между этими уровнями расположено ещё несколько: микроархитектурный уровень (на этом уровне идёт общение с процессором), уровень операционной системы, уровень языка ассемблера (ассемблер — язык низкого уровня).

Когда мы начинаем выполнение программы, команды на языке C++ переводятся на более низкие уровни. На самом нижнем уровне эти команды выполняются непосредственно электрическим сигналом. Одна команда более высокого уровня может состоять из нескольких команд более низкого.

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

В конце восьмидесятых — начале девяностых не существовало (точнее они ещё не получили широкого распространения) более высоких абстракций (уровней) чем язык программирования. В нашем случае — это C. Все приложения писались на языке высокого уровня: Pascal, C, Fortran. Создание графики и графических приложений происходило непосредственно на языке высокого уровня.

Тут что надо заметить! Большинство языков программирования высокого уровня обладают примерно равными возможностями. Будь то Pascal, Java или С++. Понятно, что у некоторых этих возможностей побольше, у других поменьше. Но у них много общего: у всех есть циклы и ветвления, функции, переменные.

Ходят слухи, что изучить C++ намного сложнее, чем Pascal или другие языки программирования. Надеюсь, что изучая материал из раздела C++, вы убедились, что это не так.

На мой взгляд, распространённое мнение о сложности C++ — это результат наглой и бессовестной диверсии со стороны адептов Delphi! На самом деле Pascal намного сложнее в изучении. Вы только подумайте, они вместо скобочек < >используют begin и end . А как они выполняют присваивание — оператором := (да-да, двоеточие и знак равенства). Короче, настоящий дурдом!

Читайте также:  Garmin для android 4pda

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

В середине девяностых очень быстро начала распространяться операционная система Windows. Первоначально Windows была написана на C (не на C++, нет. Т.е. там не было классов). Windows до сих пор использует часть старого кода. Когда мы начнём создавать приложения под Windows, мы познакомимся с ещё более высоким уровнем — WinAPI (Windows API). WinAPI используют все приложения под Windows.

WinAPI (API — Application Programming Interface. Интерфейс программирования приложений) — представляет собой набор функций и структур, написанных на C.

В Windows использовалась (и используется) своя система вывода графики. Называется она — GDI (расшифровывается как Graphical Device Interface — интерфейс графического устройства, а не Global Defence Initiative как мог подумать особо проницательный и эрудированный читатель).

GDI в силу особенностей WinAPI не годилась для создания игр. Потому что GDI — оооочеееень меееедлеееннаааааяяя. Кстати, если заглянуть на форумы приспешников Delphi, можно обнаружить, что многие пытаются создавать игры с использованием GDI. Я же говорю, это больные люди. Так вот, разработчики игр не спешили создавать игры под Windows, им было привычнее работать под старой доброй DOS.

И тогда Microsoft создаёт DirectX. Первая версия была полным отстоем. Но время шло, и DirectX становился всё более надёжным. В новой операционной системе Windows 7 уже будет доступна одиннадцатая версия.

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

Что же из себя представляет DirectX. Это высокоуровневая API, которая написана на С++, с использованием технологии COM (Component Object Model — компонентная модель объектов. Мы её кратко рассмотрим). DirectX предназначена для работы с драйверами видеокарт. Для каждой видеокарты создаются драйвера (язык команд, которые понимает видеокарта). Программисту больше не нужно писать отдельный код для каждого драйвера каждой видеокарты. Ему нужно только знать API DirectX. Всю низкоуровневую работу (взаимодействие с драйверами) берёт на себя DirectX.

Справедливости ради, нужно сказать, что существует ещё одна популярная библиотека — OpenGL. Принцип работы — примерно тот же: программист работает с API, а сама OpenGl работает с драйверами. Неоспоримое преимущество OpenGL — мультиплатформенность. Т.е. OpenGL будет работать на всех операционных системах. DirectX работает только на Windows. Преимущества DirectX мы рассмотрим позднее (а они есть, и они, на мой взгляд, гораздо существеннее).

Для того чтобы запускать программы, написанные с использованием DirectX, вам необходим DirectX End-User Runtimes (мы его установили в предыдущем пункте).

Чтобы писать приложения, использующие DirectX, нужно скачать DirectX SDK (Software Development Kit — набор инструментов разработки приложений).

У Вас на выбор два варианта установки directx sdk:

1. Скачивание DirectX SDK с сайта Microsoft. При этом Вы скачаете полный вариант со всеми примерами, документацией и дополнительными инструментами. Размер архива — примерно 580 мегабайт. При установке DirectX SDK займёт больше гигабайта.

2. Скачивание DirectX SDK с вашего любимого сайта (ссылка в начале урока). При этом Вы скачаете урезанный мной вариант, в котором я оставил только библиотечные/заголовочные файлы и один пример. Размер архива — 2 мегабайта (два мегабайта. ). Что называется, прочувствуй разницу! При установке, DirectX SDK займёт двадцать семь мегабайт.

Внимание:
Если вы переустанавливаете DirectX SDK, то обязательно удалите предыдущую версию (через Установку и удаление программ). Устанавливать новую версию DirectX SDK поверх старой крайне нежелательно. Это замечание касается только полной версии DirectX SDK. Для урезанной версии достаточно заменить папки lib и include.

Установка directx sdk с сайта Microsoft

И щёлкаем на ссылку — Get The Latest DirectX SDK или June 2009 DirectX SDK Now Available (последняя на данный момент версия вышла в июне).

Откроется страница, с которой можно скачать последнюю на данный момент версию DirectX SDK — от девятого августа.

Итак, на следующей странице нажимаете на кнопку Download. Появится диалог сохранения файла и начнётся скачивание directx sdk:

Кстати, в одной из последних версий DirectX были добавлены технические обзоры двух новых технологий, которые будут использоваться в DirectX 11: Direct2D и DirectWrite. Если знаете английский, обязательно посмотрите соответствующие разделы в MSDN: Direct2d и DirectWrite . Я когда готовил урок, два часа в документации просидел. Жалко, что протестировать не удалось. Думаю, в будущем мы обязательно будем обсуждать данные технологии в рассылке.

После скачивания установочного файла запускаем его. Дальнейший процесс щёлканья на кнопку "Next" я проиллюстрирую картинками:

Далее начнётся установка.

Скачать и установить DirectX SDK с сайта

Тут всё намного проще и быстрее. Щёлкаете по ссылке, расположенной в начале урока. Или в разделе Листинги и программы ищете "DirectX SDK", загружаете файл на свой компьютер и распаковываете. У себя я распаковал архив в корневой каталог диска D. В итоге установочная папка выглядит так: D:directx

Читайте также:  Usb vid 04a9 pid 221c rev 0306

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

После установки directx sdk

Напоследок давайте посмотрим, как оно работает.

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

В данный момент IDE не знает о существовании DirectX. Нам нужно сообщить, где IDE Visual C++ 2008 должна искать заголовочные и библиотечные файлы.

Откройте пункт меню Tools → Options (Сервис → Параметры).

В левой части открывшегося окна выберите Projects and Solutions → VC++ Directories (Проекты и решения → Директории VC++):

В правой части в выпадающем списке Show directories for (Показать директории для:) выберите Include files (Включаемых файлов, за точное имя пункта на русском не ручаюсь, он там второй). Затем из панели инструментов выберите New Line (Новая строка) или щёлкните Ctrl+Ins. Для более наглядной иллюстрации смотрите картинку. Появится новая строка. Щёлкните на кнопку с тремя точками в конце строки

Откроется окно выбора директории. Перейдите в папку, где у вас установлен DirectX. И выберите папку Include.

Теперь в выпадающем списке (где вы выбирали Include files) выберите Library files (библиотечные файлы) и повторите операцию добавления строки. Только теперь выберите папку Lib/x86 если у Вас 32-ух разрядная операционная система или Lib/x64 если 64-ёх разрядная. Иногда, при использовании 64-битных библиотек, во время запуска программ возникают ошибки, поэтому, если программа, использующая DirectX, у вас не запустилась, вернитесь к этому окну и для поля Library files выберите папку Lib/x86.

Нажимаем OK. Теперь IDE знает, где искать заголовочные и библиотечные файлы DirectX SDK.

Запуск приложения

Теперь открываем проект File — Open — Project/Solution или щёлкаем Ctrl+Shift+O.

Если вы загружали SDK с сайта Microsoft, то пример находится в папке (D:directx — папка, куда я установил свою версию):D:directxSamplesC++Direct3DTutorialsTut01_CreateDevice

Если вы загружали SDK с моего сайта, проект можно найти по адресу (D:directx — папка, куда я установил свою версию): D:directxSamplesTut01_CreateDevice

В папке лежат два решения: для Visual C++ 2005 и для Visual C++ 2008. Выберите решение, соответствующее вашей версии Visual C++.

Теперь нажимаем Ctrl+Alt+F7 и F5.

Вот она. Первая программа использующая DirectX.

Прежде чем закрывать IDE, давайте взглянем на код.

В обозревателе решений выберите файл CreateDevice.cpp. Если вы бегло просмотрите весь файл, то скорее всего ничего не поймёте.

Как это ни удивительно :), но структура программы очень похожа на то, что мы уже создавали: директивы #include, функции InitD3D(), CleanUp(), Render(), MsgProc().

Функция wWinMain — аналог main. С неё начинается выполнение программы в Windows.

В строках объявления переменных:
LPDIRECT3D9 g_pD3D = NULL; // Used to create the D3DDevice
LPDIRECT3DDEVICE9 g_pd3dDevice = NULL; // Our rendering device

Встречаются новые типы. На самом деле они переопределены с помощью typedef (который мы уже рассматривали) из стандартных типов.

Кое-что нам не знакомо:
g_pD3D->CreateDevice
Здесь, g_pD3D — объект, а CreateDevice() — метод. Почему используется синтаксис -> вместо привычной для нас точки мы узнаем в одном из следующих уроков.

Да, здесь используется много новых типов, много новых функций, но всё же за всей этой мишурой можно угадать уже привычный (надеюсь, что это действительно так) для нас C++.

Обзор библиотеки DirectX
За всё время существования библиотека DirectX прошла большой путь апдейдов и каждая новая версия радовала всё новыми и новыми возможностями. В этой статьи я опишу возможности API DirectX. Кроме таких полезных фишек как поддержка новых устройств, в этой версии появился интерфейс, позволяющий легко использовать компоненты библиотеки DirectX в программах для платформы .NET Framework. DirectX является базой для XBox API, который используется разработчиками игр для консолей XBox.

Пакет DirectX SDK
Для успешного запуска компьютерной игры, написанной с использованием библиотеки Direct3D, достаточно будит установить пакет DirectX Runtime, содержащий набор динамических библиотек, драйверов устройств и конфигурационных файлов. Обычно установочный файл DirectX поставляется с играми, а так же его можно найти на дисках с драйверами. Этот набор библиотек в полном составе приблизительно занимает около 40 мегабайт. Но для самостоятельного создания игр или других графических приложений, использующих DirectX одним пакетом DirectX Runtime не обойтись. Для этого нам понадобиться пакет DirectX SDK который можно скачать совершенно бесплатно на сайте Microsoft. Для сравнения – установочный пакет DirectX SDK занимает 230 мегабайт.

Читайте также:  Garmin gpsmap 60csx как обновить прошивку

Так как создание игр требует доступ к аппаратному обеспечению, то есть связь программной части игры с устройствами ввода и вывода. Например, чтобы увидеть какое-либо передвижение персонажи или объекта, нужно на него взаимодействовать. Обычно в играх, написанных для ПК, манипуляторами являются клавиатура и мышь, мышью мы можем изменить угол обзора или вектор направления движений, а при помощи клавиатуры мы можем изменить скорость, направление и даже стиль движения персонажа или объекта – это классика. Так же к устройствам ввода относятся геймпады, джойстики, рули – этим тебя уже не удивишь. А как на счёт таких девайсов как планшет, микрофон и вэб-камера – по сколько они тоже являются устройствами ввода – управлять игровыми персонажами или объектами можно даже при помощи сканера, вопрос лишь в целесообразности таких нестандартных решений.

Когда мы будим писать код для события «при нажатии на клавишу вперёд» нам потребуется задействовать библиотеку, которая отвечает за клавиатуру. В DirectX SDK есть компонент DirectInput, который как раз решит нашу задачу. Так же DirectX содержит все, необходимые для создания игры, наборы компонентов. Использование набора компонентов библиотеки DirectX сильно упрощает процесс программирование игр для Windows. Вам не придётся писать тысячи страниц кода для обработки событий клавиатуры или иного устройства ввода, так же в DirectX SDK есть наборы библиотек для работы с сетью, с медиа-файлами и с выводом изображения на монитор. Хотя DirectX SDK не является игровым движком, он упрощает сам процесс создания игр. А игровые движки – по большому счёту являются надстройками графических библиотек DirectX и OpenGL. Но даже игровой движок на DirectX проще написать, нежели игровой движок на OpenGL, так как OpenGL включает в себя исключительно библиотеки для работы с графикой и для полноценного игрового движка придётся писать самому или интегрировать сторонние библиотеки. В то время, как в DirectX есть всё, а сейчас мы рассмотрим что именно.

Из каких библиотек состоит DirectX SDK:
1. DirectXGraphics, набор интерфейсов для работы с графической частью игры. До версии 8.0 DirectX Graphics делился на:
1.1. DirectDraw: интерфейс вывода растровой графики (его разработка давно прекращена).
1.2. Direct3D (D3D): интерфейс вывода трёхмерных примитивов.
2. DirectInput: интерфейс, для обработки событий, связанных с использованием джойстика, клавиатуры, мыши, и других игровых контроллеров.
3. DirectPlay: интерфейс сетевой коммуникации игр, содержит средства для создания сетевых приложений.
4. DirectSound: интерфейс низкоуровневой работы со звуком (формата Wave)
5. DirectSound, DirectMusic и DirectX Media Objects (эти компоненты в версии 9.0 объединены под названием DirectX Audio): предоставляют средства программирования звука и MIDI-музыки.
6. DirectShow: интерфейс, используемый для ввода/вывода аудио и/или видео данных. Содержит средства для захвата и воспроизведения мультимедийных потоков. Начиная с версии 9.0, впервые появился набор библиотек, упрощающих создание программ для нелинейного монтажа или проигрывателей аудио и видео с применением real-time эффектов и красивых переходов между роликами – это DES, расшифровывается как DirectShow Editing Services.
7. DirectX Instruments — технология, позволяющая на основе мультимедийного API DirectX создавать и использовать программные синтезаторы. В отличие от DX-плагинов, такие программы могут полностью управляться по MIDI и служат главным образом не для обработки, а для синтеза звука. Технология DXi была популярна в 2001—2004 гг., особенно в программных продуктах Cakewalk, но со временем проиграла «войну форматов» технологии VST от Steinberg.
8. DirectSetup: часть, ответственная за установку DirectX. Позволяет настраивать установку DirectX на системах пользователей.
9. DirectX Media Objects: реализует функциональную поддержку потоковых объектов (например, кодировщики/декодировщики)
10. DirectX Sample Browser: оболочка с дружественным интерфейсом, содержащая примеры и туториалы по использованию библиотек DirectX SDK.
11. Direct2D: интерфейс вывода двухмерной графики
12. DirectX Diagnostics: (dxdiag) программный интерфейс для диагностики драйверов и оборудования.


Так выглядит окно оболочки DirectX Sample Browser. Тут все инструкции по DirectX SDK.

Недавно начал изучать DirectX , и у меня возник вопрос.
Для написания программ использующих прямой доступ к видеоустройству необходим DirectX SDK . В этом пакете находятся библиотеки с описанием функций, структур, типов данных, а так же заголовочные файлы, включаемые в создаваемую программу. Далее написанный код преобразуется компилятором в объектный и пакуется в исполняемый файл или динамическую библиотеку.
Так вот, сам вопрос: Почему для запуска исполняемого файла(те же игры) нужен именно DirecX , хотя для его создания был необходим DirectX SDK ? И чем именно DirectX отличается от DirectX SDK ?

Заранее извиняюсь если что-то не правильно написал.

1 ответ 1

sdk — это набор для программиста, что бы он мог создавать приложения. А вот конечному пользователю нужен небольшой набор файлов с sdk (обычно это называют run time или подобное) для того, что бы оно работало.

Например. Программисту, что бы написать, нужна dll, заголовочный файл к ней и документация. А ещё и какие-нибудь воспомогательные утилиты. Это и будет sdk, а пользователю обычно нужна только dll.

Ссылка на основную публикацию
Adblock detector