Unterschied zwischen OpenGL und DirectX12

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.