Pull to refresh

Comments 152

Большей частью фэйки. Изредка врапперы, транслирующие, либо отключающие функции DX10, для того, чтобы игра, которая требует наличия дх10 считала, что он есть и запустилась.
как вариант — использование wined3d для транслирования dx10->opengl, но реализация dx10 в вайне пока слабовата.
Как архитектор часто работаю в различных 3D программах а-ля Макс, Майя.
кстати и там и там работаю через OpenGL
Очень интересная и познавательная статья.
Всегда фанател от OpenGL, но он умирал умирал
… и вот мы одни оставались на острове, а вокруг плавали акулы и голосами друзей говорили — Уря! мы переписали свое двигло с DX7 на DX8…
… акула делала круг и говорила — Уря! Мы переписали свой двиг с DX8 на DX9…

Я молчал и только поменял в шейдерах нормали на халфы, так как по вчерашнем драйвере было сказано что GF6800 выполняет с ними операции за такт…

… Потом акулы до меня добрались и скушали…
И правильно делают.
Имхо, знание OpenGL открывает знание графического ускорителя, а знание ДХ его награмождено доп. знаниями структуры классов. Как это бывает у МС, всё слишком нагромаждено.
(Речь идет не о «hello world» уровне, а о более сложных решениях).

И ещё, работа с OGL требует знания математики, чем выше уровень — тем проще работать. В ДХ всё сводится к использованию Vector, Point, Angel и т.д. (хотя матрицы тоже есть)
Вообще-то делают как раз не правильно. Потому что по крайней мере на мехмате МГУ учат исключительно устаревшим частям OpenGL, которые как раз полностью и выкинули в новом стандарте.
UFO just landed and posted this here
Сатья интересная, хоть и ничего нового. Но спасибо.

А вот ожидания были: примеры некоторых реализаций, сравнение аналогичных отрисовок о производительности… Нет желание написать 2ю часть статьи? :)
Такие же ожидания были к середине текста :) Присоединяюсь.
Есть желание. Когда у меня будет нормальный комп (сейчас у меня только нетбук), я попробую сделать сравнение производительности.
Микрософт не добавляет конкурирующий драйвер? Фигня! Пусть Кhrоnоs подают на этих монополистов в суд (привет, Орerа!).
> Так что же делать, как жить?

Just say 'no' to D3D.
Насколько я знаю, разработчики любят DirectX не за видео, а за звук.

Т.е. использовать им DirectX проще для реализации всего, нежели придумывать и реализовывать связки OpenGL + OpenAL + обработку клавиатуры, мыши, *падов…

Нужен именно что, SDK для новичков включающий работу со всем оборудованием. А не только туториалы для создания чайника.
DirectX любят издатели, а не разработчики, так как поголовно сидят на «бонусах» от майкрософта. А разработчики часто игры с двумя рендерами выпускают (WoW, FarCry тот же), только вот под OpenGL рендером на других платформах никто издавать их не хочет.
Мой знакомый, именно разработчик. Сам он сидит на Linux. Он мне и пояснял чем лучше DirectX связки FOSS библиотек. (Работает в компании где был сделан Hitman)

Понимаю, самому бы хотелось что бы все стали использовать сплошняком FOSS, но это жизнь… За что купил, за то и продаю информацию.
причем тут FOSS? никто не мешает выпускать проприетарное. На голом OpenGL никто ничего не пишет давно, есть куча библиотек и движков более высого уровня под теми ж LGPL, позволяющими их использовать в проиприетарном софте. Взять тот же Ogre3D — создать на нем игру команде разработчиков дело недолгое, выпустить можно как угодно и под какими угодно лицензиями, можно спуститься на уровень ниже и пинать на SDL, не надо морочиться с OpenAL и OpenGL, SDL сама все сделает, по сути это уровень DX
FOSS — библиотеки… Тот же Ogre3D — это опенсорс.

