DCompositionCreateDevice 函数 (dcomp.h)
创建可用于创建其他 Microsoft DirectComposition 对象的新设备对象。
语法
HRESULT DCompositionCreateDevice(
[in] IDXGIDevice *dxgiDevice,
[in] REFIID iid,
[out] void **dcompositionDevice
);
参数
[in] dxgiDevice
类型: IDXGIDevice*
用于创建 DirectComposition 表面对象的 DXGI 设备。
[in] iid
类型: REFIID
要检索的接口的标识符。
[out] dcompositionDevice
类型: void**
接收指向新创建的设备对象的接口指针。 指针的类型由 iid 参数指定。 此参数不能为 NULL。
返回值
类型: HRESULT
如果函数成功,则返回S_OK。 否则,将返回 HRESULT 错误代码。 有关错误代码列表,请参阅 DirectComposition 错误代码。
备注
设备对象充当所有其他 DirectComposition 对象的工厂。 它还通过 IDCompositionDevice::Commit 方法控制事务组合。
dxgiDevice 指定的 DXGI 设备用于创建所有 DirectComposition 图面对象。 具体而言, IDCompositionSurface::BeginDraw 方法返回指向 DXGI 图面的接口指针,该图面属于 dxgiDevice 参数指定的设备。
创建 DXGI 设备时,开发人员必须为 Direct2D 与 Microsoft Direct3D 资源的互操作性指定 D3D11_CREATE_DEVICE BGRA_SUPPORT 或 D3D10_CREATE_DEVICE_BGRA_SUPPORT 标志。
iid 参数必须为 __uuidof(IDCompositionDevice)
,并且 dcompositionDevice 参数接收指向 IDCompositionDevice 接口的指针。
示例
以下示例演示如何在初始化 DirectComposition 对象时创建设备对象。
#include <dcomp.h>
#include <d3d11.h>
HRESULT InitializeDirectCompositionDevice(HWND hwndTarget,
ID3D11Device **ppD3D11Device, IDCompositionDevice **ppDevice,
IDCompositionTarget **ppCompTarget)
{
HRESULT hr = S_OK;
D3D_FEATURE_LEVEL featureLevelSupported;
IDXGIDevice *pDXGIDevice = nullptr;
// Verify that the arguments are valid.
if (hwndTarget == NULL || ppD3D11Device == nullptr || ppDevice == nullptr ||
ppCompTarget == nullptr)
{
return E_INVALIDARG;
}
// Create the D3D device object. Note that the
// D3D11_CREATE_DEVICE_BGRA_SUPPORT flag is needed for rendering
// on surfaces using Direct2D.
hr = D3D11CreateDevice(
nullptr,
D3D_DRIVER_TYPE_HARDWARE,
NULL,
D3D11_CREATE_DEVICE_BGRA_SUPPORT, // needed for rendering on surfaces using Direct2D
NULL,
0,
D3D11_SDK_VERSION,
ppD3D11Device,
&featureLevelSupported,
NULL);
if (SUCCEEDED(hr))
{
// Create the DXGI device used to create bitmap surfaces.
hr = (*ppD3D11Device)->QueryInterface(&pDXGIDevice);
}
if (SUCCEEDED(hr))
{
// Create the DirectComposition device object.
hr = DCompositionCreateDevice(pDXGIDevice, __uuidof(IDCompositionDevice),
reinterpret_cast<void **>(ppDevice));
}
if (SUCCEEDED(hr))
{
// Bind the DirectComposition device to the target window.
hr = (*ppDevice)->CreateTargetForHwnd(hwndTarget, TRUE, ppCompTarget);
}
return hr;
}
要求
最低受支持的客户端 | Windows 8 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2012 [仅限桌面应用] |
目标平台 | Windows |
标头 | dcomp.h |
Library | Dcomp.lib |
DLL | Dcomp.dll |