Ist es eine Verschwendung, OpenGL zu lernen?

13

Was ich im Internet und in verschiedenen Quellen zusammengetragen habe, ist, dass DirectX die Grafik-API-Domäne weitgehend in den Griff bekommen hat. Um ehrlich zu sein, habe ich dem Lernen von DirectX10 eine Chance gegeben, aber ich kann es einfach nicht ertragen, wie die Dinge initialisiert werden. es war sehr schwierig, den tatsächlichen 3D-Teil wirklich zu lernen.

OpenGL ist aus meiner Sicht viel sinnvoller, aber ich bin mir nicht sicher, ob ich Zeit in etwas investieren möchte, das "nicht von Dauer ist". Ich halte mich nicht mit den neuesten Nachrichten auf dem Laufenden und weiß auch nicht viel über den "Krieg" zwischen OpenGL und DirectX. Wird OpenGL, wenn das gesagt ist, bald verschwinden? Das, was ich an OpenGL mag, ist, dass es viel mehr Ressourcen gibt (ob über Bücher / Tutorials / Beispiele) als für DirectX, so dass es viel einfacher zu erlernen ist.

Ist es also immer noch eine gute Zeit, OpenGL zu lernen, oder ist DirectX nur die Zukunft? Jetzt weiß ich, dass es 100.000 Themen gibt, über die besser gesprochen wird, aber das ist nicht meine Frage. Ich frage nur, ob OpenGL dabei bleibt.

Grace Note
quelle
31
Nichts ist jemals eine Verschwendung zu lernen.
9.
23
Wenn Sie auf ALLES abzielen möchten, das nicht Windows ist, benötigen Sie OpenGL. Das schließt Linux, Mac OS, iPhone, Android und jedes andere esoterische Betriebssystem ein, das ich nicht kenne. Das bedeutet im Grunde genommen, dass OpenGL im Vergleich zu DX nichts taugt, und deshalb habe ich für den Abschluss als subjektiv gestimmt.
Die kommunistische Ente
6
@ The Communist Duck: Mit Ausnahme von Windows Phone 7 und Xbox 360.
DeadMG
1
Wenn das WP7-Betriebssystem technisch Windows ist, ist das XBOX-Betriebssystem technisch Windows. (Sie sind es übrigens nicht.)
Olhovsky
4
Meine Sicht auf Direct X ist Ihre Sicht auf OpenGL. Ich kann nicht verstehen, warum Direct X in irgendeiner Weise die Zukunft sein wird. OpenGL ES / WebGL ist die Zukunft!
Joey Green

Antworten:

30

Jetzt weiß ich, dass es 100000 Themen gibt, über die es besser geht, aber das frage ich nicht, ich frage nur, ob OpenGL dabei bleibt.

Ja.

Technologie verschwindet nie einfach - sobald sie eine kritische Masse erreicht hat, bleibt sie für eine lange Zeit bestehen, auch wenn sie sich nie mehr aktiv entwickelt. Es wird sehr lange dauern, bis die Aussage "Es ist Zeitverschwendung, OpenGL zu lernen" wahr ist.

Obwohl ich Ihre Motivation und Argumentation als etwas verdächtig empfinde, ist es nichts Falsches, OpenGL zu lernen, und es wird Ihnen ermöglichen, genau so viel über 3D-Grafiktheorie und -Programmierung zu lernen, wie es D3D tun würde. In der Tat könnte es sich lohnen, es als Lernmedium zu verwenden, auch wenn es als praktische Plattform nutzlos wäre, da die grundlegenden Konzepte zwischen APIs übertragen werden. Solange es Ihnen dabei hilft, diese Konzepte zu erwerben, ist es eine gute Wahl.


