Comments 136
Ну и начало улыбнуло: я знаю об А много, а о Б ничего. Сейчас я расскажу об А и Б, но это не вопрос предвзятости.
Так сложилось, что для меня в любом программном продукте есть душа. Нейминг, визуальная, маркетинговая составляющие + интерфейс доступа (будь то API или иные способы взаимодействия), все это, в совокупности, дает некую ауру. Именно по этому я пользуюсь только NVIDIA и люблю OpenGL, не могу объяснить. Не знаю на хрена вставил эту бодягу сюда, захотелось высказаться )
Старый Джон Кармак из Id Software взглянул на этот мусор, сказал: «К чёрту!», и решил писать под другой API — OpenGL.Новый (современный) Джон Кармак считает наоборот. Carmack: Direct3D is now better than OpenGL
GLIde — была удобна но закрыта. D3D — тогда ещё не был достойным конкурентом.
Вульфенштейн + Дум — родоначальники жанра FPS. И Модель распространения демоверсий через BBS.
Квейк — первый 3D шутер. И Игра по сети.
Потом провалившийся из-за маркетинговых просчётов массовый FPS. Так вообще опередил своё время.
Потом Вторая квака — шутер с встроенной историей.
Потом Квейк Арена — командное мегамочилово.
И всё. после просто качественные проекты, и ничего за гранью как раньше.
Во-вторых, Quake 3 и Unreal Tournament разрабатывались более-менее одновременно и движок у Кармака вышел уже не столь очевидно превосходящим конкурентов, а по некоторым мнениям даже худший. Более того, в “командном мегамочилове” не было ни одного командного режима.
Прорывы закончились на Q1.
крышку гроба OpenGLи что теперь будет с OpenGL для iOS и Android?
"Они заставили драйверы обращаться к ОС для виртуалищации видеопамяти и многих других вещей."
Поправьте пожалуйста «виртуализации».
One last thing, PLEASE EVERYBODY ON THE INTERNET STOP COMPARING OPENGL AND DIRECTX! Either compare Direct3D vs OpenGL or don't do this. DirectX provides input support, sound support, movie playing, etc etc that OpenGL doesn't.
Нет-нет. Только в Windows 95 OSR 2.
Нет, не только. Для первоначальной Windows 95 тоже был выпущен установщик OpenGL, причём как версии 1.0, куда положили и заставки, так и 1.1, где их почему-то забыли.
Подробнее вот здесь писал: https://www.vogons.org/viewtopic.php?t=98762&p=1323893#p1323893
Извиняюсь за некропост, но в интернете столько откровенно лажевой информации по истории OpenGL и графических возможностей под Windows вообще как таковых, что просто диву даёшься.
Впрочем, я уже года 4 не притрагивался ни к OGL, ни к D3D. Неужели в противостоянии OGL и D3D всё действительно так плохо?
Та кросс платформенность о которой так долго говорили разработчики, становится уже не только забавой энтузиастов, но нередко и важным бизнес требованием к софту. И на этом рынке OpenGL долго ещё будет в лидерах.
А вот ценность DirectX для Майкрософта — сомнительна. В какой-то момент они могут и слить эту технологию, и поддержать GL. Да и Windows — уже не безусловный лидер. Т.е. на десктопах — конечно да, но ведь развивается ниша и планшетов, и ARM ноутбуков, и телефончиков. Так что от GL не откажутся.
Другой вопрос — нужно ли 3д на недесктопах?
ИМХО — Пока не особенно, но мощности всё же растут, и фишки люди хотят видеть уже и на дешёвых китайских смартфонах. А там уж точно лицензионной винды (даже мобайл) не будет никогда. А GL будет.
Сейчас на ПК, только доступность специалистов является определяющей при выборе из этих двух технологий. А на не ПК — всё уже решено.
Так вот — моё имхо — специалисты владеющие GL — не переведутся. И даже размножатся. И в каой-то момент GL придёт и на PC. Директу не выжить в такой борьбе. Вопрос времени.
XNA (угадайте на чём основан) работает на телефоне, консоли и ПК.
Если это не мультиплатформенность, я даже не знаю.
Если это кроссплатформенность, то я даже не знаю…
«ААХХХ M$ — КОРПОРАЦИЯ ЗЛА!!!».
>Если это кроссплатформенность, то я даже не знаю…
Укажите на противоречие.
Технология невыгодна для проектов с потенциально широким охватом аудитории.
Да, мы покроем 85% десктопов и 1% телефонов. И 20% приставок.
Но на GL — мы покроем 100% десктопов, 99% телефонов, много мультимедиа плееров, 80% приставок, читалки, кучку планшетов, полсотни миллионов телевизоров, 34 модели холодильников и пару пылесосов.
Не считая гаджетов, которые появятся только в следующем году.
Для меня выбор — очевиден. И корпорации тут не причём.
Просто на GL под майкрософтовские оси писать можно а на директе под немайкрософтовские нельзя.
1. Прикольно, конечно, что есть «34 модели холодильника» и прочее, но толку в этом? Играют люди либо на ПК, либо на приставках (ну да, еще в Angry Birds на айпаде). ПК и приставки закрываются DirectX-ом. Чего еще надо?
2. Наивно надеяться, что Ваш код вот сразу «полетит» на всех пылесосах. Автор статьи очень хорошо объяснил, что OpenGL'я есть куча версий разных вендоров, версий, расширений и т.д. У Вас в коде будет куча «иф (хБокс) { рисовать_вот_так() }. Такой код не жизнеспособен.
3. DirectX развивается (посмотрите на современные видеокарты, 3-д движки, и самое главное — на то, на чём сегодня делается большинство игр). OpenGL (опять таки со слов автора статьи) тупит и ходит кругами.
В общем, OpenGL клёвая штука для каких-нибудь OpenSource-проектов, демок, для курсача или когда и вправду стоит задача „чтоб кругом работало хоть как-то“. Но коммерческий продукт под десктоп, я считаю, сегодня можно делать только на DirectX.
Коммерческих проектов под десктоп на GL сделано не мало. На директе тоже были, но давно.
Приставки — это не только XBox.
Конечно, приставки бывают разные.
Но иногда всё таки GL — правильнее ;-), но зависит только от проекта это.
Да и с QT очень хорошо сочетается. А на QT мы подсели плотно ;-)
*sigh* blog.wolfire.com/2008/12/why-you-should-support-mac-os-x-and-linux/
С точки зрения делания бабла целесообразно будет ограничить понятие “десктоп” до “виндовс” только если вы готовы потратить миллионы долларов на рекламу, иначе… в статье по ссылке выше всё сказали.
1. Заработали половину денег на продажах софта под винду
2. Нифига не заработали на продаже той же софты под линукс
3. Гордо и красиво срубили на своей инди-игре (или чего они там продавали) аж 1 раз в жизни ну может пару килобаксов. А всякие конторы, реально смотрящие на мир (Вальв, Близзард, ИД и т.д.) пишут себе под Винду очередные Варкрафты да Халф-Лайфы и скромненько свою сотню вечнозелёных лимонов в год получают.
Так что статья прекрасно доказывает противоположный своему названию факт.
Впрочем, чего я тут распинаюсь. Вам деньги не нужны — кто-нибудь другой подберёт.
А всякие конторы, реально смотрящие на мир (Вальв, Близзард, ИД и т.д.) пишут себе под Винду очередные Варкрафты да Халф-ЛайфыЛол, все дела. Скриншот прилагается.

