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

image

Целью данного поста является перевод одного из таких экскурсов в историю, написанного Джейсоном МакКессоном (Jason L. McKesson) в ответ на вопрос «Почему разработчики игр предпочитают Windows». Этот текст вряд ли отвечает на поставленный вопрос, но историю развития и противостояния двух самых популярных графических API он описывает очень красочно и довольно подробно, поэтому в переводе я сохранил авторскую разметку. Текст написан в середине 2011 года и охватывает промежуток времени, начинающийся незадолго до появления Direct3D и до момента написания. Автор оригинального текста является опытным разработчиком игр, активным участником StackOverflow и создателем обширного учебника о современном программировании 3D-графики. Итак, предоставим слово Джейсону.

Предисловие


Прежде чем мы начнём, я хотел бы сказать, что знаю больше об OpenGL, чем о Direct3D. В своей жизни я не написал ни строчки кода на D3D, но писал руководства по OpenGL. Но то, о чём я хочу рассказать — вопрос не предубеждения, а истории.

Рождение конфликта


Однажды, где-то в начале 90-х, Microsoft огляделись вокруг. Они увидели, что SNES и Sega Genesis — это очень здорово, на них можно поиграть во множество экшн-игр и всего такого. И они увидели ДОС. Разработчики писали досовские игры как консольные: близко к железу. Тем не менее, в отличие от консолей, где разработчик знал, какое железо будет у пользователя, дос-разработчики были вынуждены писать под множество конфигураций. А это намного сложнее, чем кажется.

Но у Microsoft была бо?льшая проблема: Windows. Видите ли, Windows хотела полностью владеть железом в отличие от ДОС, которая позволяла разработчикам делать всё что угодно. Владение железом необходимо для взаимодействия между приложениями. Но такое взаимодействие — это в точности то, что ненавидят разработчики игр, потому что оно потребляет драгоценные ресурсы, которые они могли бы использовать для всяких крутых вещей.

Для продвижения разработки игр на Windows, Microsoft нуждалась в однородном API, который был бы низкоуровневым, работал бы на Windows без потерь производительности, и был бы совместим с различным железом. Единый API для графики, звука и устройств ввода.

Так родился DirectX.

3D ускорители появились несколько месяцев спустя. И Microsoft вляпались в неприятности. Дело в том, что DirectDraw, графический компонент DirectX, работал только с 2D графикой: выделял графическую память и делал быстрые битовые операции между различными секторами памяти.

Поэтому Microsoft купили немного стороннего ПО и превратили его в Direct3D версии 3. Его ругали абсолютно все. И было за что: чтение кода на D3D v3 выглядело как расшифровка письменности исчезнувшей древней цивилизации.

Старик Джон Кармак в Id Software посмотрел на это безобразие, сказал «Да пошло оно...», и решил писать с использованием другого API: OpenGL.

Однако другая сторона этой запутанной истории заключалась в том, что Microsoft совместно с SGI работали над реализацией OpenGL для Windows. Идея была в том, чтобы привлечь разработчиков типичных GL-приложений для рабочих станций: САПР, систем моделирования и тому подобных вещей. Игры были последним, о чём они думали. В основном это касалось Windows NT, но Microsoft решили добавить OpenGL и в Windows 95.

Чтобы сманить разработчиков софта для рабочих станций на Windows, Microsoft решили подкупить их доступом к новомодным 3D-ускорителям. Они реализовали протокол для устанавливаемых клиентских драйверов: графическая карта могла заменить программный OpenGL от Microsoft своей аппаратной реализацией. Код автоматически использовал аппаратный OpenGL, если таковой был доступен.

Однако, в те времена потребительские видеокарты не имели поддержки OpenGL. Это не остановило Кармака от портирования Quake на OpenGL на рабочей станции SGI. В readme-файле GLQuake можно прочитать следующее:
Теоретически, glquake запустится на любой реализации OpenGL, которая поддерживает расширение texture objects. Но пока вы не запустите её на очень мощном железе, которое ускоряет всё, что нужно, работать она будет непростительно медленно. Если игре потребуется работать через какие-либо программные эмуляции, её производительность скорее всего не превысит один кадр в секунду.

В настоящее время (март 1997), единственной полностью совместимой с opengl железкой, способной потянуть glquake на приемлемом уровне, является ОЧЕНЬ дорогая видеокарта intergraph realizm. 3dlabs существенно увеличили её производительность, но с имеющимися драйверами она всё ещё недостаточно подходит для игры. Некоторые из драйверов от 3dlabs для плат glint и permedia ещё и крэшат NT при выходе из полноэкранного режима, поэтому я не рекомендую запускать glquake на железе от 3dlabs.

3dfx предоставляет opengl32.dll, которая реализует все нужное для glquake, но это не полная реализация opengl. Другие opengl-приложения скорее всего с ней не заработают, поэтому рассматривайте её в основном как «драйвер для glquake».

Это было рождением miniGL драйверов. В конечном итоге они эволюционировали в полноценные реализации OpenGL, как только железо стало достаточно мощным для аппаратной поддержки этой функциональности. nVidia стала первой, кто предложил полную реализацию OpenGL. Другие поставщики всё ещё медлили, что стало одной из причин перехода разработчиков на Direct3D, поддерживаемый более широким спектром оборудования. В конце концов остались только nVidia и ATI (которая сейчас AMD), и у обеих имелись хорошие реализации OpenGL.

Рассвет OpenGL


Итак, участники определены: Direct3D против OpenGL. Это поистине удивительная история, учитывая то, как плох был D3D v3.

Совет по архитектуре OpenGL (Architectural Review Board, ARB) — это организация, ответственная за поддержание и развитие OpenGL. Они выпускают множество расширений, содержат репозиторий с расширениями, и создают новые версии API. ARB — это комитет, состоящий из большого количества игроков индустрии компьютерной графики и некоторых производителей ОС. Apple и Microsoft в разное время тоже были членами ARB.

3Dfx выходит на сцену со своей Voodoo2. Это первая видеокарта, позволяющая делать мультитекстурирование, которое не было ранее предусмотрено в OpenGL. В то время как 3Dfx была решительно против OpenGL, nVidia, следующий производитель чипа с мультитекстурированием (TNT1), были без ума от OpenGL. Тогда ARB выпустил расширение GL_ARB_multitexture, которое предоставляло доступ к множественным текстурам.

Тем временем появляется Direct3D v5. Теперь D3D действительно стал API, а не какой-то несуразицей. В чём же проблема? В отсутствии мультитекстурирования.

Упс.

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

D3D вздохнул с облегчением.

