• Главная

Сравнение OpenGL и Direct3D. Что такое 3д директ


Все о DirectX – что это такое, зачем используется, проверка поддержки видеокарты

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

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

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

Сайт: https://www.microsoft.com/ru-ru/download/search.aspx?q=directx

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

Первая версия Windows Game SDK (раннее название directX) появилась еще в 1995 году и была создана как аналог уже существующей графической библиотеке OpenGL.

Различие версий

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

Более подробно рассмотрим различие между компонентами на видео:

Возьмем в качестве примера игру Dirt 3

На видео мы можем заметить, как отличается изображение в зависимости от версии.

К примеру, в изображении с левой стороны (используется директ 11) более мягкие тени, добавлены эффекты летящего из-под колес снега. Этого результата можно добиться и на DirectX 9, но это серьезно скажется на производительности компьютера. Это можно обосновать тем, что девятый директ менее оптимизирован.

В качестве второго примера приведу грамотный разбор автором различных версий ПО в популярных на сегодняшний день играх

В видеоролике проводится сравнение двух directX, а именно 11-й и 12-й.

Поддержка различных версий Windows

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

Следующие версии, такие, как 11.3, 11.1, 11, 11.2 поддерживают операционные системы: windows 8, 8.1, 10, 7

Directx12 предустановлен в windows 10.

Более ранние, а именно 10, 10.1 и 9.0c поддерживают операционные системы windows XP, Vista, SP1, SP2 и SP 3

Как узнать какой DirectX, поддерживает видеокарта

Информацию о поддержке можно найти на сайте производителей видеокарты или в любом из интернет-магазинов в описании видеокарты. Такие популярные видеокарты, как GeForce GTX 1050 4 gb, 1080 8gb, 1030 2gb, 1060 6gb, Sapphire Radeon RX480 8gb, 970 4gb поддерживают directX 12.

