Почему большинство разработчиков игр предпочитают OGL для OS X и D3D для Windows? [закрыто]

Сегодня я решил проверить, что разработчики Diablo 3 использовали для графики: OpenGL или Direct3D? Мой разум был полностью раздутым: для Windows они использовали D3D, а для OS X они использовали OGL.

Я провел некоторое исследование и обнаружил, что большинство разработчиков игр предпочитают один и тот же метод. Этот выбор для меня не имеет смысла. Написание одного игрового движка с OpenGL для OS X, а затем переписывание его для Windows с D3D кажется много ненужной работой. Было бы проще просто взять OpenGL и создать движок игры, который работает в обеих операционных системах?

5 голосов | спросил Arnas 10 FebruaryEurope/MoscowbSun, 10 Feb 2013 00:02:41 +0400000000amSun, 10 Feb 2013 00:02:41 +040013 2013, 00:02:41

4 ответа


11

Как уже упоминалось, на OS X (и Linux) OpenGL - единственная игра в городе для аппаратно-ускоренной графики. Поэтому вопрос действительно сводится к: почему разработчики используют Direct3D вместо OpenGL в Windows ?

Одна из возможных причин, как было предложено в комментариях, заключается в том, что они начинаются как проект только для Windows, а затем решили добавить поддержку OS X /Linux, но не хотели выкидывать их уже действующий код Windows. Но еще одна возможная причина заключается в том, что разработчики могут просто рассматривать Direct3D как superior для OpenGL, достаточно, чтобы они скорее записывали свой код рендеринга дважды, чем использование OpenGL в Windows.

Часть этого явно является проблемой «священной войны» - Direct3D и OpenGL используют очень разные стили интерфейса, имеют разные дизайнерские ценности и обращаются к вкусам разных кодеров. Как Mac против ПК, или Emacs vs vim, или вкладки или пробелы, можно бесконечно обсуждать эти вещи, даже не убеждая кого-либо.

Тем не менее, я полагаю, что в течение последних нескольких лет Direct3D был объективно превосходен для графического программирования OpenGL для Windows по следующим причинам:
  • В течение долгого времени OpenGL серьезно отставал в функциях. Direct3D 10 и 11 добавили поддержку новых функций графического процессора, таких как геометрические шейдеры, тесселяции и вычислительные шейдеры, для которых потребовалось OpenGL years , чтобы догнать. хорошая статья о аппарате Тома из нескольких лет назад, которая дает вам вкус разочарованных людей о нехватке возможностей OpenGL в течение этого времени.
  • Direct3D имеет гораздо лучшие инструменты: уровень отладки /отладки, который генерирует предупреждающие сообщения о некорректных или сомнительных вызовах API; и PIX, графический профилировщик /отладчик. Долгое время OpenGL не имел ничего сопоставимого.
  • Основные производители графических процессоров обычно делают драйвер Direct3D более приоритетным, чем поддержка драйверов OpenGL. В результате исправления ошибок и улучшения производительности часто приходят скорее к Direct3D-драйверам, чем к OpenGL.
  • Совместимость консоли: из того, что я понимаю (не работая с ней сам), API-интерфейс XBox 360 очень похож, если не идентичен, на Direct3D 9. В какой бы степени это ни было, это, скорее всего, означает более легкое время портирование игр между ПК и 360. Это также означает, что если вы отправляете свою игру на 360, вам все равно придется писать рендеринг Direct3D, поэтому вы также можете использовать ее и в Windows.

Кстати, наш собственный Николь Болас также написал ответ на связанный с ним вопрос у программистов.se , который входит в гораздо больше информации об истории соперничества OpenGL /Direct3D.

Все, что сказано, есть признаки того, что волна начинает поворачиваться. Разработчики OpenGL очень усердно работают над устранением проблем с функциями и инструментами. Теперь OpenGL достигло паритета характеристик с Direct3D 11 и даже немного отстает. Тимоти Лоттес из NVIDIA написал сообщение в блоге , в котором излагаются его причины для переключение на OpenGL с большим количеством ссылок о новых расширениях и инструментах. Valve Software недавно сообщили , что они получили версию OpenGL Left 4 Dead 2, работающую и он был (немного) быстрее, чем версия Direct3D, указывая на то, что поддержка драйверов существует. Итак, возможно, мы увидим поворот назад к многоплатформенным разработчикам, использующим OpenGL в Windows. Или мы не можем.

ответил Nathan Reed 10 FebruaryEurope/MoscowbSun, 10 Feb 2013 01:53:53 +0400000000amSun, 10 Feb 2013 01:53:53 +040013 2013, 01:53:53
3

DirectX написан для ОС Windows с собственными оптимизациями на платформе и т. д. Никаких реализаций для других платформ не существует. OpenGL - это открытая альтернатива, которая начала расти, когда мобильные и столы становятся более мощными, чтобы отображать тяжелые сцены.

В любом случае, я бы дал вам и посоветовал написать все, используя OpenGL, но это только мое мнение. Он бесплатный, кроссплатформенный, мощный и быстрый.

ответил Ockonal 10 FebruaryEurope/MoscowbSun, 10 Feb 2013 00:32:01 +0400000000amSun, 10 Feb 2013 00:32:01 +040013 2013, 00:32:01
1

Вероятно, фактическая причина для этого - просто политика. Многие опытные разработчики игр используют DirectX с возрастом. Таким образом, используется DirectX. (И чем позже OpenGL был добавлен разработчиками, которые сделали порт Mac.)

Одна вещь, однако, заключается в том, что люди, использующие OSX, обязательно имеют графические процессоры, которые имеют надлежащую рабочую реализацию OpenGL. Этого нельзя сказать наверняка для ПК с Windows, из-за того, что игры в Windows были в основном DirectX. В будущем это улучшится, но с ростом Steam для Linux и, следовательно, развитием кросс-платформенной игры. Если вы хотите написать OpenGL-код для Windows, не беспокоясь о реализации OpenGL на GPU, вы можете попробовать ANGLE.

ответил API-Beast 10 FebruaryEurope/MoscowbSun, 10 Feb 2013 02:18:01 +0400000000amSun, 10 Feb 2013 02:18:01 +040013 2013, 02:18:01
1

Просто потому, что Direct3D работает лучше в Windows, чем в большинстве случаев OpenGL. GLSL не запускается на большинстве Netbooks, и поддержка драйверов OpenGL очень уязвима для Windows. Как и vSync с OpenGL в Windows, это не работает без установки драйверов вручную.

Для игр вы хотите использовать Direct3D для Windows ... Другие платформы поддерживают GL в большинстве случаев. Также Windows RT и WP8 поддерживают Direct3D.

ответил zezba9000 10 FebruaryEurope/MoscowbSun, 10 Feb 2013 05:07:19 +0400000000amSun, 10 Feb 2013 05:07:19 +040013 2013, 05:07:19

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132