К сожалению, тут я не могу с вами спорить, я не разрабатываю профессионально игры.

Я лишь сказал что слышал от человека из геймдева… Верить мне или нет — ваше право.
Не знаю на счет FarCry а вот за WoW не скажите… он и DirectX и OpenGL юзает. Спросите в ТП близов, Mac версия на OpenGL, и елсли верить слухам, то портированние игры Mac → Linux тоже будет с реализацией OpenGL на линукс версиях
Вот одного не очень понимаю, что им мешает допортировать таки свои игры в Линь? Там остались то сущие крохи.
Ну видимо то того, что у народа и так все под вайном идёт
Ну, судя по отзывам идёт, но у меня под Вайном ВоВ наглухо повесил систему (Убунта). Запустился, загрузился, секунды через 3 всё вешается наглухо.
Ну вайн Костыли! Хочется чистого клиента!
DirectX любят пользователи потому что для него есть нормальные драйвера. А количество игр с двумя рендерами стремится к 0.
SDL — вполне себе готовая свободная кроссплатформенная связка. В статье сказано почему это важно.
Так там для 3d только инициализация OpenGL контекста.
Не вижу ничего страшного юзать OpenGL+DirectX для звука/клавы. При необходимости звук/клаву портировать намного проще чем перенести графику с DIrectX на OpenGL :-)
Так и делают большинство, например, Quake3.

