Opengl или directx, что лучше

Обновлено: 21.11.2024

Игры, использующие DirectX 11 или DirectX 12, могут быть популярны в онлайн-публикациях и на каналах YouTube, но DirectX — не единственный API для игр. Вы знаете, что в этих играх не используется DirectX?

  • DOOM 3 (2004 г.)
  • Вражеская территория: Quake Wars (2007 г.)
  • БРИНК (2011 г.)
  • Ярость (2011 г.)
  • DOOM 3: издание BFG (2012 г.)
  • Вольфенштейн: Новый порядок (2014 г.)
  • Вольфенштейн: Старая кровь (2015 г.)
  • DOOM (2016 г.)

Да, есть Vulkan, и он набирает популярность, но до Vulkan был OpenGL. Одним из преимуществ OpenGL является то, что это открытый стандарт, что означает, что он совместим с Linux, macOS и Windows. Однако, несмотря на это преимущество, большинство современных игр по-прежнему используют DirectX.

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

  • Если OpenGL обладает теми же функциями и можно добиться паритета производительности с DirectX, почему большинство разработчиков игр до сих пор используют DirectX?
  • Будет ли OpenGL по-прежнему практичным для новых игр (2019 года и новее) после появления Vulkan?
  • Как вы думаете, что необходимо, чтобы убедить большинство разработчиков игр использовать OpenGL и Vulkan вместо DirectX11/12?

Ответы

Первый — Ален Ладавак, технический директор Croteam. Для тех, кто не в курсе, Croteam является разработчиком The Talos Principle, первой игры, использующей Vulkan в феврале 2016 года.

Во-первых, OpenGL стал слишком сложным для поддержки IHV. Даже DirectX 11 уже требовал очень сложной структуры, чтобы быть быстрым. Теперь вы видите, что DX11 по-прежнему иногда быстрее, чем DX12 или Vulkan в некоторых играх, это связано с обширной оптимизацией внутри драйвера. Оптимизации, которые создавались и поддерживались с немалыми затратами инженерных ресурсов. Ресурсы, которые можно было бы лучше потратить в другом месте, поскольку единственная причина, по которой они были необходимы, заключалась в том, что старые API представляли собой лоскутное одеяло из новых настроек поверх старых концепций, и все еще в своей основе использовали концепции, хорошо продуманные в 80-х и 90-х годах. для использования на рабочих станциях SGI (кто-нибудь вообще помнит их 🙂 ) и тому подобное, но это плохо подходит для работы современных графических процессоров.

Vulkan и DirectX 12 были переопределены с нуля, чтобы быть намного ближе к тому, что вы могли бы считать объединением концепций того, как разные графические процессоры (настольные/мобильные, UMA и отдельная память, строгая отложенная на основе плиток и различные гибриды) , разные подходы вендоров и т.п) сегодня работают. Это требует полного переосмысления с точки зрения приложения, а это большая работа в любом из сегодняшних движков, и именно поэтому мы только начинаем видеть истинные преимущества DirectX 12 и Vulkan. Они не идеальны, так как все еще приходилось идти на компромиссы, чтобы сделать API абстрактными и переносимыми, но они намного, намного лучше, чем старые, основанные на конечных автоматах. Старые как бы отрицали такие факты, как, например. что память графического процессора отделена от памяти хоста — на некоторых машинах текстуры и другие буферы на графическом процессоре могут быть не в том формате, который вы думаете, или даже что некоторые из вещей, которые они называют «единицами» (например, смешивание, вершинные сборка…) сегодня не всегда существуют в качестве специализированного оборудования в некоторых графических процессорах. Это утомляло как IHV, которым приходилось все это эмулировать, так и разработчиков, которые не могли использовать оборудование в полной мере.