quelle
Nun, es ist nur eine Art Nebenprojekt, Terrain Rendering interessiert mich sehr. Und es in OpenGL zu tun (nach dem, was ich gesehen habe) ist VIEL einfacher zu verstehen als es in DirectX zu tun
XNA ist eine API für DirectX und ist einfacher zu verstehen (IMO) als direkt mit OGL oder DX zu arbeiten. Die in XNA erlernten Konzepte werden später entweder auf OpenGL oder DirectX übertragen.
Olhovsky
1
Es gibt sogar eine Open-Source-OpenGL-Portierung von XNA, MonoGame .
Voithos
1
Es ist lustig, wie sich die Welt verändert. OpenGL war lange Zeit der arme Cousin von DirectX. Dann hat es jemand geschafft, eine GPU in ein Telefon und eine Voila zu stecken: OpenGL Golden Age.
MartinTeeVarga
10

Dies ist eine Frage, die nur Sie wirklich beantworten können. Aber,

  • Möchten Sie tatsächlich etwas machen und OpenGL unterhaltsamer oder produktiver finden? Dann möchten Sie vielleicht OpenGL lernen.
  • Wird das Erlernen von OpenGL das spätere Erlernen von DirectX erschweren, wenn Sie dies benötigten oder wollten? Ich glaube nicht.

Ich glaube nicht, dass irgendjemand vorhersagen kann, bei wem man bleiben wird. Ich würde sagen, verwenden Sie jetzt, was für Ihre Zwecke am besten ist, und Sie können den anderen später immer noch abholen. Ich habe nur DirectX verwendet, nur weil es meinen Zwecken entsprach, aber wenn ich festgestellt hätte, dass OpenGL für mich einfacher in meinem Spiel zu verwenden ist, hätte ich es verwendet.

Wenn Sie es gerne benutzen oder etwas damit erreichen, ist es keine Verschwendung.

Philip
quelle
6

Open GL ist die Basis für Web GL , und während Web GL noch in den Kinderschuhen steckt, wird es nützlich sein, dies zu wissen, wenn es sich weit verbreitet. Zusammen mit der Tatsache, dass es im Allgemeinen plattformübergreifender ist als DirectX (in anderen Antworten behandelt), wird es schließlich eine der Optionen für die Erstellung eines 3D-Webbrowserspiels sein.

Zur Beantwortung Ihrer Frage: Wenn WebGL zum Standard wird, bleibt OpenGL für eine gute, lange Zeit bestehen.

thedaian
quelle
4

Nicht ganz nutzlos. Es sei darauf hingewiesen, dass Mac-Systeme immer noch nur OpenGL und nur bis OpenGL 2.1 unterstützen. Dies bedeutet, dass jedes Spiel, das Sie auf einem Mac sehen (einschließlich einiger Spiele der Quell-Engine wie Portal, Left 4 Dead, Left 4 Dead 2), mit OpenGL geschrieben wurde. Angesichts der Tatsache, dass Valve die Quell-Engine an OpenGL 2.1 anpassen und einige erstaunliche Dinge damit tun konnte, sind Sie wahrscheinlich ziemlich sicher, dort zu starten.

James
quelle
Neuere Versionen von OSX unterstützen OpenGL 3.3 . Leider kann die OpenGL-Version auf Macs nicht aktualisiert werden, da Apple eigene Treiber schreibt und Funktionen basierend auf der OSX-Version / Hardware festlegt, es sei denn, Sie aktualisieren das gesamte Betriebssystem (ein kostenpflichtiges Update). Das bedeutet, dass ältere Versionen von OpenGL wahrscheinlich für die kommenden Jahre unterstützt werden müssen.
David C. Bishop
3

Initialisierungscode ist ein winziger Bruchteil des gesamten Codes, der sich mit einem Subsystem wie diesem Renderer befasst. Sie werfen die überlegene Objektorientierung und den Vorteil von DirectX weg, weil Sie die ersten zweihundert Zeilen nicht mögen. Ich möchte nicht so klingen, als würde ich Ihre Meinung hier trivialisieren, aber die Realität ist, dass im Vergleich zu all dem Code, den Sie schreiben, der sich mit jedem Rendering-Subsystem befasst, ganz zu schweigen von den anderen benötigten Subsystemen, die Initialisierung eine Trivialität ist.

Zweitens könnte man immer DX9 ausprobieren - es ist viel, viel weniger als DX10.

