
Personnellement l'api la plus simple au niveau syntaxique qui permet de faire du code de plus bas niveau et que j'ai pu trouvé sur internet reste openCL.
Encore faut t'il que ça soit compatible avec d'anciennes cartes graphiques, OS et PC tel que le mien qui date de la préhistoire.
Sinon, je n'achète pas car, je n'ai pas le budget.
Dernière modification par E.Bzz ; 18/02/2016 à 10h33. Motif: On reste sur l'aspect technique, merci. ;-)
Dans quel cas devez-vous choisir Vulkan ?
Attention ce document n'est peut être pas tout à fait objectif vu son origine![]()
Vulkan ça va surtout servir aux grosses boîtes qui font des AAA et aux développeurs de moteurs. En effet, avec OpenGL et DirectX, c'est très difficile de tirer le meilleur parti des cartes graphiques car ces API font tout un tas de choses pour essayer de simplifier et de prédire ce qu'on veut afficher. Et ce n'est pas qu'un problème d'overhead CPU: lorsqu'on développe un gros jeu ou un moteur, le seul moyen pour pousser la carte graphique dans ses retranchements est d'utiliser des extensions non standard des drivers, voir même de demander aux constructeurs de développer des features juste pour un jeu. Du coup les drivers deviennent de plus en plus compliqué, ce sont des usines à gaz qui contiennent du code spécifique juste pour certains jeux, avec des branchements en dur dans le code :
Cette pratique est très compliquée à mettre en place, autant pour le constructeurs que pour le développeur (rappelez-vous du lancement catastrophique de Rage, les gens conseillaient d'utiliser une ancienne version du driver ou de renommer son .exe en 'Rage2.exe", justement pour éviter d'utiliser le code du driver spécifique), et donc les gens se sont mis à proposer la création d'une API bas niveau pour déporter le travail du constructeur vers le développeur: Vulkan. Cela a donc plusieurs avantages pour les devs:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if (nomDuJeu == "Super Conflit Armé 3") { // tout plein de code non standard }
- Ils n'ont plus besoin de demander aux constructeurs de faire des extensions, tous le pipeline est entièrement géré en interne
- Ils peuvent beaucoup plus facilement débugger leurs jeux. Un driver est une boîte noire, et trouver pourquoi un triangle ne s'affiche pas correctement peut demander des jours de debug. Avec Vulkan (et DX12), debugger la chaîne de rendu revient à débugger un programme classique puisque tout est fait explicitement dans le code du jeu.
- Ils gagnent en perf à cause de toutes les raisons évoqués plus haut (moins d'overhead, etc).
Evidemment pour un "petit" jeu qui n'est pas à la pointe de la techno, il est souvent inutile de quitter OpenGL.
Du tout, et on ne me le rabâche pas personnellement, j'ai lu plusieurs fois des conversations qui faisaient état de ça.
Après je ne dis pas que j'ai forcément compris où ils voulaient en venir, je nage à mon niveau (c'est-à-dire la pataugeoire) pour essayer d'y voir un peu plus clair.
Faut aussi reconnaître que ce qu'on nous sort est souvent accompagné d'un argument marketing "tourne en dx12" sous-entendu que le framerate se trouvera amélioré (dans les jeux) et je n'ai jamais vu un argument "tourne sous openGL", alors je ne dis pas que je ne me fourvoie pas dans des conclusions grotesques mais un cheminement intellectuel a fini par se former malgré moi. Je ne suis pas fou, je ne suis pas le seul à avoir entendu dire qu'OpenGL est à la traîne si ? Que la tesselation n'est pas du tout au même niveau que celle de D3D etc.
Je n'ai aucune preuve ou quoi que ce soit de ce que j'avance, j'essaie juste d'être un peu moins paumé dans ce domaine, c'est juste pour mon enrichissement personnel, mais avec les détracteurs et les fans, c'est difficile d'avoir une idée objective de la situation.
Enfin bon, je vais arrêter de polluer le topic parce que ça pourrait bien finir en débat OpenGL vs D3D ^^.
Le probleme d'OpenGL c'est que les drivers sont generalement assez mauvais (ce qui est causé par le manque de jeux en GL, et du coup, cause aussi le manque de jeux GL...). Avec Vulkan, il y a une chance que les drivers soient un peu mieux puisque toutes les optimisations sont maintenant a la responsabilité du developpeur.
D'après moi ça dépend déjà de la plate forme.
Sur mobile, c'est OGL ES, point. Metal est pas mal, mais à cause de la perte de perf dues à l'objectif C et vu que ça ne tourne que sur ios...
Sur PC, ça dépend. L'avantage de directx, c'est que c'est plus simple à faire marcher. C'est très bien intégré avec Windows et normalement quand un GPU te dis qu'il fait du "DX10", il fait tout ce qui est dans DX10 (après tu ne sais pas si c'est émulé ou si les perf seront là).
Sur console, ça dépend. Pour la génération précédente, OpenGL te permettait de faire directement PC, PS3, et Directx9 (bidouillé) pour la 360. Pour la wii c'est une autre API (GX je crois).
Pour la Ps4, c'est GNM/GNMX, pour la One, c'est DX11/DX12, pour la wiiU c'est GX2...
Il existe plein d'API. Elles sont plus ou moins simples, plus ou moins pratiques, mais au final, tout finit par marcher.
J'ai tendance à préférer DX parce que je déteste le système d'extensions d'OGL par exemple.
En terme de performance, il faut voir. Ca dépend des jeux, des GPU, des drivers...
Partager