ID2D1Factory::CreateDxgiSurfaceRenderTarget(IDXGISurface*,constD2D1_RENDER_TARGET_PROPERTIES*,ID2D1RenderTarget**) メソッド (d2d1.h)
DirectX グラフィックス インフラストラクチャ (DXGI) サーフェスに描画するレンダー ターゲットを作成します。
構文
HRESULT CreateDxgiSurfaceRenderTarget(
[in] IDXGISurface *dxgiSurface,
[in] const D2D1_RENDER_TARGET_PROPERTIES *renderTargetProperties,
[out] ID2D1RenderTarget **renderTarget
);
パラメーター
[in] dxgiSurface
種類: IDXGISurface*
レンダー ターゲットが描画される IDXGISurface。
[in] renderTargetProperties
型: const D2D1_RENDER_TARGET_PROPERTIES*
レンダリング モード、ピクセル形式、リモート処理オプション、DPI 情報、ハードウェア レンダリングに必要な最小 DirectX サポート。 サポートされているピクセル形式の詳細については、「 サポートされているピクセル形式とアルファ モード」を参照してください。
[out] renderTarget
種類: ID2D1RenderTarget**
このメソッドから制御が戻るときに、このメソッドによって作成された ID2D1RenderTarget オブジェクトへのポインターのアドレスが格納されます。
戻り値
型: HRESULT
このメソッドは、成功すると S_OK を返します。 それ以外の場合は、 HRESULT エラー コードが返されます。
注釈
Direct3D サーフェスに書き込むには、 IDXGISurface を取得し、それを CreateDxgiSurfaceRenderTarget メソッドに渡して DXGI サーフェス レンダー ターゲットを作成します。その後、DXGI サーフェス レンダー ターゲットを使用して、DXGI サーフェスに 2-D コンテンツを描画できます。
DXGI サーフェス レンダー ターゲットは、 ID2D1RenderTarget の一種です。 他の Direct2D レンダー ターゲットと同様に、それを使用してリソースを作成し、描画コマンドを発行できます。
DXGI サーフェス レンダー ターゲットと DXGI サーフェスは、同じ DXGI 形式を使用する必要があります。 レンダー ターゲットの作成時に DXGI_FORMAT_UNKOWN 形式を指定すると、サーフェスの形式が自動的に使用されます。
DXGI サーフェス レンダー ターゲットは DXGI サーフェス同期を実行しません。
DXGI サーフェス レンダー ターゲットの作成と使用の詳細については、「 Direct2D と Direct3D の相互運用性の概要」を参照してください。
Direct2D を操作するには、 IDXGISurface を提供する Direct3D デバイスを D3D10_CREATE_DEVICE_BGRA_SUPPORT フラグで作成する必要があります。
レンダー ターゲットを作成し、ハードウェア アクセラレーションを使用できる場合は、コンピューターの GPU にリソースを割り当てます。 レンダー ターゲットを 1 回作成し、可能な限り長く保持することで、パフォーマンス上の利点が得られます。 アプリケーションでは、レンダー ターゲットを 1 回作成し、アプリケーションの有効期間中、またはレンダー ターゲットの EndDraw メソッドが D2DERR_RECREATE_TARGET エラーを返すまで保持する必要があります。 このエラーが発生した場合は、レンダー ターゲット (および作成したリソース) を再作成する必要があります。
例
次の例では、IDXGISwapChain から DXGI サーフェス (pBackBuffer) を取得し、それを使用して 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);
}
要件
要件 | 値 |
---|---|
対象プラットフォーム | Windows |
ヘッダー | d2d1.h |
Library | D2d1.lib |
[DLL] | D2d1.dll |
こちらもご覧ください
CreateDxgiSurfaceRenderTarget(IDXGISurface,const D2D1_RENDER_TARGET_PROPERTIES &,ID2D1RenderTarget)