Interface ID3DX10ThreadPump

Utilisé pour exécuter des tâches de manière asynchrone et créé avec D3DX10CreateThreadPump. Il existe plusieurs API D3DX10 qui peuvent éventuellement prendre une pompe de thread en tant que paramètre, comme D3DX10CreateTextureFromFile et D3DX10CompileFromFile (voir les remarques pour obtenir la liste complète). Si la pompe de thread est passée dans ces API, elles s’exécutent de manière asynchrone sur un thread de pompe de thread distinct. L’avantage de cette opération est qu’elle peut faire en sorte que le chargement et le traitement de grandes quantités de données se produisent sans voir un ralentissement notable des performances à l’écran.

Membres

L’interface ID3DX10ThreadPump hérite de l’interface IUnknown. ID3DX10ThreadPump a également les types de membres suivants :

Méthodes

L’interface ID3DX10ThreadPump a ces méthodes.

Méthode Description
AddWorkItem Ajoutez un élément de travail à la pompe de thread.
GetQueueStatus Obtenez le nombre d’éléments dans chacune des trois files d’attente à l’intérieur de la pompe de thread.
GetWorkItemCount Obtenez le nombre d’éléments de travail actuellement dans la pompe de thread.
ProcessDeviceWorkItems Définissez les éléments de travail sur l’appareil une fois qu’ils ont terminé le chargement et le traitement. Lorsque la pompe de threads a terminé le chargement et le traitement d’une ressource ou d’un nuanceur, elle la maintient dans une file d’attente jusqu’à ce que cette API soit appelée, auquel cas les éléments traités sont définis sur l’appareil. Cela est utile pour contrôler la quantité de traitement consacrée à la liaison de ressources à l’appareil pour chaque image. Consultez la section Remarques.
PurgeAllItems Effacez tous les éléments de travail de la pompe de thread.
WaitForAllItems Attendez que tous les éléments de travail de la pompe de thread se terminent.

 

Notes

La pompe de thread charge et traite les données dans un processus en 3 étapes. Il va:

  1. Chargez et décompressez les données avec un chargeur de données. L’objet chargeur de données a trois méthodes que la pompe de thread appellera en interne lors du chargement et de la décompression des données : ID3DX10DataLoader::Load, ID3DX10DataLoader::D ecompress et ID3DX10DataLoader::D estroy. La fonctionnalité spécifique de ces trois API diffère selon le type de données chargées et décompressées. L’interface du chargeur de données peut également être héritée et ses API peuvent être modifiées si l’on charge un fichier de données défini dans son propre format personnalisé.
  2. Traitez les données avec un processeur de données. L’objet processeur de données a trois méthodes que la pompe de thread appellera en interne lors du traitement des données : ID3DX10DataProcessor::P rocess, ID3DX10DataProcessor::CreateDeviceObject et ID3DX10DataProcessor::D estroy. La façon dont il traite les données sera différente en fonction du type de données. Par exemple, si les données sont une texture stockée au format JPEG, ID3DX10DataProcessor::P rocess effectue la décompression JPEG pour obtenir les bits d’image bruts de l’image. Si les données sont un nuanceur, ID3DX10DataProcessor::P rocess compile le HLSL en bytecode. Une fois les données traitées, un objet d’appareil est créé pour ces données (avec ID3DX10DataProcessor::CreateDeviceObject) et l’objet est ajouté à une file d’attente d’objets d’appareil. L’interface du processeur de données peut également être héritée et ses API peuvent être modifiées si l’on traite un fichier de données défini dans son propre format personnalisé.
  3. Liez l’objet d’appareil à l’appareil. Cela est effectué lorsque l’application appelle ID3DX10ThreadPump::P rocessDeviceWorkItems, ce qui lie un nombre spécifié d’objets dans la file d’attente d’objets d’appareil à l’appareil.