Это Мак, папка с играми, все нативные. Starcraft прошел и удалил, только сейвы остались.
А после, что практически все игровые движки высокого уровня используют абстрактный рендер, а он может использовать как OpenGL, так и D3D. Примеры таких движков: Unreal Engine, CryEngine (OpenGL с 3 версии по-моему), Source, да и любые кросс платформенные движки.
Если вы думаете, что это дешевые инди-проекты, то с вами нет смысла разговаривать по этой теме.
OpenGL — это изначально кросс платформенное API, так что если не писать мультирендер, то надо писать на нем, если хотите что-то кроме Windows.
Небезызвестная PS3 DirectX не поддерживает, а вот OpenGL ES с радостью.
2) Наверное проще все-таки исправить только некоторые функции, чем перелопачивать всю систему рендеринга.
>иф (хБокс) { рисовать_вот_так() }.
Ээ не знаю, кто так пишет, и где вы такое увидели. Посмотрите внимательнее на кросс платформенные решения. Если проект задумывается как кросс платформенный, то разработчики впринципе не задумываются о том, какой рендер будет использоваться. Пишется некая абстракция рендера, либо используется OpenGL, хотя 1 вариант лучше
3) Ну тут соглашусь. Правда, какие игры вы берете в расчет: ААА-проекты (кросс платформенные) или проекты студий (как правило, Windows)?
OpenGL изначально использовался как стандарт промышленной графики, и там он до сих пор лидер. Крупные графические станции работают в большинстве на Unix-системах, следовательно OpenGL, либо программные методы.
Кстати, 3D Max, AutoCAD, Maya кросс платформены и работают на платформах отличных от Windows. Или вы считаете их мелкими проектами?
Абстрактный класс рендера, от него наследуются классы рендеров для отдельных API. Так например сделано в CryEngine, Orge, остальные не уверен.
При использовании данной схемы логика приложения не меняется, а просто меняется класс/библиотека.
А вообще, вы думаете, что программа компилируется один раз и выполняется на всех системах сразу? Такие условия могут быть, разве что, в директивах компилятора.
Однако, иногда разные рендеры доступны на одной платформе, тогда программе всё ж приходится выбирать в рантайме.
а нужно, чтобы работало на телефонах, консолях и маках. Тогда это можно будет уверенно назвать кроссплатформенным
Зашибись, у вас тоже позиция: «ААХХХ M$ — КОРПОРАЦИЯ ЗЛА!!!»?
Смысл им конкурентов то поддерживать.
Повторюсь — если вам надо писать под Windows — используйте то с чем лучше знакомы вы или доступные вам специалисты.
Если надо не только под Windows — то появятся другие критерии выбора. И вполне возможно что надо будет и два дровера поддерживать — это на самом деле не так сложно как кажется. Но один проще и удобнее сопровождать ;-)
>Смысл им конкурентов то поддерживать.
в случае WP7 им нужно скорее заманить разработчиков с существующих платформ. XNA тут скорее помеха
Очень интересно, а главное, вписывается в то, какими мне помнятся старые «машинки» и часть истории развития 3D :)
Для непосвященных в эту «войну» людей она действительно все очень последовательно раскрывает.
Но лично мне кажется что можно было немного упомянуть о покупке 3dfx ее тогдашним конкурентом — Nvidia.
Многие кстати наработки 3dfx, все еще актуальны и всплывают только сейчас от лица N.
Например SLI…
Также в Voodoo ускорителях впервые появилось сглаживание (фильтрация) текстур.
Еще один момент. Было бы замечательно если бы автор довел историю до конца до OpenGL 4.x и рассказал о том каков он сейчас.
Также популярность OpenGL на различных мобильных платформах дает о себе знать.
И хоть OpenGL ES != OpenGL, все равно OpenGL ES на 90% тотже OpenGL.
А смотря на современные характеристики железа на втором айПаде — я могу говорить что не загорами игры уровня второго Halo (первого — Nova 2). При всем при том что GLSL уже полноценно поддерживает на PowerVR чипах.
И последний штрих. Maс OS X. У кого вопросы — заходим в Steam и смотрим список игр под эту платформу. =)
PS: Пишу на OpenGL > 6 лет. =)
Вкратце могу сказать что к этой версии ARB расшевелились и дело пошло быстрее.
И в данный момент Огл поддерживает все современные фитчи железок от обоих компаний.
А то что лидеры разработки графического железа стараются постоянно улучшать драйвера под этот API сигнализируют подобные новости:
www.geeks3d.com/20110617/test-incredible-performance-boost-in-opengl-tessellation-with-recent-catalyst-drivers/#more-7921
Но дабы отстреляться могу вбросить ссылку на вики: ru.wikipedia.org/wiki/OpenGL
В ней сухо описано новые возможности появившиеся в поколении 4.х
Также есть хорошая статья на эту тему на англ:
rastergrid.com/blog/2010/11/suggestions-for-opengl-4-2-and-beyond/
(может найду время и сделаю перевод как нибудь =) )
Вкратце скажу, что последние версии OpenGL по возможностям не менее круты чем D3D11, а с выходом спецификации 4.2 есть шанс стать у руля.
Ключевым на мой взгляд моментом было доведение до ума Long Peak начиная с которого появилась возможность использовать новый тип контекста, который убирает ряд старого не нужного функционала и изменяет поведение конвейера, что повышает быстродействие API вцелом. =)
Фильтрация текстур появилась задолго до основания 3dfx
Я не имел ввиду что она также и называлась — название было другое.
На счет фильтрации. Ну естественно, что фильтрация была изобретена намного раньше. Может еще до изобретения компьютеров.
Но аппаратно ускоренная фильтрация текстур доступная на десктопах появилась у них. Непомню чтобы у первых 3Dfx ускорителей были конкуренты которые добились подобного раньше =)
blog.wolfire.com/2010/01/Why-you-should-use-OpenGL-and-not-DirectX
Где подробно рассказыватся как Мелкомягкие постарались в свое время с пропагандой против OpenGL
Честно говоря не знаю что проблемы были у openGL — вроде особых то и не было.
В начале выходили NV расширения, буквально через месяц приходил EXT или ARB.
Под ДХ тоже самое приходило через годик — с выходном новой мажорной версии.
Да, приходилось мухлевать и танцевать иногда — но так же интереснее!
Сейчас процесс абсолютно обратный — сначала думаем как отбить деньги (то есть как можно меньше денег вбухать и получить как можно больше), потом найти издателя, а потом уже придумать идею и найти команду.
Пропали те времена энтузиазма, новых технологий (я помню, когда С++ был просто bleading edge технологией), новых решений (что сделал 3dfx с рынком — это просто не передать).
Сейчас надо найти бабло, лучше лямов 10 долларов (минимум, и то, 6-7 лямов это маркетинг) — а дальше по накатанной. Даже Кармак уже не тот — продался беседке. Хотя он, по некоторым моим связям, вообще немного подзабил на гейм дев.
Я говорю о тех временах, где не было категорий AAA игр. Вспомните, сколько людей делали duke nukem 3d? quake? warcraft и за какие деньги? Эти игры были открытием каждый в своей нише — то было время, когда можно было сделать что то за копейки в гараже, и все вокруг говорили wow, просто офигенный WOW, и ваше имя навсегда входило в историю.
А что сейчас? Мерило игры — сколько денег вбухают. Вбухают $100 000 000, будет супер блокбастер. Вбухают $10 000 000 — получится середнячок.
Да и $100 000, по моему, не гарантируют сейчас блокбастера. На одних деньгах там не выедешь.
Кто то из indie сделали открытие в жанре fps/strategy/rpg и т.д., после которого вся индустрия (или большая часть) пошла по стопам indie разработчиков? Кто то сделал революцию уровня dune 2000/warcraft? doom/quake? diablo?
И да, не всё из упомянутого — casual. Тот же Dwarf Fortress это полная его противоположность :)
Вообще сейчас сложнее сделать такие же открытия как в начале эры компьютерных игр. Все low hanging fruits уже обобраны.
Я как раз про это и говорю. Время ушло.
Проект назывался 3DR/3DG/3DW. Почувствовав угрозу, Microsoft договорился с Intel и проект прикрыли.
Помню игра Falcon под 3DR летала на 20-25% быстрее конкурентов. В то время все разработчики игр плевались на DirectX и боготворили OpenGL.
Под 3DR было программировать почти так же приятно, как под OpenGL.
Вадим, здравствуйте! Извините за некропост, но вот уж очень это заинтересовало:
В 95 году на сцену вылазил еще один игрок со своей графической 3Д библиотекой — Intel.
Проект назывался 3DR/3DG/3DW.
Я изучаю историю развития 3D-графики на нынешних персоналках. И если про Intel 3DR (он же Intel 3DRender, он же IGL в девичестве - Intel Graphics Library) я ещё слышал, то про 3DG и 3DW - ни разу. В сети нашёл лишь заметку 2018 года с Apps Conf, где Вы рассказывали про то же самое.
Может, поведаете какие-нибудь подробности, если вдруг ещё помните? Ну или хотя бы расшифруйте сокращения 3DG и 3DW, я тогда сам в старой литературе поищу. :)
В любом случае спасибо большое! И с уважением.
Привет, 3ДР - от рендеринг, 3ДГ - от Графикс, 3ДВ - вордле (мир). 3др написан на С плюс ассемблер, здг - на чистом С (я отвечал за этот геометри енджин) 3дв - плюсы Си++. Для внешних партнеров Интел предоставил СДК по 3др и 3дг, 3дв - был недоделан и не вышел в релиз.
Привет, 3ДР - от рендеринг, 3ДГ - от Графикс, 3ДВ - вордле (мир). 3др написан на С плюс ассемблер, здг - на чистом С (я отвечал за этот геометри енджин) 3дв - плюсы Си++. Для внешних партнеров Интел предоставил СДК по 3др и 3дг, 3дв - был недоделан и не вышел в релиз.
Спасибо большое! А можете разъяснить зоны ответственности каждой из технологий? Видится, что 3DW - это, скорее всего, высокоуровневый движок на основе модного тогда scene graph (как Direct3D Retained Mode), но ещё интересно различие между 3DR и 3DG. А кроме того есть и такой вопрос: предполагалось ли какое-нибудь аппаратное ускорение отрисовки помимо MMX? Или же это по сути был software renderer, но который мог ускоряться на процессорах от Intel?
Вначале был OpenGL… PC потом SGI…
Затем D3D3, (впоследствии ковыряя сорцы Mesa…, баа дак ведь API D3D3 повторяет потроха GL)
К счастью, пока изучал D3D3 вышел D3D5 ( Immediate Mode такой-же неудобный как в 3-ке, Но есть Retained Mode ..)
D3D6 — пропустил
D3D7 — вот это был прорыв, всё так же просто как в OpenGL, но здесь появился D3DX с его библиотекой для работы с текстурами, матрицами и векторами) (Tnt2 Ultra рвёт как тузик грелку ElsaGloriaXXL)
D3D8 — пропустил, ибо на переправе коней не меняют.
D3D9 — Ооо да, HSLS… GF FX 5800 Ultra… дааа
…
Хотя в защиту OpenGL есть небольшой историй:
Был проект написанн ещё на OpenGL 1.2, работал долго и счастливо, приносил радость заказчеку… но в оди прекрасный момент ему понадобилась одна фича… и сделать эту фичу без шейдеров ну никак… пара дней и к дремучему проекту прикручен GLSL все довольны… А попробуйте прикрутить например дисплейсмент к D3D5 проекту.
даа, были времена…
Единый API для графики, звука и пользовательского ввода.Но в плане графики сначала все-таки был WinG.
И так родился DirectX.
Да проблема-то, в сущности, никуда и не делась. :-)
Как бы ни было но производители железа уже давно по факту аппаратно реализуют обе библиотеки. А аппаратное ускорение это самое главное в графической библиотеке.
Ок.
Правильно, библиотеку(и). В частности для Windows OpenGL представлена библиотекой opengl32.dll.
А где эти реализации располагаются? Разве не в библиотеках?
А где располагаются остальные функции OpenGL, если не секрет?
15:46:13.590 Устройство: GeForce 9600M GT/PCI/SSE2
15:46:13.590 Версия OpenGL: 3.3.0
15:46:13.590 Производитель: NVIDIA Corporation
Либо драйвер сам подставляет свою реализацию, либо я не знаю.
В идеале, хотелось бы узнать, что на самом деле там происходит.
И да, мне это действительно интересно. В статьях часто пишут весьма размыто, так что от человека с объяснениями узнать лучше.
История противостояния OpenGL и Direct3D