Quelles sont les performances graphiques réelles de la dernière version de macOS ? Pourquoi les mêmes jeux s’exécutent-ils beaucoup plus mal sur Mac que sur Windows, même lorsque les jeux utilisent une API Metal sur Mac ?


2 choses :

  • L'absence d'API appropriée. Games dev vont généralement avec le plus grand segment pour cibler there game. Avec mean ils utilisent généralement DirectX, Vulkan ou OpenGL. DirectX peut être traduit en OpenGL ou Vulkan. Aujourd'hui, sur Linux, la méthode Vulkan est préférée, surtout pour Direct3D 11. Pour sortir des jeux sur MacOS, Vulkan n'existe pas, donc les développeurs de jeux doivent utiliser OpenGL. Si le jeu est récent et fait pour cibler D3D11, sachez que le traduire en OpenGL conduit généralement à environ la moitié de la performance que si vous le traduisez en Vulkan (vous pouvez tester la différence sur Linux car les deux sont disponibles). Un jeu D3D9 peut être traduit en OpenGL et être rapide. Vous devez également prendre en compte le fait que l'OpenGL d'Apple est largement dépassé et ne supporte pas certaines des extensions les plus optimisées qui pourraient permettre aux jeux de fonctionner plus rapidement. C'est la principale raison pour laquelle de plus en plus de développeurs publient les jeux pour Windows et Linux car ils ne veulent pas déclasser leurs jeux pour les faire fonctionner avec une ancienne version d'OpenGL. Notez qu'il y a MoltenVK qui traduit Vulkan à Metal, mais il est rarement utilisé pour la libération, malheureusement, surtout maintenant que MoltenVK est gratuit.
  • La deuxième raison pour laquelle le jeu peut fonctionner plus lentement sur le matériel Apple est que "tous les mac surchauffent" et par cela je veux dire fonctionner plus chaud qu'il ne devrait. Intel CPU dans la fréquence de base à peine courir sur quand martelé avec une charge élevée persistante (la conversion de D3D11 à OpenGL tiendra l'un des noyaux du processeur à 100% en général). De même, le GPU souffre du même problème de surchauffe et n'utilise pas le turbo ou l'horloge du jeu après quelques minutes de charge complète. Mais en général, cette partie du GPU ne s'additionne pas parce que le goulot d'étranglement est le CPU qui tourne à ou plus bas que l'horloge de base et donc le thread de traduction ne peut pas générer assez de CPU pour faire son travail. Traduire D3D11 en OpenGL est lourd et c'est pourquoi nous le traduisons en Vulkan sur Linux, cela double littéralement le FPS. (La traduction est généralement limitée à un thread dédié)

.