Портал магистров ДонНТУ  ДонНТУ              

Почему необходимо использовать OpenGL, а не DirectX

Автор: David

 

АвтобиографияАвторефератБиблиотека

Источник: http://blog.wolfire.com/2010/01/Why-you-should-use-OpenGL-and-not-DirectX

 

Почему необходимо использовать OpenGL, а не DirectX

 

By David on January 8th, 2010

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

Прежде чем погрузиться в историю о том, почему мы поддерживаем OpenGL, давайте начнем с эксурса в историю:

 

Что такое OpenGL?

В 1982 году Silicon Graphics начал продажи высокопроизводительных графических терминалов с помощью патентованных API называется Iris GL (GL является аббревиатурой от "графическая библиотека"). На протяжении многих лет, Iris GL вырос раздутой и трудно поддерживаемой, пока Silicon Graphics не приняла радикальные новый шаг: они полностью переработали Iris GL и сделали его открытым стандартом. Их конкуренты могли использовать новые Open Graphics Library (OpenGL), но взамен они должны были помочь сохранить его и хранить его в актуальном состоянии.

Сегодня, OpenGL управляется Khronos Group - некоммерческой организацией с участием представителей многих компаний, которые заинтересованы в поддержании высокого качества средств массовой информации API. На более низком уровне, оно управляется OpenGL Architecture Review Board (АРБ). OpenGL поддерживается на каждой игровой платформы, включая Mac, Windows, Linux, PS3 (как обертка ГКМ), Wii, iPhone, PSP, и DS. Ну, каждой игровой платформы, за исключением XBox - что приводит нас к следующей теме:

 

Что такое DirectX?

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

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

 

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

Каждый использует DirectX API, поскольку выбор в разработке игр является положительной обратной связью, и он был перенесен в пользу DirectX в 2005 году.

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

 

1. Сеть последствий и порочный круг

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

Кроме того, это такт, что программисты игр знают больше, как использовать DirectX, чем OpenGL, поэтому он дешевле (меньше обязательного обучения), для игр с использованием DirectX, чем OpenGL. Это является результатом другого порочного круга: чем больше игровых проектов с использованием  DirectX, больше программистов должны научиться его использовать. Чем больше программистов научиться им пользоваться, тем становится дешевле для игровых проектов использовать DirectX, чем использовать OpenGL.

 

 

2. FUD о OpenGL и Vista

Microsoft начала кампанию страха, неуверенности и сомнений (FUD)против OpenGL после выпуска Windows Vista. В 2003 году Microsoft покинул OpenGL Architecture Review Board - показывая, что у них уже не было никакого интереса в будущем OpenGL. Затем, в 2005 году они выступили с докладами на SIGGRAPH (специальные группы по интересам для графики) и WinHEC (Windows Hardware Engineering Conference), создавая впечатление, что Windows Vista будет убирать поддержку OpenGL, кроме как для поддержания резервной совместимости с приложениями XP. Эта версия OpenGL будет наслаиваться поверх DirectX, как показано здесь (по предъявлении HEC), приводящей к резкому снижению производительности. Эта кампания привела к панике в обществе OpenGL, в результате чего многие профессиональные программисты графики выступили за то, чтобы перейти к DirectX.

Когда Vista была выпущена, она дала задний ход на требования к OpenGL, что позволило продавцам быстро создавать устанавливаемые драйверы клиента (ВТС), которые восстанавливают поддержку OpenGL. Поддержка OpenGL доказала, что OpenGL по-прежнему первоклассный продукт, и что производительность OpenGL на Vista все так же высока, как Direct3D. К сожалению, для OpenGL, ущерб уже был нанесен - общественное доверие к OpenGL было сильно потрясено.

 

3. Ложная стратегия маркетинговых кампаний

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

