Метод IDXGIFactory2::CreateSwapChainForHwnd (dxgi1_2.h)
Создает цепочку буферов, связанную с дескриптором HWND в окне вывода для цепочки буферов.
Синтаксис
HRESULT CreateSwapChainForHwnd(
[in] IUnknown *pDevice,
[in] HWND hWnd,
[in] const DXGI_SWAP_CHAIN_DESC1 *pDesc,
[in, optional] const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,
[in, optional] IDXGIOutput *pRestrictToOutput,
[out] IDXGISwapChain1 **ppSwapChain
);
Параметры
[in] pDevice
Для Direct3D 11 и более ранних версий Direct3D это указатель на устройство Direct3D для цепочки буферов. Для Direct3D 12 это указатель на прямую очередь команд (см. ID3D12CommandQueue). Этот параметр не может иметь значение NULL.
[in] hWnd
Дескриптор HWND , связанный с цепочкой буферов, создаваемой CreateSwapChainForHwnd . Этот параметр не может иметь значение NULL.
[in] pDesc
Указатель на структуру DXGI_SWAP_CHAIN_DESC1 для описания цепочки буферов. Этот параметр не может иметь значение NULL.
[in, optional] pFullscreenDesc
Указатель на структуру DXGI_SWAP_CHAIN_FULLSCREEN_DESC для описания цепочки буферов в полноэкранном режиме. При необходимости этот параметр можно задать для создания цепочки буферов в полноэкранном режиме. Присвойте ему значение NULL , чтобы создать цепочку буферов с окном.
[in, optional] pRestrictToOutput
Указатель на интерфейс IDXGIOutput для выходных данных для ограничения содержимого. Кроме того, необходимо передать флаг DXGI_PRESENT_RESTRICT_TO_OUTPUT в вызове IDXGISwapChain1::P resent1 , чтобы содержимое было затемнено в любых других выходных данных. Если вы хотите ограничить содержимое другими выходными данными, необходимо создать новую цепочку буферов. Однако можно условно ограничить содержимое на основе флага DXGI_PRESENT_RESTRICT_TO_OUTPUT .
Задайте для этого параметра значение NULL , если вы не хотите ограничивать содержимое целевым объектом вывода.
[out] ppSwapChain
Указатель на переменную, которая получает указатель на интерфейс IDXGISwapChain1 для цепочки буферов, создаваемой CreateSwapChainForHwnd .
Возвращаемое значение
CreateSwapChainForHwnd возвращает:
- S_OK, если цепочка буферов успешно создана.
- E_OUTOFMEMORY, если память недоступна для завершения операции.
- DXGI_ERROR_INVALID_CALL , если вызывающее приложение предоставило недопустимые данные, например, если pDesc или ppSwapChain имеет значение NULL или члены данных pDesc недопустимы.
- Возможно, другие коды ошибок, описанные в разделе DXGI_ERROR , которые определяются типом устройства, передаваемого в pDevice.
Обновление платформы для Windows 7: DXGI_SCALING_NONE не поддерживается в Windows 7 или Windows Server 2008 R2 с установленным обновлением платформы для Windows 7 и вызывает возврат DXGI_ERROR_INVALID_CALL при вызове метода CreateSwapChainForHwnd . Дополнительные сведения об Обновлении платформы для Windows 7 см. в разделе Обновление платформы для Windows 7.
Комментарии
Затем можно вызвать метод IDXGISwapChain1::GetDesc1 , чтобы получить назначенное значение ширины или высоты.
Так как вы можете связать только одну цепочку буферов модели представления с HWND одновременно, политика Microsoft Direct3D 11 отсрочки уничтожения объектов может вызвать проблемы при попытке уничтожить цепочку буферов модели представления и заменить ее другой цепочкой буферов. Дополнительные сведения об этой ситуации см. в разделе Проблемы с отложенным уничтожением при использовании цепочек буферов представления flip.
Сведения о том, как выбрать формат для обратного буфера цепочки буферов, см. в разделе Преобразование данных для цветового пространства.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 и обновление платформы для Windows 7 [только классические приложения] |
Минимальная версия сервера | Windows Server 2012 и обновление платформы для Windows Server 2008 R2 [только классические приложения] |
Целевая платформа | Windows |
Header | dxgi1_2.h |
Библиотека | Dxgi.lib |
См. также раздел
Для достижения оптимальной производительности используйте модель пролистывания DXGI.