Grafische APIs auf hoher und niedriger Ebene: Unterschiede und ihre Funktionsweise

Die Grafik-APIs sind keine Hardware, sondern eine Software, aber sie sind für das Rendern der Grafiken, die auf unserem Bildschirm angezeigt werden, und ohne sie für die Kommunikation zwischen den Anwendungen und den Anwendungen von entscheidender Bedeutung GPU wäre nicht möglich. In diesem Artikel erklären wir auf leicht zugängliche Weise, was grafische APIs sind, und brechen einige damit verbundene Mythen auf.

Es muss berücksichtigt werden, dass GPUs keine Programme ausführen, sondern eine Liste von Anweisungen ausführen. Aber woher kommt diese Liste und wie kommt sie zur GPU?

Grafische APIs auf hoher und niedriger Ebene: Unterschiede

Was ist eine Grafik-API?

OpenGL-Maschine

Mithilfe der Grafik-APIs können Anwendungen mit der GPU kommunizieren, um zu markieren, wie der nächste Frame oder Teil davon gezeichnet werden muss. Das Konzept basiert auf der Abstraktion, die die Erstellung einer GPU in einer Programmiersprache darstellt. Um das Konzept der Abstraktion zu verstehen, nehmen wir an, dass anstelle einer GPU eine Getränkemaschine angeschlossen ist.

Die API des Auffrischungsautomaten wäre eine Bibliothek mit den folgenden Funktionen: Münze werfen, Wechselgeld zurückgeben, Auffrischung auswählen und Erfrischung liefern, so dass das Programm interagieren kann. Dieser Teil der API wird vom Front-End aufgerufen. und was wir damit machen, ist die Liste der Anweisungen. In einer GPU heißt diese Liste DisplayList oder Bildschirmliste.

DisplayList-Ringpuffer

Diese Bildschirmliste wird von einer Software gelesen, die kein anderer als der Grafikkartentreiber ist. Dadurch wird die Liste in einen Mikrocode umgewandelt, den die GPU verstehen kann, und in einen Teil des kopiert RAM Speicher, auf den die GPU immer zugreift. Um die Bildschirmliste zu lesen, kopieren Sie die Liste in den internen Speicher Ihrer Befehlsprozessoren und beginnen Sie mit dem Rendern der Szene oder des Teils davon mit den Anweisungen aus der Bildschirmliste.

Dieser Vorgang wird kontinuierlich in jedem Frame ausgeführt, den die GPU rendert und an den Bildschirm sendet, unabhängig davon, ob Sie einen Gaming-PC, ein Smartphone oder eine Videospielkonsole verwenden.

Was sind heute die grafischen APIs?

APIs gáficas

Die heute am häufigsten verwendeten grafischen APIs sind die folgenden:

  • Vulkan: Ersetzt OpenGL und wird in allen Arten von Betriebssystemen verwendet, die als plattformunabhängig gelten. Es ist jedoch die Haupt-API von Google.
  • Metall: Apples Grafik-API, die in macOS verwendet und speziell für die GPU-Architektur optimiert wurde.
  • DirectX: Die Microsoft-API für Windows und Xbox wurde je nach Plattform in mehrere Versionen unterteilt, wurde jedoch kürzlich in einer einzigen Version vereinheitlicht.
  • GNM / GNMX / GNM++: Die grafische API für die PlayStation 4- und PlayStation 5-Konsolen von SONY. GNMX ist eine High-Level-API. GNM ist die Low-Level-Versions-API für PS4 und GNM ++ für PS5.
  • NVN: Die Nintendo Switch-Grafik-API, die ausschließlich in dieser Konsolenserie verwendet wird.
  • OpenGL: Die API, mit der alles begann, ursprünglich als IrisGL bekannt und für Silicon Graphics-Workstations konzipiert, entwickelte sich zur API für PCs, Konsolen und spätere Smartphones. Ich erreiche Version 4 als Vulkan, ein Rebranding von OpenGL 5.

Computing vs Grafik

DX11 gegen DX12

GPUs sind hochkomplexe Prozessoren, die längst nicht mehr nur Spielzeug zum Rendern von Videospielen sind. Heute werden sie in Bereichen wie künstlicher Intelligenz oder Hochleistungsrechnen eingesetzt, was zur Entwicklung von Grafik-APIs geführt hat und über die Grafik hinausgeht.

Derzeit senden die Anwendungen nicht eine einzige Liste, sondern mehrere Listen, von denen eine Grafik und der Rest der Datenverarbeitung sind. Dabei wird die GPU verwendet, um bestimmte Probleme zu lösen, die nichts mit dem Rendern der Grafiken zu tun haben. Letztere arbeiten vollständig asynchron und daher nicht abhängig von der Bildschirmliste.

Beispielsweise kann es sein, dass eine Grafikdesign-Anwendung die Leistung der GPU nutzt, um einen Spezialeffekt auf einem Foto zu lösen, nur weil die GPU für die Lösung dieses Problems besser gerüstet ist als eine CPU. Dank der Berechnungslisten können Sie die kleinen Ressourcen der GPU verwenden, um diese kleinen Probleme zu lösen

Grafische APIs auf hoher und niedriger Ebene: Wie unterscheiden sie sich?

APIs Graficas Alto Bajo

Wenn wir über eine API auf niedriger Ebene sprechen, beziehen wir uns auf eine API, die in der Nähe der GPU ausgeführt wird, die sich am unteren Rand des Stapels befindet, während sich der Treiber oben befindet. Eine API auf hoher Ebene erfordert daher, dass ein Treiber die Anzeige generiert Liste. Da bestimmte Treiberaufgaben in der High-Level-API nicht ausgeführt werden, wird theoretisch erreicht, dass die Zeit für die Ausführung der Bildschirmliste durch die CPU kürzer ist. Dies bedeutet, dass der Frame in weniger Millisekunden fertiggestellt wird oder mehr Zeit für die Verbesserung der Grafik von zur Verfügung steht der gleiche Rahmen.

In der Realität ist es falsch, dass den Low-Level-APIs ein Treiber fehlt, da er an einigen Stellen gelesen und angehört werden kann. Dies ist jedoch viel einfacher und belastet die Arbeit, wenn bestimmte wesentliche Aufgaben für die Anwendung ausgeführt werden. Dies ermöglicht Entwicklern Optimieren Sie das Timing jedes Frames so weit wie möglich, indem Sie den Erstellungsprozess der Bildschirmliste steuern.

Für Entwickler kann es jedoch oft viel komfortabler sein, eine High-Level-API zu verwenden, da sich die zusätzliche Entwicklungszeit finanziell nicht lohnt oder einfach weil der Vorteil durch die Anpassung des Spiels an eine API erzielt werden kann niedriges Niveau ist nicht wahrnehmbar.

Der Mythos von Konsole und PC

Es gibt einen Mythos, dass, weil eine Konsole über eine einzigartige Hardware verfügt, die APIs viel optimierter sind als auf dem PC, auf dem es viele verschiedene Konfigurationen gibt, aber es ist wirklich der Treiber, den wir installiert haben, der die Bildschirmliste generiert. Der Unterschied besteht darin, dass dieser Treiber in Konsolen statisch ist und keine Leistungsaktualisierungen oder Änderungen während der gesamten Lebensdauer der Konsole erhält.