OpenGL вместо DirectX?

28 января 2010

OpenGL вместо DirectX

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

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

Но прежде чем мы начнем выкладывать факты, давайте прогуляемся назад во времени и посмотрим, откуда появился OpenGL и как он развивался…

Что такое OpenGL?

В 1982 году компания Silicon Graphics начала продавать высокопроизводительные графические терминалы, использующие закрытое API под именем Iris GL (GL – сокращение для «graphics library», то есть «графическая библиотека»). С годами графическая библиотека Iris GL росла и становилась все мощнее – поддерживать и развивать разбухшую библиотеку стало достаточно накладно, что послужило причиной радикальному шагу Silicon Graphics. Компания переписала и оптимизировала код Iris GL и сделала его открытым стандартом. Теперь конкуренты SG также могли использовать ранее закрытую библиотеку, переименованную с Iris GL в Open Graphics Library (OpenGL), но взамен они должны были помогать дописывать, оптимизировать и обновлять ее.

OpenGL

Сегодня спецификация OpenGL находится под крылом некоммерческой организации Khronos Group, в которую входят представители из множества различных компаний, заинтересованных в создании высококачественного API. На низком уровне библиотека обслуживается OpenGL Architecture Review Board (ARB). OpenGL поддерживается на любой игровой платформе, включая компьютеры от Apple (а также iPhone), операционные системы Windows и Linux, консоли PS3, Wii, PSP и DS. Так что практически любая игровая платформа, исключая XBox, по понятным причинам, поддерживает OpenGL.

Что такое DirectX?

Начиная с операционной системы MS-DOS, компания Microsoft поняла, что игры часто определяют выбор пользователем операционной системы. По этой причине в 1995 году компания создала закрытый набор библиотек, способствующий разработке игрушек для новой операционной системы Windows 95. Набор библиотек включал Direct3D, DirectInput и DirectSound, а вся эта коллекция была названа одним именем – DirectX. Когда Microsoft пришла на игровой рынок в 2001 году, она представила консоль DirectX Box, или коротко «XBox». XBox стал товаром, специально продаваемым себе в убыток (компания Microsoft потеряла на XBox более 4 миллиардов долларов), для того, чтобы вовлечь игровую индустрию в новое поколение, другими словами, Microsoft сыграла с рынком в этакий гамбит, дабы продвинуть DirectX в массы.

OpenGL

Глядя на нынешний игровой рынок, можно с уверенностью сказать, что стратегия оказалась успешной: большинство самых хитовых игр ПК используют библиотеку DirectX, и запускаются как на Windows, так и на XBox 360 без кардинального портирования. Но при этом игры не могут работать на платформах вроде Playstation, Mac OS и Wii. А это довольно емкие рынки, чтобы от них отказываться, здесь и возникает большой вопрос:

Почему все используют именно DirectX?

Все используют DirectX потому, что выбор API в разработке игр имеет положительную обратную связь, и сдвинута эта связь в сторону DirectX еще с 2005 года.

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

Популярность на рынке графических библиотек была сдвинута в сторону DirectX широкомасштабной кампанией Microsoft, использующей маркетинговый трезубец FUD (fear, uncertainty and doubt – страх, неуверенность и сомнение, касающиеся в данном случае, разумеется, OpenGL), а также дикую гиперболизацию заслуг и свойств DirectX, подталкивающую пользователей к нужному компании выбору. С тех пор, благодаря отличной стратегии Microsoft и так грамотно использованной цепной реакции, OpenGL практически исчез с мейнстримовой сцены компьютерной игровой индустрии.

1. Цепная реакция и замкнутые циклы

Факт, что в операционной системе Windows видеодрайверы DirectX находятся почти всегда в лучшем состоянии, нежели видеодрайверы OpenGL. Это происходит из-за замкнутого цикла с поддержкой производителей видеокарт. Так как производители игр перешли с OpenGL к DirectX (по причинам, озвученным выше), производители видеокарт получают меньше отчетов об ошибках в драйверах OpenGL, расширениях и документации. В результате видеодрайверы OpenGL и расширения становятся «глючными», а документация – запутанной, заставляя переключиться разработчиков игр с OpenGL на DirectX (хотят они того или нет). И цикл повторяется, более того, он начинает лавинообразно нарастать.

