Régions sales de texture (Direct3D 9)
Les applications peuvent optimiser le sous-ensemble d’une texture copiée en spécifiant des régions « sales » sur les textures. Seules les régions marquées comme incorrectes sont copiées par un appel à IDirect3DDevice9 ::UpdateTexture. Toutefois, les régions sales peuvent être développées pour optimiser l’alignement. Lorsqu’une texture est créée, la texture entière est considérée comme sale. Seules les opérations suivantes affectent l’état incorrect d’une texture :
- Ajout d’une région sale à une texture.
- Verrouillage d’une mémoire tampon dans la texture. Cette opération ajoute la région verrouillée en tant que région sale. L’application peut désactiver cette mise à jour automatique de la région sale si elle a une meilleure connaissance des régions sales réelles.
- L’utilisation d’un niveau de surface de la texture comme destination dans IDirect3DDevice9 ::UpdateSurface marque la texture entière comme étant sale.
- L’utilisation de la texture en tant que source dans IDirect3DDevice9 ::UpdateTexture efface toutes les régions sales sur la texture source.
- Utilisation de IDirect3DSurface9 ::GetDC pour retourner un contexte d’appareil.
- L’appel IDirect3DBaseTexture9 ::GenerateMipSubLevels marque la texture entière comme sale.
- Appeler IDirect3DBaseTexture9 ::SetAutoGenFilterType marque la texture entière comme étant sale.
Les régions sales sont définies au niveau supérieur d’une texture mipmapped et IDirect3DDevice9 ::UpdateTexture pouvez développer la région sale vers le bas de la chaîne mip afin de réduire le nombre d’octets copiés pour chaque sous-niveau. Notez que les coordonnées de région sale de sous-niveau sont arrondies vers l’extérieur, c’est-à-dire que leurs parties fractionnaires sont arrondies vers le bord le plus proche de la texture.
Étant donné que chaque type de texture a différents types de régions sales, il existe des méthodes sur chaque type de texture. Les textures 2D utilisent un rectangle sale et les textures de volume utilisent des zones.
- IDirect3DCubeTexture9 ::AddDirtyRect
- IDirect3DTexture9 ::AddDirtyRect
- IDirect3DVolumeTexture9 ::AddDirtyBox
Le passage NULL pour les paramètres pDirtyRect ou pDirtyBox pour les méthodes ci-dessus développe la région sale pour couvrir toute la texture.
Chaque méthode de verrouillage peut prendre D3DLOCK_NO_DIRTY_UPDATE, ce qui empêche toute modification de l’état incorrect de la texture. Pour plus d’informations, consultez verrouillage des ressources (Direct3D 9).
Lorsque des informations supplémentaires sur le jeu de régions true modifiés lors d’une opération de verrouillage sont disponibles, les applications doivent utiliser D3DLOCK_NO_DIRTY_UPDATE. Notez qu’un verrou ou une copie vers un sous-niveau de texture uniquement (autrement dit, sans verrouillage ni copie au niveau supérieur) ne met pas à jour les régions sales pour cette texture. Les applications assument la même responsabilité de mettre à jour des régions sales lorsqu’elles verrouillent des niveaux inférieurs sans verrouiller le niveau le plus élevé.
Rubriques connexes
-
concepts de concepts de texte de base