Directx или opengl

DirectX API

В данном разделе расположены уроки по DirectX 9. Я выбрал именно девятую версию, так как считаю, что полный переход на новые версии Windows произойдёт ещё нескоро. А пока у большинства пользователей установлена операционная система Windows XP, лучше использовать библиотеку DirectX 9, программы на которой прекрасно запускаются и на более новых версиях Windows: Vista и Windows 7.

В определённый момент любому начинающему программисту приходится выбирать, что учить дальше: DirectX или OpenGL.

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

Библиотека OpenGL появилась на три года раньше DirectX — в 1992. Главное преимущество OpenGL — кросплатформенность. Т.е. приложения, написанные под OpenGL, могут работать на разных платформах. Это в теории. На практике для разных платформ приходится писать немного разный код (связанный с особенностями операционной системы, а не OpenGL).

Это самое важное преимущество OpenGL перед DirectX. Т.е. весь код связанный с выводом графики будет работать и в Windows, и в Linux, и на Sony PlayStation 3.

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

Главное преимущество DirectX по сравнению с OpenGL состоит в том, что DirectX содержит сразу несколько библиотек, а не только графическую, как OpenGL. В состав DirectX в разное время входили: Direct3D — основная графическая библиотека, D3DX — вспомогательная графическая библиотека, DirectX Audio — библиотека для работы со звуком, DirectDraw — работа с двухмерной графикой (устарела), DirectShow — видео, DirectX Input — ввод (мышь, клавиатура, джойстики), Direct2D — двухмерная графика, DirectWrite — текст, DirectX Play — сеть, HLSL — язык для написания шейдеров.

Несмотря на такое многообразие, на практике используются не все библиотеки. В основном это: Direct3D, D3DX, HLSL, DirectX Audio.

Остальные библиотеки практически не используются. Вместо DirectPlay лучше использовать сокеты, DirectShow к играм вообще имеет мало отношения (и насколько помню, её убрали из DirectX), а насчёт Direct2D и DirectWrite ещё рано что-нибудь говорить — эти библиотеки появились только в Windows 7 (DirectX 11).

Интересная ситуация обстоит с DirectInput (ввод). Для ввода с мышки и клавиатуры эту библиотеку использовать крайне нежелательно. В своих уроках я рассматриваю DirectInput по двум причинам: ввод с клавиатуры гораздо проще осуществить через DirectInput, чем через асинхронный ввод, предоставляемый Windows; вторая причина состоит в том, что в первой серьёзной программе на сайте (камера) ввод легче сделать, используя DirectInput. Во всех следующих программах я не буду использовать DirectInput. В будущем уроки по DirectInput будут дополнены ещё двумя: в одном ввод будет осуществляться с джойстика, в другом — с руля (с поддержкой force feedback).

Так как в OpenGL тоже есть свой аналог HLSL — GLSL, то у DirectX остаётся только одно серьёзное преимущество — DirectX Audio — это очень мощная библиотека для работы со звуком. Хотя библиотеку D3DX тоже не стоит сбрасывать со счетов. Например, с помощью неё можно за пару минут создать виртуальную камеру (если знать как).

Помимо этого, библиотеки DirectX содержат дополнительный функционал, используемый в консолях фирмы Microsoft — XBox.

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

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

Если вы всё ещё не выбрали, какую библиотеку использовать, у меня есть для вас совет: начинайте изучать ту, чьё название лучше для вас звучит. Не имеет значения, с чего вы начнёте: OpenGL или DirectX.

Кроме того, ничто не мешает использовать сразу две библиотеки: OpenGL для вывода графики и DirecX Audio для вывода звука.

В своих уроках я выбрал рассмотрение именно DirectX. Основная причина — это то, что DirectX состоит из набора классов, в отличие от OpenGL, который представляет собой набор функций. На мой взгляд, ситуация, когда программа строится вокруг одного объекта гораздо более правильная, чем использование несвязанных (на первый взгляд) функций.

По-моему мнению, при изучении компьютерной графики нужно стараться понять, как графика создаётся на самом низком уровне. К сожалению, сейчас это довольно трудно сделать: и DirectX, и OpenGL скрывают низкоуровневые детали от программиста. Тем не менее, в своих уроках я постарался добраться до самой сути. Поэтому уроки данного раздела очень тесно переплетены с уроками из раздела Математика. Понимание базовых вещей даст вам возможность без проблем использовать и DirectX, и OpenGL.