Хотя многие игры участвовали в маркетинговых шарадах Microsoft, более сообразительные программисты графики, такие  как Джон Кармак, отказались от этого. Он сказал так: "Лично я бы не стал переходить на что-то вроде DX10 прямо сейчас. Я бы остыл немного и подождал, пока не появится на самом деле сильная потребность в нем."

 

Так почему же мы используем OpenGL?

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

 

1. OpenGL является более мощным, чем DirectX

Это общеизвестно, что OpenGL имеет более быструю графику, чем  DirectX, и это первый доступ к новым функциям GPU с помощью поставщика расширений. OpenGL предоставляет вам прямой доступ ко всем новым графическим возможностям на всех платформах, в то время как DirectX только дает случайные снимки их на новых версиях Windows. Мозаичные технологии, которые Microsoft с трудом разрабатывает для DirectX 11, применяются OpenGL  в течение трех лет. Я не знаю, какие новые технологии будут представлены в следующие пару лет, но я знаю, что они будут доступны сначала в OpenGL.

Microsoft много работает над DirectX 10 и 11, и они теперь почти также быстры, как OpenGL, и поддерживают почти так же много возможностей. Однако, существует одна большая проблема: они не работают на Windows XP! Половина PC геймеров по-прежнему используют XP, так что использование DirectX 10 или 11 на самом деле не является жизнеспособным вариантом. Если вы действительно заботитесь о том, чтобы иметь наилучшую графику, и предоставить ее как можно большему количеству игроков, то у Вас  нет другого выбора, кроме как OpenGL.

 

2. OpenGL является кросс-платформенным

Более половины наших пользователей Lugaru используют Mac или Linux), и не удивлюсь, если то же самое будет справедливо и по нашим новым Overgrowth играм. Когда мы говорим о крупных разработчиках игр, мы слышим, что поддержка Mac и Linux является пустой тратой времени. Тем не менее, я никогда не видел каких-либо доказательств по этой претензии. Blizzard всегда представляют релизы Mac версии своих игр одновременно, и они одни из самых успешных игровых компаний в мире! Если они делают что-то иначе, чем все остальные, то их путь, наверное, правильный.

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

 

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

OpenGL является некоммерческим открытым стандартом, созданным, чтобы позволить пользователям на любой платформе, испытать высочайшее качество графики, какое их оборудование может обеспечить. Ее использование давится монополистическими нападениями со стороны монолитного корпоративного гиганта, пытающегося доминировать в промышленности. Чем больше Direct3D становится единственной графикой игр API, поддерживаемой на Windows, тем больше Microsoft приобретает хватку на PC игры.

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

 

Можно восстановить OpenGL?

В 1997 году, ситуация была аналогична той, которая происходит сейчас. Microsoft воплощала массовые маркетинговые кампании для Direct3D, и скоро все "просто знали", что он был быстрее и лучше, чем OpenGL. Это начало меняться, когда Крис Хекер опубликовал свое открытое письмо с осуждением DirectX. Вскоре после этого, Джон Кармак сказал относительно своей знаменитой OpenGL громкие слова, и вложил свои деньги в OpenGL, доказав раз и навсегда, что DirectX не является необходимым для высокопроизводительных игр 3D.

Этот урок, как оказалось, забыли на протяжении последних нескольких лет. Большинство разработчиков игры попали под чары DirectX маркетинга, или в водоворот порочного круга и сетевых преимуществ. Пора сбросить с себя покрывало рекламы и ключевых понятий, и посмотреть, что происходит в действительности. Если вы используете DirectX, вам придется выбирать между использованием слабых, раздутый DirectX 9 или с ущербом для большинства ваших пользователей использовать DirectX 10 или 11.

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

Если вы являетесь разработчиком игр, все, что я могу попросить, сделать исследования и сравнить данные и решить,  является  лиOpenGL лучшим выбором. Если есть что-нибудь, что в OpenGL вам не нравится, то просто попросите АРБ изменить его - они существуют, чтобы служить вам!

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