Но самым большим улучшением с точки зрения конечного пользователя является не только средняя производительность, но и, наконец, контроль задержек кадров. Раньше многие проблемы с заиканием были вызваны тем, что драйвер выполнял кэширование, преобразование и компиляцию «на лету» по мере изменения ситуации в сцене. Теперь это доступно приложению, так что приложение может контролировать то, что кешируется и когда подготавливается, и, таким образом, подготавливает это во время загрузки или в фоновом режиме. Эту часть особенно трудно объяснить, но давайте просто скажем для очень простого примера, что когда вы поворачиваете свой взгляд в игре, вы видите объект в игре, который вы видели раньше, но в этой части сцены он какое-то другое воздействие на него. Это например. использует тот же пиксельный шейдер, но с другим режимом наложения. Драйвер еще не видел эту комбинацию, и эта комбинация требует определенных изменений в состоянии графического процессора. Этот кадр будет немного подтормаживать, так как драйвер должен перекомпилировать некоторые шейдеры или что-то подобное. В Vulkan и DirectX 12 приложение имеет полный контроль над этим и может делать это лучше. Обратите внимание, что это не значит, что это так!Большинство игровых движков были написаны в эпоху старых API, поэтому их первые реализации современных были основаны на том же самом кэшировании «на лету», что раньше делал драйвер. Но способности сейчас есть. И по мере того, как двигатели совершенствуются, мы теперь видим все больше и больше преимуществ, которые они используют. Так что теоретически у вас может быть игра без задержек, и некоторые из них уже довольно близки к этой цели.

Короче говоря, вопросы, которые вы задаете, возможно, немного искажены. Просто забудьте об OpenGL. Для высокопроизводительных игр в будущем… OpenGL и DX11 мертвы. Он подходит только для ретро-игр, простых демонстраций и т. д.

А что касается DX12 и Vulkan, то кроме переносимости здесь нет ничего другого. Вам нужен DX12 для Xbox и Vulkan для Android и Linux. Также есть Metal для iOS и OSX и собственный API Sony для PS4. Но концептуально все они гораздо больше похожи друг на друга, чем на OpenGL или DX11.

Ответ на пункт 1 касается доминирующих нарративов и знакомства. Когда людей учат использовать DirectX в школах, когда все их друзья и сверстники используют DirectX, и когда большинство ресурсов, которые они могут найти о передовом опыте и оптимизации, в основном сосредоточены на DirectX, для него легко стать стандартом. У Microsoft есть целые отделы, посвященные маркетингу, связям с общественностью и связям с клиентами, что позволяет разрабатывать более эффективные стратегии для создания и поддержания доминирующего мнения в отрасли. Я полностью согласен с пунктами, изложенными Дэвидом в своей статье, и, хотя я думаю, что они все еще заслуживают внимания, они не так актуальны в современной отрасли. Подавляющее большинство разработчиков используют сторонние движки (такие как Unity, Ureal, idTech и т. д. и т. д. и т. д.), где рендеры разрабатываются и поддерживаются выше по течению. В таких случаях у разработчиков игр обычно есть галочка, и без большого личного опыта проще всего использовать то, что знакомо. Меньшее количество поставляемых рендереров означает меньший контроль качества (с чем многие разработчики уже борются), поэтому разработчики часто предпочитают выбирать минимальный список, чем включать все.

Переходя к пункту 2, все кросс-платформенные движки реализуют рендереры на основе открытых API, таких как OpenGL и Vulkan, а самые известные движки в наши дни являются кроссплатформенными. Некоторые разработчики могут по-прежнему предпочитать поставлять средства визуализации OpenGL, потому что Vulkan является новым (и, следовательно, пугающим), но позитивные сообщения от таких компаний, как Valve, и разработчиков, таких как Croteam, вероятно, помогают немного противостоять этому. Разработчики, которые пишут свои собственные рендереры, имеют сильные навыки работы с OpenGL и хотят оставить эти навыки, по-прежнему сочтут OpenGL жизнеспособным для выпуска в наши дни. Это по-прежнему единственный API, который будет работать в Linux, Mac и Windows без какого-либо слоя интерпретации. На данном этапе у меня нет планов писать визуализатор Vulkan для моего игрового движка. Тем не менее, как разработчику для Linux, открытые API, безусловно, находятся в верхней части моего списка.

