Sollte ich weiterhin OpenGL lernen oder einfach zu DirectX wechseln, um eine bessere Chance zu haben, einen Job in der Spielebranche zu bekommen? [geschlossen]


29

Ich lerne seit einiger Zeit Grafikprogrammierung mit OpenGL und Linux. Ich bin mit den meisten Konzepten ziemlich vertraut, aber ich möchte mein Wissen wirklich erweitern und schließlich eine Karriere in der Spieleentwicklung, insbesondere der Entwicklung von Spiele-Engines, anstreben.

Bisher scheint es mir, dass die Mehrheit der Spielestudios Spiele für Windows mit DirectX herstellt.

Bearbeiten: Ich weiß, dass die OpenGL vs DirectX-Frage hier schon einmal gestellt wurde, aber ich habe in der Perspektive, die ich möchte, keine Antwort gefunden.

Bearbeiten 2: Nachdem ich alle Antworten / Kommentare gelesen habe, habe ich mich entschlossen, mit OpenGL / GLSL tiefer in die Grafik einzutauchen, aber ich werde versuchen, auch mit DX herumzuspielen, nur um ein grundlegendes Verständnis der API zu haben. Ich möchte mich bei allen für die Antworten und die Einsichten bedanken, die Sie mir gegeben haben.


Eine verallgemeinerte Version dieser Frage könnte unter programmers.stackexchange.com einige gute Antworten liefern ...
Macke

1
Im Grunde hat mir ein OpenGL-Typ, der noch nie HLSL gemacht hat, die Feinheiten von DX-Shadern beigebracht. Solange Sie wissen, dass "Fragment Shader" "Pixel Shader" bedeutet, sind die Konzepte ziemlich gleich: P
drxzcl

IIRC, DirectX wurde in Version 8 oder 9 ein bisschen OpenGL-ähnlicher gemacht. Früher wurde DirectX manchmal als unnötig schwer zu bedienen kritisiert. Die APIs sind immer noch unterschiedlich, aber die allgemeinen Ansätze sollten ziemlich ähnlich sein. Haftungsausschluss - Ich bin auch kein Experte.
Steve314

@Macke - Karriereberatung ist bei Programmierern unangebracht. Dies ist wahrscheinlich zu spezifisch , aber allgemeine Karrierefragen zum Thema @ sein Berufsangelegenheiten (Aktuell im Bereich vorgeschlagen 51) Bitte gehen und sich verpflichten , diese SE zu unterstützen
Chad

Überwältigende Chancen bestehen selbst dann, wenn Sie in die Branche einsteigen, wenn Sie kein Grafikprogrammierer sind, und es spielt keine Rolle, ob Sie eine API, die andere, beide oder keine kennen. Darüber hinaus kommt es auf das Unternehmen und das Projekt an. D3D wird viel häufiger im PC-Bereich verwendet, GL | ES ist im mobilen Bereich völlig dominant, und alle Konsolen verwenden proprietäre APIs, die Sie selbst nicht wirklich erlernen können.
Sean Middleditch

Antworten:


28

Es ist wirklich egal. Die Kernkonzepte sind in beiden Fällen gleich, insbesondere jetzt, wo Pixel-Shader die Norm sind. Und da die meisten Spiele über mehrere Plattformen verfügen, werden sie wahrscheinlich eine Untergruppe von Funktionen verwenden, die in beiden Sprachen ähnlich sind. Solange Sie Shader in glsl oder hlsl schreiben können, ist alles in Ordnung.

Davon abgesehen ist die Anzahl der "Game Engine Development" -Positionen gering. Die meisten Unternehmen verwenden etwas von der Stange. Bei den bestehenden Positionen sind noch weniger Einsteiger. Die meisten Einsteiger-Spieleprogrammierer schreiben keinen grafikbezogenen Code (außer vielleicht Shader), weil alles weg abstrahiert wurde.


1
Was machen die meisten Einsteiger-Programmierer? In großen, mittleren oder kleinen Studios?
Quazi Irfan


1
Um eine allgemeinere Antwort hinzuzufügen: Nach meiner Erfahrung beginnen Junior-Programmierer in der Regel mit dem Gameplay, UI, Hud, und arbeiten von dort aus. Das Gameplay ist ein beliebter Einstiegspunkt.
JuniorDeveloper1208

Asset-Integrationsmenüs und die Benutzeroberfläche sind meiner Erfahrung nach noch häufigere Einstiegspunkte.
Coyote

