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:

  1. 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.
  2. 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.
  3. 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
D3DX10.h
Bibliothek
D3DX10.lib

Siehe auch

D3DX-Schnittstellen