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.
quelle
Antworten:
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.
quelle
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 ).
quelle
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.
quelle
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!
quelle
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 ...
quelle
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.
quelle
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.
quelle
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.
quelle
Ich bevorzuge OPENGL. Angenommen, Android, das mobile Betriebssystem, verwendet OPENGL. Es gibt so viele Spiele-Engines, die auf der OPENGL-Plattform basieren.
quelle