Leute, lasst uns hier keinen langen Thread über diese spezielle Frage in den Kommentaren beginnen. Das sind vollkommen gute Antworten auf die Frage, auf die ich mich bezog.
Tetrad

10

Es hängt alles von dem Job ab, den Sie wollen / bekommen. Sie denken wahrscheinlich an einen Job auf dem PC-Markt, auf dem DX König ist. Denken Sie daran, dass die meisten AAA-Unternehmen auf den Konsolenmarkt abzielen, auf dem APIs sehr spezifisch sind.

Die PS3 verfügt beispielsweise über proprietäre Erweiterungen für die OpenGL ES-Implementierung.

OpenGL wächst im mobilen Bereich. Jetzt ist es auf allen modernen Plattformen außer Windows Phone 7 verfügbar.

Derzeit ist nur OpenGL ES in diesem Bereich verfügbar. Leistungsfähigere PowerVR-Chips werden jedoch auch von OpenGL 4 und DX11 unterstützt.

Ihre OpenGL-Kenntnisse sind Gold wert. Sie können zu DX zurückkehren, um einen Job zu erhalten, für den dies erforderlich ist. Denken Sie jedoch in der Zwischenzeit daran, dass OpenGL in Bezug auf die Anzahl der Geräte und Plattformen, auf denen es verfügbar ist, führend ist.


Bearbeiten : Darüber hinaus tendieren immer mehr Unternehmen dazu, vorhandene Engines zu verwenden, und häufig werden sogar Kernspielentwickler zunehmend von den Low-Level-APIs überprüft. Es ist immer besser, ein gutes Wissen über native APIs zu haben, wenn Sie auf bestimmten Plattformen auf Fehler und seltsames Verhalten stoßen. Aber es kommt alles auf die Konzepte an, und wie andere betonten, erfordern DX und OpenGL im Kern Kenntnisse über dieselben Konzepte.


Bearbeiten : Da Sie bereits mit OpenGL und wahrscheinlich mit Shadern vertraut sind, sollten Sie OpenCL ausprobieren ... Diese API hat das Potenzial, die nächste große Sache im Parallel-Computing zu werden.

Ich erwähne es, da die OpenCL-Kernel Datentypen verwenden, die mit OpenGL kompatibel und für OpenGL-Entwickler einfach zu verstehen sind. Schauen Sie sich das an und sehen Sie, ob Sie Erfahrung mit einer großartigen allgemeinen Computerlösung sammeln können (die derzeit zum Beispiel in die Geschossphysik integriert wird ).


OpenGL ist ein Industriestandard und inspirierte andere Bibliotheken und APIs. Sie sollten seine Bedeutung nicht vernachlässigen. Aber auf der anderen Seite sollten Sie nicht bei einer Sache stehen bleiben und wenn ich Sie wäre, würde ich einen Blick auf APIs und Engines auf höherer Ebene werfen, die OpenGL und DirectX abstrahieren.
Coyote

Ich bin mit OpenCL vertraut. Ich habe an einem Nebenprojekt gearbeitet, eine Physik-Engine (rudimentär, hauptsächlich zu Lernzwecken) erstellt und ein wenig OpenCL verwendet, um sie zu beschleunigen, aber noch keine erstaunlichen Ergebnisse erzielt (in einigen Fällen sogar machte es schlimmer)
adivasile

Das ist ein Zeichen für einen guten Versuch;) Schauen Sie sich die Implementierung in der Bullet Engine an. Trotzdem viel Glück bei deinen Projekten.
Coyote

7

Ich bin damit einverstanden, dass es keine Rolle spielt, welche API Sie lernen. Es ist wichtig, die grundlegenden Konzepte zu kennen.

Bei der Entwicklung von Spielen ist Windows nicht die einzige Zielplattform. Wie ich gehört habe, wächst Apple als Zielplattform, aber die Konsolen sind auch sehr wichtig. Konsolen haben normalerweise ihre eigene spezielle Grafik-API (ich glaube, sie tun das nur, um uns zu stören). Obwohl die Konsolen-APIs mehr mit OpenGL als mit DirectX zu tun haben, ist dies immer noch kein großer Unterschied.

Gehen Sie mit was auch immer für Sie arbeitet.


1
XBox macht wahrscheinlich Sachen wie DirectX ...?
Macke

Ja, PS3 verwendet PSGL. Aber X360 verwendete DirectX wie auf dem PC, obwohl nicht sicher, nur eine Vermutung.
Quazi Irfan

