Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Especifica si Direct2D proporciona sincronización para un ID2D1Factory y los recursos que crea, de modo que se pueda acceder a ellos de forma segura desde varios subprocesos.
Syntax
typedef enum D2D1_FACTORY_TYPE {
D2D1_FACTORY_TYPE_SINGLE_THREADED = 0,
D2D1_FACTORY_TYPE_MULTI_THREADED = 1,
D2D1_FACTORY_TYPE_FORCE_DWORD = 0xffffffff
} ;
Constantes
D2D1_FACTORY_TYPE_SINGLE_THREADED Valor: 0 No se proporciona ninguna sincronización para acceder o escribir en el generador o en los objetos que crea. Si se llama al generador o a los objetos desde varios subprocesos, corresponde a la aplicación proporcionar el bloqueo de acceso. |
D2D1_FACTORY_TYPE_MULTI_THREADED Valor: 1 Direct2D proporciona sincronización para acceder y escribir en el generador y los objetos que crea, lo que permite el acceso seguro desde varios subprocesos. |
D2D1_FACTORY_TYPE_FORCE_DWORD Valor: 0xffffffff |
Comentarios
Al crear una fábrica, puede especificar si es multiproceso o singlethreaded. Un generador singlethreaded no proporciona ninguna serialización en ninguna otra instancia de subproceso única dentro de Direct2D, por lo que este mecanismo proporciona un gran grado de escalado en la CPU.
También puede crear una instancia de generador multiproceso. En este caso, el generador y todos los objetos derivados se pueden usar desde cualquier subproceso y cada destino de representación se puede representar de forma independiente. Direct2D serializa las llamadas a estos objetos, por lo que una única instancia de Direct2D multiproceso no escalará también en la CPU tantas instancias de subproceso únicas. Sin embargo, los recursos se pueden compartir dentro de la instancia multiproceso.
Tenga en cuenta el calificador "En la CPU": las GPU generalmente aprovechan el paralelismo específico más que las CPU. Por ejemplo, es posible que las llamadas multiproceso de la CPU sigan siendo serializadas al enviarse a la GPU; sin embargo, todo un banco de sombreadores de píxeles y vértices se ejecutará en paralelo para realizar la representación.
Ejemplos
Los fragmentos de código siguientes declaran un puntero de fábrica, crean una instancia de generador única y usan el generador para crear un destino de representación.
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
);
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 7, Windows Vista con SP2 y Platform Update para Windows Vista [aplicaciones de escritorio | Aplicaciones para UWP] |
Servidor mínimo compatible | Windows Server 2008 R2, Windows Server 2008 con SP2 y Actualización de plataforma para Windows Server 2008 [aplicaciones de escritorio | Aplicaciones para UWP] |
Encabezado | d2d1.h |