ID2D1RenderTarget::BeginDraw メソッド (d2d1.h)

このレンダー ターゲットでの描画を開始します。

構文

void BeginDraw();

戻り値

なし

解説

描画操作は、 BeginDraw 呼び出しと EndDraw 呼び出しの間でのみ実行できます。

BeginDraw と EndDraw は、レンダー ターゲットが Direct2D システムで使用されていることを示すために使用されます。 BeginDraw が呼び出されると、ID2D1RenderTarget の実装によって動作が異なる場合があります。 ID2D1BitmapRenderTargetBeginDraw/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

こちらもご覧ください

ID2D1RenderTarget