Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 |