Funzione DCompositionCreateDevice2 (dcomp.h)
Crea un nuovo oggetto dispositivo che può essere usato per creare altri oggetti Microsoft DirectComposition.
Sintassi
HRESULT DCompositionCreateDevice2(
[in, optional] IUnknown *renderingDevice,
[in] REFIID iid,
[out] void **dcompositionDevice
);
Parametri
[in, optional] renderingDevice
Puntatore facoltativo a un dispositivo DirectX da usare per creare oggetti di superficie DirectComposition. Deve essere un puntatore a un oggetto che implementa le interfacce IDXGIDevice o ID2D1Device .
[in] iid
Identificatore dell'interfaccia da recuperare. Questo deve essere uno dei __uuidof(IDCompositionDevice) o __uuidof(IDCompositionDesktopDevice).
[out] dcompositionDevice
Riceve un puntatore dell'interfaccia all'oggetto dispositivo appena creato. Il puntatore è del tipo specificato dal parametro iid . Questo parametro non deve essere NULL.
Valore restituito
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 IDCompositionDevice2::Commit.
Il parametro renderingDevice può puntare a un oggetto dispositivo DXGI, Direct3D, Direct2D o null. Questo parametro influisce sul comportamento dei metodi IDCompositionDevice2::CreateSurface, IDCompositionDevice2::CreateVirtualSurface e IDCompositionSurface::BeginDraw.
Se il parametro renderingDevice è NULL, il dispositivo DirectComposition restituito non può creare direttamente oggetti superficie DirectComposition. In particolare, i metodi IDCompositionDevice2::CreateSurface e IDCompositionDevice2::CreateVirtualSurface restituiscono E_INVALIDARG, indipendentemente dai parametri specificati. Tuttavia, tale oggetto dispositivo DirectComposition può comunque essere usato per creare superfici indirettamente se l'applicazione crea un oggetto surface factory tramite il metodo IDCompositionDevice2::CreateSurfaceFactory.
Se il parametro renderingDevice punta a un dispositivo DXGI, tale dispositivo viene usato per allocare tutta la memoria video necessaria dai metodi IDCompositionDevice2::CreateSurface e IDCompositionDevice2::CreateVirtualSurface. Inoltre, il metodo IDCompositionSurface::BeginDraw restituisce un puntatore dell'interfaccia a una superficie DXGI appartenente allo stesso dispositivo DXGI.
Se il parametro renderingDevice punta a un oggetto dispositivo Direct2D, DirectComposition estrae dall'oggetto dispositivo DXGI sottostante e lo usa come se tale oggetto dispositivo DXGI fosse stato passato come parametro renderingDevice . Tuttavia, passando un oggetto Direct2D fa in modo che IDCompositionSurface::BeginDraw accetti __uuidof(ID2D1DeviceContext) per il relativo parametro iid per gli oggetti creati con IDCompositionDevice2::CreateSurface o IDCompositionDevice2::CreateVirtualSurface. In tal caso, l'oggetto contesto del dispositivo Direct2D restituito da IDCompositionSurface::BeginDraw appartiene allo stesso dispositivo Direct2D passato come parametro renderingDevice .
Se il parametro iid è __uuidof(IDCompositionDevice), il parametro dcompositionDevice riceve un puntatore a un'interfaccia IDCompositionDevice versione 1, ma l'oggetto sottostante è un oggetto dispositivo desktop versione 2. L'applicazione può in seguito ottenere un puntatore alle interfacce IDCompositionDevice2 o IDCompositionDesktopDevice chiamando il metodo QueryInterface nel dispositivo. Analogamente, tutti gli oggetti DirectComposition creati da tale dispositivo sono oggetti versione 2 sotto le copertine. Ad esempio, il metodo IDCompositionDevice::CreateVisual restituirà un'interfaccia IDCompositionVisual all'oggetto visivo creato, ma l'applicazione può ottenere un puntatore all'interfaccia IDCompositionVisual2 tramite il metodo QueryInterface. Questo comportamento consente a un'applicazione scritta nell'API DirectComposition V1 di adottare in modo incrementale le funzionalità DirectComposition V2 modificando il metodo di creazione del dispositivo da DCompositionCreateDevice a DCompositionCreateDevice2, pur richiedendo ancora l'interfaccia IDCompositionDevice2. Ciò consente al resto del codice di rimanere invariato, consentendo all'applicazione di usare QueryInterface nelle posizioni in cui è necessaria una nuova funzionalità.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 8.1 [solo app desktop] |
Server minimo supportato | Windows Server 2012 R2 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | dcomp.h |
Libreria | Dcomp.lib |
DLL | Dcomp.dll |
Vedi anche
IDCompositionDesktopDevice
IDCompositionDevice2
IDCompositionDevice2::CreateSurface
IDCompositionDevice2::CreateSurfaceFactory
IDCompositionDevice2::CreateVirtualSurface
IDCompositionSurface::BeginDraw