Возможно, в будущем на сайте появятся два дополнительных раздела: по DirectX 11 и OpenGL 3. А прямо сейчас вы можете приступить к изучению DirectX 9.

Новые уроки раздела сейчас рассматриваются в рассылке.

1. Установка DirectX SDK. Перейти.

2. Введение в DirectX API. Перейти.

3. Поверхности (surfaces). Перейти.

4. Инициализация Direct3D. Перейти.

5. Инициализация DirectInput. Перейти.

6. Ввод с клавиатуры. перейти.

7. Вершинные буферы. Простая геометрия в Direct3D. Перейти.

10. Преобразования матриц. Перейти.

11. Виртуальная камера. Первая часть. Перейти.

12. Виртуальная камера. Вторая часть. Перейти.

13. Спрайты. Первая часть. Перейти.

16. Состояния рендеринга. Перейти.

17. Вывод текста в DirectX. Перейти.

18. Программа Клетки. Перейти.

19. Выбор объектов в 3d (Object picking). Перейти.

20. Буфер глубины (Depth buffer). Перейти.

21. Растеризация треугольников. Перейти.

22. Арканоид. Первая часть. Перейти.

22. Арканоид. Вторая часть. Перейти.

Я рекомендую заниматься по разделу Шаг за шагом.

Камера

Клетки

Спрайты

DirectX и OpenGL — DirectX

И в нем в одной из статей промелькнула такая строчка, что

DirectX и OpenGl очень сильно схожи, но второй имеет кучу каких-то преимуществ

Якобы то, что умеет делать DirectX OpenGl это давно умела,

а что реализовано в DIrectX 10 OpenGl делает это без труда и не с такими требованиями к железу.

Я хотел узнать у знающих: так ли это все?

Если да, то почему не используют OpenGl вместо DirectX?

И вообще, в чем их отличие?

(Извиняюсь если тема не там открыта)

Всем привет! Можете подсказать, что лучше изучать: DirectX или OpenGL ? зы и по возможности посоветуйте книжки)

Есть микропроц. система на предприятии, которая мониторит параметры технологич. процесса в реальном времени. Надо визуализировать процесс в.

Хотелось бы узнать мнения людей кто че думает. Просьба свои ответы аргументировать, хотелось бы знать связаны ли они с какими нибудь.

Всем Привет. Изучая С++ я узнал про DirectX SDK.Захотелось попробовать ,но такая вот проблема я по С++ остановился только на "указателях". .

Экспорт из 3D max 8 в OpenGL или DirectX. Возможно ли такое? И как? Подскажите пожалуйста. .

Народ,в чем отличие между этими тремя библиотеками: Directx,OpenGL,GUI? DirectX (от англ. direct — прямой, непосредственный) — это.

ДиректХ поддерживается и развивается блягодаря компании Майкрософт, и многие разработчики игр используют именно его как основную платформу(поэтому так мало игр для Линукс).

Ну и конечно вокруг директХ намного больше шумихи — чего только стоит отказ Майкрософот выпускать ДиректХ 10 для ВинХП.

Может правда я ошибаюсь?и это всё из-за моих кривых рук?

HAL может содержать три разных типа модели обработки вершин (на одном устройстве) — программный, аппаратный (который зависит от конкретного девайса) и смешанный. Аппаратный тип поддерживает только обработку вершин и дает возможность небольших изменений состояния устройства по запросу приложения. Кроме использования возможностей видеокарты, DirectX в полной мере пользуется инструкциями AMD 3DNow! и Intel Pentium SIMD (одна команда – много данных), которые включены в обработку некоторых вершинных шейдеров.

DirectX против OpenGL

OGL — любят все остальные и другие(назовем так) создатели игр.

Сравнение Dx и OGL является безграмотным, корректное сравнение OGL и D3d.

1)Говорят в DX10 программировать легче чем в 9 это так?

1.1)если это так то где легче программировать в dx10 или opengl?

2)На сколько они бесплатны?т.е. платно ли создание на них коммерческих и опен сорс проэктов?

3)OpenGL вроде собиралась дать ответ 10dx т.к. её(openGL) версия уже несколько устарела. что про это слышно?

4)Дайте пример игры на OpenGL с самой хорошей графикой.

