Freigeben über


Texturadressierungsmodi

Ihre Direct3D-Anwendung kann texturkoordinaten jedem Scheitelpunkt eines beliebigen Grundtyps zuweisen. In der Regel befinden sich die U- und v-Texturkoordinaten, die Sie einem Scheitelpunkt zuweisen, im Bereich von einschließlich 0,0 bis 1,0. Durch Zuweisen von Texturkoordinaten außerhalb dieses Bereichs können Sie jedoch bestimmte spezielle Textureffekte erstellen. .

Sie steuern, was Direct3D mit Texturkoordinaten außerhalb des Bereichs [0.0, 1.0] ausführt, indem Sie den Texturadressierungsmodus festlegen. So können Sie beispielsweise den Texturadressierungsmodus so festlegen, dass eine Textur über einen Grundtyp verteilt wird.

Direct3D ermöglicht Anwendungen das Ausführen des Texturumbruchs. Siehe Texturumbruch.

Durch die effektive Aktivierung des Texturumbruchs werden Texturkoordinaten außerhalb des Bereichs [0,0, 1,0] ungültig, und das Verhalten für das Rastern solcher delinquent-Texturkoordinaten ist in diesem Fall nicht definiert. Wenn der Texturumbruch aktiviert ist, werden keine Texturadressierungsmodi verwendet. Achten Sie darauf, dass Ihre Anwendung keine Texturkoordinaten unter 0,0 oder höher als 1,0 angibt, wenn der Texturumbruch aktiviert ist.

Zusammenfassung der Texturadressierungsmodi

Texturadressierungsmodus Beschreibung
Verpacken Wiederholt die Textur auf jeder ganzzahligen Verbindung.
Spiegel Spiegelt die Textur an jeder ganzzahligen Grenze.
Clamp Klemmt die Texturkoordinaten an den Bereich [0,0, 1,0]; Der Klammermodus wendet die Textur einmal an und verschmiert dann die Farbe der Randpixel.
Rahmenfarbe Verwendet eine beliebige Rahmenfarbe für alle Texturkoordinaten außerhalb des Bereichs von 0,0 bis einschließlich 1,0.

 

Umbrechen des Texturadressmodus

Der Textumbruch-Texturadressenmodus bewirkt, dass Direct3D die Textur auf jeder ganzzahligen Verbindung wiederholt.

Angenommen, Ihre Anwendung erstellt einen quadratischen Grundtyp und gibt Texturkoordinaten von (0,0,0,0), (0,0,3.0), (3.0,3.0) und (3.0,0,0) an. Das Festlegen des Texturadressierungsmodus auf "Umbruch" führt dazu, dass die Textur dreimal in u- und v-Richtungen angewendet wird, wie in der folgenden Abbildung dargestellt.

Abbildung einer Gesichtstextur, die in die U-Richtung und die v-Richtung eingeschlossen ist

Kontrast dazu mit dem folgenden Spiegeltexturadressenmodus.

Spiegeltextadressmodus

Der Spiegeltexturadressenmodus bewirkt, dass Direct3D die Textur an jeder ganzzahligen Grenze spiegelt.

Angenommen, Ihre Anwendung erstellt einen quadratischen Grundtyp und gibt Texturkoordinaten von (0,0,0,0), (0,0,3.0), (3.0,3.0) und (3.0,0,0) an. Wenn Sie den Texturadressierungsmodus auf "Spiegel" festlegen, wird die Textur dreimal in u- und v-Richtungen angewendet. Jede andere Zeile und Spalte, auf die sie angewendet wird, ist ein Spiegelbild der vorherigen Zeile oder Spalte, wie in der folgenden Abbildung dargestellt.

Abbildung von Spiegelbildern in einem 3x3-Raster

Kontrastt dies mit dem vorherigen Umbruchtextadressmodus.

Klammertextadressmodus

Der Texturen-Adressmodus "Clamp" bewirkt, dass Direct3D die Texturkoordinaten an den Bereich [0,0, 1,0] einklammert; Der Klammermodus wendet die Textur einmal an und verschmiert dann die Farbe der Randpixel.

Angenommen, Ihre Anwendung erstellt einen quadratischen Grundtyp und weist den Scheitelpunkten (0,0,0,0), (0,0,3.0), (3.0,3.0) und (3.0,0,0) den Scheitelpunkten des Grundtyps zu. Wenn Sie den Texturadressierungsmodus auf "Clamp" festlegen, wird die Textur einmal angewendet. Die Pixelfarben oben in den Spalten und das Ende der Zeilen werden nach oben und rechts vom Grundtyp erweitert.

Die folgende Abbildung zeigt eine Klammertextur.

Abbildung einer Textur und einer Klammertextur

Zierrahmentext-Adressmodus

Der Adressmodus "Rahmenfarbe" bewirkt, dass Direct3D eine beliebige Farbe verwendet, die als Rahmenfarbe bezeichnet wird, für alle Texturkoordinaten außerhalb des Bereichs von 0,0 bis einschließlich 1,0.

In der folgenden Abbildung gibt die Anwendung an, dass die Textur mithilfe eines roten Rahmens auf den Grundtyp angewendet wird.

Abbildung einer Textur und einer Textur mit einem roten Rahmen

Geräteeinschränkungen

Obwohl das System im Allgemeinen Texturkoordinaten außerhalb des Bereichs von 0,0 und 1,0 zulässt, beeinflussen Hardwareeinschränkungen häufig, wie weit außerhalb dieses Bereichs Texturkoordinaten sein können. Ein Renderinggerät kommuniziert den Grenzwert für den gesamten Vom Gerät zulässigen Texturkoordinaten, wenn Sie die Funktionen des Geräts abrufen.

Wenn dieser Wert beispielsweise 128 ist, müssen die Eingabetextkoordinaten im Bereich -128,0 bis +128,0 beibehalten werden. Das Übergeben von Scheitelpunkten mit Texturkoordinaten außerhalb dieses Bereichs ist ungültig. Die gleiche Einschränkung gilt für die Texturkoordinaten, die aufgrund der automatischen Texturkoordinatengenerierung und Texturkoordinatentransformationen generiert werden.

Die Einschränkungen für wiederholte Texturen können von der Größe der Textur abhängen, die von den Texturkoordinaten indiziert wird. In diesem Fall beträgt die Annahme, dass die Texturdimension 32 ist, und der vom Gerät zulässige Bereich der Texturkoordinaten 512 ist, würde daher der tatsächliche gültige Texturkoordinatenbereich 512/32 = 16 sein, sodass die Texturkoordinaten für dieses Gerät innerhalb des Bereichs von -16,0 bis +16,0 liegen müssen.

Texturen