ID2D1Factory::CreateDxgiSurfaceRenderTarget メソッド
DirectX Graphics Infrastructure (DXGI) サーフェイスに描画するレンダー ターゲットを作成します。
構文
virtual HRESULT CreateDxgiSurfaceRenderTarget(
[in] IDXGISurface *dxgiSurface,
[in] const D2D1_RENDER_TARGET_PROPERTIES *renderTargetProperties,
[out] ID2D1RenderTarget **renderTarget
) = 0;
パラメーター
- dxgiSurface [in]
IDXGISurface レンダー ターゲットの描画先となる IDXGISurface。 - renderTargetProperties [in]
D2D1_RENDER_TARGET_PROPERTIES レンダリング モード、ピクセル形式、リモート処理オプション、DPI 情報、およびハードウェア レンダリングに必要な最小限の DirectX サポート。サポートされているピクセル形式については、「サポートされているピクセル形式とアルファ モード」を参照してください。 - renderTarget [out]
ID2D1RenderTarget このメソッドが返されるときに、このメソッドによって作成された ID2D1RenderTarget オブジェクトへのポインターのアドレスが格納されます。
戻り値
メソッドが成功した場合は、S_OK が返されます。 それ以外の場合は、エラー コードが返されます。HRESULT.
解説
Direct3D サーフェイスに書き込むには、IDXGISurface を取得して CreateDxgiSurfaceRenderTarget メソッドに渡し、DXGI サーフェイス レンダー ターゲットを作成します。その後、DXGI サーフェイス レンダー ターゲットを使用して DXGI サーフェイスに 2-D コンテンツを描画できます。
DXGI サーフェイス レンダー ターゲットは ID2D1RenderTarget の 1 つです。他の Direct2D レンダー ターゲットと同様に、DXGI サーフェイス レンダー ターゲットはリソースの作成および描画コマンドの発行に使用できます。
DXGI サーフェイス レンダー ターゲットと DXGI サーフェイスは、同じ DXGI 形式を使用する必要があります。レンダー ターゲットの作成時に DXGI_FORMAT_UNKOWN 形式を指定した場合、サーフェイスの形式が自動的に使用されます。
DXGI サーフェイス レンダー ターゲットでは DXGI サーフェイス同期は実行されません。
Direct2D で機能させるには、D3D10_CREATE_DEVICE_BGRA_SUPPORT フラグを使用して、IDXGISurface を提供する Direct3D デバイスを作成する必要があります。
DXGI サーフェイス レンダー ターゲットの作成と使用の詳細については、「Direct2D と Direct3D の相互運用性の概要」を参照してください。
レンダー ターゲットを作成し、ハードウェア アクセラレータが使用できる場合は、コンピューターの GPU にリソースを割り当てます。レンダー ターゲットを一度作成し、できるだけ長く保持することにより、パフォーマンスを向上することができます。アプリケーションでは、一度レンダー ターゲットを作成したら、アプリケーションが有効な間またはレンダー ターゲットの EndDraw メソッドから D2DERR_RECREATE_TARGET エラーが返されるまでは、そのターゲットを保持する必要があります。このエラーが発生すると、レンダー ターゲット (およびレンダー ターゲットによって作成されたすべてのリソース) を作成し直す必要があります。
例
次の例では、IDXGISwapChain から DXGI サーフェイス (pBackBuffer) を取得し、それを使用して DXGI サーフェイス レンダー ターゲットを作成します。
// 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 dpiX;
FLOAT dpiY;
m_pD2DFactory->GetDesktopDpi(&dpiX, &dpiY);
D2D1_RENDER_TARGET_PROPERTIES props =
D2D1::RenderTargetProperties(
D2D1_RENDER_TARGET_TYPE_DEFAULT,
D2D1::PixelFormat(DXGI_FORMAT_UNKNOWN, D2D1_ALPHA_MODE_PREMULTIPLIED),
dpiX,
dpiY
);
// Create a Direct2D render target which can draw into the surface in the swap chain
hr = m_pD2DFactory->CreateDxgiSurfaceRenderTarget(
pBackBuffer,
&props,
&m_pBackBufferRT
);
}
完全なコードについては、「Direct3D 相互運用機能のサンプル」を参照してください。
要件
クライアントの最小要件 |
Windows 7, Windows Vista SP2 および Windows Vista 用のプラットフォーム更新プログラム |
サーバーの最小要件 |
Windows Server 2008 R2, Windows Server 2008 SP2 および Windows Server 2008 用のプラットフォーム更新プログラム |
ヘッダー |
D2d1.h |
ライブラリ |
D2d1.lib |
DLL |
D2d1.dll |