Share via


ID2D1RenderTarget::CreateSharedBitmap 메서드(d2d1.h)

데이터가 다른 리소스와 공유되는 ID2D1Bitmap 을 만듭니다.

구문

HRESULT CreateSharedBitmap(
                 REFIID                       riid,
  [in, out]      void                         *data,
  [in, optional] const D2D1_BITMAP_PROPERTIES *bitmapProperties,
  [out]          ID2D1Bitmap                  **bitmap
);

매개 변수

riid

형식: REFIID

원본 데이터를 제공하는 개체의 인터페이스 ID입니다.

[in, out] data

형식: void*

새 ID2D1Bitmap과 공유할 데이터가 포함된 ID2D1Bitmap, IDXGISurface 또는 IWICBitmapLock입니다. 자세한 내용은 주의 섹션을 참조하세요.

[in, optional] bitmapProperties

형식: D2D1_BITMAP_PROPERTIES*

만들 비트맵의 픽셀 형식 및 DPI입니다. 픽셀 형식의 DXGI_FORMAT 부분은 데이터의DXGI_FORMAT 일치해야 합니다. 그렇지 않으면 메서드가 실패하지만 알파 모드가 일치할 필요는 없습니다. 불일치를 방지하려면 D2D1::P ixelFormat 도우미 함수에서 가져온 NULL 또는 값을 전달할 수 있습니다. DPI 설정은 데이터 설정과 일치할 필요가 없습니다. dpiXdpiY가 모두 0.0f이면 렌더링 대상의 DPI가 사용됩니다.

[out] bitmap

형식: ID2D1Bitmap**

이 메서드가 반환되면 새 비트맵에 대한 포인터의 주소가 포함됩니다. 이 매개 변수는 초기화되지 않은 상태로 전달됩니다.

반환 값

형식: HRESULT

메서드가 성공하면 S_OK를 반환하고, 그렇지 않으면 HRESULT 오류 코드를 반환합니다.

설명

CreateSharedBitmap 메서드는 비트맵 데이터를 효율적으로 재사용하는 데 유용하며 Direct3D와의 상호 운용성을 제공하는 데도 사용할 수 있습니다.

ID2D1Bitmap 공유

리소스와 호환되는 렌더링 대상에서 만든 ID2D1Bitmap 을 전달하면 해당 렌더링 대상과 비트맵을 공유할 수 있습니다. 원래 ID2D1Bitmap 과 이 메서드에서 만든 새 ID2D1Bitmap 은 모두 동일한 비트맵 데이터를 가리킵니다. 렌더링 대상 리소스를 공유할 수 있는 시기에 대한 자세한 내용은 리소스 개요의 렌더링 대상 리소스 공유 섹션을 참조하세요.

이 메서드를 사용하여 기존 비트맵의 데이터를 재해석하고 새 DPI 또는 알파 모드를 지정할 수도 있습니다. 예를 들어 비트맵 아틀라스의 경우 ID2D1Bitmap에는 여러 하위 이미지가 포함될 수 있으며, 각각은 다른 D2D1_ALPHA_MODE(D2D1_ALPHA_MODE_PREMULTIPLIED 또는 D2D1_ALPHA_MODE_IGNORE)으로 렌더링되어야 합니다. CreateSharedBitmap 메서드를 사용하여 비트맵의 별도 복사본을 메모리에 로드하지 않고도 원하는 알파 모드를 사용하여 비트맵을 재해석할 수 있습니다.

IDXGISurface 공유

DXGI 표면 렌더링 대상(CreateDxgiSurfaceRenderTarget 메서드에서 만든 ID2D1RenderTarget 개체)을 사용하는 경우 IDXGISurface 표면을 CreateSharedBitmap 메서드에 전달하여 Direct3D와 비디오 메모리를 공유하고 Direct3D 콘텐츠를 ID2D1Bitmap으로 조작할 수 있습니다. 리소스 개요에 설명된 대로 렌더링 대상 및 IDXGISurface는 동일한 Direct3D 디바이스를 사용해야 합니다.

또한 IDXGISurface는 지원되는 픽셀 형식 및 알파 모드에 설명된 지원되는 픽셀 형식 및 알파 모드 중 하나를 사용해야 합니다.

Direct3D와의 상호 운용성에 대한 자세한 내용은 Direct2D 및 Direct3D 상호 운용성 개요를 참조하세요.

IWICBitmapLock 공유

IWICBitmapLock은 WIC 비트맵의 콘텐츠를 저장하고 동시 액세스로부터 보호합니다. IWICBitmapLockCreateSharedBitmap 메서드에 전달하면 IWICBitmapLock에 이미 저장된 비트맵 데이터를 가리키는 ID2D1Bitmap을 만들 수 있습니다.

CreateSharedBitmap 메서드와 함께 IWICBitmapLock을 사용하려면 렌더링 대상이 소프트웨어 렌더링을 사용해야 합니다. 렌더링 대상이 소프트웨어 렌더링을 사용하도록 강제하려면 렌더링 대상을 만드는 데 사용하는 D2D1_RENDER_TARGET_PROPERTIES 구조체의 형식 필드를 D2D1_RENDER_TARGET_TYPE_SOFTWARE 설정합니다. 기존 렌더링 대상이 소프트웨어 렌더링을 사용하는지 여부를 검사 위해 IsSupported 메서드를 사용합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 7, Windows Vista SP2 및 Windows Vista용 플랫폼 업데이트 [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2008 R2, Windows Server 2008 SP2 및 Windows Server 2008용 플랫폼 업데이트 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 d2d1.h
라이브러리 D2d1.lib
DLL D2d1.dll

추가 정보

Direct2D 및 Direct3D 상호 운용성 개요

ID2D1RenderTarget

IDXGISurface

IWICBitmapLock

리소스 개요

지원되는 픽셀 형식 및 알파 모드