5)Какая примерно разность в производительности?

6) говорите кросс платформенность OpenGL, а под кпк можно? с использованием видеокарты? intel 2700G.

Иногда бывает что новые возможности так и не вошли в очередную версию Direct3D в связи с какими-то соображениями компании.

Разработчики OpenGL пошли другим путем — в место постоянных серьёзных изменений интерфейса библиотеки был введен механизм, позволяющий разработчикам граф. ускорителей самим давать разработчикам ПО доступ к новым аппаратным возможностям. Этот механизм полчил название расширений OpenGL extensions.

При установке новейшего драйвера на свой device ты устанавливаешь последнюю версию OGL.

Кстати как по мне, нашел вполне неплохой сайт посвященный DirectX http://DXGraphic.ho.ua . Есть мелкие недочеты с ссылками внутри текстов, но сайт оставляет вполне приятное впечатление!)

И я не думаю, что Кармак просто так начал бы делать свою игру Rage именно с использованием OpenGl, а не DX, если бы он не был уверен в превосходстве первого. Т.к. там используется _ОЧЕНЬ_ тяжелая технология (мегатекстуры), то ему надо наибольшая производительность. ДУмаю, что Кармак знает свое дело, поэтому про превосходство DirectX вопрос довольно спорный. Кстати в книге по OpenGL "OpenGL: Суперкнига" было написано почему все считают DirectX более произоводительным для real-time рендеринга.

Мое скромное мнение — производительность в этом случае зависит исключительно от прямоты рук разрабов.

Кстати, ОпенГЛ как раз обновляется медленнее.Еще не сильно нравится механизм расширений — на мой взгляд графический апи должен быть монолитным, строгим и не должен вызывать лишних вопросов. Гибкость — это хорошо,конечно. но все же.

DirectX и OpenGL в чем заключается разница между ними? И что проще для начала изучения работы с графикой?

Здравствуйте дорогие формовчане. Помогите пожалуйста выбрать язык программирования? Для создания игр. И технологию 3Д графики. И подскажите.

Реализовать DirectX. Или разобраться в том, как программисту наладить работу DirectX у клиента под Windows — DirectX

Здравствуйте Программисты. Заплачу за решение моего вопроса! 25-50 тыс. рублей. 50 тыс. рублей заплачу, если полностью решите мой.

Что лучше учить Directx или OpenGL? OpenGL кроссплатформенный и ничем не уступает directx но почему все в основом берут Directx?

Directx или opengl

Что лучше DirectX или OpenGL?

DirectX лучше работает под виндами

OGL одинаково криво работает на любой платформе, выбор за тобой.

> OGL одинаково криво работает на любой платформе,

Смотря, что тебе надо, какие у тебя знания ООП (если никаких, то DX противопоказан!) OGL предполагает хорошее знание платформы на которой пишешь, но заточена под процеДуры, а вот DX — чистейший ООПс! COM — forever! Вообще-то что-то несложное, тогда выбирай OpenGL, подключи GL, GLU, GLAUX и работай себе на здоровье! 🙂

Корректней вопрос звучать должен так: "Что лучше Direct3D или OpenGL?".

А в данном случае DirectX естественно лучше, так, как там много чего есть.

А если корректно, то я не знаю.

Кто там что про OGL заливает? Про Quake 3 забыли? После того, как Loki Entertaiment перенесла его на SDL (которая отлично работает совместно с OpenGL) — компилируется на любой платформе (windows, linux, FreeBSD, MacOS classic, MacOS X, BeOS, Solaris и пр.) без изменения кода. Быстродействие ничуть не хуже, чем в оригинале (по крайней мере в версии для Linux). А DirectX — это лишняя головная боль, особенно для начинающих геймеров. Не для игровой библиотеки была придумана COM-архитектура.

а если немного перевести вопрос в другую плоскость:

PS: (off-topic) хочу поприветсвовать всех и извиниться за почти годовое отсутствие