По статье. Как верно подметил автор, сила OpenGL в его расширениях, но в них же и его слабость. Писать графический движок, оптимизированный для конкретной видеокарты, в зависимости от тех расширений, которая она поддерживает, не выгодно. Постоянный проблемы со стандартизацией расширений, на это много времени уходит. Помниться, когда только начинал изучать OpenGL (тогда еще был 1.1), был очень удивлен, что расширения от nVidia и стандартизированный GL_EXT по работе с массивом вершим работают с разной скоростью, которая достаточно заметна. ATI рекомендует свое, nVidia свое, а Кронос за ними не поспевает.
>Большинство игр
Напоминаю — у квейка3 в пока еще этом году юбилей был — 10 лет.
Это id Tech 3. Современные движки id Tech 4 и 5 тоже используют OpenGL.
ИМХО. Разработчики любят DirectX за то что для него гораздо больше документации.
Изначально хотел писать курсовую на DirectX, была куплена книжка, был выкачан SDK, но время шло, я не садился… И вот времени до сдачи остаётся не много, я сажусь разбираться, вижу сотню строк маловразумительного кода для окошка без ничего. И довольно толстую книжку с основами. И тут одногруппник подкидывает мне Qt Creator с готовым примером графики на OpenGL, а в нём вся эта муть уже красиво обёрнута в GLWidget (да-да, в стандартной поставке!). Остаётся от него унаследоваться и переопределить несколько методов (paintGL(), resizeGL() и initializeGL()). И всё! Рисуй в них сразу функциями OpenGLя.
Курсач по комп.графике был спокойно написан за неделю (даже с бОльшей, чем нужно функциональностью) и успешно сдан. Компилится (и работает!) под Windows и Linux.
UFO just landed and posted this here
На самом деле мне просто очень понравилось писать в QT. Та простота и элегантность, с которой виджет с OpenGL-визуализацией был вставлен в графический интерфейс (прямо в редакторе форм) и связан с другими элементами (через сигналы и слоты конечно). Писать эту программку было приятно. Ещё и получил профит в зачётку :-)
Ну а D3D нужно ещё научить заработать в линухах. Winelib мог бы помочь, но насколько — не знаю. В данном же случае после небольших манипуляций с кодом (прописывание лишний раз пары #include'ов), удалось добиться того, что один и тот же код (без правок) компилировался в обоих ОСях (подозреваю, что в линухе стоит просто более капризная версия GCC, чем та, что идёт в поставке с виндовым Qt Creator'ом) и работал идентично. Хотя на самом деле мне это было не нужно ;-)
UFO just landed and posted this here
DirectX — это семейство разных Direct'ов. И Direct3D — часть его. И так будет и ныне, и присно, и вовеки майкрософтовских веков, аминь :)
DirectX это комплект всего для мультимедиа: графика, видео, звук, ввод\вывод (включая всякие там рули и педали), сеть и мультиплеер и т.п.… как уже было замечено выше это частенько и является причиной выбора Direct3D, как части комплекта.
DirectX = Direct3D + DirectInput + DirectSound…
альтернатива:
SDL + OpenGL + OpenAL +…
Статья понравилась. Пока что, я на стороне OpenGL. Еще не хватает сравнения готовых вещей, таких как эффекты и работа с контроллерами (рулями, джойстиками).

И, вопрос, если в OpenGL всё так замечательно, почему крупные разработчики не так часто его используют?
Я думаю MS не смогла бы им заплатить, т.к. доходы от продажи игр на куче платформ куда выше.
UFO just landed and posted this here
Извиняюсь за размытый вопрос, я имел ввиду разработчиков под Windows.
UFO just landed and posted this here
Ну в Винде же тоже есть прекрасная возможность использовать OpenGL.
Кармак со своим Quake3, Doom 3, и разработчики Half-Life 2 так и делают…
[сорри, рано отправил]
А вот ребята из Crytek почему-то так не поступают со своим Crysis…
UFO just landed and posted this here
Возможно по политическим соображениям.
C-но только кармак и еще пара игр (nwn, chronicles of riddick и еще кое что). Все остальное это следствие портов под мак.
Получают бонусы от Майкрософт. В статье написанно об этом. Сейчас тенденция такая, что игры все больше и больше разрабатываются под консоли. Под маки тоже хорошо идут. Конкуренция есть и это очень хорошо.
OpenGL — это Open Graphics Library. Какие еще джойстики?!
К сожалению есть проблема с тем что для ноутбука ASUS с ATI 3470 для WinXP нет драйвера для OpenGL 3 ни на сайте ASUS ни ATI, а вот для Win7 — драйвер для OpenGL 3 качается через WinUpdate. В общем Microsoft ущемляет немного владельцев Windows с драйверами OpenGL, договорившись с производителями железа.

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

По DirectX — много литературы (книг) на английском с примерами, по OpenGL как и по любому OS литературы гораздо меньше.

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

А это как — «лучше»? У Вас данные по сети будут бегать быстрее? Или в более правильном порядке? Или звук будет более «стерео»? Или модель загрузиться более красиво?
В DirectX есть встроенная оптимизация и если глубоко некопаться в алгоритмах на начальных стадиях DirectX выглядит лучше. Но если хорошо покопаться в алгоритмах программирования и ручками оптимизировать — что рисовать и как в OpenGL, то после этого по качеству освещения он лучше.

Не совсем корректно но сравнивая даже PS3 и XBOX360 — коридорные шутеры атмосфернее в PS3 (из-за теней), а вот много объектов на открытом пространстве лучше рисует XBOX360 (не намного лучше и рисует с меньшим количеством полигонов). Ну и PS3 — это урезанная OpenGL 2.0, даже не 2.1 — которая была бы достойным ответом усовершенствованному DirectX 9 в XBOX360.

OpenGL vs DirectX, победителя нет. Новый DirectX объявляют раньше, но вот доступы новые возможности нового DirectX становятся сразу после выхода нового железа которое идёт уже с драйверами в которых есть новые расширения OpenGL равные по возможностям новому DirectX. А через некоторое время новые расширения OpenGL попадают в основной стандарт OpenGL.
Странное вы пишете. Освещение оно как напишете в шейдере, такое и будет. PS3 это железка, на нее и надо смотреть, а не на цифры после запятой. Про сравнения платформ через атмосферность — тут вообще без коментариев.
IMHO, автор всё же немного не прав. И вот в чём. Direct3D он на то и Direct, что это прямой интерфейс к железяке. То есть, в прямом смысле прямой. Сама там NVIDIA или AMD, когда пишет драйвер для Direct3D, сама реализует всякие там Direct3DDevice'ы и прочие прелести. В Microsoft же тоже не олухи полные сидят, и тоже заботятся о том, чтобы и технические коврижки были. Бонусы, конечно, бонусами, но если всё тормозило бы безбожно, то и девелоперов бы не привлекло.

OpenGL же он носит ярко выраженную клиент-серверность. Он более гибкий, и драйверы для него не подразумевают реализацию львиной доли функциональности собственными силами… Ну. Разве только AMD фанатствует и вместе со своими драйверами, половину X-Window подменяет своей библиотекой. Поэтому, OpenGL менее прямой интерфейс имеет с железякой, поэтому, всё же, когда речь идёт о статической pipeline, несколько более тормозной, чем Direct3D. Хотя, конечно, в наш век универсальных шейдеров эти тормоза особой роли уже и не играют, но исторический контекст, imho, именно такой.

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

Где вы углядели в OpenGL «клиент-серверность»? OpenGL не имеет никакого отношения к X Window.

Direct в названии DirectX подразумевало что доступ к железу более прямой чем в WinAPI, к примеру GDI если дело идет о двухмерной графике.

Насчет медленности OpenGL — традиционно MS поставляла кривую реализацию которая была стабильно медленнее чем DirectX. Что даже приводило к тому что в Wine некоторые игры работали значительно быстрее. Но к самому API это не имеет никакого отношения.
А при чём тут реализация от MS? OpenGL тормозил и на UNIX'ах. Вполне себе так неплохо :) Просто к нему никогда требований особой интерактивности не предъявляли, вот он неспеша и работал. А про клиент-серверность OpenGL прямым текстом написано в спецификации. Он вполне может работать и с удалённой станцией визуализации. И к X-Window он прямое отношение имеет, потому что он в нём является подсистемой.

Direct же более прямой не только, чем WinAPI, но и вообще прямее всех прямых. Ибо головной боли с ним, особенно в многопточных приложениях, до фига и больше.
UFO just landed and posted this here
Драйверы и тулкиты по-разному устроены. У DirectX философия такая, что драйвер просто реализует всю функциональность DirectX (например, вы в сеансе терминального сервиса не сможете запустить Direct3D приложение, потому что драйвер не умеет), а у OpenGL философия такая, что драйвер может кое-что в 3D-рендеринге ускорять. Это вносит определённые различия в функционирование. OpenGL — это некий сервер, которому шлются команды через библиотеку, он там что-то себе выдумывает, как эти команды лучше выполнить, а потом зовёт железяку через драйвер. DirectX просто всегда зовёт драйвер железяки, который уже сам разбирается, что с командами делать.
Что значит «тормозил на UNIX'ах»? С чем сравнивая?
>И к X-Window он прямое отношение имеет, потому что он в нём является подсистемой.

[sarcasm]Узнал много нового.[/sarcasm]
Хм… Ну. Почитайте исходники, узнаете ещё больше :)
О, да вы, я смотрю прямо таки переполнены знаниями. OpenGL — ничто иное, как API. И с X-ми никак не связано, просто возможно включение в конфиге иксов GLX, но не надо путать GL и GLX, это разные вещи.
Эх, все это хорошо и красиво, но… Писали мы как-то приложения по выводу видео на многомониторную систему (до 8 мониторов). И оказалось, что под Direct3D это все хорошо и работает, а под OpenGL — тоже работает, но выдает 10-12 FPS (это на серваке уровня двухпроцессорного ксеона, 4 Гб ОЗУ, Nvidia GTX295 и т.д. ). И никак больше! Сам я код не писал и деталей не знаю, но у нас группа из трех программеров потратила несколько месяцев на попытки заставить OpenGL работать столь же производительно. Да, мы качали драйвера, пробовали разные версии OpenGL, разные версии винды и видеокарт, код свой оптимизировали от и до. По нулям… На одном мониторе — еще куда ни шло, на нескольких — абзац.

