Lors de l'application de plusieurs textures à un maillage, comme pour le bump-mapping, je lie généralement les textures aux premières unités de texture fixes, par exemple: diffuse = unité 0, bump = unité 1, spéculaire = unité 2, puis continue de les réutiliser pour chacune maille différente avec différentes textures. Mais je me suis toujours demandé pourquoi glActiveTexture
prend en charge autant d'unités de texture (dans le lien précédent, il est dit au moins 80).
Il m'est donc venu à l'esprit qu'une façon possible de gérer les textures était de lier des textures distinctes à chaque unité disponible et de les laisser activées, en mettant simplement à jour l'index d'échantillonneur uniforme. Cela devrait améliorer les performances de rendu en réduisant le nombre de commutateurs de textures. Si vous avez moins de textures que les unités de texture maximales, vous n'avez jamais à délier une texture.
Est-ce une pratique standard sur les applications OpenGL en temps réel (je pense que cela s'applique également au D3D)? Et y a-t-il des implications non évidentes sur les performances de cette approche? Des frais généraux de mémoire peut-être?