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 |
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour