Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette rubrique contient des exemples d’effets spéciaux réalisés avec le traitement des coordonnées de texture.
- textures d’animation (par traduction ou rotation) sur un modèle
- Création de coordonnées de texture en tant que fonction linéaire de la position de l’espace photo d’un modèle
- Effectuer un mappage d’environnement avec un mappage d’environnement cube
- Exécution d’un texte projectif
Animation de textures (par traduction ou rotation) sur un modèle
Définissez les coordonnées de texture 2D dans votre format de vertex.
// Use a single texture, with 2D texture coordinates. This // bit-pattern should be expanded to include position, normal, // and color information as needed. DWORD dwFVFTex = D3FVF_TEX1 | D3DFVF_TEXCOORDSIZE2(0);Configurez le rastériseur pour utiliser les coordonnées de texture 2D.
SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2);Définissez et définissez une matrice de transformation de coordonnée de texture appropriée.
// M is a D3DMATRIX being set to translate texture // coordinates in the U and V directions. // 1 0 0 0 // 0 1 0 0 // du dv 1 0 (du and dv change each frame) // 0 0 0 1 D3DMATRIX M = D3DXMatrixIdentity(); // declared in d3dutil.h M._31 = du; M._32 = dv;
Création de coordonnées de texture en tant que fonction linéaire de la position de l’espace photo d’un modèle
Utilisez l’indicateur D3DTSS_TCI_CAMERASPACEPOSITION pour indiquer au système de passer la position du vertex, dans l’espace de la caméra, comme entrée à une transformation de texture.
// The input vertices have no texture coordinates, saving // bandwidth. Three texture coordinates are generated by // using vertex position in camera space (x, y, z). SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEPOSITION);Indiquez au rastériseur d’attendre les coordonnées de texture 2D.
// Two output coordinates are used. SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2);Définissez et définissez une matrice qui applique une fonction linéaire.
// Generate texture coordinates as linear functions // so that: // u = Ux*x + Uy*y + Uz*z + Uw // v = Vx*x + Vy*y + Vz*z + Vw // The matrix M for this case is: // Ux Vx 0 0 // Uy Vy 0 0 // Uz Vz 0 0 // Uw Vw 0 0 SetTransform(D3DTS_TEXTURE0, &M);
Exécution d’un mappage d’environnement avec un mappage d’environnement cube
Utilisez l’indicateur D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR pour indiquer au système de générer automatiquement des coordonnées de texture en tant que vecteurs de réflexion pour le mappage cube.
SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR);Indiquez au rastériseur d’attendre les coordonnées de texture avec trois éléments.
SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT3);
Exécution d’une texturation projective
Utilisez l’indicateur D3DTSS_TCI_CAMERASPACEPOSITION pour indiquer au système de passer la position de vertex comme entrée à une matrice de transformation de texture.
SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEPOSITION);Créez et appliquez la matrice de projection de texture. Cela dépasse le cadre de cette documentation et est le sujet de plusieurs articles de l’industrie.
Indiquez au rastériseur d’attendre les coordonnées de texture projetées à trois éléments.
// Two output coordinates are used. SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTF_PROJECTED | D3DTTFF_COUNT3);
Rubriques connexes