HDCとID2D1RenderTargetとの大きな違い


従来のHDCとID2D1RenderTargetとの大きな違いは、
HDCというデバイスコンテキストはWM_PAINT段階で作成->廃棄されるのに対して、
ID2D1RenderTargetはアプリ起動時にコンテキストが作成され、終了時までそれを使用し続けることにある。
しかし、あるタイミングでコンテキストが廃棄される場合があり、アプリ側でこれに対処しなければならない。
HDCでは絶えず廃棄されているので、これは大きな違いである。

UWP場合、DX::DeviceResources::HandleDeviceLost()を呼び出すとID2D1RenderTargetを廃棄->作成してくれるらしい。


// すべてのデバイス リソースを再作成し、現在の状態に再設定します。
// void DX::DeviceResources::HandleDeviceLost()
// std::shared_ptr m_deviceResources;

m_deviceResources->HandleDeviceLost();

開発途中で時々、確認しなければならないのはこのHandleDeviceLost()を呼び出し、きれいに元の画面に戻るかどうかである。