Ao aplicar várias texturas a uma malha, como no mapeamento de bump, costumo vincular as texturas às primeiras unidades fixas de textura, por exemplo: difusa = unidade 0, bump = unidade 1, especular = unidade 2, e continuo reutilizando essas para cada malha diferente com diferentes texturas. Mas sempre me perguntei por que glActiveTexture
suporta tantas unidades de textura (no link anterior, diz pelo menos 80).
Portanto, ocorreu-me que uma maneira possível de gerenciar texturas é vincular texturas distintas a cada unidade disponível e deixá-las ativadas, apenas atualizando o índice do amostrador uniforme. Isso deve melhorar a renderização, reduzindo o número de opções de texturas. Se você tiver menos texturas do que as unidades máximas de textura, nunca precisará desvincular uma textura.
Essa é uma prática padrão em aplicativos OpenGL em tempo real (acredito que isso também se aplica ao D3D)? E há implicações não óbvias no desempenho de adotar essa abordagem? Sobrecarga de memória, talvez?