Função DCompositionCreateDevice (dcomp.h)
Cria um novo objeto de dispositivo que pode ser usado para criar outros objetos Do Microsoft DirectComposition.
Sintaxe
HRESULT DCompositionCreateDevice(
[in] IDXGIDevice *dxgiDevice,
[in] REFIID iid,
[out] void **dcompositionDevice
);
Parâmetros
[in] dxgiDevice
Tipo: IDXGIDevice*
O dispositivo DXGI a ser usado para criar objetos de superfície DirectComposition.
[in] iid
Tipo: REFIID
O identificador da interface a ser recuperada.
[out] dcompositionDevice
Tipo: void**
Recebe um ponteiro de interface para o objeto de dispositivo recém-criado. O ponteiro é do tipo especificado pelo parâmetro iid . Esse parâmetro não deve ser NULL.
Valor retornado
Tipo: HRESULT
Se a função for bem-sucedida, ela retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT. Confira Códigos de erro do DirectComposition para obter uma lista de códigos de erro.
Comentários
Um objeto de dispositivo serve como a fábrica para todos os outros objetos DirectComposition. Ele também controla a composição transacional por meio do método IDCompositionDevice::Commit .
O dispositivo DXGI especificado por dxgiDevice é usado para criar todos os objetos de superfície DirectComposition. Em particular, o método IDCompositionSurface::BeginDraw retorna um ponteiro de interface para uma superfície DXGI que pertence ao dispositivo especificado pelo parâmetro dxgiDevice .
Ao criar o dispositivo DXGI, os desenvolvedores devem especificar o sinalizador D3D11_CREATE_DEVICE BGRA_SUPPORT ou D3D10_CREATE_DEVICE_BGRA_SUPPORT para interoperabilidade direct2D com recursos do Microsoft Direct3D.
O parâmetro iid deve ser __uuidof(IDCompositionDevice)
e o parâmetro dcompositionDevice recebe um ponteiro para uma interface IDCompositionDevice .
Exemplos
O exemplo a seguir mostra como criar um objeto de dispositivo como parte da inicialização 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 com suporte | Windows 8 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2012 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | dcomp.h |
Biblioteca | Dcomp.lib |
DLL | Dcomp.dll |