Partager via


Coordonnées de texture générées automatiquement (Direct3D 9)

Le système peut utiliser la position de l’espace photo transformé ou la normale d’un sommet en tant que coordonnées de texture, ou il peut calculer les trois vecteurs d’élément utilisés pour traiter une carte d’environnement cube. 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 la nécessité de coordonnées de texture explicites au 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 allez utiliser des coordonnées de texture explicites pour de nombreuses occasions.

Configuration des coordonnées de texture générées automatiquement

En C++, l’état d’étape de texture D3DTSS_TEXCOORDINDEX (à partir du type énuméré D3DTEXTURESTAGESTATETYPE) contrôle la façon dont le système génère des coordonnées de texture.

Normalement, cet état indique au système d’utiliser un ensemble particulier de coordonnées de texture encodées au format de vertex. Lorsque vous incluez les D3DTSS_TCI_CAMERASPACENORMAL, D3DTSS_TCI_CAMERASPACEPOSITION ou D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR indicateurs dans la valeur que vous affectez à cet état, le comportement du système est assez différent. Si l’un de ces indicateurs est présent, l’étape de texture ignore les coordonnées de texture au format de vertex en faveur des coordonnées générées par le système. Les significations de chaque indicateur sont affichées dans la liste suivante.

  • D3DTSS_TCI_CAMERASPACENORMAL

    Utilisez le sommet normal, transformé en espace de caméra, comme coordonnées de texture d’entrée.

  • D3DTSS_TCI_CAMERASPACEPOSITION

    Utilisez la position de vertex, transformée en espace de caméra, en tant que 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 du vertex d’entrée et du vecteur normal.

Les indicateurs d’index de coordonnées de texture s’excluent mutuellement. Cet exemple utilise :

  • Position de vertex (dans l’espace caméra) en tant que coordonnées de texture d’entrée pour cette étape de texture
  • Le 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 mappages d’environnement cube.

Le mappage de sphère utilise une carte de texture précomputée (au moment du modèle) qui contient l’ensemble de l’environnement tel qu’il est reflété par une sphère chrome. Direct3D a une fonctionnalité de génération de coordonnées de texture à l’aide de l’état de rendu D3DTSS_TCI_CAMERASPACENORMAL, qui prend la normale du vertex dans l’espace de caméra et le place dans une transformation de texture pour générer des coordonnées de texture.

traitement des coordonnées de texture

transformations de coordonnées de texture (Direct3D 9)

mappage d’environnement cube (Direct3D 9)