Поделиться через


Функция D3D11CreateDeviceAndSwapChain (d3d11.h)

Создает устройство, представляющее видеоадаптер и цепочку буферов, используемую для отрисовки.

Синтаксис

HRESULT D3D11CreateDeviceAndSwapChain(
  [in, optional]  IDXGIAdapter               *pAdapter,
                  D3D_DRIVER_TYPE            DriverType,
                  HMODULE                    Software,
                  UINT                       Flags,
  [in, optional]  const D3D_FEATURE_LEVEL    *pFeatureLevels,
                  UINT                       FeatureLevels,
                  UINT                       SDKVersion,
  [in, optional]  const DXGI_SWAP_CHAIN_DESC *pSwapChainDesc,
  [out, optional] IDXGISwapChain             **ppSwapChain,
  [out, optional] ID3D11Device               **ppDevice,
  [out, optional] D3D_FEATURE_LEVEL          *pFeatureLevel,
  [out, optional] ID3D11DeviceContext        **ppImmediateContext
);

Параметры

[in, optional] pAdapter

Тип: IDXGIAdapter*

Указатель на видеоадаптер, используемый при создании устройства. Передайте значение NULL , чтобы использовать адаптер по умолчанию, который является первым адаптером, перечисляемым IDXGIFactory1::EnumAdapters.

Примечание Не смешивайте использование DXGI 1.0 (IDXGIFactory) и DXGI 1.1 (IDXGIFactory1) в приложении. Используйте IDXGIFactory или IDXGIFactory1, но не оба в приложении.
 

DriverType

Тип: D3D_DRIVER_TYPE

D3D_DRIVER_TYPE, представляющий тип создаваемого драйвера.

Software

Тип: HMODULE

Дескриптор библиотеки DLL, реализующий программный растеризатор. Если driverType имеет значение D3D_DRIVER_TYPE_SOFTWARE, software не должно иметь значение NULL. Получите дескриптор, вызвав LoadLibrary, LoadLibraryEx или GetModuleHandle. Значение должно быть не равно NULL , если D3D_DRIVER_TYPED3D_DRIVER_TYPE_SOFTWARE и NULL в противном случае.

Flags

Тип: UINT

Уровни среды выполнения для включения (см. D3D11_CREATE_DEVICE_FLAG); Значения могут быть побитовой ИЛИ.

[in, optional] pFeatureLevels

Тип: const D3D_FEATURE_LEVEL*

Указатель на массив D3D_FEATURE_LEVEL, определяющий порядок уровней компонентов, которые необходимо создать. Если для pFeatureLevels задано значение NULL, эта функция использует следующий массив уровней признаков:


{
    D3D_FEATURE_LEVEL_11_0,
    D3D_FEATURE_LEVEL_10_1,
    D3D_FEATURE_LEVEL_10_0,
    D3D_FEATURE_LEVEL_9_3,
    D3D_FEATURE_LEVEL_9_2,
    D3D_FEATURE_LEVEL_9_1,
};
          
Примечание Если на компьютере присутствует среда выполнения Direct3D 11.1, а для pFeatureLevels задано значение NULL, эта функция не создаст D3D_FEATURE_LEVEL_11_1 устройство. Чтобы создать устройство D3D_FEATURE_LEVEL_11_1 , необходимо явно указать массив D3D_FEATURE_LEVEL , включающий D3D_FEATURE_LEVEL_11_1. Если указать массив D3D_FEATURE_LEVEL , содержащий D3D_FEATURE_LEVEL_11_1 на компьютере, на котором не установлена среда выполнения Direct3D 11.1, эта функция немедленно завершается сбоем с E_INVALIDARG.
 

FeatureLevels

Тип: UINT

Количество элементов в pFeatureLevels.

SDKVersion

Тип: UINT

Версия пакета SDK; использовать D3D11_SDK_VERSION.

[in, optional] pSwapChainDesc

Тип: const DXGI_SWAP_CHAIN_DESC*

Указатель на описание цепочки буферов (см . DXGI_SWAP_CHAIN_DESC), содержащий параметры инициализации для цепочки буферов.

[out, optional] ppSwapChain

Тип: IDXGISwapChain**

Возвращает адрес указателя на объект IDXGISwapChain , представляющий цепочку буферов, используемую для отрисовки.

[out, optional] ppDevice

Тип: ID3D11Device**

Возвращает адрес указателя на объект ID3D11Device , представляющий созданное устройство. Если этот параметр имеет значение NULL, id3D11Device не возвращается.

[out, optional] pFeatureLevel

Тип: D3D_FEATURE_LEVEL*

Возвращает указатель на D3D_FEATURE_LEVEL, представляющий первый элемент в массиве уровней функций, поддерживаемых устройством. Укажите значение NULL в качестве входных данных, если вам не нужно определять, какой уровень компонентов поддерживается.

[out, optional] ppImmediateContext

Тип: ID3D11DeviceContext**

Возвращает адрес указателя на объект ID3D11DeviceContext , представляющий контекст устройства. Если этот параметр имеет значение NULL, id3D11DeviceContext не возвращается.

Возвращаемое значение

Тип: HRESULT

Этот метод может возвращать один из кодов возврата Direct3D 11.

Этот метод возвращает DXGI_ERROR_NOT_CURRENTLY_AVAILABLE , если вызвать его в процессе сеанса 0.

Этот метод возвращает E_INVALIDARG, если для параметра pAdapter задано значение, отличное от NULL , а для параметра DriverType — значение D3D_DRIVER_TYPE_HARDWARE.

Этот метод возвращает DXGI_ERROR_SDK_COMPONENT_MISSING , если вы указали D3D11_CREATE_DEVICE_DEBUG в разделе Флаги и на компьютере установлена неправильная версия слоя отладки . Установите последнюю версию windows SDK, чтобы получить правильную версию.

Комментарии

Примечание При вызове этого метода в процессе сеанса 0 он возвращает DXGI_ERROR_NOT_CURRENTLY_AVAILABLE.
 
Эта точка входа поддерживается средой выполнения Direct3D 11, которая доступна в Windows 7, Windows Server 2008 R2 и в качестве обновления для Windows Vista (KB971644).

Чтобы создать устройство Direct3D 11.1 (ID3D11Device1), доступное в Windows 8, Windows Server 2012, а также Windows 7 и Windows Server 2008 R2 с установленным обновлением платформы для Windows 7 . Сначала создайте ID3D11Device с этой функцией, а затем вызовите метод QueryInterface в объекте ID3D11Device , чтобы получить интерфейс ID3D11Device1 .

Чтобы создать устройство Direct3D 11.2 (ID3D11Device2), доступное в Windows 8.1 и Windows Server 2012 R2, сначала создайте ID3D11Device с этой функцией, а затем вызовите метод QueryInterface в объекте ID3D11Device, чтобы получить интерфейс ID3D11Device2.

Дополнительные сведения о зависимостях входных параметров см. в разделе примечаний в D3D11CreateDevice . Чтобы создать устройство без создания цепочки буферов, используйте функцию D3D11CreateDevice .

Если для параметра pAdapter задано значение, отличное от NULL , необходимо также задать для параметра DriverType значение D3D_DRIVER_TYPE_UNKNOWN. Если для параметра pAdapter задано значение, отличное от NULL , а для параметра DriverType — значение D3D_DRIVER_TYPE_HARDWARE, D3D11CreateDeviceAndSwapChain возвращает HRESULT E_INVALIDARG.

Сигнатура функции PFN_D3D11_CREATE_DEVICE_AND_SWAP_CHAIN предоставляется в виде определения типа, поэтому вместо статического связывания можно использовать методы динамического связывания (GetProcAddress).

Примечания об использовании

Примечание Функция D3D11CreateDeviceAndSwapChain не существует для приложений Магазина Windows. Вместо этого приложения Магазина Windows используют функцию D3D11CreateDevice , а затем метод IDXGIFactory2::CreateSwapChainForCoreWindow .
 
Примечание Эта функция не была обновлена для поддержки последних дополнительных функций создания цепочки буферов. Самые актуальные методы создания цепочки буферов см. в методах IDXGIFactory2 (включая CreateSwapChainForHwnd, CreateSwapChainForCoreWindow и CreateSwapChainForComposition).
 
Windows Phone 8. Этот API поддерживается.

Требования

   
Целевая платформа Windows
Header d3d11.h
Библиотека D3D11.lib
DLL D3D11.dll

См. также раздел

Основные функции