Multitexturing: Unterschied zwischen den Versionen
K (ein sinnloses auch entfernt. Textureinheiten vereinheitlicht) |
|||
(11 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
== Was ist Multitexturing? == | == Was ist Multitexturing? == | ||
− | Multitexturing bietet die Möglichkeit, wie der Name bereits vermuten lässt, | + | Multitexturing bietet die Möglichkeit, wie der Name bereits vermuten lässt, mehrere Texturen auf ein Primitiv zu zeichnen. |
== Seit wann wird Multitexturing unterstützt? == | == Seit wann wird Multitexturing unterstützt? == | ||
− | Damit Multitexturing verwendet werden kann muss die Grafikkarte über mindestens 2 Textureneinheiten verfügen. Seit der Riva TNT wird Multitexturing von allen Grafikkarten unterstützt und man kann inzwischen davon ausgehen dass Multitexturing auf nahezu jedem Rechner verwendet werden kann. | + | Damit Multitexturing verwendet werden kann muss die Grafikkarte über mindestens 2 Textureneinheiten verfügen ( Die Anzahl der Textureinheiten eines Grafikchips bestimmt, wieviele Texturen auf einmal auf das Primitiv gezeichnet werden kann. ). Seit der Riva TNT wird Multitexturing von allen Grafikkarten unterstützt und man kann inzwischen davon ausgehen dass Multitexturing auf nahezu jedem Rechner verwendet werden kann. |
+ | |||
+ | Auf der folgenden Internetseite kann man nachschauen, wieviele Textureinheiten die entsprechenden Grafikkarten besitzen: | ||
+ | http://delphi3d.net/hardware/listreports.php (unter "Multitexture" -> "Texture Units") | ||
== Wo findet Multitexturing Anwendung? == | == Wo findet Multitexturing Anwendung? == | ||
− | + | [[Bild:Detailtex.jpg|right|300px|thumb|In der linken Bildhälfte wurde eine Detailmap per Multitexturing aufgebracht, in der rechten Hälfte fehlt diese.]] | |
− | In heutigen Spielen ist Multitexturing ein unverzichtbares Mittel geworden. Seine häufigste Anwendung findet Multitexturing beim so genannten [[Lightmapping]] und dem [[Detailmapping]]. | + | In heutigen Spielen ist Multitexturing ein unverzichtbares Mittel geworden. Seine häufigste Anwendung findet Multitexturing beim so genannten [[Lightmaps|Lightmapping]] und dem [[Detailmapping]]. |
== Wichtige Funktionen == | == Wichtige Funktionen == | ||
Zeile 15: | Zeile 18: | ||
Aufgrund der historischen Entwicklung gibt es mehrere Funktionen und Konstanten mit unterschiedlichem Namen, die jedoch dieselbe Wirkung erzielen. In heutigen Anwendungen sollte auf die ARB-Variante besser verzichtet werden. | Aufgrund der historischen Entwicklung gibt es mehrere Funktionen und Konstanten mit unterschiedlichem Namen, die jedoch dieselbe Wirkung erzielen. In heutigen Anwendungen sollte auf die ARB-Variante besser verzichtet werden. | ||
− | Bevor man in einem Programm Multitexturing verwendet, sollte man sicherheitshalber prüfen, ob dieses von der genutzten Grafikkarte überhaupt unterstützt wird. Die einfachste Möglichkeit hierfür ist abzufragen, wie viele Textureinheiten unterstützt werden. Dies kann mit Hilfe des Befehls [[ | + | Bevor man in einem Programm Multitexturing verwendet, sollte man sicherheitshalber prüfen, ob dieses von der genutzten Grafikkarte überhaupt unterstützt wird. Die einfachste Möglichkeit hierfür ist abzufragen, wie viele Textureinheiten unterstützt werden. Dies kann mit Hilfe des Befehls [[glGetIntegerv]] und dem Token GL_MAX_TEXTURE_UNITS oder GL_MAX_TEXTURE_UNITS_ARB geschehen. |
Mit dem Befehl [[glActiveTexture]] bzw. [[glActiveTextureARB]] kann die gewünschte Textureinheit aktiviert werden. Nach dem Aufruf dieser Funktion beziehen sich alle Befehle die auf die Textur einwirken auf die gewählte Textureneinheit. | Mit dem Befehl [[glActiveTexture]] bzw. [[glActiveTextureARB]] kann die gewünschte Textureinheit aktiviert werden. Nach dem Aufruf dieser Funktion beziehen sich alle Befehle die auf die Textur einwirken auf die gewählte Textureneinheit. | ||
− | Die Texturkoordinaten werden beim Multitexturing nicht mit dem Befehl [[glTexCoord]] sondern mit dem Befehl [[ | + | Mit Hilfe der Funktion [[glTexEnv]] kann bestimmt werden, wie die Texturen kombiniert werden sollen. |
+ | |||
+ | Die Texturkoordinaten werden beim Multitexturing nicht mit dem Befehl [[glTexCoord]] sondern mit dem Befehl [[glMultiTexCoord]] bzw [[glMultiTexCoordARB]] übergeben. | ||
+ | |||
+ | == Siehe Auch == | ||
+ | * Einen Beispielquellcode für die Anwendung von Multitexturing: [[Detailmapping#Implementation|Detailmapping]] | ||
+ | * Tutorial zum Einsatz von Multitexturing: [[Tutorial_MultiTexturing|Tutorial]] | ||
+ | |||
+ | |||
+ | |||
+ | [[Kategorie:Anleitung]] [[Kategorie:Technik_oder_Algorithmus]] |
Aktuelle Version vom 9. November 2006, 17:29 Uhr
Inhaltsverzeichnis
Was ist Multitexturing?
Multitexturing bietet die Möglichkeit, wie der Name bereits vermuten lässt, mehrere Texturen auf ein Primitiv zu zeichnen.
Seit wann wird Multitexturing unterstützt?
Damit Multitexturing verwendet werden kann muss die Grafikkarte über mindestens 2 Textureneinheiten verfügen ( Die Anzahl der Textureinheiten eines Grafikchips bestimmt, wieviele Texturen auf einmal auf das Primitiv gezeichnet werden kann. ). Seit der Riva TNT wird Multitexturing von allen Grafikkarten unterstützt und man kann inzwischen davon ausgehen dass Multitexturing auf nahezu jedem Rechner verwendet werden kann.
Auf der folgenden Internetseite kann man nachschauen, wieviele Textureinheiten die entsprechenden Grafikkarten besitzen: http://delphi3d.net/hardware/listreports.php (unter "Multitexture" -> "Texture Units")
Wo findet Multitexturing Anwendung?
In heutigen Spielen ist Multitexturing ein unverzichtbares Mittel geworden. Seine häufigste Anwendung findet Multitexturing beim so genannten Lightmapping und dem Detailmapping.
Wichtige Funktionen
Aufgrund der historischen Entwicklung gibt es mehrere Funktionen und Konstanten mit unterschiedlichem Namen, die jedoch dieselbe Wirkung erzielen. In heutigen Anwendungen sollte auf die ARB-Variante besser verzichtet werden.
Bevor man in einem Programm Multitexturing verwendet, sollte man sicherheitshalber prüfen, ob dieses von der genutzten Grafikkarte überhaupt unterstützt wird. Die einfachste Möglichkeit hierfür ist abzufragen, wie viele Textureinheiten unterstützt werden. Dies kann mit Hilfe des Befehls glGetIntegerv und dem Token GL_MAX_TEXTURE_UNITS oder GL_MAX_TEXTURE_UNITS_ARB geschehen.
Mit dem Befehl glActiveTexture bzw. glActiveTextureARB kann die gewünschte Textureinheit aktiviert werden. Nach dem Aufruf dieser Funktion beziehen sich alle Befehle die auf die Textur einwirken auf die gewählte Textureneinheit.
Mit Hilfe der Funktion glTexEnv kann bestimmt werden, wie die Texturen kombiniert werden sollen.
Die Texturkoordinaten werden beim Multitexturing nicht mit dem Befehl glTexCoord sondern mit dem Befehl glMultiTexCoord bzw glMultiTexCoordARB übergeben.
Siehe Auch
- Einen Beispielquellcode für die Anwendung von Multitexturing: Detailmapping
- Tutorial zum Einsatz von Multitexturing: Tutorial