ID2D1Factory::CreateDxgiSurfaceRenderTarget オーバーロードされたメソッド
DirectX Graphics Infrastructure (DXGI) サーフェイスに描画するレンダー ターゲットを作成します。
オーバーロードの一覧
メソッド | 説明 |
---|---|
CreateDxgiSurfaceRenderTarget(IDXGISurface*,D2D1_RENDER_TARGET_PROPERTIES&,ID2D1RenderTarget**) | DirectX Graphics Infrastructure (DXGI) サーフェイスに描画するレンダー ターゲットを作成します。 |
CreateDxgiSurfaceRenderTarget(IDXGISurface*,D2D1_RENDER_TARGET_PROPERTIES*,ID2D1RenderTarget**) | DirectX Graphics Infrastructure (DXGI) サーフェイスに描画するレンダー ターゲットを作成します。 |
解説
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 相互運用機能のサンプル」を参照してください。
要件
ライブラリ |
D2d1.lib |
DLL |
D2d1.dll |