Wenn ich mehrere Texturen auf ein Netz anwende, wie beim Bump-Mapping, binde ich die Texturen normalerweise an die ersten festen Textureinheiten, z. B.: Diffus = Einheit 0, Bump = Einheit 1, spiegelnd = Einheit 2, und verwende diese dann weiterhin für jede unterschiedliches Netz mit unterschiedlichen Texturen. Aber ich habe mich immer gefragt, warum glActiveTexture
so viele Textureinheiten unterstützt werden (im vorherigen Link steht mindestens 80).
Daher kam mir der Gedanke, dass eine Möglichkeit zum Verwalten von Texturen darin besteht, unterschiedliche Texturen an jede verfügbare Einheit zu binden und diese aktiviert zu lassen, indem lediglich der einheitliche Sampler-Index aktualisiert wird. Dies sollte die Renderleistung verbessern, indem die Anzahl der Texturschalter verringert wird. Wenn Sie weniger Texturen als die maximalen Textureinheiten haben, müssen Sie niemals eine Textur lösen.
Ist dies die Standardpraxis für OpenGL-Echtzeitanwendungen (ich glaube, dies gilt auch für D3D)? Und gibt es nicht offensichtliche Auswirkungen auf die Leistung dieses Ansatzes? Speicheraufwand vielleicht?