Pourquoi la résolution des textures dans les jeux est-elle toujours une puissance de deux (128x128, 256x256, 512x512, 1024x1024, etc.)?
Comme Byte56 l'a laissé entendre, la "puissance de deux" restrictions de taille sont (étaient) que chaque dimension doit être, indépendamment, une puissance de deux, et non que les textures doivent être carrées et avoir des dimensions qui sont une puissance de deux.
Cependant, sur les cartes modernes et les API graphiques modernes, cette "restriction" a été assouplie de manière à ce que les dimensions des textures puissent être, dans des limites raisonnables, tout ce que vous voulez. Pourtant:
Ne serait-il pas judicieux d’enregistrer la taille du fichier du jeu et d’adapter la texture au modèle UV non enveloppé? Que se passerait-il s'il y avait une texture qui n'était pas une puissance de deux?
En garantissant que les dimensions de la texture sont une puissance de deux, le pipeline graphique peut tirer parti des optimisations liées à l'efficacité de l'utilisation de puissances de deux. Par exemple, cela peut être (et il y a plusieurs années déjà avant que nous ayons des GPU dédiés et des compilateurs optimaux extrêmement intelligents) plus rapide à diviser et à multiplier par deux. Travailler dans des puissances de deux également simplifié les opérations au sein du pipeline, telles que le calcul et l'utilisation de mipmaps (un nombre qui est une puissance de deux se divisera toujours de manière égale en deux, ce qui signifie que vous n'avez pas à faire face à des scénarios où les dimensions de votre mipmap en haut ou en bas).
Il est vrai que vous «gaspillez» un peu d’espace de cette façon, mais l’espace supplémentaire en vaut généralement la peine, en contrepartie du rendu. De plus, il existe des techniques, telles que la compression ou le regroupement de plusieurs images dans un seul espace de texture, qui peuvent réduire une partie des pertes de stockage.