DCompositionCreateDevice-Funktion (dcomp.h)
Erstellt ein neues Geräteobjekt, das zum Erstellen anderer Microsoft DirectComposition-Objekte verwendet werden kann.
Syntax
HRESULT DCompositionCreateDevice(
[in] IDXGIDevice *dxgiDevice,
[in] REFIID iid,
[out] void **dcompositionDevice
);
Parameter
[in] dxgiDevice
Typ: IDXGIDevice*
Das DXGI-Gerät, das zum Erstellen von DirectComposition-Oberflächenobjekten verwendet werden soll.
[in] iid
Typ: REFIID
Der Bezeichner der abzurufenden Schnittstelle.
[out] dcompositionDevice
Typ: void**
Empfängt einen Schnittstellenzeiger auf das neu erstellte Geräteobjekt. Der Zeiger hat den vom iid-Parameter angegebenen Typ. Dieser Parameter darf nicht NULL sein.
Rückgabewert
Typ: HRESULT
Wenn die Funktion erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein Fehlercode HRESULT zurückgegeben. Eine Liste der Fehlercodes finden Sie unter DirectComposition-Fehlercodes .
Hinweise
Ein Geräteobjekt dient als Factory für alle anderen DirectComposition-Objekte. Außerdem wird die Transaktionskomposition über die IDCompositionDevice::Commit-Methode gesteuert.
Das von dxgiDevice angegebene DXGI-Gerät wird verwendet, um alle DirectComposition-Oberflächenobjekte zu erstellen. Insbesondere gibt die IDCompositionSurface::BeginDraw-Methode einen Schnittstellenzeiger auf eine DXGI-Oberfläche zurück, die zu dem durch den dxgiDevice-Parameter angegebenen Gerät gehört.
Beim Erstellen des DXGI-Geräts müssen Entwickler das D3D11_CREATE_DEVICE BGRA_SUPPORT - oder D3D10_CREATE_DEVICE_BGRA_SUPPORT-Flag für die Direct2D-Interoperabilität mit Microsoft Direct3D-Ressourcen angeben.
Der iid-Parameter muss lauten __uuidof(IDCompositionDevice)
, und der dcompositionDevice-Parameter empfängt einen Zeiger auf eine IDCompositionDevice-Schnittstelle .
Beispiele
Das folgende Beispiel zeigt, wie Sie ein Geräteobjekt im Rahmen der Initialisierung von DirectComposition-Objekten erstellen.
#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;
}
Anforderungen
Unterstützte Mindestversion (Client) | Windows 8 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2012 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | dcomp.h |
Bibliothek | Dcomp.lib |
DLL | Dcomp.dll |