Время шло, и nVidia выкатили GeForce 256 (не путать с самым первым GeForce GT-250), прекратив борьбу на рынке графических плат на следующие два года. Главным конкурентным преимуществом этой платы была возможность делать преобразования вершин и освещение (transformation & lighting, T&L) аппаратно. Но это ещё не всё: nVidia любила OpenGL настолько, что их T&L-движок фактически и был OpenGL. Почти буквально! Как я понимаю, некоторые из их регистров получали на вход напрямую численные значения переменных типа GLenum.

Выходит Direct3D v6. Наконец то подоспело множественное текстурирование… но без аппаратного T&L. В OpenGL всегда был T&L-конвейер, хотя до GeForce 256 он был реализован программно. Поэтому для nVidia оказалось довольно просто переделать программную реализацию в аппаратное решение. В D3D аппаратное T&L появилось только к седьмой версии.

Заря эпохи шейдеров, OpenGL во мгле


Затем появилась GeForce 3. В то же самое время произошло много интересных вещей.

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

Шумный развод произошёл позже, но это совсем другая история.

Для рынка PC это значило, что GeForce 3 вышла одновременно с D3D v8, и нетрудно видеть, как GeForce 3 повлияла на шейдеры D3D v8. Пиксельные шейдеры Shader Model 1.0 были очень сильно заточены под оборудование nVidia. Не было предпринято ни единой попытки сделать хоть что нибудь для абстрагирования от железа nVidia. Shader Model 1.0 стала тем, для чего предназначена GeForce 3.

Когда ATI ворвалась в гонку производительности видеокарт со своей Radeon 8500, появилась одна проблема. Пиксельный конвейер Radeon 8500 оказался более мощным, чем у nVidia. Поэтому Microsoft выпустила Shader Model 1.1, которая в основном была тем, для чего предназначена 8500.

Это звучит как поражение D3D, но успех и провал — понятия относительные. На самом деле эпический провал поджидал OpenGL.

В nVidia очень любили OpenGL, поэтому после выхода GeForce 3 они выпустили целую пачку расширений для OpenGL. Проприетарных расширений, которые работали только на nVidia. Естественно, когда появилась плата 8500, она не могла использовать ни одно из них.

Итак, на D3D 8 вы могли хотя бы запустить шейдеры SM 1.0. Конечно, чтобы использовать всю крутость 8500, приходилось писать новые шейдеры, но код хотя бы работал.

Чтобы получить любые шейдеры на Radeon 8500 в OpenGL, ATI пришлось разработать несколько расширений для OpenGL. Проприетарных расширений, которые работали только на ATI. В итоге, чтобы разработчики могли заявить, что они прикрутили к своему движку шейдеры, им приходилось писать отдельный код для nVidia и отдельный код для ATI.

Вы возможно спросите: «А где же был комитет ARB, который должен поддерживать OpenGL на плаву?». А были они там, где в конечном итоге оказываются многие комитеты: они сидели и тупили.

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

ARB выпускали расширения одно за другим. Каждое расширение со словами «texture_env» в названии было попыткой залатать этот устаревающий дизайн. Посмотрите на список расширений: таких расширений было выпущено восемь штук, и многие из них были переведены в основную функциональность OpenGL.

В то время Microsoft входила в ARB, и покинула его только к выпуску D3D 9, поэтому возможно, Microsoft саботировали OpenGL некоторым образом. Лично я сомневаюсь в этой теории по двум причинам. Во-первых, они должны были бы заручиться поддержкой других членов Комитета, потому как каждый участник имеет всего один голос. Во-вторых, что более важно, Комитету не нужна была помощью Microsoft чтобы всё запороть, свидетельства чему мы увидим далее.

В итоге ARB, скорее всего под давлением ATI и nVidia (обе являются активными участниками), наконец очнулся и ввёл в стандарт ассемблерные шейдеры.

Хотите ещё более дурацкую историю?

Аппаратное T&L. Это то, что в OpenGL было изначально. Чтобы получить максимально возможную производительность аппаратного T&L, нужно хранить данные вершин на GPU. Все-таки, GPU — это основной потребитель вершинных данных.

В D3D v7 Microsoft ввела концепцию вершинных буферов, которые выделяют куски памяти в GPU и размещают там данные вершин.

Хотите знать когда в OpenGL появилась эквивалентная функциональность? Да, nVidia, как самый большой любитель OpenGL, выпустила своё расширение для хранения массивов вершин на GPU ещё во времена выхода GeForce 256. Но когда же ARB представил такую функциональность?

Два года спустя. Это было после того, как она утвердили вершинные и фрагментные (пиксельные в терминах D3D) шейдеры. Столько времени ушло у ARB чтобы разработать кросс-платформенное решение для хранения вершинных данных в памяти GPU. И это то, что необходимо, чтобы аппаратное T&L достигло максимальной производительности.

Один язык, чтобы убить их всех


Итак, OpenGL был сломан в течение какого-то времени. Отсутствовали кросс-платформенные шейдеры и аппаратно-независимое хранение вершин в GPU, в то время как пользователи D3D наслаждались и тем и другим. Могло ли стать ещё хуже?

Можно сказать, что могло. Встречайте: 3D Labs.

Вы спросите: кто же они? Они — мёртвая компания, которую я считаю истинным убийцей OpenGL. Конечно, общая несостоятельность Комитета сделала OpenGL уязвимым, в то время как он должен был рвать D3D в клочья. Но по-моему, 3D Labs — возможно единственная причина текущего положения OpenGL на рынке. Что они для этого сделали?

Они разработали язык шейдеров для OpenGL.

3D Labs были умирающей компанией. Их дорогостоящие GPU были вытеснены с рынка рабочих станций всё возрастающим давлением nVidia. И в отличие от nVidia, 3D Labs не были представлены на потребительском рынке; победа nVidia означала бы смерть для 3D Labs.

Что в итоге и случилось.

В стремлении оказаться на плаву в мире, которому были не нужны их продукты, 3D Labs заявились на конференцию Game Developer Conference с презентацией того, что они назвали «OpenGL 2.0». Это был OpenGL API, переписанный с нуля. И это имело смысл, ибо в те времена в API OpenGL было полно хлама (который, впрочем, остаётся там и по сей день). Посмотрите хотя бы на то, насколько эзотерически сделаны загрузка и биндинг текстур.

Частью их предложения был язык шейдеров. Да, именно он. Тем не менее, в отличие от имеющихся кросс-платформенных расширений, их язык шейдеров был «высокоуровневым» (C — это высокий уровень для языка шейдеров).

