Coordonnées de texture générées automatiquement (Direct3D 9)
Le système peut utiliser la position de l’espace de la caméra transformée ou la normale d’un vertex comme coordonnées de texture, ou il peut calculer les trois vecteurs d’éléments utilisés pour traiter une carte d’environnement cubique. Comme les coordonnées de texture que vous spécifiez explicitement dans un sommet, vous pouvez utiliser des coordonnées de texture générées automatiquement comme entrée pour les transformations de coordonnées de texture.
Les coordonnées de texture générées automatiquement peuvent réduire considérablement la bande passante requise pour les données geometry en éliminant le besoin de coordonnées de texture explicites dans le format de vertex. Dans de nombreux cas, les coordonnées de texture générées par le système peuvent être utilisées avec des transformations pour produire des effets spéciaux. Bien sûr, il s’agit d’une fonctionnalité à usage spécial, et vous utiliserez des coordonnées de texture explicites pour de nombreuses occasions.
Configuration des coordonnées de texture générées automatiquement
En C++, le D3DTSS_TEXCOORDINDEX’état de l’étape de texture (à partir du type énuméré D3DTEXTURESTAGESTATETYPE ) contrôle la façon dont le système génère les coordonnées de texture.
Normalement, cet état indique au système d’utiliser un ensemble particulier de coordonnées de texture encodées dans le format de vertex. Lorsque vous incluez les indicateurs D3DTSS_TCI_CAMERASPACENORMAL, D3DTSS_TCI_CAMERASPACEPOSITION ou D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR dans la valeur que vous attribuez à cet état, le comportement système est très différent. Si l’un de ces indicateurs est présent, la phase de texture ignore les coordonnées de texture dans le format de vertex au profit des coordonnées générées par le système. Les significations de chaque indicateur sont indiquées dans la liste suivante.
D3DTSS_TCI_CAMERASPACENORMAL
Utilisez le vertex normal, transformé en espace de caméra, comme coordonnées de texture d’entrée.
D3DTSS_TCI_CAMERASPACEPOSITION
Utilisez la position du vertex, transformée en espace de caméra, comme coordonnées de texture d’entrée.
D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR
Utilisez le vecteur de réflexion, transformé en espace de caméra, comme coordonnées de texture d’entrée. Le vecteur de réflexion est calculé à partir de la position de vertex d’entrée et du vecteur normal.
Les indicateurs d’index de coordonnées de texture s’excluent mutuellement. Cet exemple utilise :
- Position du vertex (dans l’espace caméra) comme coordonnées de texture d’entrée pour cette étape de texture
- Mode wrap défini dans l’état de rendu D3DRENDERSTATE_WRAP1
// Assume d3dDevice is a valid pointer to an IDirect3DDevice9 interface
d3dDevice->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX,
D3DTSS_TCI_CAMERASPACEPOSITION | 1);
Les coordonnées de texture générées automatiquement sont les plus utiles en tant que valeurs d’entrée pour une transformation de coordonnées de texture, ou pour éliminer la nécessité pour votre application de calculer des vecteurs à trois éléments pour les cartes d’environnement cubique.
Le mappage de sphères utilise une carte de texture précalculée (au moment du modèle) qui contient l’environnement entier, tel qu’il est reflété par une sphère chromée. Direct3D a une fonctionnalité de génération de coordonnées de texture utilisant l’état de rendu D3DTSS_TCI_CAMERASPACENORMAL, qui prend la normale du sommet dans l’espace caméra et le place à travers une transformation de texture pour générer des coordonnées de texture.
Rubriques connexes