Différence entre OpenGL et DirectX12

Les interfaces de programmation d'application (API) sont ce qui traite la commande que vous effectuez et s'interface avec le logiciel pour obtenir le résultat dont vous avez besoin.

Un appel API implique de faire une demande au serveur pour effectuer une tâche / action particulière. Une comparaison rapide d'Open GL et de Direct 3D sera effectuée ici. Nous allons voir de plus près les performances des deux API avec GeeXLab qui est désormais disponible avec un Open GL et un rendu 3D direct 12.

Open Graphics Library (OpenGL) est une API multi-langage et multiplateforme pour le rendu de graphiques vectoriels 2D et 3D. L'API est généralement utilisée pour interagir avec une unité de traitement graphique (GPU), pour obtenir un rendu accéléré par le matériel. Direct3D est une interface de programmation d'applications graphiques (API) pour Microsoft Windows qui fait partie de DirectX, Direct3D est utilisé pour rendre des graphiques en trois dimensions dans des applications où les performances sont importantes, comme les jeux. Direct3D utilise l'accélération matérielle si elle est disponible sur la carte graphique.

Un maillage texturé est rendu avec différentes densités de polygones. Le test utilise une liste de commandes, un PSO, un programme HLSL, un maillage et une texture. GeeXLab et le test sont tous deux disponibles en téléchargement dans le dossier host_api / Direct3D12_vs_OpenGL / du pack d'échantillons de code. Le nombre de polygones peut être modifié en modifiant le code source des deux fichiers. Le test a été réalisé pour les spécifications suivantes:

CPU: Intel Core i5 6600K à 3,5 GHz

Carte mère: ASUS Z170 Pro Gaming

RAM: 8 Go de mémoire DDR4 Corsair Vengeance

OS: Windows 10 64 bits

Conducteurs:

Radeon R9 290X: Catalyst 15.10 beta

GeForce GTX 970: R358,50

HD Graphics 530: v4279

Fréquence d'images par seconde

Le taux de rafraîchissement par seconde des deux API avec différents pilotes a été étudié.

Direct3D 12 résultats

Triangles 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

Résultats OpenGL 3.2

Triangles 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

Les résultats de Direct 3D 12 se sont avérés plus rapides que OpenGL lorsque le nombre de polygones était faible. Lorsque le nombre de polygones était d'environ 80 000, il a été constaté que le Direct3D offre le même type de performances que OpenGL. Lorsque ce nombre est passé au-dessus de 80 000, OpenGL s'est révélé beaucoup plus rapide.

Quads rendus

Les résultats d'un test de contrainte d'étirage sont également répertoriés, un quadruple a été rendu 100, 400 et 4000 fois. Chaque quad est rendu avec son propre appel de tirage. Pour ce test, chaque quad est composé de 4 sommets et 2 triangles.

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%

On peut observer que plus d'objets peuvent être dessinés avec Direct 3D 12 qu'avec OpenGL.