В это же время в Microsoft работали над своим собственным языком шейдеров. Который они, включив всё своё коллективное воображение, назвали… Высокоуровневым Языком Шейдеров (HLSL). Но их подход к языку был фундаментально иным.

Наибольшей проблемой языка от 3D Labs было то, что он был встраиваемым. Microsoft полностью самостоятельно определяла свой язык. Они выпустили компилятор, который генерировал ассемблерный код для шейдеров SM 2.0 (или выше), который, в свою очередь, можно было скармливать D3D. Во времена D3D v9, HLSL никогда не касался D3D напрямую. Он был хорошей, но необязательной абстракцией. У разработчика всегда была возможность взять выхлоп компилятора и подправить его для максимальной производительности.

В языке от 3D Labs ничего этого не было. Вы отдаёте драйверу C-подобный язык, и он создаёт шейдер. На этом всё. Никакого ассемблерного шейдера, ничего, что можно скормить чему-то ещё. Только объект OpenGL, представляющий шейдер.

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

Это было большим, но не единственным недостатком GLSL. Далеко не единственным.

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

В GLSL ничего такого не было. Вершинный и фрагментный шейдер сплавлялись воедино, образовывая нечто, названное компанией 3D Labs «программным объектом». Поэтому, для совместного использования нескольких вершинных и фрагментных шейдеров в различных комбинациях, приходилось создавать несколько программных объектов. Это стало причиной второй по величине проблемы.

3D Labs думали, что они самые умные. Они взяли C/C++ за основу для модели компиляции GLSL. Это когда вы берёте один c-файл и и компилируете его в объектный файл, а затем берёте несколько объектных файлов и компонуете их в программу. Именно так компилируется GLSL: сначала вы компилируйте вершинный или фрагментный шейдер в шейдерный объект, затем помещаете эти объекты в программный объект и компонуете их воедино чтобы наконец сформировать программу.

В теории это позволяло появиться таким крутым вещам, как «библиотечные» шейдеры, которые содержат код, вызываемый основным шейдером. На практике это приводило к тому, что шейдеры компилировались дважды: один раз на стадии компиляции и второй раз на стадии компоновки. В частности, этим славился компилятор от nVidia. Он не генерировал какой-либо промежуточный объектный код; он компилировал вначале, выбрасывал полученный результат и компилировал заново на стадии компоновки.

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

У GLSL были и другие проблемы. Возможно, было бы неправильным сваливать всю вину на 3D Labs, ибо в конечном итоге ARB утвердили и включили в OpenGL язык шейдеров (но ничего больше из предложений 3DLabs). Однако, изначальная идея всё равно была за 3D Labs.

И теперь самое печальное: 3D Labs были правы (в основном). GLSL не векторный язык, каким в то время был HLSL. Так случилось потому, что железо 3D Labs было скалярным (как современное железо от nVidia), и они были полностью правы в выборе направления, которому позднее последовали многие производители оборудования.

Они были правы и с выбором модели компиляции для «высокоуровневого» языка. Даже D3D в итоге к этому пришёл.

Проблема в том, что 3D Labs были правы в неправильное время. И в попытках попасть в будущее преждевременно, в попытках быть готовыми к будущему, они отставили в сторону настоящее. Это выглядит как T&L-функциональность в OpenGL, которая была в нём всегда. За исключением того, что T&L-конвейер OpenGL был полезным и до появления аппаратного T&L, а GLSL был обузой до того как остальной мир догнал его.

GLSL — это хороший язык сейчас. Но что было в то время? Он был ужасен. И OpenGL пострадал от этого.

На подходе к апофеозу


Я поддерживаю ту точку зрения, что 3D Labs нанесли OpenGL смертельный удар, но последний гвоздь в крышку гроба забил сам ARB.

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

ARB решили предпринять ещё одну попытку изобрести OpenGL. Это было как «OpenGL 2.0» от 3D Labs, но лучше, потому что за этой попыткой стоял ARB. Они назвали это «Longs Peak».

Что такого плохого в том, чтобы потратить немного времени на улучшение API? Плохо то, что Microsoft оказалась в довольно шатком положении. Это было время перехода на Vista.

В Vista Microsoft решили внести давно напрашивающиеся изменения в графические драйверы. Они заставили драйверы обращаться к ОС за виртуализацией графической памяти и многим другим.

Можно долго спорить о достоинствах такого подхода, и о том, был ли он вообще возможен, но факт остаётся фактом: Microsoft сделала D3D 10 только для ОС Vista и выше. Даже на поддерживающем D3D железе было невозможно запустить D3D приложение без Висты.

Вы возможно помните, что Виста… скажем так, работала не очень хорошо. Итак, у нас была неторопливая ОС, новый API, который работал только на этой ОС, и новое поколение железа, которое нуждалось в этом API и ОС чтобы делать нечто большее, чем просто превосходить предыдущее поколение в производительности.

Тем не менее, разработчики могли использовать функциональность уровня D3D 10 через OpenGL. То есть могли бы, если бы ARB не был занят работой над Long Peaks.

ARB потратили добрые полтора-два года, работая над улучшением API. Ко времени выхода OpenGL 3.0 переход на Висту закончился, Windows 7 была на подходе, и разработчиков игр больше не заботила функциональность уровня D3D 10. В конце концов, оборудование для D3D 10 прекрасно работало с приложениями на D3D 9. С увеличением темпов портирования с ПК на консоли (или с переходом ПК-разработчиков на консольный рынок), разработчикам всё меньше была нужна функциональность D3D 10.

Если бы разработчики получили доступ к этой функциональности даже на Windows XP, развитие OpenGL могло бы получить живительный заряд бодрости. Но ARB упустили эту возможность. А хотите знать что самое ужасное?

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

В итоге ARB не только упустили ключевые возможности, но и не выполнили ту работу, которая привела их к этому упущению. Это был epic fail по всем направлениям.

Такова история о противостоянии OpenGL и Direct3D. История упущенных возможностей, величайшей глупости, умышленного безрассудства и банальных нелепостей.
Поделиться с друзьями
-->

