ID3DX10ThreadPump-Schnittstelle
Wird verwendet, um Aufgaben asynchron auszuführen, und wird mit D3DX10CreateThreadPump erstellt. Es gibt mehrere D3DX10-APIs, die optional eine Threadpumpe als Parameter verwenden können, z. B . D3DX10CreateTextureFromFile und D3DX10CompileFromFile (siehe Hinweise zur vollständigen Liste). Wenn die Threadpumpe an diese APIs übergeben wird, werden sie asynchron auf einem separaten Threadpumpenthread ausgeführt. Dies hat den Vorteil, dass das Laden und Verarbeiten großer Datenmengen erfolgen kann, ohne dass die Leistung auf dem Bildschirm spürbar verlangsamt wird.
Member
Die ID3DX10ThreadPump-Schnittstelle erbt von der IUnknown-Schnittstelle . ID3DX10ThreadPump verfügt auch über folgende Membertypen:
Methoden
Die ID3DX10ThreadPump-Schnittstelle verfügt über diese Methoden.
Methode | Beschreibung |
---|---|
AddWorkItem | Fügen Sie der Gewindepumpe ein Arbeitselement hinzu. |
GetQueueStatus | Ruft die Anzahl der Elemente in jeder der drei Warteschlangen innerhalb der Threadpumpe ab. |
GetWorkItemCount | Ruft die Anzahl der Arbeitselemente ab, die sich derzeit in der Threadpumpe befindet. |
ProcessDeviceWorkItems | Legen Sie Arbeitselemente auf das Gerät fest, nachdem sie das Laden und Verarbeiten abgeschlossen haben. Wenn die Threadpumpe das Laden und Verarbeiten einer Ressource oder eines Shaders abgeschlossen hat, wird sie in einer Warteschlange gehalten, bis diese API aufgerufen wird. An diesem Punkt werden die verarbeiteten Elemente auf das Gerät festgelegt. Dies ist nützlich, um den Verarbeitungsaufwand für das Binden von Ressourcen an das Gerät für jeden Frame zu steuern. Siehe Bemerkungen. |
PurgeAllItems | Löschen Sie alle Arbeitselemente aus der Gewindepumpe. |
WaitForAllItems | Warten Sie, bis alle Arbeitselemente in der Gewindepumpe abgeschlossen sind. |
Bemerkungen
Die Gewindepumpe lädt und verarbeitet Daten in einem 3-stufigen Prozess. Es geht:
- Laden und dekomprimieren Sie die Daten mit einem Datenladeprogramm. Das Datenladeprogrammobjekt verfügt über drei Methoden, die die Threadpumpe beim Laden und Dekomprimieren der Daten intern aufruft: ID3DX10DataLoader::Load, ID3DX10DataLoader::D ecompress und ID3DX10DataLoader::D estroy. Die spezifische Funktionalität dieser drei APIs unterscheidet sich je nach Typ der geladenen und dekomprimierten Daten. Die Datenladeprogrammschnittstelle kann auch geerbt werden, und die zugehörigen APIs können geändert werden, wenn eine Datendatei geladen wird, die im eigenen benutzerdefinierten Format definiert ist.
- Verarbeiten Sie die Daten mit einem Datenverarbeiter. Das Datenprozessorobjekt verfügt über drei Methoden, die die Threadpumpe intern aufruft, während die Daten verarbeitet werden: ID3DX10DataProcessor::P rocess, ID3DX10DataProcessor::CreateDeviceObject und ID3DX10DataProcessor::D estroy. Die Art und Weise, wie die Daten verarbeitet werden, unterscheidet sich je nach Datentyp. Wenn es sich bei den Daten z. B. um eine Textur handelt, die als JPEG gespeichert ist, führt ID3DX10DataProcessor::P rocess die JPEG-Dekomprimierung durch, um die Rohbildbits des Bilds abzurufen. Wenn die Daten ein Shader sind, kompiliert ID3DX10DataProcessor::P rocess die HLSL in Bytecode. Nachdem die Daten verarbeitet wurden, wird ein Geräteobjekt für diese Daten erstellt (mit ID3DX10DataProcessor::CreateDeviceObject), und das Objekt wird einer Warteschlange mit Geräteobjekten hinzugefügt. Die Datenprozessorschnittstelle kann auch geerbt werden, und die zugehörigen APIs können geändert werden, wenn eine im eigenen benutzerdefinierten Format definierte Datendatei verarbeitet wird.
- Binden Sie das Geräteobjekt an das Gerät. Dies geschieht, wenn die Anwendung ID3DX10ThreadPump::P rocessDeviceWorkItems aufruft, wodurch eine angegebene Anzahl von Objekten in der Warteschlange der Geräteobjekte an das Gerät gebunden wird.
Die Threadpumpe kann verwendet werden, um Daten auf zwei Arten zu laden: durch Aufrufen einer API, die eine Threadpumpe als Parameter verwendet, z. B. D3DX10CreateTextureFromFile und D3DX10CompileFromFile, oder durch Aufrufen von ID3DX10ThreadPump::AddWorkItem. Im Fall der APIs, die eine Threadpumpe verwenden, werden der Datenladeprogramm und der Datenprozessor intern erstellt. Im Fall von AddWorkItem müssen das Datenladeprogramm und der Datenprozessor zuvor erstellt und dann an AddWorkItem übergeben werden. D3DX10 bietet eine Reihe von APIs zum Erstellen von Datenladeprogrammen und Datenprozessoren, die über Funktionen zum Laden und Verarbeiten gängiger Datenformate verfügen (siehe Hinweise zur vollständigen Liste der APIs). Bei benutzerdefinierten Datenformaten müssen die Datenladeprogramm- und Datenprozessorschnittstellen vererbt und ihre Methoden neu definiert werden.
Das Threadpumpenobjekt nimmt eine beträchtliche Menge an Ressourcen in Anspruch, sodass in der Regel nur eine pro Anwendung erstellt werden sollte.
Integrierte D3DX10-Datenladeprogramme
Beschreibung | |
---|---|
D3DX10CreateAsyncFileLoader | Erstellen Sie asynchron ein Dateiladeprogramm. |
D3DX10CreateAsyncMemoryLoader | Erstellen Sie asynchron ein Datenladeprogramm. |
D3DX10CreateAsyncResourceLoader | Erstellen Sie asynchron einen Ressourcenladeprogramm. |
Integrierte D3DX10-Datenprozessoren
Beschreibung | |
---|---|
D3DX10CreateAsyncTextureProcessor | Erstellen Sie einen Datenprozessor, der mit einer Threadpumpe verwendet werden soll. Diese API ähnelt D3DX10CreateAsyncTextureInfoProcessor, lädt aber auch die Textur. |
D3DX10CreateAsyncTextureInfoProcessor | Erstellen Sie einen Datenprozessor, der mit einer Threadpumpe verwendet werden soll. |
D3DX10CreateAsyncShaderCompilerProcessor | Kompilieren Sie einen Shader, und erstellen Sie asynchron einen Datenprozessor. |
D3DX10CreateAsyncEffectCompilerProcessor | Erstellen Sie asynchron einen Effekt mit einem Datenprozessor. |
D3DX10CreateAsyncEffectCreateProcessor | Erstellen Sie asynchron einen Effektpool. |
D3DX10CreateAsyncEffectPoolCreateProcessor | Erstellen Sie asynchron einen Datenprozessor. |
D3DX10CreateAsyncShaderPreprocessProcessor | Erstellen Sie asynchron einen Datenprozessor für einen Shader. |
APIs, die eine Threadpumpe als Parameter verwenden.
Beschreibung | |
---|---|
D3DX10CompileFromFile | Kompilieren sie einen Shader aus einer Datei. |
D3DX10CompileFromMemory | Kompilieren Sie einen Shader, der sich im Arbeitsspeicher befindet. |
D3DX10CompileFromResource | Kompilieren sie einen Shader aus einer Ressource. |
D3DX10CreateEffectFromFile | Erstellen Sie einen Effekt aus einer Datei. |
D3DX10CreateEffectFromMemory | Erstellen Sie einen Effekt aus dem Arbeitsspeicher. |
D3DX10CreateEffectFromResource | Erstellen Sie einen Effekt aus einer Ressource. |
D3DX10CreateEffectPoolFromFile | Erstellen Sie einen Effektpool aus einer Datei. |
D3DX10CreateEffectPoolFromMemory | Erstellen Sie einen Effektpool aus einer Datei, die sich im Arbeitsspeicher befindet. |
D3DX10CreateEffectPoolFromResource | Erstellen Sie einen Effektpool aus einer Ressource. |
D3DX10PreprocessShaderFromFile | Erstellen Sie einen Shader aus einer Datei, ohne sie zu kompilieren. |
D3DX10PreprocessShaderFromMemory | Erstellen Sie einen Shader aus dem Arbeitsspeicher, ohne ihn zu kompilieren. |
D3DX10PreprocessShaderFromResource | Erstellen Sie einen Shader aus einer Ressource, ohne sie zu kompilieren. |
D3DX10CreateShaderResourceViewFromFile | Erstellen Sie eine Shaderressourcensicht aus einer Datei. |
D3DX10CreateShaderResourceViewFromMemory | Erstellen Sie eine Shaderressourcensicht aus einer Datei im Arbeitsspeicher. |
D3DX10CreateShaderResourceViewFromResource | Erstellen Sie eine Shader-Ressourcenansicht aus einer Ressource. |
D3DX10GetImageInfoFromFile | Ruft Informationen zu einer bestimmten Bilddatei ab. |
D3DX10GetImageInfoFromMemory | Rufen Sie Informationen zu einem Image ab, das bereits in den Arbeitsspeicher geladen wurde. |
D3DX10GetImageInfoFromResource | Ruft Informationen zu einem bestimmten Bild in einer Ressource ab. |
D3DX10CreateTextureFromFile | Erstellen Sie eine Texturressource aus einer Datei. |
D3DX10CreateTextureFromMemory | Erstellen Sie eine Texturressource aus einer Datei, die sich im Systemspeicher befindet. |
D3DX10CreateTextureFromResource | Erstellen Sie eine Texturressource aus einer anderen Ressource. |
Anforderungen
Anforderung | Wert |
---|---|
Header |
|
Bibliothek |
|
Siehe auch