OpenGL

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

2. Кампания против OpenGL и Vista

Microsoft повторила свою FUD-кампанию (страх, неуверенность и сомнения) против OpenGL во время релиза операционной системы Windows Vista. В 2003 году Microsoft покинула OpenGL Architecture Review Board, показывая, что она больше не заинтересована в будущем OpenGL. Затем в 2005 году на конференциях SIGGRAPH и WinHEC компания Microsoft создала такое впечатление, будто она собирается убрать поддержку OpenGL из Windows Vista, и вместо прямой поддержки OpenGL сделать своего рода «нашлепку» поверх DirectX, якобы для совместимости с приложениями WinXP. При этом такой механизм будет удручающе действовать на производительность приложений использующих OpenGL под «вистой». Такая «новость» привела к настоящей панике в лагере OpenGL, многие ведущие программисты покинули сообщество и переметнулись к разработчикам на DirectX.

OpenGL

Когда состоялся релиз Vista, Microsoft дала «задний ход» и забрала свои слова относительно убранной поддержки OpenGL обратно, позволив создать производителям оборудования быстроустанавливаемые клиентские драйверы (ICD), которые включают прямую поддержку операционной системой OpenGL. В сообществе OpenGL появились радостные вести о том, что библиотека все еще в первых рядах, и что производительность OpenGL в ОС Vista не уступает, по крайней мере, производительности Direct3D. К сожалению, удар по OpenGL уже был нанесен – доверие общественности к OpenGL серьезно пошатнулось.

3. Вводящие в заблуждение маркетинговые кампании

OpenGL

Стратегии запуска операционных систем Windows Vista и Windows 7 были связаны также с чрезмерно назойливым «впихиванием» «нового» DirectX, в котором по заявлениям Microsoft, унылая и серая графика магически преображается в супер-высококачественную графику. В сеть были выкинуты различные сравнения «до» и «после», то есть сравнительные изображения одной и той же игры в DirectX 9 и DirectX 10, как в дурацкой рекламе с «дешевым похуданием за неделю». Многие геймеры тогда решили, что переход с DirectX 9 на DirectX 10 волшебным образом превратит графику из «серой» и темной в нормальную (как в сравнении, показанном на изображении выше), или даже Halo 1 превратится в Crysis. Игровые журналы не раз доказали, что между Crysis в DX9 и Crysis в DX10 нет никакой разницы, и что все функции «DX10» прекрасно работают и в DX9 путем простой правки конфигурационного файла. Как бы то ни было, несмотря на эту досадную маркетинговую оплошность, кампания сделала свое «грязное» дело, и большинство публики решило, что нужно переходить на новый DirectX (а следовательно и на новый Windows), если хочешь получить самую крутую графику, и если не хочешь остаться в прошлом веке.

В то время как большинство игр и их производителей участвовали в маркетинговых шарадах Microsoft, некоторые здравомыслящие разработчики (вроде Джона Кармака) отказались участвовать в этом и пошли своим путем.

Почему бы не использовать OpenGL?

Так если OpenGL пользуется плохой поддержкой производителей оборудования, не используется больше в играх, был активно атакован со стороны Microsoft, и вообще в последнее время «затих», почему мы все еще должны его использовать? Не будет ли легче и дешевле для всех просто забыть его и перейти полностью на DirectX (как и все другие)? Нет, потому что на самом деле OpenGL значительно мощнее DirectX, поддерживает больше платформ и больше подходит для игр будущего.

1. OpenGL мощнее, чем DirectX

OpenGL