> Что работает быстрее Direct3D или OpenGL? (при одинаковых

> условиях нагрузки, одинаковом железе, одной винде и каких-то

На этот вопрос тебе могут ответить только в ATI или nVidia

hexone: неужели никто не проверял ручками (на своей машине)?

Что быстрее, OpenGL или Direct3D ?

Примерно — из-за того, что макрософт сдуру игровую библиотеку написала на COM-технологии, которая на заднем фоне создает шумы в производительности (точнее часть процессорного времени уходит на обработку вызовов интерфейсов, для удостоверения в этом более внимательно ознакомьтесь с самой технологией), что немного медленне OpenGL.

Что-то не сильно я заметил шума производительности.

Хех. молодой еще, зеленый(C) Кин-дза-дза.

У ATI это D3D, у nVidia это OGL.

В чем заключается платеж?

Что-то я не заметил особенно сильных отклонений в интерфейсах D3D при переписывании движка с D3D8 на D3D9. Ну изменил некоторые названия и имена структур — это практически все изменения.

Насчет заточки драйверов — это ты зря. Производители одинаково поддерживают как OGL так и D3D. Иначе на играх бы писали — что эта игра для ATI Radeon, а эта игра для NVidia GeForce. Ты представляешь, как это было бы глупо. Приходишь в магазин и говоришь: "продайте мне видеокарту, чтобы я мог в Quake3 поиграть" или "мне подарили Warcraft III, а моя видеокарта его не держит" или еще тупее: "мне, пожалуйста, GeForce FX 5200, чтобы я мог в Quake3 погонять и ATI Radeon 9200, чтобы в Warcraft III c друзьями порубиться". Бывают игры заточенными под конкретную видеокарту (как Seriouse Sam или Unreal Turnament 2003), но никак ни дрова под игровой движок.

Вот тут ты не совсем прав. Как минимум реализация openGL у каждого производителя своя (через свой набор расширений). А вот D3D (насколько я понимаю) — штука универсальная. Таким образом уже есть расхождения.

. и зря не пишут. Хотя сейчас ситуация (похоже) выравнивается, но еще совсем недавно (2-3 года назад) игрушки вели себя очень по разному на nV и ATI.

б) показ происходил у заказчика на машине с ATI FireGL 8800 (зверь а не карта, но ATI"шная)

в) Хотя различий (по картинке) не было на рабочих машинах, мы увидели совсем не то у заказчика.

>Производители одинаково поддерживают как OGL так и D3D

> Вообщем одни вытесняют других с рынка любым всевозможным

Вот это очень даже может быть.

>.. если руки кривые.

> а че ж у меня контра в OGL глючит? у кого руки корявые?

Зачем путать конкретную специфику твоей машины с руганью в сторону OpenGL. На OpenGL разрабатываются серьезные программы типа САПР как раз из-за того, что он продуманный и кроссплатформенный. Нужно конечно отметить, что там(GL) не очень удобно реализованы расширения, да они серьезным программам не очень-то и нужны. Игры прежде всего иллюзия реальности. Там(в САПР) не нужна реальность, там реальность не в визуализации а в расчетах и чертежах. А где нужна реальность там используется алгоритмы типа RayTracing, до которых, к сожалению, еще любой реализации DX и GL еще топать и топать. Резюмируя могу сказать: Выбор библиотеки зависит от задач, которые призвана решать твоя программа, а не от "что тебе приглянется на том и пиши". Любой задаче всегда предшествует анализ, в этот анализ и входит выбор библиотеки.

>Зачем путать конкретную специфику твоей машины с руганью в

и что мне теперь удавиться и не жить если у меня машина такая.

Да нравится вам пользоваться макрософтовскими библиотеками — пользуйтесь наздоровье 🙂 Все равно это неудобно 😉 и ненадолго B)

[20], 3ds MAX 6 глючит на Direct3D.

[21], неудобно — навеное, но ненадолго — это не так.

DirectX API
DirectX API. OpenGL или DirectX
http://oldshatalov.ghost17.ru/ru/articles/directx9_primer/index.html
DirectX и OpenGL
Вот недавно читал журнальчик один. И в нем в одной из статей промелькнула такая строчка, что DirectX и OpenGl очень сильно схожи, но второй имеет кучу каких-то преимуществ перед первым. Якобы то, что умеет делать DirectX OpenGl это давно умела, а что реализовано в DIrectX 10 OpenGl делает это без… DirectX
http://www.cyberforum.ru/directx/thread7014.html
Directx или opengl
directx или opengl Что лучше DirectX или OpenGL? DirectX лучше работает под виндами OGL одинаково криво работает на любой платформе, выбор за тобой. > OGL одинаково криво
http://www.delphimaster.net/view/9-1079371772

COMMENTS