В итоге, из-за этих проблем с производительностью пришлось от OpenGL отказаться полностью. Я думаю, по тем же причинам Direct3D является дефолтным (а иногда и единственным) движком в большинстве современных игр. Как бы нарисовать чайник с освещением из одной точки или курсач по графике на OpenGL — легко и прятно, а вот миллионы треугольников в реальной игре на 100fps — очень трудно.
разработчики игр для PlayStation3 делают почти невозможное, по ходу ))
Откуда на PS3 OpenGL? Да, там есть графическая железка, RSX, но API к ней более похож на D3D (по слухам, не имел счастья писать под консоли).
Там два вида апи, первый — именно как вы и сказали, свой апи. Второй — враппер на ним реализующий опенгл. Реально, все нормальные конторы используют первый.
> Как бы нарисовать чайник с освещением из одной точки или курсач по графике на OpenGL — легко и прятно, а вот миллионы треугольников в реальной игре на 100fps — очень трудно.

Скажите это Джону Кармаку.
Ну так ДК гений игростроения, тут не поспоришь.
Ну Кармак и делает последнюю игру на OpenGL, далее я так понял, он хочет от него отказаться.
UFO just landed and posted this here
Ну если его не интересуют продажи под приставкине от ms, то да, откажется.
А это уже ОБС, были проблемы, что мол издатель хотел, чтобы они бросили linux платформу, но на самом деле там всё портирование на Линукс делает в основном один человек, и он сказал, что не откажется от этого дела
ttimo.vox.com/library/post/id-software-and-linux.html
UFO just landed and posted this here
А так видимо придется в любом случае очень многим делать. Хотя бы для того, чтобы игру, написанную на 11DXе можно было пускать в XP, переключив рендер на DX9, тут уж можно заодно и openGL рендер написать для *nix'ов
кажется, он уже отказался, о чем с сожалением заявлял — как никак не последний человек в Khronos.
Насколько я слышал на самом деле Кармак как раз не очень волнуется по-поводу того какой API использовать, так как код зависимый от OpenGL/DirectX на самом деле составляет очень малую долю всего движка.
Ха, собственно практически на этом все реальные конторы использующие огл по вин (имеющие клон на маке не считаются — там огл рендер идет бесплатным бонусом от портирования).
Дело в том что нужно учитывать особенности OpenGL при отрисовке большого количества треугольников. Основная идея в том чтоб отрисовать их за минимальное количество обращений к API, то есть желательно всего за несколько вызовов с большим количеством треугольников сразу.
Товарищ наверное через glBegin/glEnd рисовать миллионы полиговон собрался.
На самом деле проблема скорее не в самом OpenGL а в кривых/устаревших дровах для видеокарт, которые намного хуже поддерживаются чем в дайректе.
Разрешите поправить и дополнить немного?
а) COM также имеет стандарт на ABI, поэтому методы через COM-интерфейсы могут быть вызваны из любого языка: Си, С++, VB, Python, скрипты, да хоть Фортран. COM-интерфейс — это простой си-образный массив обычных __cdecl-функций.