Доподлинно известно, что OpenGL быстрее отрисовывает графику, нежели DirectX (если не верите нам, посмотрите вот эту презентацию NVIDIA), а также быстрее получает доступ к новым функциям новых процессоров через расширения производителей. OpenGL немедленно дает вам прямой доступ ко всем новым графическим функциям и фишкам на всех платформах, в то время, как обновление DirectX происходит крайне редко, либо с выпуском новой Windows, либо просто по настроению Microsoft. Технология тесселяции, которую Microsoft рекламирует и обещает в новейшей версии DirectX 11, была доступна в OpenGL уже три года назад. Также практически все прочие новые фишки DirectX 11 были давным-давно доступны в OpenGL. Мы не знаем, какие еще технологии появятся в следующие годы, однако уверены, что первыми они появятся именно в OpenGL.

Microsoft потратила много ресурсов в работе над DirectX 10 и DirectX 11, и теперь эти библиотеки функционируют почти так же быстро, как OpenGL, и поддерживают почти все фишки OpenGL. Как бы то ни было, здесь имеется одна большая проблема: все эти прелести не работают в Windows XP! Добрая половина геймеров по сей день использует Windows XP, а вот использовать DirectX 10 или DirectX 11 в этой операционной системе не получится. Более того, если вы решите выбрать Linux или Mac, вы потеряете всякую связь со свежими игрушками, о чем речь в следующей главе…

2. OpenGL – многоплатформенная спецификация

OpenGL

Огромное количество пользователей выбрали сегодня Mac или Linux (если не верите — посмотрите статистику на каком-нибудь liveinternet.ru). Когда мы говорим с очередным разработчиком игр, он заявляет, что поддержка Mac или Linux – это пустая трата времени, однако мы не уверенны, что это правильный вывод. К примеру, Blizzard всегда выпускает версии всех своих игр под Mac, и Blizzard – это один из самых успешных производителей игр в мире! Если даже они делают не все точно так же, как другие, значит, в этом есть какой-то смысл, и вряд ли они будут нести материальные затраты для портирования на Mac из альтруистических побуждений.

Джон Кармак в интервью одному изданию, не так давно ответил на волнующий нас вопрос:

– Что, если бы ваша игра Rage была бы на DirectX?

– Она работает на OpenGL, несмотря на это, мы используем трансляцию запросов в D3D [на XBox 360], и CG на PS3. Интересен тот факт, что технологии делают безразличным то, какой API именно вы используете. И какое поколение технологии вы используете. У вас есть небольшая горстка файлов, которые сами решают все проблемы с совместимостью API и миллионы строчек кода, которым вообще безразлична платформа, на которой они работают.

Так зачем же писать изначально под закрытый DirectX, в угоду известному софтверному гиганту, которому может взбрести в голову все, что угодно?

И даже если вы беспокоитесь только за Windows, позвольте напомнить – половина геймеров все еще работает из-под Windows XP, и не сможет насладиться вашей игрой, если вы используете последнюю версию DirectX. Единственный способ принести самую современную графику на Windows XP – это OpenGL.

3. OpenGL – лучший выбор для будущего игр

OpenGL

OpenGL – это некоммерческий открытый стандарт, который позволяет пользователю получить графику высочайшего класса на любой платформе, выжимая из установленного оборудования максимум производительности. Использование этого стандарта было «отменено» благодаря атакам монополиста, одного единственного софтверного гиганта, который пытается (и что самое интересное, у него получается) доминировать в игровой индустрии, которая еще слишком молода, чтобы защищать себя. Так как Direct3D поддерживается только на Windows и XBox, Microsoft получает мертвую хватку на всей компьютерной игровой индустрии.

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

Может ли OpenGL вернуться?

Тринадцать лет назад, в 1997 году, ситуация была похожей на сегодняшнюю. Microsoft запустила свою массивную маркетинговую кампанию, раскручивающую Direct3D, и скоро все «доподлинно знали», что, оказывается, он лучше и быстрее, чем OpenGL. Дела начали меняться, когда Крис Хекер опубликовал свое открытое письмо, в котором осуждал агрессивную политику гиганта и говорил об истинном положении дел с DirectX. Вскоре после этого Джон Кармак опубликовал свои знаменитые хвалебные речи об OpenGL, и решил вложить свои деньги в открытый стандарт, переведя все игры компании Id Software на OpenGL, и доказав тем самым, что для получения передовой трехмерной графики высочайшего класса DirectX совершенно не нужен.