DeadMG
quelle
Das Problem (für mich) ist zumindest, dass es anscheinend viel weniger Informationen / Tutorials für DX gibt und die existierenden erklären es mir einfach nicht gut genug. Und während der gesamten Initialisierung erschwert das Durchsuchen des Quellcodes (für mich) das Verstehen, was tatsächlich vor sich geht.
Trotzdem ... jetzt, wo Sie es erwähnen, wäre es vielleicht einfacher, mit DX9 zu beginnen.
2
Ich würde nicht empfehlen, mit DX9 zu beginnen. Es ist nicht so gut organisiert wie DX 10 und wird nur verschwinden.
Jeffythedragonslayer
2

Es ist unwahrscheinlich, dass OpenGL in naher Zukunft nicht mehr eine aktiv entwickelte oder zielgerichtete Technologie sein wird. Im Vergleich zu Plattformen, auf denen jede API verfügbar ist, bietet D3D in erster Linie Xbox, Windows und Windows Phone 7. OpenGL funktioniert neben Mac OS X und Linux auch unter Windows. OpenGL ES ist für Android und iOS verfügbar.

Wenn Sie nur nach Fähigkeiten suchen, um einen gut bezahlten Job zu bekommen, müssen Sie wahrscheinlich DX lernen, da die meisten Mainstream-Spieleentwickler auf Windows und / oder Xbox abzielen. Obwohl der schnell wachsende Markt für mobile Spiele die Relevanz von OpenGL ES-Kenntnissen erhöht.

Ven'Tatsu
quelle
Dies ist mehr für ein Side-Fun-Projekt für mich. Ich habe einen normalen Programmierjob (Firmware / Treiber). Das ist also das andere Ende des Spektrums.
2
Die meisten Mainstream-Spieleentwickler, die ich kenne, machen eigentlich keine Grafikprogramme. Alle Arbeiten sind hinter grafischen Abstraktionsebenen verborgen. Vielleicht ein hier und da geschriebener Shader, aber der Großteil der Arbeit hat nichts mit Grafik zu tun.
Tetrad
1

Wenn Sie mit der Grafikprogrammierung beginnen, spielt die Technologie eine Rolle, wenn Sie sich jedoch mit ihr vertraut machen, spielen nur die Konzepte eine Rolle, und sie sind bei Direct3D oder OpenGL gleich. Da die programmierbare Pipeline-Programmierung im Gegensatz zur Pipeline mit festen Funktionen zum Standard wird, ist der Teil, in dem Sie mit der Grafik-API interagieren, ein kleiner Teil der gesamten Arbeit.

Die andere Sache ist, dass OpenGL auf Mobiltelefonen wirklich groß ist. Es heißt OpenGL ES und ist auf vielen Ebenen genau so wie OpenGL 4.1 / 4.0 / 3.3 / 3.2.

Björn
quelle
1

Sie können ein guter Spielprogrammierer sein, ohne OpenGL oder DX zu berühren. Alles, was Sie lernen müssen, ist, eine gute Spiele-Engine wie Unity richtig einzusetzen. Wenn Sie jedoch ein tieferes Level erreichen und die Funktionsweise der Game Engine verstehen möchten, sollten Sie OpenGL lernen. Sie werden nicht viel davon in Bezug auf "Qualität" gewinnen, also wird es zu Lernzwecken sein.

Mein Rat ist also, dass Sie lernen, eine Game Engine zu verwenden, weil Sie wahrscheinlich genau das tun, was Sie in Ihrer Karriere tun werden (Pro oder Indie) und auch eine Grafikbibliothek wie OpenGL nur zu Lernzwecken lernen. (oder wenn Sie eine Spiel-Engine erstellen oder ändern möchten)

Rami Bokhari
quelle
1

Ich bin mir sicher, dass andere Ihnen bereits viele der verschiedenen Gründe genannt haben, warum Sie OpenGL lernen sollten, und warum es definitiv so bleiben wird, aber hier ist ein weiterer, bahnbrechender Grund: Valve hat vor kurzem begonnen, Linux zu entwickeln und zu unterstützen . Was bedeutet das? Nun, es bedeutet, dass die meisten Entwickler OpenGL verwenden werden.