Также можно воспользоваться утилитой GPU-Z (https://www.techpowerup.com/gpuz/). После запуска в указанном на скриншоте окне в скобках будет указана поддерживаемая версия программного обеспечения.Определение версии

Определяем версию на компьютере

Чтобы понять, какой директ стоит на компьютере достаточно нажать сочетание клавиш Win + R и ввести «dxdiag» во всплывшем окне.Окно выполнить

После проделанных манипуляций откроется программа «Средство диагностики directX». Всю необходимую информацию о версии компонента и системе в целом вы можете найти в данной утилите.Средства диагностики

Подробнее о dxdiag на нашем сайте.

Что такое Direct3D

Direct3D — это интерфейс программирования графических приложений (API) для Microsoft Windows. Часть DirectX Direct3D используют для рендера 3D графики в программах, требующих повышенную производительность, к примеру, в играх. Direct3D использует аппаратное ускорение, если оно предусмотрено в видеокарте — это делает возможным ускорить 3D-рендеринг или же ускорить его частично.

Direct3D расширяет возможности аппаратного обеспечения 3D-графики, в том числе Z и W-буферизацию, буферовку трафарета, пространственное сглаживание, альфа-смешение, смешение цветов и текстур, отсечения, отбраковки, эффекты атмосферы, перспективного текстурного картирования, программируемые шейдеры HLSL и эффекты. Объединение с другими возможностями директа позволяет Direct3D предоставить следующие функции: видео-сопоставление, 3D-рендер в 2D-оверлейных плоскостях и даже спрайты, обеспечивающие использование 2D и 3D-графики в медиа-связях.

Другие компоненты

Direct3D – это один из важных, но не единственный компонент входящий в комплект директа. Рассмотрим каждый компонент отдельно.

  • DirectDraw. Сейчас не используется и его разработка прекращена. Ранее отвечал за вывод растровой графики.
  • DirectInput. Эта часть отвечает за внешние игровые устройства. Т.е. именно он обрабатывает данные, которые поступают с джойстиков, мыши, клавиатуры и другого периферийного оборудования.
  • DirectPlay. Отвечает за сетевое взаимодействие с играми. Доступна поддержка соединения клиент-сервер (для многопользовательских игр, которые обрабатывают данные на сервере) и клиент-клиент (локальные игры, где связь происходит напрямую между компьютерами).
  • DirectSound. Как понятно из названия – это работа со звуком. Обрабатывает звук на низком уровне (формат wav).
  • DirectMusic. Обработка музыки в форматах Microsoft.
  • DirectShow. Тоже все должно быть понятно из названия. Отвечает за ввод и вывод аудио и видео данных.
  • DirectX Instruments. Служит для синтезирования MIDI звуков. Ранее использовалась в некоторых аудио программах по написанию музыки. Сейчас практически вытеснена технологией VST от Steinberg.
  • DirectSetup. Отвечает за процесс установки всего пакета директ икс.
  • DirectX Media Objects. Поддержка потоковых объектов (эффекты, энкодеры, декодеры и др.)
  • Direct2D: обработка и вывод двухмерной графики, в формате 2D.

Что такое Feature levels и его поддержка видеоконтроллерами

Feature levels – это уровень функций видеокарты. Это понятие начало использоваться с Direct3D 11.

Каждая видеокарта может реализовать определенный уровень функций, который зависит от установленного графического процессора. Сам по себе уровень функций – это четко заданные возможности видеоконтроллера. К примеру, Feature levels 9_1 содержит функции, которые реализованы в Direct3D 9, а 11 уровень функций, соответственно в Директ 3D 11.

Работает такая система только на повышение, например, игра или программы, разработанные для 9 версии, будут работать в 11, но на оборот нет.

Более детально о Feature levels можно прочесть на официальном сайте: https://msdn.microsoft.com/ru-ru/library/windows/desktop/ff476876.aspx

composs.ru

Сравнение OpenGL и Direct3D / Хабр

Очень часто встречаются различные заблуждения по поводу этих двух API.

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

Так как тема очень холиварная, я старался придерживаться максимально нейтрального тона.

Взгляд с высоты птичьего полёта
Оба API предоставляют доступ к функциям аппаратного ускорения 3D-графики.

Direct3D — проприетарная разработка Microsoft, созданная специально для Windows. В настоящее время используется так же и на Microsoft Xbox. На других платформах недоступен (если не брать в учёт эмуляцию API, предоставляемую Wine, а также виртуализацию).

OpenGL — открытый стандарт, разрабатываемый некоммерческой организацией Khronos Group при участии сообщества. Все крупные производители GPU (nVidia, AMD, Intel), так или иначе, влияли на OpenGL. В отличие от Direct3D, доступен на очень большом количестве платформ. В частности, OpenGL является основным API для взаимодействия с GPU в Linux и Mac OS.

«Внешние» технические различия API
Direct3D основан на технологии COM. COM — это, по сути, стандарт бинарного представления компонентов. Как известно, классы на чистом C++ не могут быть использованы из других языков программирования, так как они не имеют стандартизованного бинарного представления. В частности, каждый компилятор использует свой собственный метод декорирования имён. COM же позволяет работать с объектно-ориентированной концепцией из любого языка, его поддерживающего. COM — это тоже Windows-specific технология (использует такие специфичные для Windows вещи, как реестр).

В приложении на Direct3D используются указатели на интерфейсы объектов. Работа с объектом осуществляется путём вызова методов его интерфейса. Например, интерфейс так называемого device-а (device в Direct3D — это контекст выполнения для конкретного окна), имеет название (примеры для Direct3D 9) IDirect3DDevice9, для объекта текстуры — IDirect3DTexture9, и т.д. Создание объектов происходит как вызовы методов интерфейса IDirect3DDevice9, например, для текстуры это будет IDirect3DDevice9::CreateTexture.

В Direct3D 10 произошло значительное количество изменений. Direct3D 10 не является обратно совместимым с Direct3D 9. Т.е. чтобы перенести программу на новый API потребуется переписать весь код, относящийся к рендерингу. Подробнее о Direct3D 10 ниже.

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

В OpenGL используется так называемая машина состояний (конечный автомат). Результат вызовов функций OpenGL зависит от внутреннего состояния, и может изменять его. В OpenGL, чтобы получить доступ к конкретному объекту (например, текстуре), нужно сначала выбрать его в качестве текущего функцией glBindTexture, а затем уже можно влиять на объект, например, задание содержимого текстуры осуществляется вызовом glTexImage2D.

Аналогом концепции device-а в Direct3D здесь является контекст. Контекст OpenGL привязан к конкретному окну, так же, как и device в Direct3D.

Общим для двух API является то, что обе не предоставляют чего либо за пределами работы с графикой. А именно, нет функций ни для создания окна, ни для работы с вводом с клавиатуры/мыши, ни для работы со звуком (здесь я не затрагиваю другие части DirectX, такие как DirectInput и DirectSound). Т.е. они не являются библиотеками высокого уровня.

В самой упрощённой форме можно сказать так: OpenGL и Direct3D позволяют рисовать треугольники. И всё. Суть в том, что треугольники можно рисовать очень по-разному (текстуры, освещение, преобразования, и т.д.).

Самое важное различие
Имя ему — расширения (extensions).

Direct3D по сути фиксирован в пределах одной мажорной версии. Какие-либо изменения/дополнения происходят только при выпуске следующей версии.

В OpenGL реально доступное API определяется производителем GPU. Реализация OpenGL позволяет определять расширения к основной спецификации. Приложение может получить список поддерживаемых расширений во время выполнения, и проверить на доступность те, которые оно желает использовать.

На самом деле практически весь функционал OpenGL — это расширения. Развитие OpenGL идёт так: появляется новая фишка, производитель реализовывает её в своём драйвере и документирует доступное расширение. Приложения могут использовать новые функции прямо сейчас, не дожидаясь включения в официальную спецификацию. Если это расширение специфично для конкретного производителя, то в названии оно несёт его имя (например, вот так: GL_NV_point_sprite, где NV — значит nVidia). Если расширение реализовано многими вендорами, то в названии используется EXT (например, GL_EXT_draw_range_elements).

Со временем, если расширение широко используется, оно стандартизируется в ARB, и после этого содержит в имени ARB (например, GL_ARB_vertex_buffer_object). Такое расширение имеет официальный статус.

Самые важные расширения со временем становятся частью основной спецификации. Каждая новая версия OpenGL — это по сути старая версия+несколько новых интегрированных расширений. При этом новые функции продолжают быть доступными как расширения. Т.е. на самом деле с точки зрения программы может быть вообще всё равно, какая версия OpenGL. Главное — какие доступны расширения. Версия OpenGL — это просто способ указать, какой набор расширений гарантированно поддерживается.

Что нового в Direct3D 10/11 и OpenGL 3.x
Microsoft сделали радикальную переработку API в Direct3D 10. Сейчас оно имеет более унифицированный и современный вид. Были выброшены некоторые устаревшие вещи, такие как fixed function rendering (без использования шейдеров). Ещё был выполнен переход к новой модели работы драйвера. В частности, реализация Direct3D теперь может иметь не только kernel-space часть, а и user-space. Это позволяет экономить время на переключения user-space/kernel-space. Однако, из-за новой модели драйвера, Direct3D 10 и выше недоступен на Windows XP. Учитывая всё ещё большую популярность Windows XP, это довольно грустно.

Реализация OpenGL изначально была разделена на user-space и kernel-space части, так что там такой проблемы и не было. Ещё различие в том, что до сих пор не вносилось изменений в OpenGL API, которые не были бы обратно совместимы. Каждое нововведение — это расширение.

Функционал, появившийся в Direct3D 10, например, геометрические шейдеры, доступен в OpenGL на любой платформе через расширение, или, начиная с OpenGL 3.2, как часть основной спецификации. Стоит особо подчеркнуть, это важно, функционал Direct3D 10/11 доступен в OpenGL на любой платформе, в том числе и Windows XP. Таким образом у многих сложилось впечатление, что Direct3D 10 не доступен на Windows XP исключительно по политическим причинам, а не из-за каких-то реальных технических проблем. Впрочем, я не могу судить здесь, сохраняя нейтральный тон, о том, были ли действительно такие проблемы при введении новой модели видео-драйверов.

Теперь о нововведениях в OpenGL 3.x. Начиная с OpenGL 3.0 появилась так называемая deprecation model. Часть старой функциональности, относящаяся к fixed function rendering, а также к рендерингу, основанному на glBegin/glEnd, и многие другие устаревшие и неактуальные вещи, были объявлены как deprecated, и были впоследствии удалены из основной спецификации OpenGL 3.1. Это позволяет сохранять основную спецификацию в актуальной и современной форме.

Казалось бы, это должно сломать совместимость со старыми программами. Ведь раньше, когда программа создавала контекст OpenGL, она просто получала контекст версии максимально доступной. Это было ОК, т.к. новые версии всегда являлись надстройками над предыдущими. Чтобы избежать нарушений совместимости, программы, которые хотят получить контект OpenGL 3.x должны использовать новый метод создания контекста, который позволяет указать, какую именно версию OpenGL нужно получить.

Но, как следует из того, что уже было написано раньше про расширения, и это важно, функционал OpenGL 3.x можно получить через расширения, не создавая контекст новым методом. Т.е. OpenGL 1.1 + расширения = OpenGL 3.2! Таким образом, сохраняется полная обратная совместимость. Например, геометрические шейдеры — это расширение GL_ARB_geometry_shader4.

Распространённые заблуждения
OpenGL отстаёт от Direct3D, и вообще, судя по таким вялым изменениям в спецификации, наверное уже совсем мёртв.

Собственно, причина такого заблуждения — это незнание о расширениях. Вообще говоря, OpenGL может и часто опережает (!) Direct3D в плане инноваций, т.к. производитель может добавить расширение к OpenGL, не дожидаясь никого, в то время как в Direct3D изменения может внести только Microsoft.

OpenGL — это для программ профессиональной графики, а Direct3D — это для игр.

Это заблуждение имеет историческую причину. OpenGL исходно разрабатывался как библиотека 3D графики, которая МОЖЕТ, но НЕ ОБЯЗАНА ускоряться аппаратно. Это также объясняет наличие некоторых функций, например рендеринг стерео-изображений, которые не нужны играм. Direct3D же разрабатывался гораздо позже, сразу с расчётом на ускорение на GPU. В момент появления многих пакетов профессиональной работы с графикой Direct3D просто не было.

Интересные нюансы
Microsoft поставляет вместе с Windows драйверы без поддержки OpenGL. OpenGL будет рендерить без ускорения, или эмулироваться через DirectX. Так что, если нужна поддержка OpenGL под Windows, нужно ставить драйвер с сайта производителя. Причины для такого неприятия OpenGL, скорее всего, опять чисто политические.
Так что же делать, как жить?
Примечание: А вот эта часть носит весьма субъективный характер.

Если Вы — разработчик, и решаете, какое API использовать, то задумайтесь над следующим: За OpenGL — массовая кроссплатформенность, в частности, доступность всех новых функций и на Windows XP, где Direct3D 10/11 нет, и никогда не будет. Против OpenGL — драйвера в Windows из коробки не имеют поддержки OpenGL, так что ставить их нужно с сайта производителя.

Если Вы — новичок в разработке 3D-приложений, и желаете освоить эту область, то я бы рекомендовал сделать так: сначала разобраться с Direct3D (причина тому проста — Microsoft предоставляет очень качественный SDK), а затем разобраться с OpenGL (это будет очень просто после Direct3D). К сожалению, такой вещи, как SDK, для OpenGL нет. Поэтому осваивать с нуля будет сложнее.

Вот вроде и всё. Успехов в разработке!

habr.com

Введение

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

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

Дело в том, что нам досталось богатое и мощное наследство: наследство форм, рычагов, шкивов, блоков, и шасси, и существенной особенностью нашего технического наследия является трехмерность.

Надвигающаяся трехмерная революция

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

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

Что такое Direct3D?

Direct3D это компонент библиотеки DirectX, который поддерживает высокопроизводительную трехмерную визуализацию (rendering) и анимацию для Windows 95. Direct3D имеет два интерфейса: абстрактный режим (Retained Mode) и непосредственный режим (Immediate Mode). Абстрактный режим обеспечивает мощный интерфейс высокого уровня, который позволяет создавать и рисовать сложные трехмерные сцены. Непосредственный режим — это интерфейс низкого уровня для обработки элементарных треугольников, составляющих изображение. Функции абстрактного режима используют при работе непосредственный режим. В данной книге мы будем рассматривать только абстрактный режим.

Direct3D не был разработан фирмой Microsoft. Первоначально он был создан расположенной в Лондоне компанией RenderMorphics и назывался Reality Lab. В феврале 1995 года фирма Microsoft приобрела RenderMorphics и начала переработку Reality Lab для работы под Windows 95. В существующем виде Direct3D базируется на Direct Draw — части DirectX, работающей с двухмерной графикой. Direct3D применяет DirectDraw для работы с видеобуферами и использования механизма переключения страниц. Подобно DirectDraw, Direct3D написан таким образом, чтобы использовать любые установленные на видеоплате аппаратные ускорители (при условии, что у вас установлены правильные драйверы видеокарты). Когда приложение, использующее DirectDraw выполняется на компьютере с видеокартой, обеспечивающей аппаратное копирование прямоугольных областей изображения, сразу же увеличивается скорость работы. Когда приложение использующее Direct3D выполняется на компьютере с аппаратным ускорителем трехмерной графики, ускорение работы еще заметнее. Таким образом, для наилучшей работы требуется видеоплата с аппаратными ускорителями для двухмерной и трехмерной графики. Однако, наличие видеоплаты с ускорителем трехмерной графики не является необходимым для разработки приложений с использованием Direct3D 2.

Требования к читателю

Чтобы эффективно пользоваться этой книгой, вы должны быть программистом и знать язык C++. Нет необходимости быть экспертом по C++, но вам необходимо понимать такие особенности языка, как классы и виртуальные функции. Некоторые из этих идей становятся ясными при рассмотрении контекста в котором они используются, но лучше всего обратиться к классическим книгам по C++, таким как «Язык программирования C++» Бьерна Страуструпа и «Изучаем C++» Эла Стивенса.

Вам необходимо быть знакомым с Visual C++ и библиотекой MFC (Microsoft Foundation Classes). Мы будем использовать только часть возможностей MFC, так что особого мастерства не требуется.

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

Требования к программному обеспечению

Чтобы использовать Direct3D вам необходимы Visual C++ версии 4.0 или выше, DirectX версии 2.0 или выше и Windows 95.

Требования к аппаратному обеспечению

Для работы с книгой подойдет любая машина с установленной системой Windows 95. С практической точки зрения, однако, лучше использовать компьютер с процессором Pentium и 16 мегабайтами памяти. Поскольку Visual C++, DirectX и программы из этой книги поставляются на CD-ROM, вам потребуется дисковод для чтения дисков CD-ROM. Также необходима видеокарта, которая может работать с DirectX.

Организация книги

Книга состоит из десяти глав. Первая глава представляет собой краткий обзор Visual C++ и описание мастера создания приложений Direct3D AppWizard. В главе 2 описываются базовые концепции трехмерной графики и применяемые в книге термины. Третья глава — это введение в интерфейс программирования приложений (API) Direct3D. Глава 4 описывает структуру приложения, использующего Direct3D. С четвертой по десятую главы последовательно разбираются возможности Direct3D и приводятся 23 демонстрационных программы. В большинстве случаев каждая тема сопровождается отдельной демонстрационной программой. В приложении А приведено краткое описание демонстрационных программ и содержимого CD-ROM, прилагаемого к книге.

Получение помощи

Если у вас возникли вопросы, комментарии или замечания, можете написать автору по адресу [email protected]

1 Графический интерфейс пользователя был разработан в компании Xerox. Часто создание графического интерфейса связывают с компанией Apple поскольку компьютер Apple Macintosh был первым широко распространенным компьютером, использующим графический интерфейс пользователя.

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

Сайт управляется системой uCoz

netlib.narod.ru

Что такое DirectX?

Немного о DirectX

Пока в природе не существовало DirectX, большинство игровых программ для персональных компьютеров работали под управлением Ms Dos.Чтобы запустить такие игры, пользователям приходилось бороться, в прямом смысле этого слова, с конфигурационными файлами системы, такими, как AUTOEXEC.BAT, CONFIG.SYS, и с настройками драйверов типа EMM386.EXE и т.д... лишь ради того, чтобы получить несколько дополнительных свободных байт из доступных 640Кб базовой памяти, даже если на компьютере установлено 16Мб оперативной памяти.

Жизнь разработчиков программного обеспечения была не сахар, потому что для преодоления ограничения в 640Кб приходилось использовать различные драйверы для каждой разновидности видеоадаптеров и звуковых карт.

С выходом в свет технологии компании Microsoft DirectX для Windows 95 все указанные выше проблемы становятся историей.

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

Но разработка игр с использованием DirectX остается все еще непростой задачей. Иногда все еще достаточно трудно найти грамотную документацию, и начинающие разработчики тратят много времени на поиск знаний о том, как использовать такие новшества, как DirectDraw, Z-буферы или DirectSound, а также многие другие сложные, но полезные инструменты.

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

Что такое DirectX ?

DirectX представляет собой набор из нескольких API (application programming interface — интерфейс программирования приложений), позволяющих разработчикам игр и других интерактивных приложений получать доступ к специфическим функциям аппаратного обеспечения без необходимости написания аппаратнозависимого программного кода. DirectX основан на наборе интерфейсов COM или классов. COM расшифровывается, как Component Object Model (Компонентная Модель Объектов), и представляет собой спецификацию интерфейса, в котором функции вызываются через указатели. Таким образом, объекты COM могут описываться такими языками программирования, как C/C++, Delphi или даже Basic. Все примеры, ссылка на которые была выше, написаны на C++, т.к. я пользуюсь именно этим языком. Интерфейс COM используется не только в DirectX, но и на уровне операционной системы в качестве модели объектов и является сердцем одной из самой широко применяемой технологии — OLE (Objects Linking and Embedding — связывание и встраивание объектов).

Последняя версия DirectX имеет порядковый номер 5.0 и включает в себя следующие API:

  • DirectDraw — обеспечивает доступ к аппаратным средствам, отвечающим за изображение. Предлагается возможность работать с двумерной графикой и напрямую управлять видеопамятью, оверлеями и сменой видеостраниц.
  • DirectSound — как видно из названия, этот компонент обеспечивает аппаратнонезависимый интерфейс воспроизведения звука. DirectSound позволяет приложениям полностью использовать возможности аппаратных компонентов, обеспечивающих работу со звуком, например, микширование без временных задержек.
  • DirectInput — Обеспечивает аппаратнонезависимый ввод данных в систему в режиме реального времени. События, обрабатываемые DirectInput, формируются клавиатурой, мышкой и джойстиком.
  • DirectPlay — представляет собой независимый протокол для осуществления связи между компьютерами. Может применяться для многопользовательских игр, связь в которых осуществляется через Интернет, локальную сеть или прямое последовательное соединение с помощью кабеля. Интерфейс, именуемый DirectPlay Lobby, позволяет создавать онлайновые места встреч в интернете, попадая в которые множество людей могут объединяться и совместно участвовать в играх.
  • Direct3D — это подсистема создания трехмерных графических изображений. Состоит из API низкого уровня, который обеспечивает несколько базовых возможностей создания изображения, и API высокого уровня, который осуществляет комплекс операций, образующих изображение.

DirectX 5.0 SDK (Software Development Kit — Набор разработчика программ), доступен для загрузки с сайта Microsoft.

Справочник по DirectX для начинающих

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

Потому что DirectX широко используется в современном поколении компьютерных игр. Каждая игрушка, имеющая логотип "for Windows 95", прежде, чем запуститься на Вашем компьютере, требует наличия установленного в системе DirectX. Вот почему DirectX это не просто "нечто для программистов", это принципиально необходимое нечто для игроков.

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

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

С появлением все большего и большего числа игр, использующих DirectX, пользователи замечают некоторые отличия, например:

  • Улучшенные многопользовательские игрыПричина, почему хороших многопользовательских игр не так много, в том, что они очень сложны в создании. DirectPlay делает создание таких игр менее болезненной проблемой и упрощает их установку. Вот почему мы вправе ожидать увеличения количества новых классных многопользовательских игр.
  • Завораживающие 3D-игрыВы знаете, почему трехмерные игры идут на Вашем компьютере так медленно? Причина в том, что изображение 3D-объектов на плоском экране требует огромного количества математических вычислений. Если эти вычисления осуществляются центральным процессором системы, то такие процессы обсчитываются слишком медленно, так как процессор выполняет еще и другие системные операции. Одним из решением этой проблемы является возложение задач по обработке трехмерных процессов на специальные 3D-видеоакселераторы.

    Такие карты имеются в продаже, но многие игры не используют аппаратные возможности специализированных плат, потому что создатели игры должны написать соответствующий драйвер, а иногда бывает проблематично переписать заново целые фрагменты кода для того, чтобы использовать преимущества аппаратной обработки 3D. Компонент Direct3D, впервые включенный во вторую версию DirectX, обеспечивает стандарт на использование видеоадаптеров, обеспечивающих аппаратную 3D-акселлерацию, и его применение, несомненно, заставит трехмерные игрушки работать быстрее.

    Кроме этого, Direct3D эмулирует программную реализацию 3D для компьютеров, не оснащенных аппаратной поддержкой обработки трехмерной графики.

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

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

  • Изображение в играх стало гораздо лучшеБольшинство игр, написанных для DOS, используют низкое разрешение изображения, обычно 320x240. Это объясняется тем, что такое разрешение максимально для стандартных VGA-видеокарт, поддерживающих отображение только 256 цветов. Для того, чтобы использовать более высокое, а следовательно, более качественное разрешение, такое, как 640x480 или 800x600, разработчикам необходимо писать игры, работающие с видеокартами стандарта Super VGA, а это означает увеличение объема работ.

    DirectX поддерживает VGA и SVGA видеорежимы при 64К цветов (Hi-color) без дополнительных затрат ресурсов. С каждым днем производительность видеоадаптеров возрастает, следовательно, DirectX игры будут выглядеть все более реалистично и привлекательно.

www.ixbt.com


Смотрите также