Чи варто продовжувати вивчати OpenGL або просто перейти на DirectX, щоб дати мені більше шансів влаштуватися на роботу в ігровій індустрії? [зачинено]


29

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

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

Редагувати: Я знаю, що тут було задано питання OpenGL vs DirectX, але я не знайшов відповіді в потрібній перспективі.

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


Узагальнена версія цього питання може дати кілька хороших відповідей на programmers.stackexchange.com ...
Macke

1
Мене в основному вчили кращі точки DX шейдерів хлопцем OpenGL, який ніколи не робив HLSL. Поки ви знаєте, що "фрагмент шейдер" означає "піксельний шейдер", поняття майже однакові; P
drxzcl

IIRC, DirectX був досить схожий на OpenGL у версіях 8 або 9. До цього DirectX іноді критикували як надмірно важкий у використанні. API все ще відрізняються, але загальні підходи повинні бути досить схожими. Відмова - я не знаю жодного з експертів.
Стів314

@Macke - поради щодо кар'єри поза темою @ Програмісти. Це, мабуть, занадто специфічно, але загальні питання про кар’єру будуть на тему @ Професійні питання (Наразі пропонується в області 51). Будь ласка, перейдіть і покладіть на підтримку цього ПП
Чад

Переважні шанси навіть у тому випадку, якщо ви потрапите в галузь, ви не будете графічним програмістом, і це не має значення принаймні, якщо ви знаєте один API, інший - обидва, або жоден. Крім цього, залежить від компанії та проекту. D3D набагато частіше використовується в просторі ПК, GL | ES є повністю домінуючим в мобільному просторі, і всі консолі використовують власні API-інтерфейси, які ви не можете навчитися самостійно.
Шон Міддлічч

Відповіді:


28

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

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


1
Що роблять найбільш програмісти початкового рівня? У великих, середніх чи малих студіях?
Куазі Ірфан

Це окреме питання. gamedev.stackexchange.com/questions/5538/…
Тетрад

1
Просто, щоб додати більш загальну відповідь, на мій досвід молодші програмісти, як правило, починають з геймплея, ui, hud та працюють звідти, геймплей - популярна точка входу.
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, це все ще не є величезною різницею.

Ідіть із тим, що працює для вас.


1
XBox, ймовірно, робить спосіб DirectX ...?
Макке

Так, PS3 використовує PSGL. Але, X360 використовував DirectX як вони є на ПК, хоча і не впевнений у цьому, лише здогад.
Куазі Ірфан

Я не маю досвіду роботи з 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 у браузерах без будь-якого плагіна.
Куазі Ірфан

Коли основні постачальники додають підтримку 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 Powers дав йому низьку оцінку. CUE GM - це все Linux та openGL ES, і хоча GM CUE має новіший процесор iMX, продуктивність анімацій у openGL у Linux приголомшлива. CUE / openGL набагато швидше. Знову ж таки Ford скалічив їх систему Adobe Flash.

Тож, якщо ви хочете зробити це в іграх, але занепокоєні конкурентоспроможним характером, але все ще любите цей вид роботи, можливо, подивіться на варіанти, які розширюють ваше резюме. З мого досвіду, принаймні у вбудованому світі WinCE, здається, не використовує DirectX так багато. (WinCE має дещо інший API, ніж NT може бути частиною цієї причини). OpenGL є скрізь у вбудованому світі, і люди роблять більше речей, таких як планшети, автомобільні інформаційні розваги зараз гарячі, і, звичайно, смартфони ...


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

2

Я б сказав, що це, напевно, добре у вашому резюме, щоб можна було сказати, що ви працювали з обома, незалежно від того, для чого ви спеціалізувались.

Я кажу так, тому що, як і все, мова йде більше про загальні методи, ніж знання API / синтаксису за певний момент. Потрібно вміти робити речі та знати свій шлях, але не потрібно реалізовувати величезні речі в обох API: s. (Thats O (n * m), що не масштабує ...). Знання API та трохи знання (наприклад, O (n + m)) працює, і буде корисним.

Звичайно, ви також отримаєте бонуси за те, що ви зробите щось "просунуте" в DX, оскільки це показує, що ви маєте більш глибокі знання API, але вам потрібні деякі передові методи в будь-якому випадку, щоб довести, що ви знаєте, як повинні бути з'єднані поля (ігнорування специфічні магічні слова, які ви повинні сказати, щоб виконати це).

Так само і з будь-яким API (3d чи іншим способом) чи будь-якою мовою програмування.


1

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


Я знайшов дуже мало концептуальної різниці між DX9-ish і "сучасним" openGl (без використання glBegin). Я би вдячний вашим думкам щодо того, чому одне з двох «легше» чи «важче», ніж інше.
drxzcl

1
Я фактично вважаю, що OpenGL легше підбирати дійсно основні основи, але як тільки ви переходите до VBO та шейдерів, D3D стає набагато простішим (відсутність розширень робить його більш послідовним і на більш широкій апаратній базі).
Максим Мінімус

Це теж мій досвід, звідси і питання.
drxzcl

1

Якщо ви знаєте одне, ви можете легко забрати інше.

Якщо ви знаєте OpenGL, ви можете запрограмувати для смартфонів (android та iPhone) плюс win / Linux / mac.

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


-4

Я віддаю перевагу OPENGL. Розглянемо, наприклад, Android, що мобільна операційна система Android використовує OPENGL. Існує так багато ігрових двигунів, які розроблені на базі платформи OPENGL.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.