б) внутри Dx уже нет COM-а, начиная с 5ой версии, он просто снаружи сделан совместимым с COM, т.к. это независимая от языка и относительно удобная для писания на Си технология.

в) В Windows начиная с XP «родной» OpenGL рендерит с ускорением, но оказывается несколько медленнее DX от того, что клиентская-сервер OpenGL реализован поверх самого DX.
Все кросплатформенные игры, которые выходят и на консолях(ПС, ХБокс) и на ПК значит написаны для OpenGL?
Не, в вашем примере не значит: XBox поддерживает через XNA тот же самый DirectX, что и PC
У всех консолей свои API для работы с графикой. Вообще у всех.
UFO just landed and posted this here
Вообще эти самые расширения — самая большая палка о двух концах, из за этого, например, игростроители нелюбят игры в Линукс портировать. Считается, что там вечные проблемы с драйверами и многие расширения глючат. Впрочем пока это не так уж далеко от истины
А от чего тогда под мак не портируют?
Что значит не портируют? Многие игры имеют порты под Мак.
Это какие же? За редкими исключениями, все игры через cider портированы и жутко тормозят. Все маководы-геймеры ставят винду и играют в нэйтив версии.
Ну вот знаю Blizzard свои игры портирует. Хотя многие да, хитрят, используя wine. Кстати, а почему тормозит то? В Линуксе игры, запущенные через Вайн могут иметь артефакты отрисовки и некоторые отключенные фичи, но вот тормозят они редко.
Может, потому что фичи не отключают?

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

