METODE ID2D1DeviceContext2::CreateImageSourceFromDxgi (d2d1_3.h)

Membuat sumber gambar dari satu set permukaan DXGI. Permukaan YCbCr dikonversi ke RGBA secara otomatis selama gambar berikutnya.

Sintaks

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

Parameter

surfaces

Ketik: [in] IDXGISurface**

DXGI muncul untuk membuat sumber gambar.

surfaceCount

Jenis: UINT32

Jumlah permukaan yang disediakan; harus antara satu dan tiga.

colorSpace

Jenis: DXGI_COLOR_SPACE_TYPE

Ruang warna input.

options

Jenis: D2D1_IMAGE_SOURCE_FROM_DXGI_OPTIONS

Opsi yang mengontrol konversi ruang warna.

imageSource

Jenis: [out] ID2D1ImageSource**

Menerima instans sumber gambar baru.

Nilai kembali

Jenis: HRESULT

S_OK jika berhasil, jika tidak, HRESULT gagal.

Keterangan

Metode ini membuat sumber gambar, yang dapat digunakan untuk menggambar gambar.

Metode ini mendukung permukaan yang menggunakan sekumpulan format DXGI terbatas dan jenis ruang warna DXGI. Hanya serangkaian kombinasi jenis ruang warna, format permukaan, dan jumlah permukaan di bawah ini yang didukung:

Tipe Ruang Warna Jumlah Permukaan Format Permukaan
DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709 1 Format piksel standar yang didukung 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 Ketika jumlah Surface adalah 1:
  • DXGI_FORMAT_AYUV
  • DXGI_FORMAT_NV12
  • DXGI_FORMAT_YUY2
  • DXGI_FORMAT_P208
  • DXGI_FORMAT_V208
  • DXGI_FORMAT_V408
Ketika Surface Count adalah 2:
  • {DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8G8_UNORM}
Ketika Surface Count adalah 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 Ketika jumlah Surface adalah 1:
  • DXGI_FORMAT_NV12
  • DXGI_FORMAT_YUY2
  • DXGI_FORMAT_P208
  • DXGI_FORMAT_V208
Ketika Surface Count adalah 2:
  • {DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8G8_UNORM}
Ketika Surface Count adalah 3:
  • {DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8_UNORM}
 

GPU juga harus memiliki dukungan yang memadai agar format piksel didukung oleh D2D. Untuk menentukan apakah D2D mendukung format, panggil IsDxgiFormatSupported.

API ini mengonversi format YCbCr menjadi sRGB menggunakan jenis dan opsi ruang warna yang disediakan. Data RGBA diasumsikan berada di ruang yang diinginkan, dan D2D tidak menerapkan konversi apa pun.

Jika beberapa permukaan disediakan, metode ini menyimpulkan apakah bidang klorma disubsampel (sebesar 2x) dari ukuran relatif setiap persegi panjang sumber yang sesuai (atau jika parameter persegi panjang sumber NULL, batas setiap permukaan). Persegi panjang kedua dan ketiga masing-masing harus sama ukurannya dengan persegi panjang pertama, atau ke persegi panjang pertama dengan satu atau kedua dimensi diskalakan sebesar 0,5 (saat dibulatkan ke atas).

Jika disediakan, persegi panjang sumber harus berada di dalam batas permukaan yang sesuai. Persegi panjang sumber mungkin memiliki asal yang berbeda. Dalam hal ini, metode ini menggeser data dari setiap bidang untuk selaras satu sama lain.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 10 [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2016 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header d2d1_3.h
DLL D2d1.dll

Lihat juga

ID2D1DeviceContext2