Комментарии (107)


  1. GamePad64
    09.09.2016 20:18
    +4

    Хороший перевод! Хоть я и не писал графические приложения, было очень интересно читать.


    Вопрос к знатокам: У ARB был шанс реабилитироваться с выходом OpenGL ES 2.0 и OpenGL 4.0. Получилось или не очень?


  1. Delics
    09.09.2016 20:27
    +1

    > последний гвоздь в крышку гроба

    Когда это OpenGL успело умереть?


    1. MarazmDed
      09.09.2016 21:27

      Я не припомню момента, когда OpenGL жил в играх. История игр — это история DirectX. А так, да, оба живы. С трудом представляю себе какую-нибудь САПР, на директе. Мне кажется, сравнение не совсем корректное. OpenGL — это чисто графическая библиотека, а DirectX — это комбайн технологий для ИГР.


      1. Zenitchik
        09.09.2016 21:54
        +1

        Homeworld. Ради него мне пришлось поставить OpenGL.


        1. MarazmDed
          09.09.2016 22:29

          Это исключение. Можно назвать еще несколько игр. Можно вспомнить, что некоторые игры поддерживают обе библиотеки. Но тем не менее, это исключение.


        1. lolipop
          09.09.2016 22:50

          поставить OpenGL

          что?


          1. iOrange
            09.09.2016 23:32
            +3

            Раньше существовали отдельно OpenGL драйвера для видеокарт.
            Помню что Serious Sam, еще первый, не запускался если не стояли драйвера OpenGL.


          1. navion
            09.09.2016 23:34

            MS не включила его в W2k.


            1. pda0
              10.09.2016 00:25

              Простите, но это не правда. О чём, собственно, и написано по ссылке. M$ подумывали вообще исключить OpenGL (со временем), потому что тогда участвовали в проекте Farenheit, который должен был создать более продвинутое API на замену OpenGL и Direct3D.

              В связи с этим они перенесли в Win2k политику Win98: Все драйверы, идущие вместе с операционной системой, если поддерживают 3D ускорение, то только для Direct3D, аппаратную поддержку OpenGL производитель должен делать сам (если захочет). Поскольку в Win9x так и было, а в NT4 вообще не было родного аппаратного 3D ускорения (только с драйверами и только OpenGL), то для пользователей не изменилось ровным счётом ничего.

              Потом подобные страшилки были во времена Vista, когда все кричали «а-а-а-а! M$ выкидывает OpenGL!!!1111» А оказалось, что лишь обновили свою програмную реализацию с 1.1 до 1.4. Хотя вряд ли кто-то сможет ответить — на фига… Ни то, ни то в тот момент было абсолютно никому не интересно. Да ещё и в програмном варианте.


              1. Nomad1
                10.09.2016 09:32

                Кстати, в 8+ уже программная поддержка на уровне 2.0, текстуры до 1024x1024 и даже есть поддержка S3TC. При чем, я подозреваю, что там не сугубо программно все, а враппер над DirectX — уж слишком хорошо работает. Если бы не прибитый гвоздями размер текстур, уже бы работали некоторые 3D пакеты и разумного уровня игры из коробки.
                Это все создает видимость, что OpenGL в системе есть и работает, некоторый софт пытается запуститься и падает в середине, а не сразу при запуске. И почти ни одна программа не может толком сообщить, что именно оказалось поломано.


      1. somniator
        09.09.2016 22:15

        Autodesk Inventor на DirectX


        1. Moog_Prodigy
          10.09.2016 11:20

          3DSMax позволяет выбирать или DirectX или OpenGL. Или вообще «программная эмуляция», если совсем нестандартное железо. Ну, по меньшей мере, до 7ой версии включительно.


      1. Alex_ME
        10.09.2016 00:24
        +1

        Новый Doom. Насчет других не знаю. Warzone 2100 (специфическая вещь), да и тот же Minecraft.


      1. dendron
        10.09.2016 02:32
        +2

        Практически все игры на движках от id Software, а их не мало, работали через OpenGL.


      1. VBKesha
        10.09.2016 09:48
        +2

        Quake 3 и игры на его движке, по моему уже о многом говорит.
        Unreal был мультидвижковый.
        Half-Life лично у меня в OpenGL шёл в разы лучше.


        1. MarazmDed
          11.09.2016 16:18

          А лично у меня на Directе все шло, а на OpenGLе вылазили артефакты в играх. Но это — мимо. Речь шла о разработчиках. А разработчики, используя Direct, получают не только графическую библиотеку, в отличии от.


      1. susnake
        10.09.2016 10:46
        +2

        Я специально залез на вики, когда читал статью и нашел вот такой лист игр. Причем там не только «старые», но и новые игры. И к тому есть игры, которые запускаются под Windows. Как пример:
        Wolfenstein: The Old Blood
        Wolfenstein: The New Order
        Spore
        Amnesia: A Machine for Pigs
        Amnesia: The Dark Descent
        Так что и крупные проекты на нем разрабатывают.


        1. MarazmDed
          10.09.2016 13:16

          Прекрасно. А теперь делаем точно такой же список игр под DirectX. Подозреваю, что получим нечто в десятки раз более объемное ;) О чем и была речь. Более того, DirectX <> Direct3D. В нем куча подсистем, аналогов которого у
          OpenGL в принципе нет. DirectSound, DirectPlay — это как минимум.


          1. susnake
            10.09.2016 13:24

            Ну дык и

            и под линух игорь нет

            И говорить только из-за этого, что линух для геймдева мертв как-то некорректно.


            1. MarazmDed
              10.09.2016 14:19

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


          1. staticlab
            10.09.2016 17:01
            +1

            DirectPlay давно deprecated, DirectSound не имеет аппаратной акселерации.


            1. MarazmDed
              11.09.2016 16:16

              И? Это противоречит тезису, что DirectX — это подмножество библиотек, а не только графическая библиотека?


              1. Mairon
                11.09.2016 23:51

                Ну строго говоря Khronos (ARB) тоже разрабатывает OpenAL (SL/ES), OpenCL вдобавок к OpenGL, поэтому тоже есть необходимые библиотеки, аналогичный Direct3D, DirectCompute и DirectSound.


                1. MarazmDed
                  12.09.2016 09:05

                  Ну ок, молодцы. Значит я был не прав и сравнивать DirectX с OpenGL — корректно.


      1. SurPaul
        10.09.2016 17:01

        А как же Android?


        1. vorphalack
          11.09.2016 08:43

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


        1. MarazmDed
          11.09.2016 16:20

          Ну андроид — это совсем свежая история. Описанные события — про царство винды


      1. zx80
        10.09.2016 17:01

        Здрасьте, приехали!!! Несметное колличество игр на OpenGL!!! — это все игры id Software — думы, квейки, вольфенштейны new order, rage — и игры сторонних разработчиков, которые купили движки id Tech 3, 4, 5 (Brink, Prey, Star Wars Jedi Knight II, Medal of Honor: Allied Assault, Dishonored 2, The Evil Within и др.). А теперь будут игры на id Tech 6
        сразу видно вы игрок ещё тот!


      1. Sleepwalker_ua
        10.09.2016 18:29

        KSP гораздо лучше ведет себя на OpenGL — практически без ущерба для графония (он там кстати и так не самый крутой, но все же!!) отжираемые ресурсы падают в 1,5-2,5 раза!
        Ну сами посудите, на максимуме настроек на дирХ он жрет ~350Мб видеопамяти и (в ангаре с кораблем на 60 деталей), а на опенГЛ — всего 225 при тех же условиях и в том же ангаре. Я уж не говорю, что на опенГЛ существенно снижается потребность в оперативе для ресурсов и игра позволяет строить крафты на 160-200 деталей без лагов и регулярных вылетов, тогда как на дирХе — только 70-100 деталей максимум и начинается слайдшоу…


        1. Drakoninarius
          12.09.2016 12:21

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


          1. Sleepwalker_ua
            12.09.2016 20:22

            я так считаю, что мое железо прямо древним назвать нельзя — 8гб оперативной памяти, ксеон 5440 в разгоне (3.22ГГц), гтс450. Да, это не топовая железяка за пару тысяч у.е., но так и игра имеет весьма скромный графоний, который до уровня кукурузисов не дотягивает и близко, тем более — с учетом относительно невысокого разрешения (1400х1050р). Во всяком случае, более тяжелые игрульки этот системник пока еще вполне тянет.

            Затык именно в том, что у меня версия 1.0.4 х86 и всего с тремя модами — ну, на данный момент, коненчо (хеви рокетс, реалсолар и аттачсистментс) и она оперативы более 3Гб не умеет адресовать. Это влечет за собой крэши регулярные. Использование библиотек опенГЛ, как ни странно, снижает запросы по оперативке, очевидно — благодаря оптимизации текстур, которые так или иначе обрабатывает процессор.


            1. Drakoninarius
              13.09.2016 16:15

              значит пора обновить игру;)

              В тот же Real Solar System было почти невозможно играть имея ограничение в 3 гига оперативки, даже с опенГЛ вылеты были регулярны. С выходом 1.1 проблема решилась.


              1. Sleepwalker_ua
                13.09.2016 17:10

                никак руки не дойдут ;-) давно уже не играл даже, если честно…
                на 1.1 действительно меньше лагов и вылетов по памяти?


      1. truggvy
        12.09.2016 14:46

        «Я не припомню момента, когда OpenGL жил в играх.» — вы забываете про мобильники. В iOS и Android, до выхода Metal и Vulkan, безраздельно правил OpenGL ES. Да и сейчас ситуация не сильно изменилась.


        1. MarazmDed
          12.09.2016 17:52

          Статья описывает те времена, когда из игровых платформ самой популярной была винда. На ней подавляющее большинство игр были директовыми. Да, Опенгл поддерживала куча игр, да были даже чисто опенглные игры, что не противоречит тому, что самая часто используемая библиотека — директ. Сейчас ситуация меняется коренным образом. Тут и мобильные платформы, тут и стим и другие. И я не за директ и не за опенгл. Я — за разнообразие. Больше библиотек — лучше программистам.


    1. rabbitator
      09.09.2016 23:33

      Он умер и воскрес…


  1. RedVelvet
    09.09.2016 20:28
    +1

    Нужно быть очень хорошим кодером чтобы разобраться во всем этом зоопарке API и одновременно разрабатывать проект.


    1. MarazmDed
      10.09.2016 13:17
      +1

      Нужно быть хорошим ПРОГРАММИСТОМ. Хороший программист примерно за 14 дней разберется в любом API.


      1. RedVelvet
        10.09.2016 17:54
        +1

        Ок, давайте перенесем вас на 15 лет назад дадим железки тех времён и посмотрим что вы будете делать. Поддержка первых видеокарт, поддержка софверного рендера, поддержка экзотических API и т.д. И что бы все это работало.


        1. MarazmDed
          11.09.2016 16:06

          На 15 лет назад — легко. Изучу DirectX — этого хватает с лихвой, чтобы все заработало.


      1. immaculate
        11.09.2016 10:07
        +1

        Не верю, что за 14 дней можно изучить все «особенности» любого API. Скажем, в документации к API будет сказано, что для вывода точки красного цвета, надо вызывать функцию API «putPixel(x, y, z, color.RED)». Программист на 15-й день так и пишет в коде. Точка выводится зеленым цветом. Двое суток отладки, чтения форумов, блогов и исходников (если они вообще есть). Выясняется, что если инициализация была выполнена в отладочном режиме, то color.RED заменяется на color.GREEN.

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


        1. MarazmDed
          11.09.2016 16:15
          -1

          Не верю, что за 14 дней можно изучить все «особенности» любого API.

          Все — нельзя. Разобраться и начать работать — можно.

          Скажем, в документации к API будет сказано, что для вывода точки красного цвета, надо вызывать функцию API «putPixel(x, y, z, color.RED)». Программист на 15-й день так и пишет в коде. Точка выводится зеленым цветом. Двое суток отладки, чтения форумов, блогов и исходников (если они вообще есть). Выясняется, что если инициализация была выполнена в отладочном режиме, то color.RED заменяется на color.GREEN.

          Пример как раз про КОДЕРА, а не про ПРОГРАММИСТА. Двое суток отладки на такую херню — явный перебор. Но дело не в этом. Дело в том, что тонкости и подводные камни не мешают писать код. И досконально некоторые библиотеки можно изучать и год и два. Однако ПРОГРАММИСТ за 14 дней способен разобраться и в чужом коде и в новой для него библиотеке и т. д. И сможет эффективно работать.

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

          Сейчас такой подход тоже популярен. Только дело не в стоимости поиска чужих ошибок, а, зачастую, в криворукости. Хотя да, в ряде случаев проще самому написать парсер xml. Особенно, если не используется ни валидация, ни трансформация, ни еще какие-то новомодные штуки. Дело еще и в том, что ради какой-нибудь минорной функции тащить в проект целый фреймворк — это тоже не комильфо. Ну и плюс не все фреймворки одинаково полезны.


  1. Nomad1
    09.09.2016 20:45
    +2

    Жалко, что автор не упомянул, как MS беспардонно выдавливает OpenGL последние годы со своих систем — ограниченные или вообще отсутствующие драйвера по-умолчанию, существенно заниженная производительность и т.д. Буквально, кросс-платформенный продукт может быть напиан с OpenGL + OpenAL для всех платформ, но на Windows 10 и Windows Phone разумно написать альтернативный рендерер или использовать Angle.


    1. Alex_ME
      09.09.2016 21:12

      И это очень печально для меня, как пользователя Windows


      1. arthi7471
        10.09.2016 17:01
        -2

        Не отчаивайтесь. На линухе от ещё квест с драверами. Правда если асилите невидия может выдать удивительные результаты.


        1. RussianNeuroMancer
          11.09.2016 19:09
          +2

          А какой квест, позвольте поинтересоваться? Невидия ставится кликом в области уведомлений и двумя кликами в появившемся окне (по крайней мере в Kubuntu так) а два других вендора работают из коробки, потому что у Intel и AMD открытые спеки на железо и свободные драйвера.


    1. dartraiden
      09.09.2016 22:20

      При разработке новых игр уже имеет смысл смотреть на Vulkan, а не на OpenGL, поскольку Vulkan на современных видеокартах быстрее. Да и большую свободу разработчикам даёт.


      1. iOrange
        09.09.2016 23:33
        +2

        Смотря каких игр. Если уровня ААА — то да, возможно стоит смотреть на Vulkan.
        Иначе просто нет смысла — современного OpenGL хватает за глаза.


        1. HerrDirektor
          10.09.2016 13:58

          В четвертом думе вулкан быстрее, чем OGL. Причем, не только на тестах, это заметно невооруженным взглядом. Хотя железка древняя (AMDшный рефренс R9 270).
          А больше я его нигде и не видел, вулкан этот. Хотя я не игрок, поэтому наверное сей факт неудивителен :)


          1. RussianNeuroMancer
            11.09.2016 19:14

            В idTech 6 VK-рендер на одном уровне с OGL4.5-ррендером (вероятнее всего потому что разработчики использовали AZDO в OGL4.5-рендере) и они оба обгоняют OGL4.3-рендер. Фокус в том, что на Radeon Software idTech 6 позволяет заюзать либо Vulkan, либо OpenGL 4.3.

            То есть все могли бы жить-поживать и добра наживать с OpenGL 4.5 и AZDO, но необходимость в замене OpenGL да и ребрендинге таки назрела — потому и имеем Vulkan.


          1. barnes
            12.09.2016 04:59
            +1

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


            1. HerrDirektor
              12.09.2016 05:44

              Так камрад выше разъяснил, почему так — на радеонах используется OGL4.3, на нвидии — OGL4.5, поэтому в последнем случае разница между VK и OGL минимальна.
              Ну а глюки радеонов — это да. Даже как пользователь, отмечу, что более глючные драйверы были пожалуй только у каких-нибудь там Savage или Permedia.


              1. barnes
                12.09.2016 10:30

                Это немного не совсем так.
                AZDO реализуется спокойно на 4,3 железе.
                buffer storage — 4.3
                multidraw inderect — 4.1
                bindless textures — 4.0
                texture arrays — вообще на гл3 доступны
                Я не копал вулкан, тк не интересно, но гляде примеры это очень похоже на гл45 с низкоуровневым доступом.


                1. RussianNeuroMancer
                  12.09.2016 17:13

                  Это вы верно подметили, тогда может дело в том что у AMD реализация чаще по спецификации, чем у nVidia? (Больше проверок в коде драйвера.)


                  1. barnes
                    12.09.2016 17:30

                    AMD реально маниакально придерживается спецификаций. Но когда приходилось развертывать циклы, тк на амд шейдер без проблем компилировался, но рисовал чОрный экран, это вообще как? А развернешь все работает… Это при том, что шейдер совсем простой… А когда на 5ххх серии выборочно не пахал оклюжен квери и кондишенл рендер? Мы тогда этого Абрашу Селлера просто баг репортами задолбали.


                    1. RussianNeuroMancer
                      12.09.2016 17:41

                      Для любого вендора можно составить список эпичных провалов, суть не в этом, а в том что вряд ли тормознутость OGL4.3-рендера DOOM на Radeon Software связана с ними — рендеринг же корректный. Скорее с проверками, как мне кажется. Абрашу закидывать багрепортами нужно и полезно, чтобы он активнее подпинывал китайцев :)


                      1. barnes
                        12.09.2016 17:46

                        Возможно)) Но самый лютый треш, это были опенгл драйвера интела ))


                        1. HerrDirektor
                          12.09.2016 19:16

                          [задумывается] С точки зрения пользователя самым трешем были драйверы под Savage 4.
                          Хочешь поиграть в HL? — пуск батника с установкой одного пакета драйверов->рестарт->играем.
                          Хочешь в Q2? Мммм… нужно ставить другую версию, т.к. в текущей на Q2 выпадают текстуры. А на версии, где Q2 идет без глюков, HL превращается в белесое слайд-шоу.
                          А уж бох-ты-мой, ежели вдруг приспичило запустить что-то под DX — то там сразу 3 версии, под разные игрухи своя, иначе тормозит.

                          Первая TNT казалась божеством стабильности после S4 :) Хотя по скорости кое-где уступала.


                          1. barnes
                            13.09.2016 00:10

                            Первая ТНТ?) О да) Была у друга, я позже взял рейдж128 атишную. Билинейка была жуткая просто… А трилинейка ок. И 16бит цвет жуткий был. 32 уже ок. Как щас помню 42фпс на 1024 в ку2 (тирлинейкаи 24бита колор))) Ати еще конкретно подсиживали тем, что до 128й у них не было альфа блендинга… Что д3д, что гл


      1. yurser
        10.09.2016 17:01
        +1

        А что насчет DX12 против Vulkan? Что лучше?


        1. creker
          11.09.2016 03:07

          Они практически идентичны. Но тут опять возникает вопрос, что даст больший профит. DX12 — это windows и xbox. Вулкан — это только windows. Довольно мало смысла, если выбросить из головы идеологические принципы. В перспективе, DX12 однозначно получит намного лучшую поддержку драйверами. Пока что конечно и там, и там наблюдаются проблемы молодости.


          1. vorphalack
            11.09.2016 08:50

            если верить вики, то вулкан еще и линух, и андроид новых версий. но да, грустно. хотя хрен его знает кто в новой нинтенде будет.


        1. RussianNeuroMancer
          11.09.2016 19:25
          +1

          Direct3D 12 даёт разработчику доступ к Windows 10, Windows 10 Mobile и Xbox One,
          Vulkan даёт разработчику доступ к Windows 7, 8.1, 10, GNU/Linux, Android и через MoltenVK — к MacOS и iOS.

          То есть даже при разработке эксклюзивно для десктопной Windows разработчик получит доступ к большей аудитории выбрав Vulkan.


          1. yurser
            11.09.2016 20:38

            Про доступность понятно. Интересен именно технический аспект.


            1. RussianNeuroMancer
              11.09.2016 21:29

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


              1. MarazmDed
                14.09.2016 18:13

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

                На мой взгляд в вашей фразе следующие проблемы:
                1) В ДВИЖКЕ — это крест. Работу с API нужно выносить в отдельный слой. Тогда движок получится универсальным и кроссплатформенным. Особенно актуально, если посещают мысли об охвате нескольких платформ.
                2) Делать то, что брал на себя видеодрайвер не нужно по определению. Задача драйвера — работа с оборудованием. Это слой абстракции. То, ради чего драйверы и были придуманы.
                3) API берет на себя низкоуровневые функции. Ради этого он и нужен. Так что, будь то OpenGL, DirectX или любая другая библиотека — разбираться в архитектуре и особенностях работы с видеокартой не придется.


                1. RussianNeuroMancer
                  14.09.2016 19:02

                  1) Согласен, просто назвал общим словом, не вдаваясь в детали.
                  2) Местами таки нужно — например, поддержку нескольких GPU придётся писать самим, драйвер тут не поможет.
                  3) В случае Vulkan и D3D12 какие-то функции берёт, а какие-то брать перестал, вот о чём речь. И сравнение с OpenGL и Direct3D до 11 включительно на мой взгляд некорректно — например сравните SLOC helloworld-ов на Vulkan и OpenGL.


                  1. MarazmDed
                    14.09.2016 21:58

                    2) Местами таки нужно — например, поддержку нескольких GPU придётся писать самим, драйвер тут не поможет.

                    Что подразумевается под поддержкой нескольких GPU? CrossFire и иже с ними?

                    И сравнение с OpenGL и Direct3D до 11 включительно на мой взгляд некорректно

                    Я изначально об этом говорил


                    1. RussianNeuroMancer
                      14.09.2016 22:12

                      2) Да, SLI или CrossFire, но помнится что возможен и более творческий подход в асимметричных конфигурациях, где слабому GPU отводиться какая-то отдельная роль, например заниматься только сглаживанием. На практике мы однако наблюдаем, что разработчики игр пока боятся браться даже за симметричные конфигурации, хотя казалось бы — вот она, возможность сделать идеальный multi-GPU без всех этих хаков со стороны драйвера и рендера. Но не делают, и тут обиднее всего за обладателей видеокарт с двумя чипами на одной плате, хотя их и мало.
                      3) То есть вы согласны с тем что в случае OpenGL и D3D11 драйвер берёт на себя многие задачи, а в случае с Vulkan и D3D12 разработчику придётся решать эти задачи своими ручками, которые для задействования потенциала новых API, притом должны быть весьма очумелыми?


                      1. MarazmDed
                        14.09.2016 22:15

                        То есть вы согласны с тем что в случае OpenGL и D3D11 драйвер берёт на себя многие задачи, а в случае с Vulkan и D3D12 разработчику придётся решать эти задачи своими ручками, которые для задействования потенциала новых API, притом должны быть весьма очумелыми?

                        В случае с Vulcan и D3D12 я не в теме, потому спорить не компетентен. Но изначально фраза заставила словить жесткий спотыкач мозгов.


    1. creker
      10.09.2016 05:06

      Не может быть, потому что с OpenGL столько проблем, что игроки воют с каждым релизом игр на нем, тем более что он не покрывает ниодну из консолей. Намного лучший вариант это основной рендер на DX и на том, что у playstation. Если надо порты, то кое как переносить на OpenGL. Таким образом сделаны все топовые движки. Основной рендер это DX. Исключение лишь IDTech, который все равно толком нигде не используется и не сильно интересен сам по себе.


      1. MarazmDed
        10.09.2016 13:19
        +1

        Подозреваю, что во всех ТОПОВЫХ движках есть слой абстракции. Так что переключение под другой рендер — вопрос далеко не самый сложный. Это, кстати, и объясняет, почему в настройках кучи игр есть выбор между православным DirectX и вражеским OpenGL.


        1. creker
          11.09.2016 03:02
          +1

          Кучи игр? Это каких же. Возьмем вот frostbite. На данный момент лучшее, что есть на рынке в плане оснащения. Но к сожалению in-house. Он вообще не имеет версии под opengl. На нем выходят все игры EA.

          А на счет слоя абстракции. Да, он есть. Но не думаете же вы, что это так просто, как подменить макросами одни функции на другие? Они похожи, но все равно имеют свои различия. И DX очевидно уделяется намного больше внимания. Он покрывает Windows и Xbox, поэтому это не удивительно. Для playstation есть своя библиотека. В итоге OpenGL не осталось места, и он попросту не нужен в современном геймдеве. Есть какие-то надежды только у вулкана. Да, люди любят приводить в пример IDTech и еще редкие редкие примеры, но они не меняют картины. Объективно, нет никаких причин использовать OpenGL. Он все равно не даст необходимой кроссплатформенности, а на единственной Windows принесет лишь проблемы с драйверами.


          1. MarazmDed
            13.09.2016 13:14

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

            Цель слоя абстракции подняться на уровень чуток повыше. Т.е. будет два разных слоя для работы с графическими фреймворками, а вот движок и игровая механика — останутся независимыми от API. Нет, это не просто подменить макросами. Это именно написание двух и более (сколько требуется) промежуточных слоев, которые с одной стороны покрывают потребности движка, с другой стороны работают с API. Результаты такой работы я видел. Игры под PS, XBOX и винду. Порт занимает относительно немного затрат времени.

            В итоге OpenGL не осталось места, и он попросту не нужен в современном геймдеве.

            О чем я и говорил. Для каждой задачи — свой инструмент. Для написания своей сапрообразной проги я, например, использовал OpenGL — и мне пофиг на наличие акселератора и аппаратного ускорения — цели другие. OpenGL для несложной работы с графикой показался проще, чем Direct3D.


      1. Mairon
        11.09.2016 12:37

        У Xbox тоже свой API графический, а не D3D. DX12 базируется на API Xbox One, но не идентичен ему.


      1. RussianNeuroMancer
        11.09.2016 19:39

        Сколько проблем с DOOM? Неужели больше, чем с последним Бэтменом? Если рассуждать так же, как рассуждаете вы — можно брать глюки, которые есть у каждой выходящей игры и заявлять, что все беды от Direct3D.
        Утверждение об отсутствии покрытия консолей ложно — есть Steam Machine. Вы конечно же сейчас станете возражать в духе «нищитова» но данное ложное утверждение от этого не перестанет быть ложным.

        А теперь, давайте вместе подумаем, зачем в Unreal Engine, Unity Engine и CryEngine добавили поддержку OpenGL, если он такой плохой? И как в idTech 6 из OpenGL 4.5 выжали столько же кадров в секунду, сколько из Vulkan?


      1. barnes
        14.09.2016 19:47

        Проблемы с openGL? Если только на картах ати-амд и интела.


  1. Alexsandr_SE
    09.09.2016 21:06
    +1

    Помню в 95 винде игра работала приемлемо. Но стоило поставить обновление с ИЕ и OpenGL в комплекте, как сокрость DX игры падала катастрофически. Если с чистой виндой хватало 486DX2, то с обновлением понадобился уже пентиум. Откуда такое взялось для меня загадка.


    1. lolipop
      09.09.2016 22:51
      +3

      включался софтварный движок от ms


      1. navion
        09.09.2016 23:53

        Может и про DirectX 7 в курсе? После его установки начинали тормозить фильмы на Sis 530 и i810.


  1. SHVV
    09.09.2016 21:48
    +6

    1. Lertmind
      09.09.2016 22:26
      +1

      Кстати, в том переводе нет GLQuake readme, потому что было добавлено позже.


  1. dartraiden
    09.09.2016 22:50
    +1

    и AMD (которая сейчас ATI)

    Наоборот.


  1. 3draven
    09.09.2016 22:57
    +1

    С дуба рухнуть, сравнивать работающий почти на голых микроконтроллерах, открытый стандарт, занимающий 90% рынка если взять и смартфоны, и прочее с закрытым набором либ, прибитым гвоздями к одной ОС. Какое противостояние то? В игрушках.


    1. 13_beta2
      09.09.2016 23:33
      +3

      Сколько рынка эти игрушки занимают в деньгах против всего остального? Для интереса.


      1. iOrange
        09.09.2016 23:35
        +2

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


        1. 13_beta2
          10.09.2016 00:52

          Так я не утверждаю обратного. Реально интересно сравнить долю pc+xbox относительно остального. Если есть такие оценки, конечно.


        1. dendron
          10.09.2016 02:40
          +1

          Никто всерьез не программирует на PS на OpenGL, насколько я знаю. Там как раз никакие абстракции не нужны.


          1. anderston
            12.09.2016 18:02

            А как там оптимизируют производительность, если кто-нибудь в курсе?


            1. MarazmDed
              12.09.2016 19:05

              Берут комплект девелопера, есть софт для анализа узких мест. И вперед.


        1. creker
          10.09.2016 05:03
          +1

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


      1. mxms
        10.09.2016 00:01
        -1

        Один Pokemon Go за полгода (!) заработал 500 мегабаксов. За год ожидают ярд.


    1. creker
      10.09.2016 05:02

      Ага, в основном секторе применения этих библиотек. И так уж получилось, что DX там занимает практически весь рынок


  1. Nagg
    10.09.2016 11:45
    +3

    Какой нынче ад для хардкорных (не путать с редактор-обезьянами) геймедевелоперов, каждый тянет свой API: MS — DX, Apple — Metal, остальные — вулкан (ну и старенький OpenGLES для мобилок). Это же надо писать игровые движки с костылями под каждую платформу :( Вот вроде Вулкан так хорош, но почему эпл его не продвигает? На сайте вулкана нет информации о поддержки оного яблочных платформ — какой же он тогда кроссплатформенный?


    1. Mairon
      11.09.2016 13:03
      +1

      Разговаривал с некоторыми геймдевами, они, наоборот, рады, мол, лучше 10 хороших API под разные платформы, чем 1 плохое под все платформы.


      1. Nagg
        11.09.2016 13:32

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


        1. Mairon
          11.09.2016 14:25
          +1

          Я не оспариваю, что Apple вообще фигней страдает. По поводу Metal был сначала энтузиазм, но он поутих, потому что Vulkan оказался пусть и сложнее, но не хуже по итоговому выхлопу, и в играх Vulkan используется прямо сейчас, в отличие от Metal, который кроме как в бенчмарках, технодемках и некоторых мобильных играх не первого эшелона нигде не используется.

          Ну и к OpenGL благожелательность повысилась, так как последние версии API стали удобноваримыми, конформанс-тесты стали строже, и драйверы ведут себя всё более предсказуемо. Поэтому Apple со своим GLES 3.0 и GL 4.0 выглядит совсем странно. Так что Apple тут начинает создавать разработчикам уже больше проблем, чем OpenGL. Даже известный фанат Metal Пранчкевичус из Unity перестал оспаривать нелепость решения Apple не развивать свою реализацию GL+ES и не пускать Vulkan.


  1. Alexey2005
    10.09.2016 12:44
    -1

    Похоже, что аналогичная история сейчас разворачивается вокруг веб-технологий: W3C — это полный аналог ARB, тоже всё делают не вовремя и костыльно.
    Многие разработчики уже с нетерпением ждут, когда же в мире останется всего один браузерный движок, чтобы его владелец наконец получил возможность послать W3C куда подальше и сделать всё по уму, а главное — быстро.


    1. TsukinoMai
      10.09.2016 12:58
      +6

      Многие разработчики уже с нетерпением ждут, когда же в мире останется всего один браузерный движок

      А остальные всё ещё помнят что из этого вышло в прошлый раз.


      1. Error1024
        10.09.2016 18:37
        +1

        К сожалению посредством Chrome/blink это уже происходит.
        Сначала Opera начала поддерживать хромовые префиксы — умерла.
        Теперь FF тоже начинает поддерживать их и прикидываться хромом… Если посмотреть на графики, то видно что к сожалению его ожидает таже судьба что и мою любимую оперу.

        А в руках гугла веб уже превращаться в тормозящую анимацию с material design, попутно выжирающую всю оперативную память.


    1. sumanai
      10.09.2016 14:26
      +1

      > Многие разработчики уже с нетерпением ждут, когда же в мире останется всего один браузерный движок
      Покажите мне их. они хотя бы с вебом связаны?


  1. khoramus
    10.09.2016 17:02

    Что-то такое я уже где-то читал.


  1. Nekit1234007
    10.09.2016 17:02

    https://habrahabr.ru/post/123194/


    1. Nekit1234007
      10.09.2016 18:09
      +1

      (Когда этот коментарий был написан, у статьи было 0 коментариев. Страдание ro акков…)


  1. en1gma
    10.09.2016 19:41

    и, вроде как, vulcan очередная пробежка по граблям: попытка стандартизировать проприетарный mantle от amd


    1. vorphalack
      11.09.2016 08:55

      даже если так, то на моем старичке 660Ti 4й дум вполне бодрячком вулканизировался на средних настройках.


  1. nett00n
    12.09.2016 18:34

    Не знаю почему, но манера подачи материала напомнила мне почти такую же эпичную историю про фатальный недостаток.