Здрасти, а как их не отключишь, если они тупо в вайне не реализованы, в основном это касается всякого динамического освещения.
Кармак для меня вообще бог игростроения, а еще мне кажется что OpenGL он не забросит…
ЗЫ не в тему, но id делают лучшие fps.
Статья интересная, хотя и местами спорная. Я бы не стал так наезжать на D3D что типа это все деньги…
Буду краток.

OpenGL используют только энтузиасты. Он умер в тот момент, когда Khronos плюнул в лицо сообществу, выпустив OpenGL 3, и всем стало ясно, что архитектура больше развиваться не будет. Жив и используется серьезными разработчиками только OpenGL|ES, используемый на разнообразных portable устройствах.

Direct3D гарантирует стабильность. Я не хочу иметь дело с зоопарком расширений, кривых драйверов и документации, содержащей куски десятилетней давности. Я хочу использовать новое железо сразу, а не ждать, когда каждая из организаций-членов Khronos после долгих перетягиваний одеяла выпустит очередную версию с кучей отсутствующих возможностей, потому что не может их поддержать. С Direct3D 10 я могу писать один код для всех вендоров разом.

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

Avoid design by committee. There should be a single person with final say in the design… and this person should have good architectural experience and instincts.
И тем не менее, просто скажите «нет» D3D до тех пор, пока Windows не научится использовать драйвера Gallium3D и M$ не портирует D3D на Gallium3D. Иначе мы имеем всего-лишь очередной vendor lock-in.

Да-да. Как страшно жить!
Ну кстати gallium3D может запросто решить очень многие проблемы, ибо оно может предоставлять для юзерсейса различные API: openGL (на данный момент реализуют openGL 2.1), direct3D, любое другое API, которое ещё даже не родилось, а для драйверов нужно будет писать бэкенды на так называемых state tracker'ах. А кому надо, те могут напрямую использовать state tracker'ы.
Пока есть полурабочий драйвер для некоторых нвидиевских интеловских и атишных карточек, но даже это впечатляет, при учете, что первая публичная версия лишь весной появилась.
во, первый адекватный комент.

openGL vs DirectX — это уже давно не холивар. все зависит от того на кого направлено ваше приложение, если это конечно бизнес.
а на чем учиться — дело 10тое. Но по факту проще найти и больше зарабатывать будучи мастером DirextX.

Если выбрали своей профессией программирование — DirectX. Если нет — то какая разница? =)
т.е. программисты существуют только под Виндовс? Программисты(в т.ч. 3d), работающие в других ОС по вашему — миф?
Сколько у «других ОС» процентов рынка на данный момент? А игр под «другие ОС» много продается? Программисты — миф. Есть энтузиасты.
Это и есть тот vendor lock-in, о котором я говорил, когда получил в ответ «Бред!»
Я всегда подозревал, что гордое слово «программист» на самом деле обозначает человека, стучащего по клавиатуре за бабло ;)
Ну для когото это проффесия, а для когото хобби.
Хм. А под мак тоже энтузиасты за бесплатно пишут? Там, типа, тоже OpenGL.
Нет. Но я Работаю в игрострое — здесь такое крайняя редкость.
Поправьте, если я не прав, но вот это пипец:
развитие OpenGL идёт так: появляется новая фишка, производитель реализовывает её в своём драйвере и документирует доступное расширение. Приложения могут использовать новые функции прямо сейчас, не дожидаясь включения в официальную спецификацию.


