다음을 통해 공유


D2D1_FACTORY_TYPE 열거형(d2d1.h)

Direct2D가 여러 스레드에서 안전하게 액세스할 수 있도록 ID2D1Factory 및 만든 리소스에 대한 동기화를 제공하는지 여부를 지정합니다.

Syntax

typedef enum D2D1_FACTORY_TYPE {
  D2D1_FACTORY_TYPE_SINGLE_THREADED = 0,
  D2D1_FACTORY_TYPE_MULTI_THREADED = 1,
  D2D1_FACTORY_TYPE_FORCE_DWORD = 0xffffffff
} ;

상수

 
D2D1_FACTORY_TYPE_SINGLE_THREADED
값: 0
팩터리 또는 만든 개체에 액세스하거나 쓰기 위한 동기화가 제공되지 않습니다. 팩터리 또는 개체가 여러 스레드에서 호출되는 경우 액세스 잠금을 제공하는 것은 애플리케이션에 달려 있습니다.
D2D1_FACTORY_TYPE_MULTI_THREADED
값: 1
Direct2D는 팩터리와 팩터리에서 만드는 개체에 액세스하고 쓰기 위한 동기화를 제공하여 여러 스레드에서 안전하게 액세스할 수 있도록 합니다.
D2D1_FACTORY_TYPE_FORCE_DWORD
값: 0xffffffff

설명

팩터리를 만들 때 다중 스레드 또는 단일 스레드인지 여부를 지정할 수 있습니다. 단일 스레드 팩터리는 Direct2D 내의 다른 단일 스레드 instance 대해 직렬화를 제공하지 않으므로 이 메커니즘은 CPU에서 매우 큰 크기 조정을 제공합니다.

다중 스레드 팩터리 instance 만들 수도 있습니다. 이 경우 팩터리 및 모든 파생 개체를 모든 스레드에서 사용할 수 있으며 각 렌더링 대상을 독립적으로 렌더링할 수 있습니다. Direct2D는 이러한 개체에 대한 호출을 직렬화하므로 단일 다중 스레드 Direct2D instance CPU에서 단일 스레드 인스턴스만큼 크기가 조정되지 않습니다. 그러나 다중 스레드 instance 내에서 리소스를 공유할 수 있습니다.

한정자 "ON the CPU": GPU는 일반적으로 CPU보다 세분화된 병렬 처리를 더 많이 활용합니다. 예를 들어 CPU의 다중 스레드 호출은 GPU로 전송될 때 계속 직렬화될 수 있습니다. 그러나 전체 픽셀 및 꼭짓점 셰이더 뱅크가 병렬로 실행되어 렌더링을 수행합니다.

예제

다음 코드 조각은 팩터리 포인터를 선언하고, 단일 스레드 팩터리 instance 만들고, 팩터리를 사용하여 렌더링 대상을 만듭니다.

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
            );

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 7, Windows Vista SP2 및 Windows Vista용 플랫폼 업데이트 [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2008 R2, Windows Server 2008 SP2 및 Windows Server 2008용 플랫폼 업데이트 [데스크톱 앱 | UWP 앱]
머리글 d2d1.h

추가 정보

CreateFactory

ID2D1Factory

다중 스레드 Direct2D 앱