Réponses:
La règle est que pour calculer la taille de mipmap suivante, vous divisez par deux et arrondissez à l'entier le plus proche (à moins qu'il ne soit arrondi à 0, auquel cas, c'est 1 à la place). Par exemple, une image 57x43 aurait des mipmaps comme:
level 0: 57x43
level 1: 28x21
level 2: 14x10
level 3: 7x5
level 4: 3x2
level 5: 1x1
Le mappage UV, la sélection LOD et le filtrage fonctionnent de la même manière que pour les tailles de texture à deux.
Générer des mips de bonne qualité pour une texture sans puissance de deux est un peu plus délicat, car vous ne pouvez pas simplement faire la moyenne d'une boîte 2x2 de pixels pour sous-échantillonner dans tous les cas. Cependant, un filtre de boîte 2x2 n'était pas génial au début, donc l'utilisation d'un meilleur filtre de sous-échantillonnage tel que Mitchell-Netravali est recommandée quelle que soit la taille de la texture.
Une façon de penser est que les cartes graphiques implémentent souvent des textures non-power-of-2 simplement en les remplissant jusqu'à ce qu'elles soient une puissance de 2 dans chaque direction. Cela fait que la plupart des choses "fonctionnent": la mosaïque et le filtrage matériel, par exemple. La seule chose qui doit changer est la conversion des coordonnées de texture en coordonnées d'image.
S'il est implémenté comme ça, il est évident de faire du mipmapping: rien ne change. Même si vous avez un GPU qui prend en charge les textures sans puissance de 2 sans remplissage, les niveaux de mipmap se retrouveraient avec du "remplissage". par exemple une texture 3x3 aurait une texture 2x2 comme lod 1.