Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das System kann die transformierte Kameraraumposition oder die Normale aus einem Scheitelpunkt als Texturkoordinaten verwenden oder die drei Elementvektoren berechnen, die für die Adressierung einer kubischen Umgebungszuordnung verwendet werden. Wie Texturkoordinaten, die Sie explizit in einem Scheitelpunkt angeben, können Sie automatisch generierte Texturkoordinaten als Eingabe für Texturkoordinatentransformationen verwenden.
Automatisch generierte Texturkoordinaten können die für Geometriedaten erforderliche Bandbreite erheblich reduzieren, indem die Notwendigkeit expliziter Texturkoordinaten im Vertexformat eliminiert wird. In vielen Fällen können die vom System generierten Texturkoordinaten mit Transformationen verwendet werden, um Spezialeffekte zu erzeugen. Natürlich ist dies ein spezielles Feature, und Sie verwenden explizite Texturkoordinaten für viele Gelegenheiten.
Konfigurieren automatisch generierter Texturkoordinaten
In C++ steuert der D3DTSS_TEXCOORDINDEX Texturphasenzustand (aus dem D3DTEXTURESTAGESTATETYPE aufgezählten Typ) die Art und Weise, wie das System Texturkoordinaten generiert.
Normalerweise weist dieser Zustand das System an, einen bestimmten Satz von Texturkoordinaten zu verwenden, die im Vertexformat codiert sind. Wenn Sie die D3DTSS_TCI_CAMERASPACENORMAL, D3DTSS_TCI_CAMERASPACEPOSITION oder D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR Flags in den Wert einschließen, den Sie diesem Zustand zuweisen, unterscheidet sich das Systemverhalten ganz anders. Wenn eines dieser Flags vorhanden ist, ignoriert die Texturstufe die Texturkoordinaten innerhalb des Vertexformats zugunsten von Koordinaten, die das System generiert. Die Bedeutungen für jedes Kennzeichen werden in der folgenden Liste angezeigt.
D3DTSS_TCI_CAMERASPACENORMAL
Verwenden Sie als Eingabetextkoordinaten den Vertexnormal, der in den Kamerabereich transformiert wird.
D3DTSS_TCI_CAMERASPACEPOSITION
Verwenden Sie die Vertexposition, transformiert in kamerabereich, als Eingabetextkoordinaten.
D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR
Verwenden Sie den Spiegelungsvektor, transformiert in kamerabereich, als Eingabetextkoordinaten. Der Spiegelungsvektor wird aus der Eingabevertexposition und dem normalen Vektor berechnet.
Die Texturkoordinatenindexkennzeichnungen schließen sich gegenseitig aus. In diesem Beispiel wird Folgendes verwendet:
- Die Vertexposition (im Kamerabereich) als Eingabetextkoordinaten für diese Texturstufe
- Der im D3DRENDERSTATE_WRAP1 Renderzustand festgelegte Umbruchmodus
// Assume d3dDevice is a valid pointer to an IDirect3DDevice9 interface
d3dDevice->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX,
D3DTSS_TCI_CAMERASPACEPOSITION | 1);
Automatisch generierte Texturkoordinaten sind am nützlichsten als Eingabewerte für eine Texturkoordinatentransformation oder um die Notwendigkeit zu vermeiden, dass Ihre Anwendung drei Elementvektoren für kubische Umgebungszuordnungen berechnet.
Die Kugelzuordnung verwendet eine vorkompilierte Texturzuordnung (zur Modellzeit), die die gesamte Umgebung enthält, wie sie von einer Chromkugel reflektiert wird. Direct3D verfügt über ein Feature zur Texturkoordinatengenerierung mithilfe des Renderzustands D3DTSS_TCI_CAMERASPACENORMAL, das die Normalität des Scheitelpunkts im Kamerabereich verwendet und durch eine Texturtransformation platziert, um Texturkoordinaten zu generieren.
Verwandte Themen