В последние несколько лет эти уроки были забыты. Многие разработчики игр попали под магию маркетинга MS, в то время как другие стали жертвой образовавшегося замкнутого круга и цепной реакции. Так давайте же отбросим громкие рекламные возгласы, маркетинговые преувеличения, прочее «бла-бла-бла» и посмотрим на вещи трезвым взглядом. Если вы используете DirectX, то должны выбирать между устаревшим DirectX 9 и новым DirectX 11, но при этом значительно сокращать вашу аудиторию (если вы разработчик) или вынужденны покупать/пользоваться новой операционной системой Vista или Windows 7 (если вы пользователь), несмотря на то, что вам и под XP хорошо.

С другой стороны, если вы используете OpenGL, вы получаете графику мощнее и быстрее, чем в DirectX 11, при этом абсолютно свободны в выборе платформы – вы можете играть в любой версии Windows, Mac или Linux, точно так же, как и на консолях PS3, Wii, PSP, DS и iPhone. Нужно не забывать быстроразвивающийся стандарт WebGL, который может стать основанием для следующего поколения браузерных игр.

Если вы – разработчик игр, то проведите интереса ради небольшое исследование, сравните библиотеки, с большой вероятностью вы поймете, что OpenGL – это лучший выбор. Некоторые программисты предпочитают стиль API DirectX 11 стилю OpenGL, однако низкоуровневый API независимо от библиотеки обернут в слой абстракции, так что это не должно быть решающим фактором для выбора. Если вам как разработчику что-то не нравится в OpenGL, вы можете просто попросить ARB поменять этот момент – сообщество было создано именно для этого!

Если вы геймер, который использует Windows XP, Mac или Linux, мы надеемся, вы уже заметили, что один только DirectX препятствует попаданию свежих игрушек на вашу платформу, и все что вы можете сделать – это поддержать игры использующие OpenGL.

