Funzione DCompositionCreateDevice (dcomp.h)
Crea un nuovo oggetto dispositivo che può essere utilizzato per creare altri oggetti Microsoft DirectComposition.
Sintassi
HRESULT DCompositionCreateDevice(
[in] IDXGIDevice *dxgiDevice,
[in] REFIID iid,
[out] void **dcompositionDevice
);
Parametri
[in] dxgiDevice
Tipo: IDXGIDevice*
Dispositivo DXGI da usare per creare oggetti superficie DirectComposition.
[in] iid
Tipo: REFIID
Identificatore dell'interfaccia da recuperare.
[out] dcompositionDevice
Tipo: void**
Riceve un puntatore di interfaccia all'oggetto dispositivo appena creato. Il puntatore è del tipo specificato dal parametro iid . Questo parametro non deve essere NULL.
Valore restituito
Tipo: HRESULT
Se la funzione ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT . Per un elenco di codici di errore, vedere Codici di errore directComposition .
Commenti
Un oggetto dispositivo funge da factory per tutti gli altri oggetti DirectComposition. Controlla anche la composizione transazionale tramite il metodo IDCompositionDevice::Commit .
Il dispositivo DXGI specificato da dxgiDevice viene usato per creare tutti gli oggetti superficie DirectComposition. In particolare, il metodo IDCompositionSurface::BeginDraw restituisce un puntatore di interfaccia a una superficie DXGI appartenente al dispositivo specificato dal parametro dxgiDevice .
Quando si crea il dispositivo DXGI, gli sviluppatori devono specificare il flag D3D11_CREATE_DEVICE BGRA_SUPPORT o D3D10_CREATE_DEVICE_BGRA_SUPPORT per l'interoperabilità Direct2D con le risorse di Microsoft Direct3D.
Il parametro iid deve essere __uuidof(IDCompositionDevice)
e il parametro dcompositionDevice riceve un puntatore a un'interfaccia IDCompositionDevice .
Esempio
Nell'esempio seguente viene illustrato come creare un oggetto dispositivo come parte dell'inizializzazione di oggetti 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;
}
Requisiti
Client minimo supportato | Windows 8 [solo app desktop] |
Server minimo supportato | Windows Server 2012 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | dcomp.h |
Libreria | Dcomp.lib |
DLL | Dcomp.dll |