Share via


ID2D1DeviceContext2::CreateImageSourceFromDxgi 方法 (d2d1_3.h)

從一組 DXGI 表面建立影像來源, (s) 。 YCbCr surface (s) 會在後續繪圖期間自動轉換成 RGBA。

語法

HRESULT CreateImageSourceFromDxgi(
  IDXGISurface                        **surfaces,
  UINT32                              surfaceCount,
  DXGI_COLOR_SPACE_TYPE               colorSpace,
  D2D1_IMAGE_SOURCE_FROM_DXGI_OPTIONS options,
  ID2D1ImageSource                    **imageSource
);

參數

surfaces

類型:[in] IDXGISurface**

要從中建立影像來源的 DXGI 表面。

surfaceCount

類型: UINT32

提供的介面數目;必須介於一到三之間。

colorSpace

類型: DXGI_COLOR_SPACE_TYPE

輸入的色彩空間。

options

類型: D2D1_IMAGE_SOURCE_FROM_DXGI_OPTIONS

控制色彩空間轉換的選項。

imageSource

類型:[out] ID2D1ImageSource**

接收新的映像來源實例。

傳回值

類型: HRESULT

如果成功,S_OK否則為失敗的 HRESULT。

備註

這個方法會建立影像來源,可用來繪製影像。

這個方法支援使用一組有限 DXGI 格式和 DXGI 色彩空間類型的介面。 只支援下列一組色彩空間類型、表面格式和表面計數的組合:

色彩空間類型 Surface Count (s) surface Format (s)
DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709 1 標準 D2D 支援的像素格式:
  • DXGI_FORMAT_A8_UNORM
  • DXGI_FORMAT_R8_UNORM
  • DXGI_FORMAT_R8G8_UNORM
  • DXGI_FORMAT_R8G8B8A8_UNORM
  • DXGI_FORMAT_B8G8R8A8_UNORM
  • DXGI_FORMAT_B8G8R8X8_UNORM
  • DXGI_FORMAT_R8G8B8A8_UNORM_SRGB
  • DXGI_FORMAT_B8G8R8A8_UNORM_SRGB
  • DXGI_FORMAT_R16G16B16A16_FLOAT
  • DXGI_FORMAT_R16G16B16A16_UNORM
  • DXGI_FORMAT_R32G32B32A32_FLOAT
  • DXGI_FORMAT_BC1_UNORM
  • DXGI_FORMAT_BC2_UNORM
  • DXGI_FORMAT_BC3_UNORM
DXGI_COLOR_SPACE_YCBCR_FULL_G22_NONE_P709_X601 1, 2, 3 當 Surface 計數為 1 時:
  • DXGI_FORMAT_AYUV
  • DXGI_FORMAT_NV12
  • DXGI_FORMAT_YUY2
  • DXGI_FORMAT_P208
  • DXGI_FORMAT_V208
  • DXGI_FORMAT_V408
當 Surface 計數為 2 時:
  • {DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8G8_UNORM}
當 Surface 計數為 3 時:
  • {DXGI_FORMAT_R8_UNORM,DXGI_FORMAT_R8_UNORM,DXGI_FORMAT_R8_UNORM}
DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P601 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P601

DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P709

DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P709

DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P2020

DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P2020

1,2,3 當 Surface 計數為 1 時:
  • DXGI_FORMAT_NV12
  • DXGI_FORMAT_YUY2
  • DXGI_FORMAT_P208
  • DXGI_FORMAT_V208
當 Surface 計數為 2 時:
  • {DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8G8_UNORM}
當 Surface 計數為 3 時:
  • {DXGI_FORMAT_R8_UNORM,DXGI_FORMAT_R8_UNORM,DXGI_FORMAT_R8_UNORM}
 

GPU 也必須有足夠的支援,才能讓 D2D 支援圖元格式。 若要判斷 D2D 是否支援格式,請呼叫 IsDxgiFormatSupported。

此 API 會使用提供的色彩空間類型和選項,將 YCbCr 格式轉換為 sRGB。 RGBA 數據假設位於所需的空間中,而 D2D 不會套用任何轉換。

如果提供多個表面,這個方法會從每個對應來源矩形的相對大小 (或來源矩形參數為 NULL,推斷色板的子取樣 (2x) ,或是來源矩形參數為 NULL,每個表面的界限) 。 第二個和第三個矩形的大小必須等於第一個矩形,或是第一個矩形,其中一個或兩個維度在四捨五入) 時縮放 0.5 (。

如果提供,來源矩形必須位於對應表面的界限內。 來源矩形可能有不同的原點。 在此情況下,這個方法會將數據從每個平面移位,以彼此對齊。

規格需求

需求
最低支援的用戶端 Windows 10 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2016 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 d2d1_3.h
Dll D2d1.dll

另請參閱

ID2D1DeviceContext2