Комментарии
  • mddr says: 02.02.2010 в 08:05

    И что? Ну круто, openGL — круче, а толку? Назовите мне хотябы две игры которые вышли за последние полгода созданные на основе openGL! Да я видел под линуксом пару игр, но они небыли игровыми шедеврами 😉 Разговоры — разговорами, а игры все пишутся под директом, потому что это проще и быстрее, а не по тому что разработчики игр тупые засранцы, которые не хотят использовать замечательный openGL

  • Dragon Dreik says: 02.03.2010 в 17:45

    Здравствуйте. Ещё один миф или бред. OpenGL никогда не сравниться с DirectX!!! Единственное, что он успешно делает, так это куча багов в тестовых пакетах. Цитата: Если вы геймер, который использует Windows XP, Mac или Linux, мы надеемся, вы уже заметили, что один только DirectX препятствует попаданию свежих игрушек на вашу платформу, и все что вы можете сделать — это поддержать игры использующие OpenGL. И после всего этого вы называете себя геймером??? Windows XP, Mac или Linux в урну их, давно пора, особенно всякие там “Звери”. С уважение Dragon_Dreik.

  • Аноним says: 05.04.2010 в 20:09

    Даа заветам кармака верны!!!
    Это великий человек образец для подражания.

  • Аноним says: 13.06.2010 в 00:05

    mddr
    пару игр? God of War 3, Uncharted 2, InFamous, MGS4, LittleBigPlanet — абсолютно все эксклюзивы PS3 разрабатываются на OpenGL, так как DirectX принадлежит мелкомягким

  • Аноним says: 07.09.2010 в 12:56

    Все разрабатывающиеся для PS3 написаны в OpenGL
    причем те что портировны на win, страдают от более низкой производительности, что в свою очередь требует от железа больше.

  • Аноним says: 13.09.2010 в 17:30

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

  • Аноним says: 04.11.2010 в 13:53

    Dragon Dreik, ты тормоз конкретный, какие баги в ОПЕНГЛ??? тебе тетрисом игратся, а не на компе. Я искрене надеюсь в будущее ОпенГЛ, мне надлоело держать ВИндовс токо ради игрушек, а работать в Линуксе((( Я надеюсь ОпенГЛ найдет общий язык с АТИ и НВидиа, которые могут помочь в развитии…

  • Аноним says: 14.01.2011 в 11:19

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

    Я сам пишу как для OpenGL так и для DirectX и честно скажу вам нужно знать основы 3D, а какими классами или функциями пользоваться на ваш вкус.

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

  • Аноним says: 05.05.2011 в 17:25

    И у OpenGL и у DirectX есть как и свои минуси, так и плюси, НО в процессе программирование ВСЁ ЗАВИСИТ ОТ ПРОГРАММИСТА!
    Источник: Личный опыт

  • Аноним says: 12.12.2011 в 00:12

    2 Гость (2.94.120.178) , 14 января 2011, 11:19:13
    Нет, не получилось состроить умника.
    Тут речь не о разработчиках а о ситуациях применения, т.е. суть в том, что в одних и тех же условиях OpenGL работает быстрее. Причем тут, нахрен, разработчики?
    И покажи мне пожалуйста движок, соединяющий технологии DirectX и OpenGL.

  • Аноним says: 14.04.2012 в 15:55

    Движок соединяющий и то и другое юнити зд Зег

  • Аноним says: 29.05.2012 в 22:56

    Я разработчик казуальных игр алавар))
    Так, вот наш движок основан на irrlicht. Конечно, еще с далеких времен, он ушел от него другой веткой. Там рендер выбирается в зависимости от ситуации, на Windows, он сначала пытается инициализировать DirectX, если не вышло OpenGL. Ну а если не получилось и OpenGL проинициализировать, тогда он переходит на внутренний софт рендер.

    А вообще на встроенных системах, мобильных платформах и приставках(кроме XBOX) используется та, или иная спецификация OpenGL ES. Та поиграйти в PS3 или в PSvita. Или тот же смартфон, там все игры держаться на OpenGL ES. OpenGL ES — это лишь слегка преобразованная OpenGL 2.0.

    Когда приходится портировать на моб. платформу весь рендер проходит через OpenGL ES.
    А выбор Directx как основного на Вин, просто связанно с тем что раньше драйвера для OpenGL часто были кривые, а винной тому халатность их разработчиков. Поэтому у разработчиков сложился стереотип, о том что OpenGL будет плохо работать на вин. Хотя ситуации с хреновыми драйверами под OpenGL уже очень редки.

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

  • Аноним says: 24.12.2012 в 03:03

    «Гость (178.93.63.184) , 04 ноября 2010, 13:53:47
    Dragon Dreik, ты тормоз конкретный, какие баги в ОПЕНГЛ??? тебе тетрисом игратся, а не на компе. Я искрене надеюсь в будущее ОпенГЛ, мне надлоело держать ВИндовс токо ради игрушек, а работать в Линуксе(((Я надеюсь ОпенГЛ найдет общий язык с АТИ и НВидиа, которые могут помочь в развитии…»
    **********
    Так работай как человек в Винде, и не парься с этим уродством линуксом. Ни программы не установить в нём нормально, ни дрова не найдёшь, а если чудом их удастся найти, то хрен установишь. Не, конечно всё это можно сделать, но всё через жопу. И только специалистом — линуксоидом, и всё через консоль. А в винде ткнул кнопку в окне программы, и ушёл, а пришёл — уже всё установлено. Вот вам и гады монополисты!

  • FireWind says: 09.04.2013 в 14:03

    Судя по всему, Microsoft не отучилась воровать с первого раза, как и Apple. И воровать им до скончания века, своего придумать ни та, ни другая не смогут.
    Что касается OpenGL: он реально производительнее, чем DirectX, хотя на сверхбыстрых видеокартах этого не видно.
    Windows подходит для работы, это да, но в Linux все куда как лучше, стабильнее и безо всяких запар. Плевать на Wine, его можно встроить в саму среду Linux и не запускать каждый раз. Или вообще скачать дистрибутив с самим Wine. А главное: вирусов-то не будетъ! Т.е. получаем типа MacOS+Windows. В одном флаконе. И не надо выбирать, когда что запустить.

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