enumerazione D2D1_FACTORY_TYPE (d2d1.h)
Specifica se Direct2D fornisce la sincronizzazione per un ID2D1Factory e le risorse create, in modo che possano essere accessibili in modo sicuro da più thread.
Sintassi
typedef enum D2D1_FACTORY_TYPE {
D2D1_FACTORY_TYPE_SINGLE_THREADED = 0,
D2D1_FACTORY_TYPE_MULTI_THREADED = 1,
D2D1_FACTORY_TYPE_FORCE_DWORD = 0xffffffff
} ;
Costanti
D2D1_FACTORY_TYPE_SINGLE_THREADED Valore: 0 Non viene fornita alcuna sincronizzazione per l'accesso o la scrittura nella factory o per gli oggetti creati. Se la factory o gli oggetti vengono chiamati da più thread, spetta all'applicazione fornire il blocco di accesso. |
D2D1_FACTORY_TYPE_MULTI_THREADED Valore: 1 Direct2D fornisce la sincronizzazione per l'accesso e la scrittura nella factory e gli oggetti creati, consentendo l'accesso sicuro da più thread. |
D2D1_FACTORY_TYPE_FORCE_DWORD Valore: 0xffffffff |
Commenti
Quando si crea una factory, è possibile specificare se è multithreading o singlethreading. Una factory a thread singolo non fornisce alcuna serializzazione su qualsiasi altra istanza a thread singolo all'interno di Direct2D, quindi questo meccanismo offre un livello molto elevato di scalabilità sulla CPU.
È anche possibile creare un'istanza di factory multithreading. In questo caso, la factory e tutti gli oggetti derivati possono essere usati da qualsiasi thread e ogni destinazione di rendering può essere sottoposta a rendering in modo indipendente. Direct2D serializza le chiamate a questi oggetti, quindi una singola istanza Direct2D multithreading non verrà ridimensionata anche sulla CPU come molte istanze a thread singolo. Tuttavia, le risorse possono essere condivise all'interno dell'istanza multithreading.
Si noti il qualificatore "Nella CPU": le GPU in genere sfruttano il parallelismo con granularità fine in modo maggiore rispetto alle CPU. Ad esempio, le chiamate multithreading dalla CPU potrebbero comunque finire per essere serializzate quando vengono inviate alla GPU; Tuttavia, un'intera banca di pixel e vertex shader verrà eseguita in parallelo per eseguire il rendering.
Esempio
I frammenti di codice seguenti dichiarano un puntatore factory, creano un'istanza factory a thread singolo e usano la factory per creare una destinazione di rendering.
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
);
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 7, Windows Vista con SP2 e Aggiornamento della piattaforma per Windows Vista [app desktop | App UWP] |
Server minimo supportato | Windows Server 2008 R2, Windows Server 2008 con SP2 e Platform Update per Windows Server 2008 [app desktop | App UWP] |
Intestazione | d2d1.h |
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per