Textur adressierungsmodi (Direct3D 9)

Ihre Direct3D-Anwendung kann jedem Scheitelpunkt eines beliebigen Primitiven Texturkoordinaten zuweisen. Weitere Informationen finden Sie unter Texturkoordinaten (Direct3D 9). In der Regel liegen die u- und v-Texturkoordinaten, die Sie einem Scheitelpunkt zuweisen, im Bereich von 0,0 bis einschließlich 1,0. Durch zuweisen von Texturkoordinaten außerhalb dieses Bereichs können Sie jedoch bestimmte spezielle Textureffekte erstellen.

Sie steuern, was Direct3D mit Texturkoordinaten macht, die sich außerhalb des Bereichs [ von 0,0, 1,0 befinden, indem Sie den ] Textur adressierungsmodus festlegen. Beispielsweise kann Ihre Anwendung den Textur-Adressierungsmodus so festlegen, dass eine Textur über eine primitive Struktur angeordnet wird.

Direct3D ermöglicht Anwendungen das Durchführen von Texturumbruch. Es ist wichtig zu beachten, dass das Festlegen des Textur adressierungsmodus auf D3DTADDRESS WRAP nicht mit dem Durchführen von _ Texturumbruch identisch ist. Wenn Sie den Textur adressierungsmodus auf D3DTADDRESS WRAP festlegen, werden mehrere Kopien der Quelltextur auf die aktuelle Primitive angewendet, und das Aktivieren des Texturumbruchs ändert, wie das System texturierte Polygone _ rastert. Weitere Informationen finden Sie unter Texturumbruch (Direct3D 9).

Durch aktivieren der Texturumbruch werden Texturkoordinaten außerhalb des Bereichs [ von 0,0, 1,0 ungültig, und das Verhalten zum Rastern solcher Texturkoordinaten ist in diesem Fall nicht ] definiert. Wenn Texturumbruch aktiviert ist, werden keine Textur-Adressierungsmodi verwendet. Achten Sie darauf, dass Ihre Anwendung keine Texturkoordinaten angeben, die niedriger als 0,0 oder höher als 1,0 sind, wenn Texturumbruch aktiviert ist.

Festlegen des Adressierungsmodus

Sie können Textur adressierungsmodi für einzelne Texturphasen festlegen, indem Sie die IDirect3DDevice9::SetSamplerState-Methode aufrufen. Geben Sie den gewünschten Texturphasenbezeichner im Sampler-Parameter an. Legen Sie den Type-Parameter auf die Werte D3DSAMP _ ADDRESSU, D3DSAMP ADDRESSV oder _ D3DSAMP ADDRESSW fest, um den _ u-, v- oder w-Adressierungsmodus einzeln zu aktualisieren. Der Value-Parameter bestimmt, welcher Modus festgelegt wird. Dies kann ein beliebiger Member des aufzählten D3DTEXTUREADDRESS-Typs sein. Um den aktuellen Texturadressenmodus für eine Texturphase abzurufen, rufen Sie IDirect3DDevice9::GetSamplerStatemithilfe der D3DSAMP _ ADDRESSU-, D3DSAMP _ ADDRESSV- oder D3DSAMP ADDRESSW-Member der _ D3DSAMPLERSTATETYPE-Enumeration auf, um den Adressmodus zu identifizieren, über den Sie Informationen erhalten möchten.

Geräteeinschränkungen

Obwohl das System im Allgemeinen Texturkoordinaten außerhalb des Bereichs von 0,0 und 1,0 zulässt, wirken sich Hardwareeinschränkungen häufig darauf aus, wie weit außerhalb dieser Bereichstexturkoordinaten liegen können. Ein Renderinggerät kommuniziert diesen Grenzwert im MaxTextureRepeat-Member der D3DCAPS9-Struktur, wenn Sie Gerätefunktionen abrufen. Der Wert in diesem Member beschreibt den vollständigen Bereich der Texturkoordinaten, die vom Gerät zugelassen werden. Wenn dieser Wert beispielsweise 128 ist, müssen die Eingabetexturkoordinaten im Bereich von -128,0 bis +128,0 beibehalten werden. Das Übergeben von Scheiteltices mit Texturkoordinaten außerhalb dieses Bereichs ist ungültig. Die gleiche Einschränkung gilt für die Texturkoordinaten, die als Ergebnis der automatischen Texturkoordinatengenerierung und Texturkoordinatentransformationen generiert werden.

Die Interpretation von MaxTextureRepeat wird auch vom D3DPTEXTURECAPS _ TEXREPEATNOTSCALEDBYSIZE-Funktionsbit beeinflusst. Wenn dieses Bit festgelegt ist, wird der Wert im MaxTextureRepeat-Member genau wie beschrieben verwendet. Wenn D3DPTEXTURECAPS TEXREPEATNOTSCALEDBYSIZE jedoch nicht festgelegt ist, hängen Einschränkungen bei der Textur wiederholen von der Größe der Textur ab, die von den Texturkoordinaten _ indiziert wird. In diesem Fall muss MaxTextureRepeat um die aktuelle Texturgröße auf der größten Detailebene skaliert werden, um den gültigen Texturkoordinatenbereich zu berechnen. Bei einer Texturdimension von 32 und MaxTextureRepeat von 512 beträgt der tatsächliche gültige Texturkoordinatenbereich beispielsweise 512/32 = 16, sodass die Texturkoordinaten für dieses Gerät im Bereich von -16,0 bis +16,0 liegen müssen.

Weitere Informationen zu den Textur adressierungsmodi finden Sie in den folgenden Themen.

Grundlegende Texturierungskonzepte