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 |
추가 정보
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기