Función DCompositionCreateDevice (dcomp.h)
Crea un nuevo objeto de dispositivo que se puede usar para crear otros objetos Microsoft DirectComposition.
Sintaxis
HRESULT DCompositionCreateDevice(
[in] IDXGIDevice *dxgiDevice,
[in] REFIID iid,
[out] void **dcompositionDevice
);
Parámetros
[in] dxgiDevice
Tipo: IDXGIDevice*
Dispositivo DXGI que se va a usar para crear objetos de superficie DirectComposition.
[in] iid
Tipo: REFIID
Identificador de la interfaz que se va a recuperar.
[out] dcompositionDevice
Tipo: void**
Recibe un puntero de interfaz al objeto de dispositivo recién creado. El puntero es del tipo especificado por el parámetro iid . Este parámetro no debe ser null.
Valor devuelto
Tipo: HRESULT
Si la función se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT. Consulte Códigos de error de DirectComposition para obtener una lista de códigos de error.
Comentarios
Un objeto de dispositivo actúa como fábrica para todos los demás objetos DirectComposition. También controla la composición transaccional a través del método IDCompositionDevice::Commit .
El dispositivo DXGI especificado por dxgiDevice se usa para crear todos los objetos de superficie DirectComposition. En concreto, el método IDCompositionSurface::BeginDraw devuelve un puntero de interfaz a una superficie DXGI que pertenece al dispositivo especificado por el parámetro dxgiDevice .
Al crear el dispositivo DXGI, los desarrolladores deben especificar la marca D3D11_CREATE_DEVICE BGRA_SUPPORT o D3D10_CREATE_DEVICE_BGRA_SUPPORT para la interoperabilidad de Direct2D con los recursos de Microsoft Direct3D.
El parámetro iid debe ser __uuidof(IDCompositionDevice)
y el parámetro dcompositionDevice recibe un puntero a una interfaz IDCompositionDevice .
Ejemplos
En el ejemplo siguiente se muestra cómo crear un objeto de dispositivo como parte de la inicialización de objetos 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;
}
Requisitos
Cliente mínimo compatible | Windows 8 [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2012 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | dcomp.h |
Library | Dcomp.lib |
Archivo DLL | Dcomp.dll |