Kleiner Tipp wozu es sich extrem lohnt die MIP maps über Shader selber zu generieren:
In einer Präsentation von NVIDIA habe ich mal gelesen, dass es viel effizienter ist, eine große 2D Array Texture zu binden, anstatt immer wieder einzelne 2D Texturen zu binden und unbinden.
D.h. man soll möglichst alle Texturen der selben Größe in eine große Array Texture laden, weil die Texture-Bindings einen ernsthaften Flaschenhals darstellen.
Es ist allerdings ein Problem, wenn man nur einen einzigen Layer in dieser Array Texture aktuallisieren will und dann mit "glGenerateMipmap" die MIP-maps neu generieren will.
Denn "glGenerateMipmap" generiert die MIP maps für alle Layer in der Array Texture neu.
Bei bereits relativ geringer Anzahl Slices (128+) ist das dann extrem langsam.
Ich habe in meiner Anwendung eine Array Texture mit 'maximaler' größer (1024 Slices), wenn ich "glGenerateMipmap" aufrufe, bricht die Anwendung von 1500 FPS auf 15 FPS runter.
Mit meiner eigenen MIP-map generierung fällt die Anwendung nur noch auf ca. 900 FPS runter. Ist also noch nicht ganz optimal aber schon mal deutlich besser ;-)