Bagikan melalui


enumerasi DXGI_SCALING (dxgi1_2.h)

Mengidentifikasi perilaku mengubah ukuran ketika ukuran back-buffer tidak cocok dengan ukuran output target.

Sintaks

typedef enum DXGI_SCALING {
  DXGI_SCALING_STRETCH = 0,
  DXGI_SCALING_NONE = 1,
  DXGI_SCALING_ASPECT_RATIO_STRETCH = 2
} ;

Konstanta

 
DXGI_SCALING_STRETCH
Nilai: 0
Mengarahkan DXGI untuk membuat konten back-buffer diskalakan agar sesuai dengan ukuran target presentasi. Ini adalah perilaku implisit DXGI ketika Anda memanggil metode IDXGIFactory::CreateSwapChain .
DXGI_SCALING_NONE
Nilai: 1
Mengarahkan DXGI untuk membuat konten back-buffer muncul tanpa penskalaan apa pun saat ukuran target presentasi tidak sama dengan ukuran back-buffer. Tepi atas buffer belakang dan target presentasi diratakan bersama-sama. Jika gaya WS_EX_LAYOUTRTL dikaitkan dengan handel HWND ke jendela output target, tepi kanan buffer belakang dan target presentasi diratakan bersamaan; jika tidak, tepi kiri diratakan bersama-sama. Semua area target di luar buffer belakang diisi dengan warna latar belakang jendela.

Nilai ini menentukan bahwa semua area target di luar buffer belakang rantai pertukaran diisi dengan warna latar belakang yang Anda tentukan dalam panggilan ke IDXGISwapChain1::SetBackgroundColor.
DXGI_SCALING_ASPECT_RATIO_STRETCH
Nilai: 2
Mengarahkan DXGI untuk membuat konten back-buffer diskalakan agar sesuai dengan ukuran target presentasi, sambil mempertahankan rasio aspek back-buffer. Jika back-buffer yang diskalakan tidak mengisi area presentasi, itu akan dipusatkan dengan batas hitam.

Konstanta ini didukung pada Windows Phone 8 dan Windows 10.

Perhatikan bahwa dengan swapchain jendela Win32 warisan, ini berfungsi sama dengan DXGI_SCALING_STRETCH.

Keterangan

Nilai DXGI_SCALING_NONE hanya didukung untuk membalik rantai pertukaran model presentasi yang Anda buat dengan nilai DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL atau DXGI_SWAP_EFFECT_FLIP_DISCARD . Anda meneruskan nilai-nilai ini dalam panggilan ke IDXGIFactory2::CreateSwapChainForHwnd, IDXGIFactory2::CreateSwapChainForCoreWindow, atau IDXGIFactory2::CreateSwapChainForComposition.

DXGI_SCALING_ASPECT_RATIO_STRETCH akan lebih suka menggunakan isian horizontal, jika tidak, akan menggunakan isian vertikal, menggunakan logika berikut.

float aspectRatio = backBufferWidth / float(backBufferHeight);

 // Horizontal fill
 float scaledWidth = outputWidth;
 float scaledHeight = outputWidth / aspectRatio;
 if (scaledHeight >= outputHeight)
 {
   // Do vertical fill
   scaledWidth = outputHeight * aspectRatio;
   scaledHeight = outputHeight;
 }

 float offsetX = (outputWidth - scaledWidth) * 0.5f;
 float offsetY = (outputHeight - scaledHeight) * 0.5f;

 rect.left = static_cast<LONG>(offsetX);
 rect.top = static_cast<LONG>(offsetY);
 rect.right = static_cast<LONG>(offsetX + scaledWidth);
 rect.bottom = static_cast<LONG>(offsetY + scaledHeight);

 rect.left = std::max<LONG>(0, rect.left);
 rect.top = std::max<LONG>(0, rect.top);
 rect.right = std::min<LONG>(static_cast<LONG>(outputWidth), rect.right);
 rect.bottom = std::min<LONG>(static_cast<LONG>(outputHeight), rect.bottom);

Perhatikan bahwa outputWidth dan outputHeight adalah ukuran piksel dari ukuran target presentasi. Dalam kasus CoreWindow, ini memerlukan konversi nilai logicalWidth dan logicalHeight dari DIPS ke piksel menggunakan properti DPI jendela.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 8 dan Pembaruan Platform untuk Windows 7 [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2012 dan Pembaruan Platform untuk Windows Server 2008 R2 [aplikasi desktop | Aplikasi UWP]
Header dxgi1_2.h

Lihat juga

Enumerasi DXGI

DXGI_SWAP_CHAIN_DESC1