ID2D1Factory::CreateDxgiSurfaceRenderTarget(IDXGISurface*,constD2D1_RENDER_TARGET_PROPERTIES*,ID2D1RenderTarget**)-Methode (d2d1.h)
Erstellt ein Renderziel, das auf eine DxGI-Oberfläche (DirectX Graphics Infrastructure) zeichnet.
Syntax
HRESULT CreateDxgiSurfaceRenderTarget(
[in] IDXGISurface *dxgiSurface,
[in] const D2D1_RENDER_TARGET_PROPERTIES *renderTargetProperties,
[out] ID2D1RenderTarget **renderTarget
);
Parameter
[in] dxgiSurface
Typ: IDXGISurface*
Die IDXGISurface, auf die das Renderziel gezeichnet wird.
[in] renderTargetProperties
Typ: const D2D1_RENDER_TARGET_PROPERTIES*
Der Renderingmodus, das Pixelformat, Remotingoptionen, DPI-Informationen und die minimale DirectX-Unterstützung, die für das Hardwarerendering erforderlich ist. Informationen zu unterstützten Pixelformaten finden Sie unter Unterstützte Pixelformate und Alphamodi.
[out] renderTarget
Typ: ID2D1RenderTarget**
Wenn diese Methode zurückgibt, enthält die Adresse des Zeigers auf das ID2D1RenderTarget-Objekt , das von dieser Methode erstellt wurde.
Rückgabewert
Typ: HRESULT
Wenn diese Methode erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein HRESULT-Fehlercode zurückgegeben.
Hinweise
Um auf eine Direct3D-Oberfläche zu schreiben, rufen Sie eine IDXGISurface ab und übergeben sie an die CreateDxgiSurfaceRenderTarget-Methode, um ein DXGI-Oberflächenrenderingziel zu erstellen. Sie können dann das DXGI-Oberflächenrenderziel verwenden, um 2D-Inhalte auf die DXGI-Oberfläche zu zeichnen.
Ein DXGI-Oberflächenrenderziel ist ein Typ von ID2D1RenderTarget. Wie bei anderen Direct2D-Renderzielen können Sie es verwenden, um Ressourcen zu erstellen und Zeichenbefehle auszugeben.
Das DXGI-Oberflächenrenderziel und die DXGI-Oberfläche müssen das gleiche DXGI-Format verwenden. Wenn Sie beim Erstellen des Renderziels das DXGI_FORMAT_UNKOWN Format angeben, wird automatisch das Format der Oberfläche verwendet.
Das DXGI-Oberflächenrenderziel führt keine DXGI-Oberflächensynchronisierung aus.
Weitere Informationen zum Erstellen und Verwenden von DXGI-Oberflächenrenderzielen finden Sie in der Übersicht über die Direct2D- und Direct3D-Interoperabilität.
Um mit Direct2D zu arbeiten, muss das Direct3D-Gerät, das das IDXGISurface bereitstellt, mit dem flag D3D10_CREATE_DEVICE_BGRA_SUPPORT erstellt werden.
Wenn Sie ein Renderziel erstellen und die Hardwarebeschleunigung verfügbar ist, weisen Sie Ressourcen auf der GPU des Computers zu. Wenn Sie ein Renderziel einmal erstellen und es so lange wie möglich beibehalten, profitieren Sie von Leistungsvorteilen. Ihre Anwendung sollte Renderziele einmal erstellen und diese für die Lebensdauer der Anwendung oder bis die EndDraw-Methode des Renderziels den D2DERR_RECREATE_TARGET-Fehler zurückgibt. Wenn Sie diesen Fehler erhalten, müssen Sie das Renderziel (und alle erstellten Ressourcen) neu erstellen.
Beispiele
Im folgenden Beispiel wird eine DXGI-Oberfläche (pBackBuffer) aus einem IDXGISwapChain abgerufen und zum Erstellen eines DXGI-Oberflächenrenderungsziels verwendet.
// 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);
}
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Windows |
Kopfzeile | d2d1.h |
Bibliothek | D2d1.lib |
DLL | D2d1.dll |
Weitere Informationen
CreateDxgiSurfaceRenderTarget(IDXGISurface,const D2D1_RENDER_TARGET_PROPERTIES &,ID2D1RenderTarget)