Aus dem Wiki : "Die Vulkan-API wurde ursprünglich von Khrono als" OpenGL-Initiative der nächsten Generation "bezeichnet." Es handelt sich um eine grundsätzliche Neugestaltung, um OpenGL und OpenGL ES zu einer gemeinsamen API zu vereinen, die nicht rückwärts geht. " kompatibel mit bestehenden OpenGL - Versionen ".
Sollten diejenigen, die sich jetzt mit Grafikprogrammierung befassen, besser in der Lage sein, Vulkan anstelle von OpenGL zu lernen? Es scheint, dass sie dem gleichen Zweck dienen werden.
Antworten:
Kaum!
Dies scheint in etwa der Frage zu entsprechen, ob neue Programmierer C ++ anstelle von C lernen sollen oder ob neue Künstler digitales Malen anstelle von physischem Malen lernen sollen.
Insbesondere, weil es NICHT abwärtskompatibel ist, wären Grafikprogrammierer dumm, die in der Branche am häufigsten verwendete Grafik-API auszuschließen, einfach weil es eine neue gibt. Außerdem macht OpenGL verschiedene Dinge anders. Es ist durchaus möglich, dass sich ein Unternehmen zu Beginn des Spiels für OpenGL gegenüber Vulkan entscheidet, und dass es sich nicht für jemanden interessiert, der OpenGL nicht kennt, unabhängig davon, ob er Vulkan kennt oder nicht.
Spezialisierung ist selten eine marktfähige Fähigkeit.
Für diejenigen, die ihre Fähigkeiten nicht als solche vermarkten müssen, wie Indie-Entwickler, wäre es noch törichter, ein Tool aus ihrer Toolbox zu entfernen. Ein Indie-Entwickler ist noch mehr auf Flexibilität angewiesen und in der Lage zu entscheiden, was funktioniert und was finanziert wird. Die Spezialisierung auf Vulkan schränkt Ihre Möglichkeiten nur ein.
Spezialisierung ist selten ein effizientes Paradigma.
quelle
Wenn Sie jetzt loslegen und die GPU-Arbeit erledigen möchten (anstatt immer eine Game-Engine wie Unity zu verwenden), sollten Sie auf jeden Fall Vulkan lernen. Vielleicht solltest du GL später auch lernen, aber es gibt ein paar Gründe, Vulkan-first zu denken.
GL und GLES wurden vor vielen Jahren entwickelt, als GPUs ganz anders arbeiteten. (Der offensichtlichste Unterschied sind Draw Calls im Sofortmodus im Vergleich zu Kacheln und Befehlswarteschlangen.) Der GL ermutigt Sie, im Sofortmodus zu denken, und verfügt über eine Menge veralteter Cruft. Vulkan bietet Programmiermodelle, die der Funktionsweise moderner GPUs sehr viel näher kommen. Wenn Sie also Vulkan lernen, haben Sie ein besseres Verständnis dafür, wie die Technologie wirklich funktioniert und was effizient und was ineffizient ist. Ich sehe viele Leute, die mit GL oder GLES angefangen haben und sofort schlechte Angewohnheiten haben, wie separate Draw Calls pro Objekt, anstatt VBOs zu verwenden, oder noch schlimmer, Anzeigelisten. Für GL-Programmierer ist es schwierig herauszufinden, was nicht mehr gefördert wird.
Es ist viel einfacher, von Vulkan zu GL oder GLES zu wechseln als umgekehrt. Vulkan macht eine Reihe von Dingen explizit, die im GL verborgen oder unvorhersehbar waren, z. B. die Kontrolle des gemeinsamen Zugriffs, die Freigabe und den Rendering-Status. Dies erhöht die Komplexität des Treibers auf die Anwendung. Auf diese Weise erhält die Anwendung jedoch die Kontrolle und es wird einfacher, vorhersehbare Leistung und Kompatibilität zwischen verschiedenen GPU-Anbietern zu erzielen. Wenn Sie Code haben, der in Vulkan funktioniert, ist es ziemlich einfach, diesen auf GL oder GLES zu portieren, und Sie haben am Ende etwas, das gute GL / GLES-Gewohnheiten verwendet. Wenn Sie Code haben, der in GL oder GLES funktioniert, müssen Sie fast von vorne anfangen, damit er in Vulkan effizient funktioniert. Dies gilt insbesondere, wenn er in einem älteren Stil geschrieben wurde (siehe Punkt 1).
Zuerst war ich besorgt, dass es viel schwerer ist, gegen Vulkan zu programmieren, und dass es für erfahrene Entwickler in größeren Unternehmen in Ordnung wäre, aber ein großes Hindernis für Indies und Hobbyisten. Ich stellte diese Frage einigen Mitgliedern der Arbeitsgruppe und sie sagten, sie hätten Datenpunkte von Leuten, mit denen sie gesprochen haben und die bereits nach Vulkan gezogen sind. Diese Leute reichen von Entwicklern bei Epic, die an der UE4-Integration arbeiten, bis zu Bastlern von Spielen. Ihre Erfahrung war, dass das Erlernen von Konzepten und längerem Boilerplate-Code für den Einstieg (dh das Erreichen eines Dreiecks auf dem Bildschirm) nicht allzu kompliziert war, selbst für die Indies. Aber nachdem sie in dieser Phase angekommen waren, fanden sie es viel einfacher, eine echte, versendbare Anwendung aufzubauen. weil (a) das Verhalten zwischen den Implementierungen der verschiedenen Anbieter viel vorhersehbarer ist und (b) das Erreichen einer guten Leistung mit allen aktivierten Effekten nicht so viel Versuch und Irrtum beinhaltete. Mit diesen Erfahrungen von echten Entwicklern haben sie mich überzeugt, dass das Programmieren gegen Vulkan auch für Anfänger in der Graphik rentabel ist und dass die Gesamtkomplexität geringer ist, wenn Sie das Tutorial hinter sich lassen und anfangen, Demos oder Anwendungen zu erstellen, die Sie anderen Leuten geben können.
Wie andere gesagt haben: GL ist auf vielen Plattformen verfügbar, WebGL ist ein nützlicher Übermittlungsmechanismus, es gibt eine Menge existierender Software, die GL verwendet, und es gibt viele Arbeitgeber, die für diese Fähigkeit einstellen. Es wird noch einige Jahre dauern, bis Vulkan ein Ökosystem aufgebaut hat. Aus diesen Gründen wäre es dumm, das Erlernen von GL gänzlich auszuschließen. Trotzdem haben Sie es viel leichter und werden ein besserer GL-Programmierer (und ein besserer GPU-Programmierer im Allgemeinen), wenn Sie mit etwas beginnen, das Ihnen hilft, die GPU zu verstehen, anstatt zu verstehen, wie sie funktioniert vor 20 Jahren.
Natürlich gibt es noch eine Option. Ich weiß nicht, ob dies speziell für Sie relevant ist, aber ich denke, ich sollte es trotzdem für die anderen Besucher sagen.
Um ein Indie-Games-Entwickler oder ein Game-Designer zu sein oder VR-Erfahrungen zu sammeln, müssen Sie weder Vulkan noch GL lernen. Viele Leute beginnen mit einer Spiele-Engine (Unity oder UE4 sind im Moment sehr beliebt). Wenn Sie eine solche Engine verwenden, können Sie sich auf das Erlebnis konzentrieren, das Sie erstellen möchten, anstatt auf die Technologie, die dahinter steckt. Dadurch werden die Unterschiede zwischen GL und Vulkan vor Ihnen verborgen, und Sie müssen sich keine Gedanken darüber machen, welche auf Ihrer Plattform unterstützt werden. Hier erfahren Sie mehr über 3D-Koordinaten, -Transformationen, -Beleuchtung und -Animation, ohne sich sofort mit allen wichtigen Details befassen zu müssen. Einige Spiel- oder VR-Studios arbeiten nur in einer Engine und haben überhaupt keinen Vollzeit-GL-Experten. Sogar in größeren Studios, die ihre eigenen Motoren schreiben, sind die Leute, die die Grafikprogrammierung machen, eine Minderheit.
Das Erlernen der Details zur Interaktion mit einer GPU ist sicherlich eine nützliche Fähigkeit, die viele Arbeitgeber zu schätzen wissen, aber Sie sollten nicht das Gefühl haben, dies lernen zu müssen, um in die 3D-Programmierung einzusteigen. und selbst wenn du es weißt, wird es nicht unbedingt etwas sein, das du jeden Tag benutzt.
quelle
Beim Lernen der Grafikprogrammierung geht es um mehr als nur um das Lernen von APIs. Es geht darum zu lernen, wie Grafiken funktionieren. Vertex-Transformationen, Beleuchtungsmodelle, Schattentechniken, Textur-Mapping, verzögertes Rendern usw. Diese haben absolut nichts mit der API zu tun, mit der Sie sie implementieren.
Die Frage lautet also: Möchten Sie lernen, wie man eine API verwendet? Oder möchten Sie Grafiken lernen ?
Um mit hardwarebeschleunigten Grafiken arbeiten zu können, müssen Sie lernen, wie Sie mit einer API auf diese Hardware zugreifen. Sobald Sie jedoch die Möglichkeit haben, mit dem System zu kommunizieren, konzentriert sich Ihr Grafiklernen nicht mehr auf die Aufgaben der API, sondern auf Grafikkonzepte. Beleuchtung, Schatten, Bump-Mapping usw.
Wenn Sie Grafikkonzepte erlernen möchten, verbringen Sie weniger Zeit mit der API, als mit dem Erlernen von Grafikkonzepten . Das Kompilieren von Shadern hat nichts mit Grafiken zu tun. Sie wissen auch nicht, wie Sie Uniformen versenden, Scheitelpunktdaten in Puffer hochladen usw. Dies sind Tools und wichtige Tools für die Ausführung von Grafiken.
Aber sie sind eigentlich keine Grafikkonzepte. Sie sind ein Mittel zum Zweck.
Es erfordert viel Arbeit und Lernen mit Vulkan, bis Sie den Punkt erreichen, an dem Sie mit dem Erlernen von Grafikkonzepten beginnen können. Die Weitergabe von Daten an Shader erfordert eine explizite Speicherverwaltung und eine explizite Synchronisierung des Zugriffs. Und so weiter.
Das Erreichen dieses Punktes mit OpenGL erfordert dagegen weniger Arbeit. Und ja, ich spreche von modernen, Shader-basierten OpenGL-Kernprofilen.
Vergleichen Sie einfach, was nötig ist, um etwas so einfaches wie das Löschen des Bildschirms zu tun. In Vulkan erfordert dies zumindest einige Kenntnisse über eine Vielzahl von Konzepten: Befehlspuffer, Gerätewarteschlangen, Speicherobjekte, Abbilder und die verschiedenen WSI-Konstrukte.
In OpenGL ... es ist drei Funktionen:
glClearColor
,glClear
und die plattformspezifischen Swap puffert Anruf. Wenn Sie moderneres OpenGL verwenden, können Sie es auf zweiglClearBufferuiv
reduzieren : und Puffer austauschen. Sie müssen nicht wissen, was ein Framebuffer ist oder woher sein Image stammt. Sie löschen es und tauschen die Puffer aus.Da sich OpenGL viel vor Ihnen verbirgt, ist es weniger aufwendig, den Punkt zu erreichen, an dem Sie tatsächlich Grafiken lernen, als die Schnittstelle zur Grafikhardware zu erlernen.
Darüber hinaus ist OpenGL eine (relativ) sichere API. Es wird normalerweise Fehler ausgeben, wenn Sie etwas falsch machen. Vulkan ist nicht. Während es Debugging-Ebenen gibt, mit denen Sie helfen können, sagt Ihnen die Vulkan-Kern-API fast nichts, es sei denn, ein Hardwarefehler liegt vor. Wenn Sie etwas falsch machen, können Sie Müll rendern oder die GPU zum Absturz bringen.
In Verbindung mit der Komplexität von Vulkan wird es sehr leicht, versehentlich das Falsche zu tun. Wenn Sie vergessen, eine Textur auf das richtige Layout einzustellen, funktioniert dies möglicherweise in einer Implementierung, in einer anderen jedoch nicht. Das Vergessen eines Synchronisationspunkts kann manchmal funktionieren, aber dann plötzlich ohne ersichtlichen Grund fehlschlagen. Und so weiter.
Das Erlernen von Grafiken ist jedoch mehr als das Erlernen grafischer Techniken. Es gibt insbesondere einen Bereich, in dem Vulkan gewinnt.
Grafische Leistung .
Um ein 3D-Grafikprogrammierer zu sein, ist normalerweise eine Vorstellung davon erforderlich, wie Sie Ihren Code optimieren können. Und hier wird es zum Problem, wenn OpenGL Informationen versteckt und Dinge hinter Ihrem Rücken tut.
Das OpenGL-Speichermodell ist synchron. Die Implementierung darf Befehle asynchron ausgeben, solange der Benutzer den Unterschied nicht feststellen kann. Wenn Sie also ein Image rendern und versuchen, es zu lesen, muss die Implementierung ein explizites Synchronisationsereignis zwischen diesen beiden Tasks ausgeben.
Um jedoch eine Leistung in OpenGL zu erzielen, müssen Sie wissen, dass Implementierungen dies tun, damit Sie dies vermeiden können . Sie müssen erkennen, wo die Implementierung heimlich Synchronisierungsereignisse ausgibt, und dann Ihren Code neu schreiben, um sie so weit wie möglich zu vermeiden. Die API selbst macht dies jedoch nicht deutlich. Sie müssen dieses Wissen von irgendwoher erlangt haben.
Mit Vulkan ... sind Sie derjenige, der diese Synchronisationsereignisse ausgeben muss. Daher Sie müssen sich der Tatsache bewusst sein , dass die Hardware nicht ausgeführt Befehle synchron. Sie müssen wissen, wann Sie diese Ereignisse ausgeben müssen, und daher müssen Sie sich darüber im Klaren sein, dass sie Ihr Programm wahrscheinlich verlangsamen werden. Sie tun also alles, um sie zu vermeiden.
Eine explizite API wie Vulkan zwingt Sie dazu, solche Leistungsentscheidungen zu treffen. Wenn Sie die Vulkan-API kennenlernen, haben Sie bereits eine gute Vorstellung davon, welche Dinge langsam und welche schnell sein werden.
Wenn Sie einige Framebuffer-Arbeiten ausführen müssen, die Sie zwingen, einen neuen Renderpass zu erstellen, stehen die Chancen gut, dass dieser langsamer ist, als wenn Sie ihn in einen separaten Subpass eines Renderpasses einpassen könnten. Das bedeutet nicht, dass Sie das nicht tun können, aber die API teilt Ihnen im Voraus mit, dass dies zu einem Leistungsproblem führen kann.
In OpenGL lädt Sie die API grundsätzlich dazu ein, Ihre Framebuffer-Anhänge nach Belieben zu ändern. Es gibt keine Anleitung, welche Änderungen schnell oder langsam sein werden.
In diesem Fall können Sie mit Vulkan besser lernen, wie Sie Grafiken schneller machen können. Und es wird Ihnen sicherlich dabei helfen, den CPU-Overhead zu reduzieren.
Es wird noch viel länger dauern, bis Sie den Punkt erreichen, an dem Sie grafische Rendering-Techniken erlernen können.
quelle
Der primäre Reiz von OpenGL (zumindest für mich) ist, dass es auf vielen Plattformen funktioniert. Derzeit funktioniert Vulkan nicht unter OSX und Apple hat eine konkurrierende API namens Metal. Es ist sehr wahrscheinlich, dass es einige Zeit dauert, bis Apple Vulkan unterstützt, und wenn dies der Fall ist, wird der Vulkan-Support möglicherweise nur die neueste Hardware unterstützen. OpenGL unterstützt bereits die meiste Hardware und wird dies auch weiterhin tun.
quelle
Es hängt davon ab, was Sie tun möchten. Wenn Sie das Programmieren von Grafiken nur für sich selbst lernen möchten, spielt es keine Rolle, für was Sie sich entscheiden.
Wenn Sie an professionelle Arbeit denken, empfehle ich Vulkan. Es ist näher an der Hardware und ich denke, dass das Wissen darüber, was Hardware tut, für Grafikprogrammierer wichtig ist.
Vulkan ist näher an der Hardware, da OpenGL eine Menge Dinge unter der Haube erledigt, die Sie in Vulkan manuell erledigen, z. B. die Ausführung einer Befehlswarteschlange. Auch die Speicherverwaltung hängt von der Anwendung und nicht vom Treiber ab. Sie müssen sich darum kümmern, Speicher zuzuweisen
uniforms
(Variable, die Sie von der CPU an die GPU übergeben) und diese zu verfolgen. Sie müssen sich um mehr Sorgen machen, aber es gibt Ihnen auch mehr Freiheit bei der Verwendung des Speichers. Es kann beängstigend und überwältigend klingen, ist es aber nicht. Es ist nur die nächste API, die Sie lernen müssen.Das Verständnis dieser Dinge hilft auch dabei, die Funktionsweise der GPU zu verstehen. Was ermöglicht es Ihnen, einige Optimierungen sowohl auf Vulkan als auch auf OpenGL durchzuführen.
Und noch eine Sache, die mir einfällt, wenn Sie anfangen, Grafikprogrammierung zu lernen, wahrscheinlich, wenn Sie einen Job als ein Vulkan suchen, wird dies populärer sein (vielleicht populärer als OpenGL). Soweit ich weiß, schreiben die meisten Unternehmen, die einige Grafik-APIs verwenden, eigene Funktionen, sodass die Möglichkeit besteht, dass Sie im Job weder in OpenGL noch in Vulkan schreiben, aber Kenntnisse über die GPU immer nützlich sind.
quelle
Ich bin jetzt seit ein paar Monaten mit der Grafikprogrammierung beschäftigt.
Im Moment bin ich noch in der High School und ich kann Ihnen sagen, dass ich fast immer danach suche, plattformübergreifende Anwendungen zu entwickeln. Dies ist in der Tat mein größtes Problem mit Vulkan - Es ist nicht für alle Plattformen geeignet. Ich arbeite mit OpenGL in Java und habe seit über 6 Monaten.
Ein weiteres Problem, das ich habe, ist mit Vulkans Behauptungen, wie es behauptet, besser zu sein. OpenGL aktualisiert ihre Website sicherlich nicht sehr oft. Sie veröffentlichen ständig Updates und ich freue mich immer auf neue Updates, die schneller laufen oder mit neuer Hardware besser funktionieren.
Obwohl ich hauptsächlich mit OpenGL arbeite, verstehe ich die Grundprinzipien von DirectX und Vulkan. Ich arbeite nicht viel mit ihnen, besonders nicht mit Vulkan, da es sehr schwer zu erlernen ist und für die Programmierung nicht so gut strukturiert ist wie OpenGl und DirectX.
Abschließend möchte ich hinzufügen, dass die Spezialisierung auf ein einzelnes Gebiet, wie ich hauptsächlich Java und OpenGL verwende, nicht erstaunlich marktfähig ist. Wenn ich bei einem Unternehmen arbeiten wollte, das Spiele herstellt, würde OpenGL zum größten Teil nur dazu verwendet, Spiele für die Linux- und Android-Entwicklung und möglicherweise für OSX zu entwickeln. DirectX für Windows und Konsolen <Welches Vulkan in einigen Fällen ersetzen kann.
Ich kann nicht ewig auf OpenGL-Updates warten und werde es auch nicht tun. Aber ich bevorzuge die Entwicklung.
quelle
Ich möchte Ihnen meine Grafik-Einsteigerperspektive zum Thema geben. Was ich (in vielen Jahren als Ingenieur auf einem anderen Gebiet) erkannt habe, ist, dass die grundlegenden Konzepte der wichtigste Teil sind. Sobald Sie ein solides Verständnis für diese haben, ist das Erlernen der letzten glänzenden neuen API der am wenigsten schwierige Teil. Ich weiß nicht, ob Sie ein junger Hobby sind, der versucht, den neuen Skyrim zu programmieren, oder ob Sie einen Job im CG-Bereich suchen.
Ich sage Ihnen, was meiner Meinung nach der beste Ansatz ist , um Computergrafik "wie ein Profi" zu lernen.
Sich Gedanken über die Leistung zu machen, bevor Sie verstehen, wie man eine Linie zeichnet, ist wie sich Gedanken über die Aerodynamik Ihres Autos zu machen, bevor Sie den Führerschein erhalten.
quelle
Ich bin in C ++ ohne formale Ausbildung Autodidakt und habe in den letzten 15 Jahren sowohl OpenGL 1.0 bis Modern OpenGL als auch DirectX 9c, 10 und 11 gelernt. Ich bin noch nicht in DirectX 12 eingestiegen und wollte es versuche meine Hand bei Vulkan. Ich habe nur ein paar grundlegende Tutorials absolviert, um mit Vulkan ein einfaches Dreieck oder einen einfachen sich drehenden Würfel zu zeichnen. Wie bei DirectX 11 und OpenGL 3.3+ habe ich voll funktionsfähige 3D-Game-Engines geschrieben und sie sogar zum Erstellen einfacher Spiele verwendet.
Ich muss sagen, dass es von der Gesamtumgebung der Person abhängt, die lernt. Wenn Sie sich gerade erst mit der 3D-Grafikprogrammierung beschäftigen, sollten Sie zunächst einmal OpenGL oder DirectX 11 ausprobieren, da es eine Vielzahl von Tutorials, Ressourcen, Beispielen und bereits funktionierenden Anwendungen gibt. Das Erlernen von 3D-Grafiken ist kein einfaches Thema.
Wenn wir uns vom Programmieraspekt entfernen und uns nur auf den Begriff konzentrieren, welche Techniken verwendet werden, die die verschiedenen Ebenen der Mathematik betreffen, die zu Datensätzen, Datenstrukturen und Algorithmen führen; Es gibt eine Menge, die Sie zuerst kennen und verstehen müssen, bevor Sie überhaupt versuchen können, eine 3D-Game-Engine zu erstellen oder eine vorhandene effektiv zu nutzen.
Wenn Sie die Mathematik und Theorie dahinter bereits verstehen und über Programmiererfahrung verfügen, können Sie bereits vorhandene APIs, Bibliotheken und Anwendungen wie Unity oder Unreal Engine verwenden und einfach den Quellcode und die Skripte schreiben, die Sie zum Funktionieren Ihrer Anwendung benötigen .
Nach meinem eigenen Verständnis und meiner Auffassung ist dies der Fall, wenn Sie ein schnelles Spiel nur zum Zweck des Aufbaus eines Spiels erstellen möchten. Verwenden Sie bereits vorhandene Rahmenwerke, die Ihre Produktionszeit erheblich verkürzen würden. Wenn Sie jedoch die Funktionsweise von Game Engines / Physics Engines / Animation Engines und Simulatoren verstehen und selbst erstellen möchten, können Sie hier zwischen der Auswahl einer API wie DirectX wählen. OpenGL oder Vulkan. Einer der bestimmenden Faktoren hierbei wäre auch Ihr vorhandenes Programmierwissen. Was ich damit meine, ist, wenn Sie nichts über Multithreading, synchrone vs. asynchrone Aufrufe, Speicherzäune, Datenrennen, Semaphoren und Parallelität (parallele Programmierung) wissen.
Ich erwähne dies, weil Sie nicht wissen, wie Sie Ihren Speicher zusammen mit Ihren Threads und der Zugriffszeit richtig verwalten. Vulkan wird dich in den Arsch beißen! Wo OpenGL und DirectX Ihre Hand durch den Verbrauch von viel mehr CPU-Leistung halten.
Wenn Sie nun gute Programmierkenntnisse haben und über die folgenden mathematischen Hintergründe verfügen, die alle Stufen der Algebra, Geometrie, Trigonometrie, Booleschen Algebra, Wahrscheinlichkeit, Statistik, Vektor-Matrix-basierte Algebra, Kalkül I, II usw. umfassen. Unendlich (lol). Vektorrechnung, Lineare Algebra, Lineare Gleichungssysteme, Analytische Geometrie mit Vektorrechnung, Zahl- und Mengenlehre, Datensätze und Strukturen, Computeranalyse, Computergestütztes und Algorithmisches Design. Dann können Sie sich mit den Konzepten befassen, die für die Erstellung einer tatsächlichen Spiel-Engine erforderlich sind, und dies ohne jegliche angewandte Mathematik oder physikalische Gleichungen, die Sie benötigen. Sobald Sie über ausreichende Programmiererfahrung verfügen, insbesondere über Speicherverwaltung und Zeigerarithmetik, können Sie mit der Erstellung Ihrer Game Engine beginnen.
Die Sache hier ist also, dass Sie alle Aspekte verstehen müssen, die erforderlich sind, um eine Game Engine zu erstellen, damit Sie erweiterte Grafikprogrammierung durchführen können. Wenn Sie nur 2D-Grafiken erstellen, ist das Leben nicht allzu schwer, da dies in Python ohne die oben genannten APIs möglich ist! Wenn Sie es jedoch ernst meinen und eine leistungsstarke Game Engine entwickeln möchten, die mit vielen Funktionen ausgestattet ist, können Sie entweder C oder C ++ wählen und entweder OpenGL, Direct X oder Vulkan verwenden. Jeder von ihnen wäre in Ordnung. Wenn Sie die Engine von Grund auf neu erstellen und die "effizienteste" laufende Engine mit dem geringsten Ressourcenaufwand suchen, sollten Sie Vulkan wählen. Aber wenn Sie diesen Weg gehen, sollten Sie zumindest alles wissen, was ich oben erwähnt hatte, und einige!
Wie Sie sehen, richtet sich Vulkan nicht wirklich an Programmieranfänger in diesem Bereich. Sie müssen über umfassende Kenntnisse der Mathematik, der Programmierparadigmen, der verschiedenen Arten von Datensätzen und Algorithmen verfügen, einschließlich Threading, Speichersynchronisation und paralleler Programmierung. Und selbst dann muss die Anwendung nur ein einfaches 2D-Dreieck auf den Bildschirm laden. Was in etwa 100 Codezeilen in OpenGL oder 250 Codezeilen in DirectX möglich ist, erfordert in Vulkan fast 1.000 Codezeilen!
Vulkan überlässt alles Ihnen, da Sie für alle Aspekte der Verwendung von Vulkan in Ihrer Anwendung verantwortlich sind. Es gibt kein Halten der Hand, es behindert Sie nicht, Sie können sich in den Fuß schießen oder Sie können sich aufhängen, kaufen Sie eine rekursive Schlinge!
Das soll nicht heißen, dass Anfänger oder Neulinge auf diesem Gebiet kein Vulkan lernen sollten, aber ich würde ihnen Folgendes vorschlagen: Lernen Sie zuerst genug von OpenGL und / oder DirectX, um Ihre Füße nass zu machen und zu sehen, wie man Die Basisanwendung ist so aufgebaut, dass sie ein einfaches Dreieck oder einen sich drehenden Würfel darstellt. Machen Sie sich mit ihren APIs und ihren wiederkehrenden Mustern ihrer Strukturen vertraut. Während Sie lernen, dass Sie Vulkan parallel lernen können, können Sie auf diese Weise sehen, wie jeder der drei die gleiche Aufgabe erfüllt, aber wie sie es anders machen. Dann können Sie auch die Ergebnisse zwischen den verschiedenen APIs und von vergleichen Dort können Sie dann eine Auswahl treffen, die Ihnen am besten gefällt. Diese Methode würde Ihnen auch ein anderes Tool in Ihre Toolbox geben, und Sie könnten sogar Ihre Anwendung schreiben, um alle 3 zu unterstützen und die "
Letztendlich liegt es an dieser Person, zu entscheiden, welchen Weg sie einschlagen möchte, und von da an wird ihr Erfolg durch ihr Engagement, ständiges Studium, harte Arbeit, Versuch und Irrtum und vor allem durch ihr Versagen bestimmt. Wenn Sie nicht scheitern, sind Sie nicht erfolgreich! Sie sind nur erfolgreich, wenn Sie gescheitert sind, Ihre Fehler gefunden, behoben, fortgefahren und wieder aufgestanden sind und alles noch einmal gemacht haben!
quelle
Sie sollten zuerst OpenGL lernen, da dies der Standard für Grafiken auf so vielen Plattformen ist.
Selbst wenn es eine neuere Bibliothek gibt, ist es sehr wichtig, die Grundlagen zu verstehen und mit einer Sprache zu arbeiten, die in der gesamten Branche verwendet wird ... Zumal Vulkan seit einiger Zeit nicht mehr in großen Unternehmen verwendet wird.
Niemand möchte sich sofort anpassen und sich schließlich mit einem instabilen Framework / einer instabilen Bibliothek anlegen.
Sie müssten ihre derzeitigen Open-GL-Programmierer einstellen / umschulen, und das ist nicht erforderlich.
Außerdem habe ich gehört, dass OpenGL und Vulkan nicht genau dasselbe sind. Ich habe gehört, Vulkan ist eine niedrigere API-Ebene und näher am Maschinencode als OpenGL.
Diese Antwort, die ich gerade gefunden habe, scheint viele gute Informationen zu haben
https://gamedev.stackexchange.com/questions/96014/what-is-vulkan-and-how-does-it-differ-from-opengl
Eine andere Sache, die berücksichtigt werden muss, ist das Problem, das mit OpenGL 1 aufgetreten ist.
OpenGL 1 zu OpenGL 2 hatte MAJOR-Änderungen, und da viele Leute OpenGL1 verwendeten und es von der Hardware unterstützt wurde, muss in einigen Anwendungen / Engines eine starke Abwärtskompatibilität implementiert werden, und manchmal ist es für die Entwickler sehr schmerzhaft, diese weiterhin zu unterstützen .
Neben der Unterstützung veränderte sich die Sprache so sehr, dass man neue Sachen lernen musste.
Dies ist bei Frameworks wie JavaFX (von 1.x bis 2.x) und Play! Framework (auch 1.x bis 2.x). Komplette Änderungen am Framework, was bedeutet, dass wir alles neu lernen müssen ... alles ...
Warten Sie also im Wesentlichen, bis Vulkan STABIL ist. Das heißt warten bis wahrscheinlich der 2.0 Patch. IT bedeutet nicht, dass Sie nichts über die Grundlagen von Vulkan lernen können, sondern nur, dass sich dies ändern könnte. Ich würde davon ausgehen, dass eine Gruppe wie Kronos von Anfang an eine sehr stabile API bereitstellen würde, zumal an Vulkan mehrere Nvidia- und AMD-Ingenieure arbeiten, darunter eine hochrangige Nvidia-Person, die das Projekt anscheinend überwacht, sowie The base of Mantle. Wie bei jeder Software werden wir, die Programmierer, von Anfang an sehen, wie gut sie funktioniert, aber viele sind vorsichtig und warten ab, was passiert.
quelle