D2D1_FACTORY_TYPE-Enumeration (d2d1.h)
Gibt an, ob Direct2D eine Synchronisierung für eine ID2D1Factory und die von ihr erstellten Ressourcen bereitstellt, damit von mehreren Threads sicher darauf zugegriffen werden kann.
Syntax
typedef enum D2D1_FACTORY_TYPE {
D2D1_FACTORY_TYPE_SINGLE_THREADED = 0,
D2D1_FACTORY_TYPE_MULTI_THREADED = 1,
D2D1_FACTORY_TYPE_FORCE_DWORD = 0xffffffff
} ;
Konstanten
D2D1_FACTORY_TYPE_SINGLE_THREADED Wert: 0 Es wird keine Synchronisierung für den Zugriff auf oder das Schreiben in die Factory oder die von ihr erstellten Objekte bereitgestellt. Wenn die Factory oder die Objekte aus mehreren Threads aufgerufen werden, ist es an der Anwendung, Zugriffssperren bereitzustellen. |
D2D1_FACTORY_TYPE_MULTI_THREADED Wert: 1 Direct2D bietet eine Synchronisierung für den Zugriff auf und das Schreiben in die Factory und die objekte, die erstellt werden, und ermöglicht so den sicheren Zugriff über mehrere Threads. |
D2D1_FACTORY_TYPE_FORCE_DWORD Wert: 0xffffffff |
Hinweise
Wenn Sie eine Factory erstellen, können Sie angeben, ob es sich um Multithread- oder Singlethreading handelt. Eine Singlethread-Factory bietet keine Serialisierung für andere singlethreaded instance innerhalb von Direct2D, sodass dieser Mechanismus einen sehr großen Grad an Skalierung für die CPU bereitstellt.
Sie können auch eine Multithread-Factory instance erstellen. In diesem Fall können die Factory und alle abgeleiteten Objekte von jedem Thread verwendet werden, und jedes Renderziel kann unabhängig in gerendert werden. Direct2D serialisiert Aufrufe dieser Objekte, sodass ein einzelner Multithread-Direct2D-instance nicht so gut auf der CPU skaliert wird wie viele Einzelthreadinstanzen. Die Ressourcen können jedoch innerhalb des Multithread-instance freigegeben werden.
Beachten Sie den Qualifizierer "On the CPU": GPUs nutzen in der Regel eine differenzierte Parallelität mehr als CPUs. Beispielsweise können Multithreadaufrufe von der CPU immer noch serialisiert werden, wenn sie an die GPU gesendet werden. Eine ganze Bank von Pixel- und Vertex-Shadern wird jedoch parallel ausgeführt, um das Rendering auszuführen.
Beispiele
Die folgenden Codefragmente deklarieren einen Factoryzeiger, erstellen eine Singlethreaded Factory instance und verwenden die Factory, um ein Renderziel zu erstellen.
ID2D1Factory* m_pDirect2dFactory;
// Create a Direct2D factory.
hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &m_pDirect2dFactory);
// Create a Direct2D render target.
hr = m_pDirect2dFactory->CreateHwndRenderTarget(
D2D1::RenderTargetProperties(),
D2D1::HwndRenderTargetProperties(m_hwnd, size),
&m_pRenderTarget
);
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 7, Windows Vista mit SP2 und Plattformupdate für Windows Vista [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 R2, Windows Server 2008 mit SP2 und Plattformupdate für Windows Server 2008 [Desktop-Apps | UWP-Apps] |
Kopfzeile | d2d1.h |
Weitere Informationen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für