Должен ли я продолжать изучать OpenGL или просто переключиться на DirectX, чтобы дать мне больше шансов получить работу в игровой индустрии? [закрыто]

29

Я изучаю графическое программирование уже некоторое время, используя OpenGL и Linux. Я довольно знаком с большинством концепций, но я действительно хотел бы расширить свои знания и в конечном итоге продолжить карьеру в разработке игр, особенно в разработке игровых движков.

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

Изменить: я знаю, что вопрос OpenGL против DirectX был задан здесь ранее, но я не нашел ответа в нужной мне перспективе.

Редактировать 2: После прочтения всех ответов / комментариев я решил продолжить углубляться в графику с OpenGL / GLSL, но я попытаюсь поэкспериментировать с DX, просто чтобы иметь базовое понимание API. Я хотел бы поблагодарить всех за ответы и понимание, которые вы дали мне.

adivasile
источник
Обобщенная версия этого вопроса может дать несколько хороших ответов на сайте programmers.stackexchange.com ...
Macke
1
Я в основном учил тонкости DX-шейдеров парню из OpenGL, который никогда не занимался HLSL. До тех пор, пока вы знаете, что «фрагментный шейдер» означает «пиксельный шейдер», понятия почти одинаковы: P
drxzcl
Во-вторых, DirectX стал более похожим на OpenGL в версии 8 или 9. До этого DirectX иногда критиковали за то, что он излишне сложен в использовании. API-интерфейсы все еще разные, но общие подходы должны быть примерно одинаковыми. Отказ от ответственности - я тоже не эксперт
Steve314
@Macke - Карьерный совет не по теме @ Программисты. Это, вероятно, слишком конкретный вопрос, но общие вопросы о карьере будут посвящены теме « Профессиональные вопросы» (в настоящее время предлагается в области 51). Пойдите и пообещайте поддержку этой SE
Чад,
Потрясающие шансы, даже если вы попадаете в индустрию, вы не будете графическим программистом, и это не имеет значения, если вы знаете один API, другой, оба или ни одного. Помимо этого, зависит от компании и проекта. D3D гораздо чаще используется в пространстве ПК, GL | ES полностью доминирует в мобильном пространстве, и все консоли используют проприетарные API-интерфейсы, которые вы не можете освоить самостоятельно.
Шон Мидлдич

Ответы:

28

Это действительно не имеет значения. Основные понятия одинаковы в обоих случаях, особенно сейчас, когда пиксельные шейдеры являются нормой. А поскольку большинство игр являются мультиплатформенными, они, вероятно, будут использовать подмножество функций, которые похожи на обоих языках. Пока вы можете писать шейдеры в glsl или hlsl, все будет в порядке.

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

тетрада
источник
1
Что делают большинство программистов начального уровня? В больших, средних или маленьких студиях?
Quazi Irfan
Это отдельный вопрос. gamedev.stackexchange.com/questions/5538/...
Тетраду
1
Чтобы добавить более общий ответ, по моему опыту, начинающие программисты, как правило, начинают с геймплея, пользовательского интерфейса, игры и оттуда, геймплей является популярной отправной точкой.
JuniorDeveloper1208
По моему опыту, меню интеграции активов и пользовательский интерфейс - еще более распространенные точки входа.
Койот
Ребята, давайте не будем начинать длинную ветку об этом конкретном вопросе в комментариях здесь. Это очень хорошие ответы на вопрос, с которым я связан.
Тетрад
10

Все зависит от того, какую работу ты хочешь / получишь. Вы, вероятно, думаете о работе на рынке ПК, где DX - король. Просто помните, что большинство компаний AAA стремятся к консольному рынку, где API-интерфейсы довольно специфичны.

PS3, например, имеет проприетарные расширения для своей реализации OpenGL ES.

OpenGL растет в мобильном пространстве. Теперь он доступен на всех современных платформах, кроме Windows Phone 7.

В настоящее время в этом пространстве доступен только OpenGL ES. Но более мощные чипы PowerVR идут с поддержкой OpenGL 4 и DX11.

Ваши навыки OpenGL - золото. Вы можете вернуться к DX, чтобы получить работу, которая требует этого. Но в то же время помните, что OpenGL является королем по количеству устройств и платформ, где он доступен.


Изменить : Кроме того, все больше и больше компаний, как правило, используют существующие движки, и часто даже разработчики основных игр все больше и больше экранируются от API низкого уровня. Всегда лучше иметь хорошее знание нативных API, когда вы сталкиваетесь с ошибками и странным поведением на определенных платформах. Но все это сводится к концепциям, и, как отмечали другие, DX и OpenGL в своей основе потребуют знания тех же концепций.


