Fonction DCompositionCreateDevice (dcomp.h)
Crée un objet d’appareil qui peut être utilisé pour créer d’autres objets Microsoft DirectComposition.
Syntaxe
HRESULT DCompositionCreateDevice(
[in] IDXGIDevice *dxgiDevice,
[in] REFIID iid,
[out] void **dcompositionDevice
);
Paramètres
[in] dxgiDevice
Type : IDXGIDevice*
Appareil DXGI à utiliser pour créer des objets de surface DirectComposition.
[in] iid
Type : REFIID
Identificateur de l’interface à récupérer.
[out] dcompositionDevice
Type : void**
Reçoit un pointeur d’interface vers l’objet d’appareil nouvellement créé. Le pointeur est du type spécifié par le paramètre iid . Ce paramètre ne doit pas avoir la valeur NULL.
Valeur retournée
Type : HRESULT
Si la fonction réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreur HRESULT. Pour obtenir la liste des codes d’erreur, consultez Codes d’erreur DirectComposition .
Notes
Un objet d’appareil sert de fabrique pour tous les autres objets DirectComposition. Il contrôle également la composition transactionnelle via la méthode IDCompositionDevice::Commit .
L’appareil DXGI spécifié par dxgiDevice est utilisé pour créer tous les objets de surface DirectComposition. En particulier, la méthode IDCompositionSurface::BeginDraw retourne un pointeur d’interface vers une surface DXGI qui appartient à l’appareil spécifié par le paramètre dxgiDevice .
Lors de la création de l’appareil DXGI, les développeurs doivent spécifier l’indicateur D3D11_CREATE_DEVICE BGRA_SUPPORT ou D3D10_CREATE_DEVICE_BGRA_SUPPORT pour l’interopérabilité Direct2D avec les ressources Microsoft Direct3D.
Le paramètre iid doit être __uuidof(IDCompositionDevice)
, et le paramètre dcompositionDevice reçoit un pointeur vers une interface IDCompositionDevice .
Exemples
L’exemple suivant montre comment créer un objet d’appareil dans le cadre de l’initialisation d’objets 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;
}
Spécifications
Client minimal pris en charge | Windows 8 [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2012 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | dcomp.h |
Bibliothèque | Dcomp.lib |
DLL | Dcomp.dll |