Rosalina hat geschrieben:Ich wüsste jetzt nicht mal was Vulkan ist.... fällt das in den selben Pot wie DX12 und Mantle? Also neue dinge die irgendwie machen das dinge (glaub besonders in sachen CPU) effektiver verarbeitet werden und deswegen am ende besser laufen?
Ich hab ja mit DX12 nur Kontakt wegen Dolphin, das läuft da mittlerweile super, aber ansonsten hab ich von diesen ganzen Vulkan usw bis jetzt nichts mitgekriegt was das überhaupt ist und macht ^^
Vulkan ist der Nachfolger von OpenGL, also ein Grafik-API. Vielleicht sollte ich erstmal erklären, was ein API ist:
In der Programmierung schreibst du Aufgaben, die du öfter durchführst in Funktionen. Willst du z.B. die Diagonalen d von Rechtecken mit den Seitenlängen a und b berechnen, dann machst du das folgendermaßen mit dem guten alten Pythagoras: d = Wurzel(a^2 + b^2). Das kannst du natürlich 25.538 mal schreiben, wenn du das so oft machst in deinem Programm, aber es ist sinnvoller, das in eine Funktion zu schreiben, die du mit entsprechenden Eingangswerten a und b dafür aufrufen kannst, um d zu berechnen. Dazu musst du dem Rechner mitteilen, was Eingangs- und Ausgangsparameter dieser Funktion sind. In diesem Fall sind a und b die Eingänge und d ist der Ausgang. Du schreibst in etwa etwas wie:
Code: Alles auswählen
float berechneDiagonale(float a, float b) {
d = wurzel(a^2 + b^2);
return d;
}
Wenn du in deinem Programm jetzt die Diagonale eines Rechtecks mit den Kantenlängen a = 4 und b = 6 berechnen willst kannst du schreiben:
d = berechneDiagonale(4, 6);
Die erste Zeile der Funktion enthält die Information, welche Daten hineingehen und was das für Daten sind, in dem Fall floats, also Kommazahlen. Das float ganz am Anfang sagt dem Rechner, dass auch eine Kommazahl da rauskommt. Das return d am Ende der Funktion gibt den Wert tatsächlich aus.
Diese erste Zeile nennt man Signatur der Funktion. Alles was danach kommt ist die Implementierung. Die Signaturen schreibt man zumindest in der Sprache C als Kopie nochmal in eigene Dateien (sog. Header).
Ein API (Application Programming Interface) ist jetzt eigentlich nur eine Festlegung einer solchen Sammlung von Signaturen (ich hoffe, Jesus zieht mir hier gleich nicht die Ohren lang, da fehlen nämlich noch ein paar Dinge

). D.h. es wird damit eine gemeinsame Sprache festgelegt. Bei einem Grafik-API berechnet man jetzt keine Diagonalen, sondern man legt damit fest, welche Daten ein Prozessor erhält um was damit zu tun. Wenn Nvidia und AMD jetzt z.B. Vulkan unterstützen wollen, dann nehmen sie sich die Spezifikation, also die Festlegung der Signaturen und was die Funktionen dahinter tun sollen, und schreiben die Implementierung dazu, die mit den Funktionen ihres Grafiktreibers das Bild auf dem Grafikprozessor berechnet.
Ein Spielhersteller benutzt jetzt zum Zeichnen nur die Funktionen, die in Vulkan deklariert sind. Die Implementierung ist davon unabhängig, es wird vorausgesetzt, dass sie auf dem Rechner vorhanden ist (nämlich im Grafiktreiber) und funktioniert. Wie diese Implementierung im Detail genau aussieht erfährt der Spielhersteller nicht und es hat ihn auch gar nicht zu interessieren. Vulkan ist also nicht in dem Sinne ein Programm, sondern eher eine Sprachfestlegung.
Jetzt zur Mehrkern-Besonderheit der neueren Grafik-APIs Vulkan, DirectX 12, Mantle und Metal:
Wenn du ein Bild aufbaust mithilfe von API-Funktionen gibst du zum Bespiel dem Grafiktreiber die Speicheradressen von Polygonen, Texturspeichern, etc. Das machst du innerhalb des Aufbaus eines Bildes sehr oft. Bzw. Das macht die CPU sehr oft. Dummerweise sind inzwischen Mehrkernprozessoren Standard. Ein einzelner Kern ist mit dem was da heute so an Draw Calls anfällt überfordert. Damit aber mehrere Prozessorkerne vernünftig genutzt werden können brauchst du jetzt Funktionen, die diese Datenübergaben sammeln und von mehreren Kernen gleichzeitig an den Grafiktreiber übergeben können. Man erstellt quasi Listen mit Befehlen, deren Einträge der Grafiktreiber dann parallel, also mehrkernig verarbeiten kann. Unter anderem deswegen muss man das API umstrukturieren. Außerdem werden zusätzlich noch einige alte Zöpfe abgeschnitten die heute keiner mehr braucht und damit Leistung gespart.