Я изучаю графическое программирование уже некоторое время, используя OpenGL и Linux. Я довольно знаком с большинством концепций, но я действительно хотел бы расширить свои знания и в конечном итоге продолжить карьеру в разработке игр, особенно в разработке игровых движков.
Пока что мне кажется, что большинство игровых студий делают игры для Windows, используя DirectX.
Изменить: я знаю, что вопрос OpenGL против DirectX был задан здесь ранее, но я не нашел ответа в нужной мне перспективе.
Редактировать 2: После прочтения всех ответов / комментариев я решил продолжить углубляться в графику с OpenGL / GLSL, но я попытаюсь поэкспериментировать с DX, просто чтобы иметь базовое понимание API. Я хотел бы поблагодарить всех за ответы и понимание, которые вы дали мне.
источник
Ответы:
Это действительно не имеет значения. Основные понятия одинаковы в обоих случаях, особенно сейчас, когда пиксельные шейдеры являются нормой. А поскольку большинство игр являются мультиплатформенными, они, вероятно, будут использовать подмножество функций, которые похожи на обоих языках. Пока вы можете писать шейдеры в glsl или hlsl, все будет в порядке.
Тем не менее, количество позиций "разработки игрового движка" там невелико. Большинство компаний используют что-то с полки. Для тех позиций, которые существуют, еще меньше из них начального уровня. Большинство программистов начального уровня не пишут никакого кода, связанного с графикой (кроме, возможно, шейдеров), потому что все это было абстрагировано.
источник
Все зависит от того, какую работу ты хочешь / получишь. Вы, вероятно, думаете о работе на рынке ПК, где 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. Посмотрите на это и посмотрите, сможете ли вы приобрести некоторый опыт работы с отличным общим вычислительным решением (например, в настоящее время интегрированным в физику пули ).
источник
Я согласен, что не имеет значения, какой API вы изучаете. Важно знать основные понятия.
Если смотреть на разработку игр, Windows - не единственная целевая платформа. Как я слышал, Apple растет в качестве целевой платформы, но консоли также очень важны. Консоли обычно имеют свои собственные специализированные графические API (я думаю, что они делают это только для того, чтобы нас беспокоить). Хотя консольные API имеют тенденцию иметь больше общего с OpenGL, чем с DirectX, это все же не большая разница.
Иди с тем, что работает для вас.
источник
Как насчет перспективы профессора по разработке игр?
Если вы не знакомы с основами OpenGL, то ВСЕМ вы рискуете войти в мир DirectX (обратите внимание на DX), что Dx9 все еще используется в разработке из соображений совместимости, так как старые платформы (особенно XP) не поддерживают более новую графику трубопровод в Dx10 и Dx11. (это следует читать как рекомендацию начинать с Dx9, а затем отмечать различия в Dx10 и затем 11 по мере вашего продвижения) Это также сделает вас более округлым.
В идеале вам захочется потратить некоторое время на HLSL и CG (обратите внимание, что эти два кажущихся разных шейдерных языка на самом деле являются одним и тем же языком (один из которых представлен Microsoft, а другой - Nvidia), понимая, как будут работать вершинные и фрагментные (пиксельные) шейдеры. быть огромным активом для вас и любой игровой компании, на которую вы идете работать (при условии, что вы работаете над системами или подсистемами рендеринга, а не с кодом AI. ;-)
Ogre3D - это механизм рендеринга с открытым исходным кодом, который поддерживает обе графические подсистемы (OpenGL / DirectX) и используется во многих играх ... поскольку исходный код находится в свободном доступе, вы можете просмотреть его и сравнить, чем отличаются вызовы OpenGL от вызовов DirectX.
Я также рекомендовал бы, потому что вы уже потратили некоторое время в OpenGL, что вы ткнете в WebGL, и похоже, что в ближайшем будущем он взорвется.
Надеюсь, это поможет!
источник
Недавно я прочитал, что Джон Кармак рекомендует 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 повсюду во встраиваемом мире, и люди делают больше вещей, таких как планшеты, автомобильная информационно-развлекательная система сейчас горячая и, конечно, смартфоны ...
источник
Я бы сказал, что в вашем резюме было бы неплохо иметь возможность сказать, что вы работали с обоими, независимо от того, на чем вы специализировались.
Я говорю так, потому что, как и во всем, речь идет больше об общих методах, чем об API / знаниях синтаксиса за пределами определенного момента. Вам нужно уметь что-то делать и разбираться в этом, но вам не нужно реализовывать огромные вещи в обоих API. (То есть O (n * m), который не масштабируется ...). Знание API-интерфейсов немного, а также знание различных методов (например, O (n + m)) работает, и будет полезно.
Конечно, вы будете получать бонусы и за то, что делаете что-то «продвинутое» в DX, так как это показывает, что у вас есть более глубокие знания API, но в любом случае вам нужны некоторые продвинутые методы, чтобы доказать, что вы знаете, как должны быть подключены блоки (игнорируя конкретные магические слова, которые вы должны сказать, чтобы сделать это).
То же самое с любым API (3d или иным способом) или любым языком программирования.
источник
Я обнаружил, что DirectX сложнее в освоении и, следовательно, лучший навык. Directx обычно получает лучшую поддержку от производителей плат, однако Microsoft не выпускает так много обновлений, чтобы воспользоваться этими преимуществами (и только избранные подгруппы хардкорных геймеров действительно используют эти платы). Что касается разработки игр, все основные игровые платформы используют собственные проприетарные графические движки ... xbox -> DirectX Box :) Знание 3D-концепций, сеток, освещения, преобразований и т. Д. - это навык, который одинаков для всех них.
источник
Если вы знаете одну, вы можете легко подобрать другую.
Если вы знаете OpenGL, вы можете легко программировать для смартфонов (Android и iPhone) плюс Win / Linux / Mac.
DirectX - это только Win / Xbox. Поэтому, если вы не хотите ориентироваться на Xbox, я бы сказал, что оставайтесь с OpenGL, так как он может ориентироваться на большее количество платформ.
источник
Я предпочитаю OPENGL. Рассмотрим, например, Android - мобильная операционная система, использующая OPENGL. Существует так много игровых движков, которые разработаны на основе платформы OPENGL.
источник