Что касается пункта 3, то решение, которое я предпочитаю, – увеличить количество положительных отзывов и дружественных, доброжелательных ресурсов. Между воодушевляющим «Кротим использует Вулкан, значит, Вулкан должен быть крутым» и обескураживающим «Кротим использует Вулкан, но Кротим — это Кротеам» пролегает жесткая грань. Я чувствую, что мы немного видели это и с поддержкой Linux — когда Valve отправила почти весь свой бэк-каталог на Linux, остальная часть отрасли на самом деле не восприняла это как демонстрацию того, что поддержка Linux является жизнеспособным вариантом. , было замечено, что у Valve есть ресурсы для того, чтобы делать то, чего нет у большинства разработчиков. Как пользователи, мы можем формировать некоторые из этих позитивных нарративов, проявляя терпение, поддержку и гостеприимство. Поощрение разработчиков, которые прилагают усилия для поддержки того, что нам небезразлично (даже если их первые шаги не идеальны), может помочь разработчику почувствовать, что эти усилия того стоили.

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

Если бы Apple уступила и приняла родные драйверы Vulkan, наличие одного API, который мог бы делать все, определенно было бы сильным аргументом в пользу продажи (я не ожидаю, что это когда-либо произойдет, и с объявленным прекращением поддержки OpenGL в MacOS, это Metal или ничего).Говоря о том, является ли один графический API более производительным, чем другой, на самом деле речь идет о том, являются ли реализации драйверов этих API более производительными, чем другие, поэтому внимание, которое поставщики драйверов уделяют OpenGL и Vulkan, и уровень известности, который они придают открытым API в своих рекламных материалах, вероятно, также окажет влияние.

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

Прежде чем я закончу, я хотел бы поделиться кое-чем интересным. Комментарий Алена Ладавака о DirectX 12 для XBox One заставил меня спросить, почему бы просто не использовать Vulkan для XBox One? Он также использует ЦП и ГП, аналогичные тем, которые используются в игровых ПК, и было бы полезно, если бы разработчики игр использовали Vulkan для игровых консолей и игровых ПК. Даже Nintendo Switch также поддерживает Vulkan. Его ответ:

Ну, мне бы это точно понравилось. Почему бы нет? Думаю, вам нужно спросить об этом Microsoft.
Если вы понимаете, о чем я… 😉

Я напишу дополнительную статью, в которой расскажу больше о Vulkan и о том, почему он важен для геймеров на ПК. Подпишитесь на нас в Facebook, Twitter и YouTube.

OpenGL — это кросс-языковой и кросс-платформенный API (интерфейс прикладного программирования), который работает для рендеринга 2D- и 3D-векторной графики и взаимодействует с GPU (графическим процессором) для достижения рендеринга с аппаратным ускорением. Он был разработан группой Khronos как открытый исходный код, с которым можно было работать бесплатно. DirectX — это группа различных приложений, разработанных Microsoft для работы на мультимедийной платформе, программирования игр и других цифровых медиа-секторов. Имя всех членов этой группы начинается со слова «Direct», например, у вас будет Direct3D для 3D-моделирования, Direct Draw и так далее для разных целей.

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

3D-анимация, моделирование, симуляция, разработка игр и другое

Личное сравнение OpenGL и DirectX (инфографика)

Ниже приведены 7 главных различий между OpenGL и DirectX:

Ключевые различия между OpenGL и DirectX