Это полный пипец. Потому что приложние, по-видимому, должно лювиную долю времени проверять все и вся на наличие соответствующих расширений и, видимо, вручную кодировать N! вариантов, когда отсутствуют разные комбинации этих расширений?
Можно потребовать конкретную версию OpenGL, где все нужные расширения поддерживаются сразу. Или же программа может, в случае недоступности нужного ей расширения, отказаться работать.
То есть в таком случае, это, в принципе, ничем не отличается от залоченой в мажорной верии функциональности и аргумент о том, что OpenGL крут наличием расширений, в принципе, сводится на нет
Да нет, в реальной жизни все не так страшно. К примеру проверяем или присутствует расширение для шейдеров, если есть то используются шейдеры, иначе fixed pipeline. Это больше похоже на включение/выключение графических опций (которые и так обычно присутствуют в играх, и в тех что под DirectX) в зависимости от наличия расширений. И N! вариантов не надо для этого.
UFO just landed and posted this here
Было бы интересно статистику использования в ПО OGL и DX (я имею ввиду десктоп платформу, где потенциально эти системы равноцены).
Как-то смотрел несколько сайтов со статистикой крупным по игровым тайтлам (ссылок уже не найду к сожалению) — игры или оба апи поддерживают или DX only. Ну и обычно по умолчанию рендер DX.
Судя по этому у OGL на десктопе сейчас не лучшие времена.
А вот GL ES это уже другая песня :)
Вот, скажем, разработчики изначально кроссплатформенных Nexuiz, или Sauerbraten используют только OGL. Посмотрите, кстати, в них отличная графика… которой как и почти всем опенсурсным проектам нехватает хороших дизайнеров.
Статистика для комерческих игр 99.9% — dx, остальное ogl. Реально я вот могу перечислить меньше десятка игр последнего десятилетия использующих последний.
раз уж тут собрались OpenGL'щики, спрошу: есть проблема с отсечением объектов в, собственно, OpenGL
дабы не писать длинных комментов, прошу последовать по ссылке и по возможности подсказать решение данной проблемы
з.ы. пробовал обращаться с этой проблемой к разным людям с разных форумов, но ни одного толкового ответа так и не нашёл
дайте мне демку на OpenGL 3 с графическими шейдерами под винду.
я посмотрю на это.

PS: видеокарта 9800GT 1GB
Да пожалуйста. Вам сюда. Там во всех демках есть и OpenGL и Direct3D.
Вы серьезно не видели OGL-приложение, использующее шейдеры под виндой?
с чего вы взяли?

я просто описался — геометрические шейдеры.

я хочу увидеть то, как они работают на XP, как говорится в этом топике, но в комментах было сказано, что огл работает поверх директа => в XP не может быть геометрических шейдеров…
ясно, поэтому и не понял Вас.
Читайте внимательне, это с дефолтными дровами они поверх DX работают. С нормальными дровами — все работает как надо.
так почему же MS не сделала DX10 под XP? я не сильно верю в маркетинговый ход и т.д., а то об этом бы много кричали и доказывали бы, что в XP можно такое замутить, но не было доказательств, только крики.

так тогда почему же OGL с геометрическими шейдерами должен работать?
Маркетинговый ход. Шейдеры — это просто программы, которые загружаются в память видеокарты. Если операционная система позволяет что-то в видеокарту загружать, то и шейдеры любой разновидности должны работать. Технических ограничений тут нет.

