Pull to refresh

OpenGl vs DirectX episode II

Reading time2 min
Views15K
А что за четыре прошедшие дня никто не написал про развитие темы habrahabr.ru/blogs/development/80236? =)

Ребятки из Wolfire за это время написали реакцию на негативные отзывы (почитать оригинал можно по ссылке blog.wolfire.com/2010/01/DirectX-vs-OpenGL-revisited)

Основные идеи такие:



— OpenGL со старта проектирования проще позволяет «пощупать» все доступные платформы (Win, Lin, Mac, Wii, PS3..). В случае «нужно только XBox и порт на Windows» — однозначно DirectX. Типа, остальное про удобнее\нет — холивар, точно такой же как про Windows vs Linux (popular vs open).

— Как бы ни думали DX-разрабы (а это был один из аргументов против), тулы для анализа рантайма OpenGL — есть! =) (NVIDIA PerfKit, GPU PerfStudio, ShaderAnalyzer; MacOS: developer.apple.com/graphicsimaging/opengl/opengl_serious.html)

— DirectX API — высокоуровневое, а через OpenGL можно делать всякое очень низкоуровневое. Поэтому, например, для хардкора в производительности PS3 лучше сразу OpenGL. Тут трейд-офф про скорость получения релизного кода vs скорость в рантайме.

— Им говорят: «true-пацанчики» не морочатся и всаживают в приложение сразу поддержку и OpenGL, и DirectX. Wolfire отвечают, что да, это круть. Но опять же, если abstraction layer проектируется через openGL, то кросс-платформа начинает тестироваться с самого начала и бесплатна, а там уж что-то еще навертеть и потом можно, под целесообразность ситуации.

— Если есть общее API для разных платформ с одинаковым Hardware, то делать портирование легко. Если есть очень высокоуровневые решения как DirectX, то для других платформ придется самому сделать почти всю работу, которая затрачена на создание какого-то объема DirectX-функционала, не поддерживаемого теми платформами. (OpenGL, SDL and OpenAL beating up Direct3D, DirectInput and XAudio).

— DirectX10 — да, хороший. Но пока он доступен 48.94% юзеров (http://store.steampowered.com/hwsurvey), то придется рендер точить и под DX9.

— В DirectX есть дополнительные библиотеки (XInput/DirectInput, XAudio 2), да. Но их спокойно можно юзать и при использовании OpenGL, графическое API влияния не имеет. Но опять же, для кросс-платформы и OpenSource — SDL и OpenAL.

— Если у вас проблемы, что из OpenGL кода не можете загрузить .dds, то не парьтесь — вас и DirectX не спасёт. Продайте бабушкину недвижимость и купите Unreal3.0, и больше не пытайтесь никогда написать свой движок.

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

— Пока DX11-карты станут популярными, до тех пор скорее всего появится OpenGL решение аналогичное D3D11-тесселяции на том же железе.

… ну и там еще пару пунктов, которые не описал, ибо пора бежать =).

Что думаете?
Tags:
Hubs:
Total votes 60: ↑44 and ↓16+28
Comments102

Articles