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:
- 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é.
- 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é.
- 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 |
|
Bibliothèque |
|
Voir aussi