DirectX 10, конечно сам по себе просто может быть неприспособленным для XP. Может, какие-то особые сервисы нужны или особенности ядра… Или .Net какая навороченная. Но как бы… Ничто не мешает OpenGL'ю работать нормально.
вот сейчас специально поставлю visual c++ express, скомпилю найденное демо геометрических шейдеров, соберу и запущу на xp, стоящей в виртуалке (реальной xp нету).
так, простите, я тоже могу запустить Software Rendering DX10 на XP вроде бы. хотя, может быть и не могу.

но в любом случае — не виртуалке будет софтовый рендер в любом случае.
Нифига подобного. VirtualBox делегирует вызовы графического API хост-машине (если включить поддержку 3D в настройках).
Вы в любом случае смешны.

сами посудите — если просто передаются _вызовы_ API хостовой машине, то вообще при чем тут драйвера? тем более если виртуальное железо далеееко != реальному.
На хосте как ни странно это выполняется уже реальным OpenGL, то есть через реальные драйверы. В этом треде смешны именно Вы.
а ваш реальный OpenGL ведь не XP?

скорее всего линукс или семерка/виста/2008/2003.

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

а вот на реальной XP не факт, что такое прокатит.
Да, похоже надо пробовать на реальной XP.
Нужны добровольцы :)
Вы выложите несколько демок с графическими шейдерами и мы посмотрим :)
на семерке даже не завелась…
странно, у меня завелась и даже рисует, правда когда закрываешь — виснет.
на xp запустилось нормально. нигде не виснет.
Насколько я знаю, в виртуалке такое сделать пока не выйдет. В VirtualBox точно не выйдет. Там поддерживается OpenGL до 2.1, вроде. А значит — без геометрических шейдеров. Тут нужно на живом железе проверять.
UFO just landed and posted this here
Однобоко вышло — OpenGL всех уделывает, а DirectX есть злой и неудобный.
Ведь, не всё так простенько?
openGL в базисе своем дает только базисные, а точнее атомарные функции.
чтобы отрисовать текструрированый треугольник надо сделать десятки вызовов
( загрузка текстры, заливка, бинд MMU, vertex-index buffer, описать формат входа, настроить кучу матриц и… поехали )
успешное овладение openGL дает сильный буст в скорости( будем считать что на 20-30% меньше CPU bound чем ДХ)
но есть одно мелкое отличие — многим людям знакомо понятие DIP-call — это то зло( синхра проца-драйвера-видео ) которого надо избегать.
В DX эта чтука обходиться легко и просто потому что предсказуема.
В openGL место появления DIP НЕ ПРЕДСКАЗУЕМО
Пример — bind vertex buffer — задаем цвета, вершины, нормали…
В разных дровах, для разных карт и от разных лет DIP может произойти( или не произойти ) в разных местах…
Не буду вспоминать грусные времена когда для АТИ\нВидии писались не то что разные шейдеры — на разных языках…

Ну да ладно, чет я расписался.
В общем будем считать что openGL — для энтузиастов впереди планеты всей. Супер скорось, супер возможности… Месяцы, а то и годы обучения возможностям, правильному использованию АПИ и сопуствующей математики…
Посему всегда и везде над прослойкой openGL висит большой большой user-engine API.
Их еще называют графическими двиглами :)… :)

В тоже время D3D по сути и есть эта обертка упрощений разработки и использования над openGL.
Посему, в неком смысле, D3D можно назвать даже «графическим контролером»
он не low-level, он довольно сильно абстрагирован и несет в себе много базисных фенек
Он проще для серьезных вещей
От изучения «сопуствующей математики» D3D не избавит.
Он избавит от изучения вообще математики, а не СВОЕЙ математики.
Я как-то еще не встречал glVector3 (D3DXVECTOR3) в базовых поставках :)

OpenGL — можно сравнить с асмом, D3D — с языком более высокого уровня — всеже не все надо делать ручками
Sign up to leave a comment.

Articles