Ich habe keine Erfahrung mit der Xbox, aber laut Wikipedia basiert die API auf DirectX. PSGL ist auf PS3 nur eine der verfügbaren APIs.
Mrbinary

X360 verwendet eine API, die DX9 nahe kommt, mit ein paar Macken, um der Tatsache Rechnung zu tragen, dass es relativ wenig relativ schnellen Speicher hat.
drxzcl

6

Wie wäre es mit der Perspektive eines Game Development Professors?

Wenn Sie die Grundlagen von OpenGL kennen, sollten Sie unbedingt in die Welt von DirectX eintauchen (beachten Sie, dass Dx9 aus Kompatibilitätsgründen immer noch in der Entwicklung verwendet wird), da ältere Plattformen (insbesondere XP) die neueren Grafiken nicht unterstützen Pipeline in Dx10 und Dx11. (Dies sollte als Empfehlung verstanden werden, in Dx9 zu beginnen und dann die Unterschiede in Dx10 und dann in 11 zu notieren, während Sie voranschreiten.) Dadurch werden Sie auch runder.

Idealerweise möchten Sie einige Zeit in HLSL und CG verbringen (Beachten Sie, dass diese beiden scheinbar unterschiedlichen Shader-Sprachen tatsächlich dieselbe Sprache sind (eine von Microsoft und die andere von Nvidia) und verstehen, wie Vertex- und Fragment- (Pixel-) Shader funktionieren Sei ein großer Gewinn für dich und jede Spielefirma, für die du arbeiten möchtest (vorausgesetzt, du arbeitest an Rendering-Systemen oder Subsystemen und nicht an KI-Code. ;-)

Ogre3D ist eine Open-Source-Rendering-Engine, die beide Grafik-Subsysteme (OpenGL / DirectX) unterstützt und in vielen Spielen verwendet wird. Da die Quelle frei verfügbar ist, können Sie sie durchforsten und im Vergleich sehen, wie sich Aufrufe an OpenGL von Aufrufen an unterscheiden DirectX.

Ich würde es auch empfehlen, weil Sie bereits einige Zeit in OpenGL verbracht haben, dass Sie sich an WebGL orientieren, das in naher Zukunft explodieren wird.

Hoffentlich hilft das!


Ich würde nicht sagen, dass WebGL in der Zukunft explodieren würde, zumindest nicht in naher Zukunft. Es ist nur eine andere Möglichkeit, 3D auf Browsern ohne Plugin zu rendern.
Quazi Irfan

Angesichts der Tatsache, dass große Anbieter ihren Produkten HTML5- und JS-Unterstützung hinzufügen (Visual Studio) und Unternehmen wie Adobe Edge einführen (HTML5 JS Flash-Killer?), Wird es meiner Meinung nach viel mehr webbasierte Inhalte geben, die die Hardwarebeschleunigung nutzen.
Robert French

4

Ich habe kürzlich gelesen, dass John Carmack DirectX empfiehlt, weil Microsoft für eine Weile den Anschluss an openGL gespielt hat. Auf diese Weise haben sie ein wettbewerbsfähiges Produkt geschaffen und den Umschlag verschoben, während OpenGL-Leute Zeit damit verbracht haben, sich mit DirectX zu befassen und das Design zu übernehmen poliert zu werden und, denke ich, einfacher damit zu arbeiten, aber bei openGL zu bleiben.

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

Vielleicht ist eine weitere Option, die Sie in Betracht ziehen sollten, wenn Sie Grafiken im Allgemeinen mögen und wenn es darum geht, was im eingebetteten Raum vorgeht.

Ich arbeite im Embedded-Bereich mit Linux und WinCE. Ich war ehemaliger Ford SYNC-Architekt (war 6 Jahre dort) und arbeite jetzt an GMs CUE (GMs Antwort auf Ford SYNC). Ford SYNC verwendet weder openGL noch DirectX. Ford entschied sich stattdessen für Flash & Action-Skript; Was Flash unter der Haube macht, weiß ich nicht genau, aber es ist verdammt langsam. JD Powers gab es schlechte Bewertung. GMs CUE ist alles Linux und openGL ES und obwohl GM CUE einen neueren iMX-Prozessor hat, ist die Leistung von Animationen in openGL unter Linux umwerfend. CUE / openGL ist viel schneller. Wieder verkrüppelte Ford ihr System mit Adobe Flash.

Wenn Sie also in Spielen erfolgreich sein möchten, sich aber Sorgen über den Wettbewerb machen und dennoch diese Art von Arbeit lieben, sollten Sie sich Optionen ansehen, die Ihren Lebenslauf erweitern. Ich habe die Erfahrung gemacht, dass WinCE zumindest in der Embedded-Welt nicht allzu oft DirectX verwendet. (WinCE verfügt möglicherweise über eine etwas andere API als NT). OpenGL gibt es überall in der Embedded-Welt und die Leute machen mehr Dinge wie Tablets, Auto-Infotainment ist gerade angesagt und natürlich Smartphones ...


+1 für die Erwähnung des eingebetteten Raums. Ich hatte nicht darüber nachgedacht, Grafik für eingebettete Systeme (außer für mobile Plattformen) zu entwickeln, aber nach ein wenig Recherche fand ich, dass es eine erwägenswerte Wahl war. Ich hatte vor ein paar Jahren ein Interesse an Embedded-Plattformen, aber andere Dinge störten mich und ich gab es ziemlich früh auf.
Adivasile

2

Ich würde sagen, dass es in Ihrem Lebenslauf wahrscheinlich gut ist, sagen zu können, dass Sie mit beiden gearbeitet haben, unabhängig davon, auf was Sie sich spezialisiert haben.

Ich sage es, weil es, wie bei allem, über einen bestimmten Punkt hinaus mehr um allgemeine Techniken als um API / Syntax-Kenntnisse geht. Sie müssen in der Lage sein, Dinge zu tun und sich damit auskennen, aber Sie müssen nicht in beiden APIs große Teile von Dingen implementiert haben. (Das ist O (n * m), was nicht skaliert ...). Die APIs ein wenig zu kennen und verschiedene Techniken zu kennen (zB O (n + m)), funktioniert und wird hilfreich sein.

Natürlich erhalten Sie Boni, wenn Sie in DX etwas "Fortgeschrittenes" machen, da dies zeigt, dass Sie über etwas tieferes API-Wissen verfügen, aber in jedem Fall einige fortgeschrittene Techniken benötigen, um zu beweisen, dass Sie wissen, wie die Boxen verbunden sein sollten (Ignorieren) die spezifischen magischen Wörter, die Sie sagen müssen, um es zu erledigen).

