Procédure : initialiser une texture par programmation
Vous pouvez initialiser une texture lors de la création d’un objet ou remplir l’objet par programmation après sa création. Cette rubrique contient plusieurs exemples montrant comment initialiser des textures créées avec différents types d’utilisations. Cet exemple suppose que vous savez déjà comment créer une texture.
Utilisation par défaut
Le type d’utilisation le plus courant est l’utilisation par défaut. Pour remplir une texture par défaut (une texture créée avec D3D11_USAGE_DEFAULT), vous pouvez :
Appelez ID3D11Device::CreateTexture2D et initialisez pInitialData pour pointer vers les données fournies à partir d’une application.
or
Après avoir appelé ID3D11Device::CreateTexture2D, utilisez ID3D11DeviceContext::UpdateSubresource pour remplir la texture par défaut avec les données d’un pointeur fourni par l’application.
Utilisation dynamique
Pour remplir une texture dynamique (une texture créée avec D3D11_USAGE_DYNAMIC) :
- Obtenez un pointeur vers la mémoire de texture en transmettant D3D11_MAP_WRITE_DISCARD lors de l’appel d’ID3D11DeviceContext::Map.
- Écrire des données dans la mémoire.
- Appelez ID3D11DeviceContext::Unmap lorsque vous avez terminé d’écrire des données.
Utilisation intermédiaire
Pour remplir une texture intermédiaire (une texture créée avec D3D11_USAGE_STAGING) :
- Obtenez un pointeur vers la mémoire de texture en transmettant D3D11_MAP_WRITE lors de l’appel de ID3D11DeviceContext::Map.
- Écrire des données dans la mémoire.
- Appelez ID3D11DeviceContext::Unmap lorsque vous avez terminé d’écrire des données.
Une texture intermédiaire peut ensuite être utilisée comme paramètre source pour ID3D11DeviceContext::CopyResource ou ID3D11DeviceContext::CopySubresourceRegion pour remplir une ressource par défaut ou dynamique.
Rubriques connexes