DirectX или OpenGL


5 0

Это очередной халиварный и немного религиозный спор - что круче OpenGL или DirectX, а моя позиция как всегда заключается в том, что они оба хороши по своему.  

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

OpenGL доступна как на Windows, так и на набирающем популярность MacOS, постоянно постоянно сопротивляющемся, но как никогда перспективном Linux. А если говорить о мобильных платформах, то он доступен для iOS и Android. А это невероятно большой плюс.

Если вы хотите ограничиться только платформой Microsoft, то выбор очевиден - писать надо под DirectX. Ну а если есть планы завоевать мобильный рынок, то стоит подумать о OpenGL, потому что Microsoft на этом рынке пока результатами не блещет.  

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

Ну в случае с MS вообще ограничен только MS. И даже если писать только для Microsoft переходы на новые версии далеко не всегда возможны. Один только перенос кода с версии 9 на 10 был прекрасным. Я помню, как у 9-й версии Microsoft просто взяла и изменила метод работы с шейдерами. Просто очередной релиз SDK (кажется он был летний) отличался немного от предыдущего. 

У Microsoft даже внутри платформы с переносами кода на более новую версию могут возникнуть проблемы. Тут я бы не выделил победителя, потому что у обеих библиотек были проблемы с совместимостью. Еще раз скажу, что имеет смысл выбирать DirectX, если вы ограничиваетесь платформой Windows. Ну а на платформах Android или iOS бора нет, приходится выбирать OpenGL. 


Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым


Комментарии

crsib

22 Марта 2013

Эх, было бы все так просто с OpenGL. Сейчас так или иначе cуществуют используются 6 малосовместимых стандартов ( 2.1,3.3,4.х, ES 1.0, ES 2.0, ES 3.0), у которых отличаются языки шейдеров, частично (а иногда почти полностью) разные API. Хуже того, нет референсной реализации и очень мало контроля качества. В итоге на большей части PC рынка (Intel и AMD) OpenGL реализован криво, а на мобильниках, помимо часто кривых драйверов (для Adreno (ex-ATI, че тут хотеть), очень сильно различаются подходы к оптимизации


DiDi

22 Марта 2013

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


crsib

22 Марта 2013

DiDi, вот странные вещи ты говоришь. Во-первых, D3D9 есть везде начиная с XP, и, сюрприз-сюрприз, на XBox и некоторых Windows Mobile телефонах. D3D11 есть на всех PC c Vista+, WinRT, WP8. Видимо будет в следующем поколении XBox.

OpenGL на PC работает экстремально плохо. Шансов, что все будет работать на AMD мало. Про Intel я вообще промолчу. У пользователя, особенно на хрюшке может не стоять драйверов, что обеспечит ему клевый софтварный рендер и поддержку аж API 1.1. При этом есть отличный шанс на то, что D3D игра будет работать великолепно.


DiDi

22 Марта 2013

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


crsib

23 Марта 2013

У меня-то как раз есть. Причем на OpenGL ES. Про трудозатраты вообще не понял шутки. Следить за состоянием конвеера на OpenGL та еще пытка, потому что значительная часть его инкапсулирована почему-то в графические "примитивы". Держать код перносимым это вообще жесть. У ES 1 вообще нет требований к форматам аппаратного сжатия текстур, у ES 2.0 есть убогий ETC. В итоге на тот же андроид приходится собирать пачку билдов с текстурами в разных форматах. Я уже не говорю про то, что у PowerVR и Mali и у Adreno местами прямо противолопожные подходы к оптимизации на уровне OpenGL (при его подходе к абстракции "железа"). Про PC я даже говорить не хочу. Из-за того, что приходится работать OpenGL в моих компьтерах всегда будет ускоритель от nVidia. У меня тупо нет выбора. Я могу почти гарантировать, что написаный в соответсвие со стандартом код на Intel GMA/HD работать тупо не будет, даже если я 10 драйверов поставлю. Ну или будет работать так, что лучше бы честно не заработал. Почти таже история с ATI/AMD, ситуация лишь не многим лучше.

В общем твои коментарии звучат в духе начинающего разработчика, который еще просто не успел пройти все круги ада продакшен разработки на OpenGL


Добавить Комментарий

Еще что-нибудь

Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.

О блоге

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

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне