Функция D3D11CreateDevice (d3d11.h)
Создает устройство, представляющее видеоадаптер.
Синтаксис
HRESULT D3D11CreateDevice(
[in, optional] IDXGIAdapter *pAdapter,
D3D_DRIVER_TYPE DriverType,
HMODULE Software,
UINT Flags,
[in, optional] const D3D_FEATURE_LEVEL *pFeatureLevels,
UINT FeatureLevels,
UINT SDKVersion,
[out, optional] ID3D11Device **ppDevice,
[out, optional] D3D_FEATURE_LEVEL *pFeatureLevel,
[out, optional] ID3D11DeviceContext **ppImmediateContext
);
Параметры
[in, optional] pAdapter
Тип: IDXGIAdapter*
Указатель на видеоадаптер, используемый при создании устройства. Передайте значение NULL , чтобы использовать адаптер по умолчанию, который является первым адаптером, перечисляемым IDXGIFactory1::EnumAdapters.
DriverType
Тип: D3D_DRIVER_TYPE
D3D_DRIVER_TYPE, представляющий тип создаваемого драйвера.
Software
Тип: HMODULE
Дескриптор библиотеки DLL, реализующий программный растеризатор. Если DriverType имеет значение D3D_DRIVER_TYPE_SOFTWARE, программное обеспечение не должно иметь значение NULL. Получите дескриптор, вызвав LoadLibrary, LoadLibraryEx или GetModuleHandle.
Flags
Тип: UINT
Уровни среды выполнения для включения (см. D3D11_CREATE_DEVICE_FLAG); значения могут быть побитовой ИЛИ.
[in, optional] pFeatureLevels
Тип: const D3D_FEATURE_LEVEL*
Указатель на массив D3D_FEATURE_LEVELs, определяющий порядок уровней признаков, которые необходимо создать. Если для 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,
};
FeatureLevels
Тип: UINT
Количество элементов в pFeatureLevels.
SDKVersion
Тип: UINT
Версия пакета SDK; используйте D3D11_SDK_VERSION.
[out, optional] ppDevice
Тип: ID3D11Device**
Возвращает адрес указателя на объект ID3D11Device , представляющий созданное устройство. Если этот параметр имеет значение NULL, id3D11Device не возвращается.
[out, optional] pFeatureLevel
Тип: D3D_FEATURE_LEVEL*
В случае успешного выполнения возвращает первый D3D_FEATURE_LEVEL из массива pFeatureLevels , который завершился успешно. Укажите значение NULL в качестве входных данных, если не нужно определять, какой уровень функций поддерживается.
[out, optional] ppImmediateContext
Тип: ID3D11DeviceContext**
Возвращает адрес указателя на объект ID3D11DeviceContext , представляющий контекст устройства. Если этот параметр имеет значение NULL, id3D11DeviceContext не возвращается.
Возвращаемое значение
Тип: HRESULT
Этот метод может возвращать один из кодов возврата Direct3D 11.
Этот метод возвращает E_INVALIDARG, если для параметра pAdapter задано значение, отличное от NULL , а для параметра DriverType — значение D3D_DRIVER_TYPE_HARDWARE.
Этот метод возвращает DXGI_ERROR_SDK_COMPONENT_MISSING , если вы указали D3D11_CREATE_DEVICE_DEBUG в разделе Флаги и на компьютере установлена неверная версия отладочного слоя . Установите последнюю версию windows SDK, чтобы получить правильную версию.
Комментарии
Эта точка входа поддерживается средой выполнения 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.
Присвойте ppDevice и ppImmediateContextзначение NULL , чтобы определить поддерживаемый уровень функций, просмотрев pFeatureLevel без создания устройства.
Пример см. в разделах Практическое руководство. Создание устройства и Непосредственный контекст. Чтобы создать устройство и цепочку буферов одновременно, используйте D3D11CreateDeviceAndSwapChain.
Если для параметра pAdapter задано значение, отличное от NULL , необходимо также задать для параметра DriverType значение D3D_DRIVER_TYPE_UNKNOWN. Если для параметра pAdapter задано значение, отличное от NULL , а для параметра DriverType — значение D3D_DRIVER_TYPE_HARDWARE, D3D11CreateDevice возвращает HRESULT E_INVALIDARG.
Различия между Direct3D 10 и Direct3D 11: В Direct3D 10 наличие pAdapter определяет, какой адаптер следует использовать, и DriverType может не совпадать с тем, что адаптер был. Если вы пытаетесь создать аппаратное или программное устройство в Direct3D 11, задайте pAdapter != NULL , который ограничивает другие входные данные следующим образом:
|
Сигнатура функции PFN_D3D11_CREATE_DEVICE предоставляется в виде определения типа, поэтому вместо статического связывания можно использовать методы динамической компоновки (GetProcAddress).
Windows Phone 8. Этот API поддерживается.
Windows Phone 8.1: этот API поддерживается.
Требования
Целевая платформа | Windows |
Header | d3d11.h |
Библиотека | D3D11.lib |
DLL | D3D11.dll |