ID3DX11ThreadPump-Schnittstelle
Hinweis
Die Hilfsprogrammbibliothek D3DX (D3DX 9, D3DX 10 und D3DX 11) ist für Windows 8 veraltet und wird für Windows Store-Apps nicht unterstützt.
Eine Threadpumpe führt Aufgaben asynchron aus. Sie wird durch Aufrufen von D3DX11CreateThreadPumperstellt. Es gibt mehrere APIs, die eine optionale Threadpumpe als Parameter verwenden, z. B. D3DX11CreateTextureFromFile und D3DX11CompileFromFile; Wenn Sie eine Threadpumpschnittstelle an diese APIs übergeben, werden die Funktionen asynchron in einem separaten Thread ausgeführt. Insbesondere auf Multiprozessorcomputern kann eine Threadpumpe Ressourcen laden und Daten verarbeiten, ohne dass die Leistung merklich abnimmt.
Members
Die ID3DX11ThreadPump-Schnittstelle erbt von der IUnknown-Schnittstelle. ID3DX11ThreadPump verfügt auch über diese Typen von Membern:
Methoden
Die ID3DX11ThreadPump-Schnittstelle verfügt über diese Methoden.
| Methode | BESCHREIBUNG |
|---|---|
| AddWorkItem | [!Note] Fügt der Threadpumpe ein Arbeitselement hinzu. |
| GetQueueStatus | [!Note] Ruft die Anzahl der Elemente in jeder der drei Warteschlangen innerhalb der Threadpumpe ab. |
| GetWorkItemCount | [!Note] Ruft die Anzahl der Arbeitselemente in der Threadpumpe ab. |
| ProcessDeviceWorkItems | [!Note] Legt Arbeitselemente auf dem Gerät fest, nachdem sie geladen und verarbeitet wurden. |
| PurgeAllItems | [!Note] Löscht alle Arbeitselemente aus der Threadpumpe. |
| WaitForAllItems | [!Note] Wartet, bis alle Arbeitselemente in der Threadpumpe abgeschlossen sind. |
Bemerkungen
Verwenden einer Threadpumpe
Die Threadpumpe lädt und verarbeitet Daten mithilfe des folgenden dreistufigen Prozesses:
- Laden und Dekomprimen der Daten mit einem Datenladeprogramm. Das Datenladeprogrammobjekt verfügt über drei Methoden, die die Threadpump beim Laden und Dekomprimieren der Daten intern aufruft: ID3DX11DataLoader::Load, ID3DX11DataLoader::D ecompressund ID3DX11DataLoader::D estobald. Die spezifischen Funktionen dieser drei APIs unterscheiden sich je nach Typ der geladenen und dekomprimierten Daten. Die Datenladeschnittstelle kann auch geerbt werden, und ihre APIs können geändert werden, wenn eine Datendatei geladen wird, die im eigenen benutzerdefinierten Format definiert ist.
- Verarbeiten Sie die Daten mit einem Datenprozessor. Das Datenprozessorobjekt verfügt über drei Methoden, die die Threadpump intern aufruft, während sie die Daten verarbeitet: ID3DX11DataProcessor::P rocess, ID3DX11DataProcessor::CreateDeviceObjectund ID3DX11DataProcessor::D est dll. Die Art und Weise, wie die Daten verarbeitet werden, unterscheidet sich je nach Typ der Daten. Wenn es sich bei den Daten beispielsweise um eine als JPEG gespeicherte Textur handelt, führt ID3DX11DataProcessor::P rocess die JPEG-Dekomprimierung durch, um die unformatierten Bildbits des Bilds abzurufen. Wenn es sich bei den Daten um einen Shader handelt, kompiliert ID3DX11DataProcessor::P rocess die HLSL in Bytecode. Nachdem die Daten verarbeitet wurden, wird ein Geräteobjekt für diese Daten erstellt (mit ID3DX11DataProcessor::CreateDeviceObject),und das Objekt wird einer Warteschlange von Geräteobjekten hinzugefügt. Die Datenprozessorschnittstelle kann auch geerbt werden, und ihre APIs können geändert werden, wenn eine Datendatei im eigenen benutzerdefinierten Format definiert wird.
- Binden Sie das Geräteobjekt an das Gerät. Dies geschieht, wenn die Anwendung ID3DX11ThreadPump::P rocessDeviceWorkItemsaufruft, wodurch eine angegebene Anzahl von Objekten in der Warteschlange von Geräteobjekten an das Gerät gebunden wird.
Die Threadpumpe kann zum Laden von Daten auf zwei Arten verwendet werden: durch Aufrufen einer API, die eine Threadpumpe als Parameter verwendet, z. B. D3DX11CreateTextureFromFile und D3DX11CompileFromFile,oder durch Aufrufen von ID3DX11ThreadPump::AddWorkItem. Im Fall der APIs, die eine Threadpumpe verwenden, werden das Datenladeprogramm und der Datenprozessor intern erstellt. Im Fall von AddWorkItem müssen das Datenladeprogramm und der Datenprozessor vorab erstellt und dann an AddWorkItem übergeben werden. D3DX11 bietet eine Reihe von APIs zum Erstellen von Datenladern und Datenprozessoren, die Funktionen zum Laden und Verarbeiten allgemeiner Datenformate aufweisen. Bei benutzerdefinierten Datenformaten müssen das Datenladeprogramm und die Datenprozessorschnittstellen geerbt und ihre Methoden neu definiert werden.
Das Threadpumpobjekt nimmt eine beträchtliche Menge an Ressourcen in Anspruch, sodass in der Regel nur eine pro Anwendung erstellt werden sollte.
Requirements (Anforderungen)
| Anforderung | Wert |
|---|---|
| Unterstützte Mindestversion (Client) |
nur Windows 7 [ Desktop-Apps] |
| Unterstützte Mindestversion (Server) |
Windows Nur Server 2008 [ R2-Desktop-Apps] |
| Header |
|
| Bibliothek |
|