Selbst jetzt bekommt OpenGL die meisten Funktionen schneller, es wird auf vielen verschiedenen Plattformen unterstützt und viele sind sich einig, dass dies die Zukunft ist.

jcora
quelle
Nun, openGL bewegt sich von sich aus in einem monumental langsamen Tempo. und nur weil valve seine source engine unter linux hat, hat dies für die verwendung von opengl keine bedeutung.
CobaltHex
Nun, es geht eher darum, mit allen Inkonsistenzen zwischen den Fahrern umzugehen. ich weiß, dass das programmieren von treibern für opengl ein harter nervenschmerz ist und es wird bugs geben, egal was
passiert
1
@ CobaltHex, eigentlich bedeutet es viel. Wenn ein riesiges Unternehmen, das praktisch die Richtung der Videospielbranche vorgibt, eine Plattform wählt und fest dahintersteht, bin ich mir ziemlich sicher, dass andere folgen werden.
Jcora
Während ich mir sicher
bin,
Das ist eine ganz andere Situation. Gaben sagte bereits, dass sie von W8 enttäuscht sind und im Grunde genommen die Plattform wechseln. Im Gegensatz zu OSX, Linux ist frei, zugänglich auf einer breiten Vielzahl von Hardware und hat eine große Entwickler - Community. Ganz zu schweigen davon, dass Valves Spiele unter OpenGL unter Windows und noch schneller unter OGL unter Linux viel schneller laufen .
JCORA
1

Hier ist die Unebenheit. DirectX ist auf Microsoft-basierte Systeme wie Windows- und XBox-Konsolen beschränkt.

OpenGL hingegen läuft auf fast allem in der einen oder anderen Version.

Was "sollten Sie es lernen" betrifft, wenn Sie vorhaben, ein Grafikprogrammierer zu sein, lautet die einfache Antwort: Lernen Sie beides, und wenn Sie einen blitzschnellen Renderer schreiben möchten, lernen Sie Mantle / Vulkan (nicht für schwache Nerven). .

Wenn Sie jedoch nur Spiele machen möchten, kümmern Sie sich nicht darum. Sie werden viel produktiver lernen, mit Unity oder Unreal zu entwickeln.

Ian Young
quelle
0

Es sieht so aus, als ob Sie sich in der Phase "Twiddling your Thumb" befinden und nicht in der Phase "Was sollen wir verwenden, um unsere nächste Engine zu codieren?". Ich würde weder empfehlen, OpenGL noch Direct3D zu lernen.

Suchen Sie sich eine übergeordnete Bibliothek, die es Ihnen leichter macht, und beginnen Sie, anstatt auf die Berge der Dinge zu starren, die Sie zu lernen glauben.

Sie müssen mit übergeordneten Konzepten wie Vektor-Mathematik, Textur-Mapping usw. vertraut sein, bevor Sie mit OpenGL produktiv sind. Wählen Sie also eine Bibliothek wie Ogre3D, Unity, Panda3D usw., die für Ihre Plattform sinnvoll ist, und beginnen Sie mit der Erstellung. Sobald Sie es tun und nicht starren , können Sie sehen, was als nächstes zu lernen ist, was Sinn macht.

Ich wette, OpenGL oder Direct3D werden sehr spät in dieser Liste der Dinge auftauchen, die es zu lernen gilt.

Gazihan Alankus
quelle
0

Wie aus den heutigen Nachrichten (GL4.3 / ES3) hervorgeht, ist OpenGL nicht mehr weg und es lohnt sich immer noch, in es zu investieren. Wenn Sie Linux oder Max OS zum Ziel haben möchten, benötigen Sie OpenGL und ES ist vollständig dominant in der mobilen Domain.

Abgesehen davon sollten Sie langfristig ernsthaft darüber nachdenken, beide APIs zu erlernen, da das Wissen über beide für Ihre persönliche Entwicklung besser ist. Die einzige wirkliche Frage ist, was Sie zuerst lernen müssen. Da OpenGL für Sie einfacher ist, ist dies die Entscheidung, die Sie getroffen haben.

Maximus Minimus
quelle