Изменить : Поскольку вы уже знакомы с OpenGL и, возможно, шейдеры, вы должны попробовать OpenCL ... Этот API может стать следующей большой вещью в параллельных вычислениях.

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

койот
источник
OpenGL, являясь отраслевым стандартом, вдохновлял других библиотек и API. Не стоит пренебрегать его важностью. Но с другой стороны, вы не должны останавливаться на одном, и на вашем месте я бы взглянул на API и механизмы более высокого уровня, которые абстрагируют OpenGL и DirectX.
Койот
Я знаком с OpenCL. Я работал над сайд-проектом, создавая физический движок (элементарный, в основном для целей обучения), и я использовал немного OpenCL, чтобы сделать его быстрее, но пока не получил удивительных результатов (в некоторых случаях я даже стало хуже)
adivasile
Это признак удачной попытки;) Посмотрите на реализацию в пулевом движке. В любом случае, удачи в ваших проектах.
Койот
7

Я согласен, что не имеет значения, какой API вы изучаете. Важно знать основные понятия.

Если смотреть на разработку игр, Windows - не единственная целевая платформа. Как я слышал, Apple растет в качестве целевой платформы, но консоли также очень важны. Консоли обычно имеют свои собственные специализированные графические API (я думаю, что они делают это только для того, чтобы нас беспокоить). Хотя консольные API имеют тенденцию иметь больше общего с OpenGL, чем с DirectX, это все же не большая разница.

Иди с тем, что работает для вас.

mrbinary
источник
1
XBox, вероятно, работает наподобие DirectX ...?
Мак
Да, PS3 использует PSGL. Но X360 использовал DirectX на ПК, хотя не уверен в этом, просто предположение.
Quazi Irfan
У меня нет опыта работы с Xbox, но, согласно Википедии, его API основан на DirectX. На PS3 PSGL является только одним из доступных API.
mrbinary
X360 использует API, близкий к DX9, с некоторыми изысками, чтобы учесть тот факт, что у него относительно небольшой объем относительно быстрой памяти.
drxzcl
6

Как насчет перспективы профессора по разработке игр?

Если вы не знакомы с основами OpenGL, то ВСЕМ вы рискуете войти в мир DirectX (обратите внимание на DX), что Dx9 все еще используется в разработке из соображений совместимости, так как старые платформы (особенно XP) не поддерживают более новую графику трубопровод в Dx10 и Dx11. (это следует читать как рекомендацию начинать с Dx9, а затем отмечать различия в Dx10 и затем 11 по мере вашего продвижения) Это также сделает вас более округлым.

