Am Anfang war Licht
Um genau zu sein, OpenGL-Beleuchtung, die bestimmte mathematische Operationen spezifizierte, die auf ein Fragment angewendet werden sollten, die dann mit Texturen kombiniert wurden, um eine endgültige Farbe abzuleiten.
Und dann war da noch Quake
Quake hat diese Art der Beleuchtung für viele seiner Objekte nicht verwendet. Stattdessen wurde eine zweite Textur zur Darstellung der Beleuchtung verwendet, die mit der Objekttextur multipliziert (oder mit dieser "moduliert") wurde, um eine endgültige Farbe abzuleiten.
Die damalige Hardware unterstützte dies jedoch nicht in einem einzigen Vorgang. Also musste Quake seine Szenenobjekte zweimal zeichnen:
- Zeichnen Sie alles einmal, um die Basistexturen festzulegen.
- Stellen Sie einen modulierten Mischmodus ein.
- Zeichnen Sie alles ein zweites Mal, um die Beleuchtungstexturen anzuwenden.
Das war natürlich langsam; Es musste nicht nur die gesamte Geometrie zweimal transformiert und abgeschnitten werden (was damals eine CPU-Operation war), sondern jedes Pixel auf dem Bildschirm wurde beim Rendern zweimal berührt.
Geben Sie Multitexture ein
Multitexture war die Lösung für dieses Problem und wurde ursprünglich über die Erweiterung GL_SGIS_multitexture verfügbar gemacht, die nur auf bestimmten 3DFX-Consumer-Karten vorhanden war. Ursprünglich war es nur erlaubt, zwei Texturen zu mischen (und mit einem begrenzten Satz von Mischmodi).
Um aus der originalen GLQuake-Readme-Datei zu zitieren :
GL_SGIS_multitexture
Die Unterstützung von Multitextures ermöglicht es bestimmter Hardware, die Welt in einem Durchgang anstelle von zwei zu rendern. GLQuake verwendet zwei Durchgänge, einen für die Welttexturen und den zweiten für die Lightmaps, die auf den Texturen gemischt werden. Auf einigen Hardwarekomponenten mit einer von GL_SIGS_multitexture unterstützten OpenGL-Implementierung kann dies in einem Durchgang erfolgen. Auf Hardware, die dies unterstützt, wird die Bildrate um 60% bis 100% erhöht. Derzeit unterstützen nur 3DFX-Dual-TMU-Karten (wie der Obsidian 2220) diese Erweiterung, andere Hardware wird jedoch bald folgen.
Es ist wichtig, sich daran zu erinnern, dass zu diesem Zeitpunkt Effekte wie normales Mapping, jede andere Art von Beleuchtung pro Pixel, sogar Shader usw. einfach nicht existierten (nun ja , aber hauptsächlich nur in wissenschaftlichen Arbeiten und Forschungsprojekten, und wurden für die Verwendung beim Echtzeit-Rendering nicht als brauchbar angesehen.
Und so bis zur Gegenwart
Von hier aus ist es so ziemlich wie in den anderen Antworten beschrieben. Multitexturing wurde im Laufe der Zeit zu einer Standardfunktion, wobei mehr Mischmodi verfügbar wurden und schließlich beliebigem Shader-Code Platz machten.
Für die Zwecke Ihrer Frage ist jedoch Folgendes wichtig: Am Anfang bestand die Standardfunktionalität darin, beim Rendern jeweils nur eine Textur verwenden zu können. In der Lage zu sein, mehr als eine zu verwenden, war eine zusätzliche Funktionalität, die nur von High-End-Hardware unterstützt wurde, und daher war ein Name erforderlich. Dieser Name hätte "Dual-Texturing" sein können (da die ersten Implementierungen nur zwei Texturen unterstützten), aber mit einem Blick auf die Zukunft wurde der Name "Multitexture" gewählt.
Weitere Informationen zur Geschichte all dessen finden Sie hier und eine gute historische Beschreibung (des breiteren Kontextes und der darin gespielten Rolle der Multitexturierung) in dieser Programmers.SE- Antwort.