La pompe de threads peut être utilisée pour charger des données de l’une des deux manières suivantes : en appelant une API qui prend une pompe de threads comme paramètre, comme D3DX10CreateTextureFromFile et D3DX10CompileFromFile, ou en appelant ID3DX10ThreadPump::AddWorkItem. Dans le cas des API qui prennent une pompe de thread, le chargeur de données et le processeur de données sont créés en interne. Dans le cas d’AddWorkItem, le chargeur de données et le processeur de données doivent être créés au préalable et sont ensuite passés dans AddWorkItem. D3DX10 fournit un ensemble d’API permettant de créer des chargeurs de données et des processeurs de données qui disposent de fonctionnalités de chargement et de traitement des formats de données courants (voir les remarques pour obtenir la liste complète des API). Pour les formats de données personnalisés, les interfaces du chargeur de données et du processeur de données doivent être héritées et leurs méthodes doivent être redéfinies.

L’objet de pompe de threads occupe une quantité importante de ressources. En règle générale, un seul objet doit être créé par application.

Chargeurs de données D3DX10 intégrés

Description
D3DX10CreateAsyncFileLoader Créez un chargeur de fichiers de manière asynchrone.
D3DX10CreateAsyncMemoryLoader Créez un chargeur de données de manière asynchrone.
D3DX10CreateAsyncResourceLoader Créez un chargeur de ressources de manière asynchrone.

 

Processeurs de données D3DX10 intégrés

Description
D3DX10CréateAsyncTextureProcessor Créez un processeur de données à utiliser avec une pompe de thread. Cette API est similaire à D3DX10CreateAsyncTextureInfoProcessor, mais elle charge également la texture.
D3DX10CreateAsyncTextureInfoProcessor Créez un processeur de données à utiliser avec une pompe de thread.
D3DX10CreateAsyncShaderCompilerProcessor Compilez un nuanceur et créez un processeur de données de manière asynchrone.
D3DX10CreateAsyncEffectCompilerProcessor Créez un effet avec un processeur de données de manière asynchrone.
D3DX10CreateAsyncEffectCreateProcessor Créez un pool d’effets de manière asynchrone.
D3DX10CreateAsyncEffectPoolCreateProcessor Créez un processeur de données de manière asynchrone.
D3DX10CreateAsyncShaderPreprocessorProcessor Créez un processeur de données pour un nuanceur de manière asynchrone.

 

API qui prennent une pompe de thread comme paramètre.

Description
D3DX10CompileFromFile Compilez un nuanceur à partir d’un fichier.
D3DX10CompileFromMemory Compilez un nuanceur résidant en mémoire.
D3DX10CompileFromResource Compilez un nuanceur à partir d’une ressource.
D3DX10CreateEffectFromFile Créez un effet à partir d’un fichier.
D3DX10CreateEffectFromMemory Créez un effet à partir de la mémoire.
D3DX10CreateEffectFromResource Créez un effet à partir d’une ressource.
D3DX10CreateEffectPoolFromFile Créez un pool d’effets à partir d’un fichier.
D3DX10CreateEffectPoolFromMemory Créez un pool d’effets à partir d’un fichier résidant en mémoire.
D3DX10CreateEffectPoolFromResource Créez un pool d’effets à partir d’une ressource.
D3DX10PreprocessShaderFromFile Créez un nuanceur à partir d’un fichier sans le compiler.
D3DX10PreprocessShaderFromMemory Créez un nuanceur à partir de la mémoire sans le compiler.
D3DX10PreprocessShaderFromResource Créez un nuanceur à partir d’une ressource sans la compiler.
D3DX10CreateShaderResourceViewFromFile Créez une vue nuanceur-ressource à partir d’un fichier.
D3DX10CreateShaderResourceViewFromMemory Créez une vue nuanceur-ressource à partir d’un fichier en mémoire.
D3DX10CreateShaderResourceViewFromResource Créez une vue nuanceur-ressource à partir d’une ressource.
D3DX10GetImageInfoFromFile Récupère des informations sur un fichier image donné.
D3DX10GetImageInfoFromMemory Obtenez des informations sur une image déjà chargée en mémoire.
D3DX10GetImageInfoFromResource Récupère des informations sur une image donnée dans une ressource.
D3DX10CreateTextureFromFile Créez une ressource de texture à partir d’un fichier.
D3DX10CreateTextureFromMemory Créez une ressource de texture à partir d’un fichier résidant dans la mémoire système.
D3DX10CreateTextureFromResource Créez une ressource de texture à partir d’une autre ressource.

 

Spécifications

Condition requise Valeur
En-tête
D3DX10.h
Bibliothèque
D3DX10.lib

Voir aussi

D3DX Interfaces