MÉTHODE ID2D1Factory ::CreateDxgiSurfaceRenderTarget(IDXGISurface*,constD2D1_RENDER_TARGET_PROPERTIES*,ID2D1RenderTarget**) (d2d1.h)
Crée une cible de rendu qui dessine une surface DXGI (DirectX Graphics Infrastructure).
Syntaxe
HRESULT CreateDxgiSurfaceRenderTarget(
[in] IDXGISurface *dxgiSurface,
[in] const D2D1_RENDER_TARGET_PROPERTIES *renderTargetProperties,
[out] ID2D1RenderTarget **renderTarget
);
Paramètres
[in] dxgiSurface
Type : IDXGISurface*
IDXGISurface vers lequel la cible de rendu doit dessiner.
[in] renderTargetProperties
Type : const D2D1_RENDER_TARGET_PROPERTIES*
Le mode de rendu, le format des pixels, les options de communication à distance, les informations DPI et la prise en charge minimale de DirectX requise pour le rendu matériel. Pour plus d’informations sur les formats de pixels pris en charge, consultez Formats de pixels pris en charge et Modes Alpha.
[out] renderTarget
Type : ID2D1RenderTarget**
Lorsque cette méthode retourne, contient l’adresse du pointeur vers l’objet ID2D1RenderTarget créé par cette méthode.
Valeur retournée
Type : HRESULT
Si cette méthode réussit, elle retourne S_OK. Sinon, il retourne un code d’erreur HRESULT .
Remarques
Pour écrire sur une surface Direct3D, vous obtenez un IDXGISurface et passez-le à la méthode CreateDxgiSurfaceRenderTarget pour créer une cible de rendu de surface DXGI ; vous pouvez ensuite utiliser la cible de rendu de surface DXGI pour dessiner du contenu 2D sur la surface DXGI.
Une cible de rendu de surface DXGI est un type d’ID2D1RenderTarget. Comme d’autres cibles de rendu Direct2D, vous pouvez l’utiliser pour créer des ressources et émettre des commandes de dessin.
La cible de rendu de surface DXGI et la surface DXGI doivent utiliser le même format DXGI. Si vous spécifiez le format DXGI_FORMAT_UNKOWN lorsque vous créez la cible de rendu, elle utilise automatiquement le format de la surface.
La cible de rendu de surface DXGI n’effectue pas la synchronisation de surface DXGI.
Pour plus d’informations sur la création et l’utilisation de cibles de rendu de surface DXGI, consultez Vue d’ensemble de l’interopérabilité Direct2D et Direct3D.
Pour utiliser Direct2D, l’appareil Direct3D qui fournit l’IDXGISurface doit être créé avec l’indicateur D3D10_CREATE_DEVICE_BGRA_SUPPORT .
Lorsque vous créez une cible de rendu et que l’accélération matérielle est disponible, vous allouez des ressources sur le GPU de l’ordinateur. En créant une cible de rendu une seule fois et en la conservant aussi longtemps que possible, vous bénéficiez d’avantages en matière de performances. Votre application doit créer des cibles de rendu une seule fois et les conserver pendant toute la durée de vie de l’application ou jusqu’à ce que la méthode EndDraw de la cible de rendu retourne l’erreur D2DERR_RECREATE_TARGET . Lorsque vous recevez cette erreur, vous devez recréer la cible de rendu (et toutes les ressources qu’elle a créées).
Exemples
L’exemple suivant obtient une surface DXGI (pBackBuffer) à partir d’un IDXGISwapChain et l’utilise pour créer une cible de rendu de surface DXGI.
// Initialize *hwnd* with the handle of the window displaying the rendered content.
HWND hwnd;
// Get a surface in the swap chain
hr = m_pSwapChain->GetBuffer(
0,
IID_PPV_ARGS(&pBackBuffer));
if (SUCCEEDED(hr))
{
// Create the DXGI Surface Render Target.
float dpi = GetDpiForWindow(hwnd);
D2D1_RENDER_TARGET_PROPERTIES props =
D2D1::RenderTargetProperties(
D2D1_RENDER_TARGET_TYPE_DEFAULT,
D2D1::PixelFormat(DXGI_FORMAT_UNKNOWN, D2D1_ALPHA_MODE_PREMULTIPLIED),
dpi,
dpi
);
// Create a Direct2D render target that can draw into the surface in the swap chain.
hr = m_pD2DFactory->CreateDxgiSurfaceRenderTarget(
pBackBuffer,
&props,
&m_pBackBufferRT);
}
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Windows |
En-tête | d2d1.h |
Bibliothèque | D2d1.lib |
DLL | D2d1.dll |
Voir aussi
CreateDxgiSurfaceRenderTarget(IDXGISurface,const D2D1_RENDER_TARGET_PROPERTIES &,ID2D1RenderTarget)