Ниже приведены основные различия между OpenGL и DirectX:

  • Вы можете заметить много общего между обоими программами во время их анализа, потому что они имеют самые схожие цели, но я расскажу вам о некоторых моментах, которые делают их особенными в своей рабочей среде и отличаются друг от друга.
  • Строгое соблюдение OpenGL является основной целью, которая работает для приложений интерфейса программирования (API), в то время как API DirectX также поддерживает некоторые другие функции, являющиеся частью API, такие как звук, ввод, музыка, сеть, а также мультимедиа. по нему.
  • Как мы уже говорили, OpenGL — это кроссплатформенная платформа, в чем и заключается его плюс. Если вы хотите работать отдельно от Windows, вы можете использовать OpenGL, но это невозможно с DirectX, поскольку он доступен только в Windows и Xbox.
  • И OpenGL, и DirectX описывают вершины традиционными графическими способами, что означает, что они имеют набор данных, состоящий из координат в пространстве, и это пространство определяет местоположение вершин или любые другие данные, связанные с вершинами. Но оба API обрабатывают вершины по-своему, например, вы найдете смешивание вершин в DirectX, но не в OpenGL. Несколько операционных систем есть в OpenGL, но не в DirectX. Механизм расширения доступен в обоих API и т. д.
  • DirectX — это API платформы Microsoft, тогда как OpenGL — это открытый исходный код, что означает, что производитель оборудования, а также разработчик операционной системы могут свободно создавать реализацию OpenGL, которая может быть частью их систем.
  • Вы можете обнаружить, что OpenGL работает быстрее, чем DirectX, потому что он предлагает простые в использовании библиотеки, но с DirectX вам будет проще обрабатывать ввод. OpenGL — это функциональный API для рендеринга 2D- и 3D-графики, тогда как DirectX включает в себя те функции, которые поддерживают функции мыши, клавиатуры, джойстика для ввода, а также рендеринга 2D- и 3D-графики.
  • OpenGL может отставать в этом контексте, потому что он создает только графику, а для других функций он полагается на некоторые другие программы, но у DirectX есть хорошо зарекомендовавший себя шкаф для этой цели и множество вспомогательных функций.
  • Когда идет обновление DirectX, меняется вся его программа, но, с другой стороны, OpenGL создает расширения, которые не изменяют исходную программу и добавляют в нее несколько функций, повышающих ее работоспособность.
  • Вы не найдете никакого инструмента, разработанного специально для управления игрой и ее графикой в ​​OpenGL, в то время как DirectX имеет полный контроль над ней с помощью какого-то специально разработанного инструмента. При использовании обоих программ вы также обнаружите разные способы управления каналом цветов (каналом RGB), потому что оба обрабатывают разные методы для достижения наилучшего результата.
  • Это был наш с вами анализ OpenGL и DirectX, чтобы получить все больше и больше информации о них, чтобы мы могли рассмотреть их основные аспекты.

Таблица сравнения OpenGL и DirectX

Основа

ДиректX

Это была приятная дискуссия о некоторых важных моментах OpenGL и DirectX, которые дали вам много информации об их основных требованиях и возможностях. Теперь я расскажу вам о некоторых особенностях обоих программ по отдельности.

Заключение

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

Рекомендуемые статьи

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

Привет! Я хочу сделать проект для своего университета, который заключается в создании многопользовательской игры. Проблема в том, что я не знаю, какую технологию мне следует использовать. Что лучше: OpenGL или DirectX?

Ни один из них не является "лучше" другого. Используйте то, что вам больше знакомо, или то, что лучше соответствует вашим требованиям.

Я не знаком ни с одним из них, но хочу изучить самый простой.

Неактуально в наше время. Оба являются просто плохим интерфейсом к оборудованию. Вы можете просто бросить монетку.

Я знаю, но это то, чего хочет мой университет. Я пытался убедить их использовать Unity или Unreal Engine, но они мне не позволили.

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

На самом деле это выглядит довольно хорошо для OpenGL, он использует несколько простых шейдеров и, по крайней мере, использует OpenGL 3.

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

Надеюсь, я смогу найти книгу об этом в Румынии, если нет, то я куплю ее в другой стране и подожду пару недель. Спасибо за совет!

