Anwendungsprogrammierschnittstellen (Application Programming Interfaces, APIs) verarbeiten den von Ihnen ausgeführten Befehl und stellen eine Schnittstelle zur Software her, um das gewünschte Ergebnis zu erzielen.
Bei einem API-Aufruf wird eine Anforderung an den Server gesendet, um eine bestimmte Aufgabe / Aktion auszuführen. Ein schneller Vergleich von Open GL und Direct 3D wird hier durchgeführt. Wir werden uns die Leistung der beiden APIs mit GeeXLab genauer ansehen, das jetzt mit einem Open GL- und einem Direct 3D 12-Renderer verfügbar ist.
Open Graphics Library (OpenGL) ist eine sprach- und plattformübergreifende API zum Rendern von 2D- und 3D-Vektorgrafiken. Die API wird normalerweise zur Interaktion mit einer Grafikverarbeitungseinheit (GPU) verwendet, um ein hardwarebeschleunigtes Rendering zu erzielen. Direct3D ist eine grafische Anwendungsprogrammierschnittstelle (API) für Microsoft Windows, die Teil von DirectX ist. Direct3D wird zum Rendern dreidimensionaler Grafiken in Anwendungen verwendet, bei denen die Leistung von Bedeutung ist, z. B. bei Spielen. Direct3D verwendet die Hardwarebeschleunigung, wenn diese auf der Grafikkarte verfügbar ist.
Ein texturiertes Netz wird mit unterschiedlicher Polygondichte gerendert. Der Test verwendet eine Befehlsliste, ein PSO, ein HLSL-Programm, ein Mesh und eine Textur. GeeXLab und der Test können beide im Ordner host_api / Direct3D12_vs_OpenGL / des Codebeispielpakets heruntergeladen werden. Die Anzahl der Polygone kann durch Bearbeiten des Quellcodes beider Dateien geändert werden. Der Test wurde für die folgenden Spezifikationen durchgeführt:
ZENTRALPROZESSOR: Intel Core i5 6600K bei 3,5 GHz
Hauptplatine: ASUS Z170 Pro Gaming
RAM: 8 GB DDR4 Corsair Vengeance
Betriebssystem: Windows 10 64-Bit
Treiber:
Radeon R9 290X: Katalysator 15.10 beta
GeForce GTX 970: R358.50
HD Graphics 530: v4279
Bildrate pro Sekunde
Die Framerate pro Sekunde beider APIs mit unterschiedlichen Treibern wurde untersucht.
Direct3D 12 Ergebnisse
Dreiecke AMD Radeon R9 290X NVIDIA GeForce GTX 970 Intel HD Graphics 530
800 9100/40% 5500/25% 1360
5000 8200/45% 5300/35% 1220
20000 5800/60% 5100/45% 1100
80000 2400/80% 2600/70% 850
320000 720/90% 700/85% 500
500000 480/98% 480/90% 400
2000000 130/100% 130/97% 160
OpenGL 3.2 Ergebnisse
Dreiecke AMD Radeon R9 290X NVIDIA GeForce GTX 970 Intel HD Graphics 530
800 4600/25% 3700/35% 1220
5000 4300/25% 3600/35% 1160
20000 4200/25% 3600/36% 1060
80000 4100/30% 3600/58% 840
320000 4100/46% 2800/87% 500
500000 3200/70% 2200/90% 420
2000000 1000/100% 930/95% 180
Die Ergebnisse von Direct 3D 12 waren schneller als bei OpenGL, wenn die Anzahl der Polygone niedrig war. Als die Anzahl der Polygone etwa 80.000 betrug, stellte sich heraus, dass Direct3D dieselbe Leistung wie OpenGL bietet. Als diese Zahl über 80.000 stieg, stellte sich heraus, dass OpenGL viel schneller war.
Quads gerendert
Die Ergebnisse eines Zugbelastungstests sind ebenfalls aufgeführt. Ein Quad wurde 100-, 400- und 4000-mal gerendert. Jedes Quad wird mit einem eigenen Draw Call gerendert. Für diesen Test besteht jedes Quad aus 4 Eckpunkten und 2 Dreiecken.
Direct 3D 12
Num Quads GeForce GTX 960 (R361.43)
100 2900/20%
400 1070/26%
4000 180/20%
OpenGL 3.2
Num Quads GeForce GTX 960 (R361.43)
100 1840/58%
400 730/30%
4000 97/20%
Es ist zu beobachten, dass mit Direct 3D 12 mehr Objekte gezeichnet werden können als mit OpenGL.