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.