Зависит от ваших целей. Хотите настроить таргетинг на Windows, Linux, Mac, Интернет, Android, консоли. OpenGL Доволен Windows/Xbone? Direct3D

Хочу сделать только для Windows, ничего сложного.

Fwiw dx11 довольно хорошо работает в Linux через dxvk и vulkan в Wine, хотя, вероятно, не учитывает OSX

Если вы разрабатываете только для Windows, вам следует выбрать dx11. Для opengl у каждого производителя есть своя реализация, то, что работает на amd, не гарантирует, что оно будет работать так же и на nvidia или intel. DX, с другой стороны, более гарантирует, что функциональность похожа (некоторые операции могут быть быстрее на одном типе графического процессора, чем на другом), но, по крайней мере, они должны работать одинаково. Например, в opengl некоторые функции могут принимать некорректные данные и даже не жаловаться на это, в то время как некоторые другие производители графических процессоров могут давать сбой.

Под негарантированным поведением opengl я подразумеваю выполнение чего-то неопределенного, ошибки в коде. Графический процессор Nvidia может работать нормально, поскольку вы предполагаете, что код должен работать (даже не выдавать ошибок), тогда как amd gpu может дать сбой.

Я понял, спасибо!

Если вы ничего не знаете о DirectX (Direct3D) или OpenGL и ставите перед собой цель разработать игру в обозримом будущем (не должно занимать 10 лет), то во что бы то ни стало используйте существующий игровой движок (или просто движок рендеринга) вроде Unity, Unreal, Ogre3D. Если вам нужно сначала изучить OpenGL или Direct3D, то это компенсирует вас на многие месяцы, если не на годы. Особенно OpenGL считается самым сложным и массивным API, который когда-либо видел мир, с множеством семантически перегруженных функций, которые развивались с течением времени (начиная с 90-х годов). Поэтому, если вы начнете с разработки OpenGL, вы, несомненно, много раз окажетесь в ситуации, когда захотите выбросить свой проект и начать заново с нуля, потому что до сих пор вы реализовывали что-то неэффективно или только что узнали что-то новое, что вам нужно интегрировать в свой проект. игру и обнаруживают, что ее архитектура больше ей не соответствует.

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

Это сбивает нас с толку. Общеизвестно, что веб-сайты, основанные на стандартах, например, превосходят Silverlight, Flash или ActiveX. Кроссплатформенная разработка похвальна и разумна. Ни один уважающий себя гик не любит иметь дело с закрытыми стандартными документами Word или серверами Exchange. Что это за причудливый мир, в котором инженеры не только сходят с ума по последнему проприетарному API Microsoft, но и активно осуждают его конкурента с открытым стандартом?

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

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

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

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

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

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

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

Использование API было смещено в пользу DirectX из-за двусторонней кампании Microsoft DirectX вокруг запуска XBox 360 и Windows Vista, включая распространение FUD (страх, неуверенность и сомнение) в отношении будущего OpenGL и дикое преувеличение достоинства DirectX. С тех пор сетевые эффекты усиливали это несоответствие, пока OpenGL почти полностью не исчез из основных компьютерных игр.

1. Сетевые эффекты и порочные круги

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

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

2. FUD по поводу OpenGL и Vista

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

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

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

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

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

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

1. OpenGL более мощный, чем DirectX

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

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

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

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

Как сказал Джон Кармак, когда его спросили, является ли Rage игрой DirectX: «Это по-прежнему OpenGL, хотя мы, очевидно, используем D3D-подобный API [на Xbox 360] и компьютерную графику на PS3. Интересно, как мало технологий важно, какой API вы используете и какое поколение технологии вы используете У вас есть небольшая горстка файлов, которые заботятся о том, на каком API они работают, и миллионы строк кода, которые не зависят от платформы, которая они включены». Если вы можете работать на любой платформе с помощью OpenGL, зачем стрелять себе в ногу, полагаясь на DirectX?

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

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

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

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

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

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

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

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

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

Читайте также: