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.
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.
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.
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.
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.
Verwandte Themen