В идеале вам захочется потратить некоторое время на HLSL и CG (обратите внимание, что эти два кажущихся разных шейдерных языка на самом деле являются одним и тем же языком (один из которых представлен Microsoft, а другой - Nvidia), понимая, как будут работать вершинные и фрагментные (пиксельные) шейдеры. быть огромным активом для вас и любой игровой компании, на которую вы идете работать (при условии, что вы работаете над системами или подсистемами рендеринга, а не с кодом AI. ;-)

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

Я также рекомендовал бы, потому что вы уже потратили некоторое время в OpenGL, что вы ткнете в WebGL, и похоже, что в ближайшем будущем он взорвется.

Надеюсь, это поможет!

Роберт Френч
источник
Я бы не сказал, что WebGL взорвется в будущем, по крайней мере, в ближайшем будущем. Это просто еще один способ рендеринга 3D в браузерах без каких-либо плагинов.
Quazi Irfan
Поскольку крупные поставщики добавляют поддержку HTML5 и JS к своим продуктам (Visual Studio), а такие компании, как Adobe, внедряют Edge (HTML5 JS Flash killer?), Я думаю, что они увидят гораздо больше веб-контента, использующего преимущества аппаратного ускорения.
Роберт Френч
4

Недавно я прочитал, что Джон Кармак рекомендует DirectX за тот простой факт, что Microsoft какое-то время играла в догонялки с openGL и, тем самым, они создали конкурентоспособный продукт и выдвинули конверт, в то время как люди из openGL тратили время на споры и разработку проекта комитетом, разрешая DirectX чтобы быть отполированным и, я думаю, легче работать, но придерживаясь openGL.

http://www.tomshardware.com/news/john-Carmack-DirectX-OpenGL-API-Doom,12372.html

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

Я работаю во встроенном пространстве, используя Linux и WinCE. Я был бывшим архитектором Ford SYNC (был там в течение 6 лет), и теперь я работаю над CUE GM (ответ GM на Ford SYNC). Ford SYNC не использует openGL или DirectX. Ford вместо этого выбрал сценарий Flash & Action; что Flash делает под капотом, я не уверен, но он чертовски медленный; JD Пауэрс дал ему плохую оценку. GM CUE - это все Linux и openGL ES, и хотя GM CUE оснащен более новым процессором iMX, производительность анимации в openGL в Linux просто поражает. CUE / openGL намного быстрее. Опять же, Форд покалечил свою систему с помощью Adobe Flash.

Итак, если вы хотите сделать это в играх, но обеспокоены конкурентным характером, но все еще любите этот тип работы, возможно, посмотрите на варианты, которые расширяют ваше резюме. По моему опыту, по крайней мере во встроенном мире, WinCE, похоже, не так уж много использует DirectX. (WinCE имеет немного другой API, чем NT может быть частью этой причины). OpenGL повсюду во встраиваемом мире, и люди делают больше вещей, таких как планшеты, автомобильная информационно-развлекательная система сейчас горячая и, конечно, смартфоны ...

Эрик
источник
+1 за упоминание встроенного пространства. Я не думал о том, чтобы заняться графикой для встраиваемых систем (кроме мобильных платформ), но после небольшого исследования я обнаружил, что это стоит рассмотреть. У меня был интерес к встраиваемым платформам несколько лет назад, но мешали другие вещи, поэтому я забросил их довольно рано.
adivasile
2

Я бы сказал, что в вашем резюме было бы неплохо иметь возможность сказать, что вы работали с обоими, независимо от того, на чем вы специализировались.

Я говорю так, потому что, как и во всем, речь идет больше об общих методах, чем об API / знаниях синтаксиса за пределами определенного момента. Вам нужно уметь что-то делать и разбираться в этом, но вам не нужно реализовывать огромные вещи в обоих API. (То есть O (n * m), который не масштабируется ...). Знание API-интерфейсов немного, а также знание различных методов (например, O (n + m)) работает, и будет полезно.

Конечно, вы будете получать бонусы и за то, что делаете что-то «продвинутое» в DX, так как это показывает, что у вас есть более глубокие знания API, но в любом случае вам нужны некоторые продвинутые методы, чтобы доказать, что вы знаете, как должны быть подключены блоки (игнорируя конкретные магические слова, которые вы должны сказать, чтобы сделать это).

То же самое с любым API (3d или иным способом) или любым языком программирования.

Маке
источник
1

Я обнаружил, что DirectX сложнее в освоении и, следовательно, лучший навык. Directx обычно получает лучшую поддержку от производителей плат, однако Microsoft не выпускает так много обновлений, чтобы воспользоваться этими преимуществами (и только избранные подгруппы хардкорных геймеров действительно используют эти платы). Что касается разработки игр, все основные игровые платформы используют собственные проприетарные графические движки ... xbox -> DirectX Box :) Знание 3D-концепций, сеток, освещения, преобразований и т. Д. - это навык, который одинаков для всех них.

MartyTPS
источник
Я обнаружил очень небольшую концептуальную разницу между DX9-ишем и «современным» openGl (без использования glBegin). Буду признателен за ваши мысли о том, почему одно из двух «легче» или «сложнее», чем другое.
drxzcl
1
Я на самом деле считаю, что OpenGL легче усваивает действительно фундаментальные основы, но как только вы переходите к VBO и шейдерам, D3D становится намного проще (отсутствие расширений делает его более согласованным и на более широкой аппаратной базе).
Максимус Минимус
Это тоже мой опыт, отсюда и вопрос.
drxzcl
1

Если вы знаете одну, вы можете легко подобрать другую.

Если вы знаете OpenGL, вы можете легко программировать для смартфонов (Android и iPhone) плюс Win / Linux / Mac.

DirectX - это только Win / Xbox. Поэтому, если вы не хотите ориентироваться на Xbox, я бы сказал, что оставайтесь с OpenGL, так как он может ориентироваться на большее количество платформ.

user697111
источник
-4

Я предпочитаю OPENGL. Рассмотрим, например, Android - мобильная операционная система, использующая OPENGL. Существует так много игровых движков, которые разработаны на основе платформы OPENGL.

user907629
источник