ID2D1RenderTarget::BeginDraw メソッド (d2d1.h)
このレンダー ターゲットでの描画を開始します。
構文
void BeginDraw();
戻り値
なし
解説
描画操作は、 BeginDraw 呼び出しと EndDraw 呼び出しの間でのみ実行できます。
BeginDraw と EndDraw は、レンダー ターゲットが Direct2D システムで使用されていることを示すために使用されます。 BeginDraw が呼び出されると、ID2D1RenderTarget の実装によって動作が異なる場合があります。 ID2D1BitmapRenderTarget は BeginDraw/EndDraw 呼び出しの間にロックされ、DXGI サーフェス レンダー ターゲットは BeginDraw で取得され、EndDraw でリリースされる場合があります。一方、ID2D1HwndRenderTarget はBeginDraw でバッチ処理を開始し、たとえば EndDraw に存在する場合があります。
BeginDraw メソッドは、レンダリング操作を呼び出す前に呼び出す必要があります。ただし、状態設定と状態取得の操作は BeginDraw/EndDraw の外部でも実行できます。
BeginDraw が呼び出されると、レンダー ターゲットは通常、レンダリング コマンドのバッチをビルドしますが、内部バッファーがいっぱいになるか、Flush メソッドが呼び出されるか、EndDraw が呼び出されるまで、これらのコマンドの処理を延期します。 EndDraw メソッドを使用すると、バッチ描画操作が完了し、操作の成功を示す HRESULT が返され、必要に応じて、エラーが発生した時点でのレンダー ターゲットのタグ状態が返されます。 EndDraw メソッドは常に成功します。前の EndDraw で HRESULT が失敗した場合でも、2 回呼び出さないでください。
EndDraw が BeginDraw に一致する呼び出しなしで呼び出された場合、EndDraw の前に BeginDraw を呼び出す必要があることを示すエラーが返されます。
レンダー ターゲットで BeginDraw を 2 回呼び出すと、ターゲットはエラー状態になり、それ以上何も描画されず、 EndDraw が呼び出されたときに適切な HRESULT とエラー情報が返されます。
例
次の例では、 ID2D1HwndRenderTarget を 使用してウィンドウにテキストを描画します。
// Called whenever the application needs to display the client
// window. This method writes "Hello, World"
//
// Note that this function will automatically discard device-specific
// resources if the Direct3D device disappears during function
// invocation, and will recreate the resources the next time it's
// invoked.
//
HRESULT DemoApp::OnRender()
{
HRESULT hr;
hr = CreateDeviceResources();
if (SUCCEEDED(hr))
{
static const WCHAR sc_helloWorld[] = L"Hello, World!";
// Retrieve the size of the render target.
D2D1_SIZE_F renderTargetSize = m_pRenderTarget->GetSize();
m_pRenderTarget->BeginDraw();
m_pRenderTarget->SetTransform(D2D1::Matrix3x2F::Identity());
m_pRenderTarget->Clear(D2D1::ColorF(D2D1::ColorF::White));
m_pRenderTarget->DrawText(
sc_helloWorld,
ARRAYSIZE(sc_helloWorld) - 1,
m_pTextFormat,
D2D1::RectF(0, 0, renderTargetSize.width, renderTargetSize.height),
m_pBlackBrush
);
hr = m_pRenderTarget->EndDraw();
if (hr == D2DERR_RECREATE_TARGET)
{
hr = S_OK;
DiscardDeviceResources();
}
}
return hr;
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 7、Windows Vista SP2 と Windows Vista 用プラットフォーム更新プログラム [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2008 R2、Windows Server 2008 SP2 および Windows Server 2008 用プラットフォーム更新プログラム [デスクトップ アプリ |UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | d2d1.h |
Library | D2d1.lib |
[DLL] | D2d1.dll |