Es ist dasselbe mit jeder API (3D oder anders) oder jeder Programmiersprache.


1

Ich fand, dass DirectX schwieriger zu erlernen ist und daher eine bessere Fähigkeit darstellt. Directx wird in der Regel besser von Boardherstellern unterstützt, Microsoft veröffentlicht jedoch nicht so viele Updates, um diese Fortschritte zu nutzen (und nur eine ausgewählte Untergruppe von Hardcore-Gamern verwendet diese Boards wirklich). In Bezug auf die Spieleentwicklung verwenden alle wichtigen Spieleplattformen ihre eigenen proprietären Grafik-Engines ... xbox -> DirectX Box :) Das Kennen von 3D-Konzepten, Meshes, Beleuchtung, Transformationen usw. ist eine Fähigkeit, die für alle gleich ist.


Ich habe sehr wenig konzeptionellen Unterschied zwischen DX9-ish und "modernem" openGl (ohne Verwendung von glBegin) festgestellt. Ich würde mich über Ihre Gedanken freuen, warum einer der beiden "leichter" oder "härter" ist als der andere.
drxzcl

1
Ich finde tatsächlich, dass OpenGL einfacher ist, die wirklich grundlegenden Grundlagen zu erlernen, aber sobald Sie zu VBOs und Shadern übergehen, wird D3D viel einfacher (das Fehlen von Erweiterungen macht es auch für eine breitere Hardwarebasis konsistenter).
Maximus Minimus

Das ist auch meine Erfahrung, daher die Frage.
drxzcl

1

Wenn Sie einen kennen, können Sie den anderen leicht abholen.

Wenn Sie OpenGL kennen, können Sie problemlos für Smartphones (Android und iPhone) sowie Win / Linux / Mac programmieren.

DirectX ist nur Win / Xbox. Wenn Sie also nicht auf Xbox abzielen möchten, würde ich sagen, bleiben Sie bei OpenGL, da es auf mehr Plattformen abzielen kann.


-4

Ich bevorzuge OPENGL. Angenommen, Android, das mobile Betriebssystem, verwendet OPENGL. Es gibt so viele Spiele-Engines, die auf der OPENGL-Plattform basieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.