デスクトップ コンポジションが有効になっている場合でも、ダブル バッファリングは必要ですか?
Microsoft のアプリケーション互換性ガイド:
グラフィカル デバイス インターフェイス (GDI)
Windows Vista および Windows Server 2008 より前は、ウィンドウ ハンドル (HWND) が画面に直接描画されていました。これには一定の利点がありましたが、Windows がトップレベル ウィンドウを表示および管理する方法は制限されていました。Windows Vista および Windows Server 2008 では、すべての最上位ウィンドウがオフスクリーン ビットマップ (WS_EX_LAYERED と同様) にレンダリングされ、デスクトップ ウィンドウ マネージャーが画像を組み合わせてデスクトップを描画します。
すべてのレンダリングがオフスクリーン ビットマップに対して行われるようになりました。
ウィンドウはオフスクリーン ビットマップにレンダリングされます
これは正しいです?
私が尋ねる理由は、標準のペイント サイクル中にまだちらつきが見られるためです。
- WM_ERASEBKGND
- WM_PAINT
デスクトップ コンポジションが有効になっている場合:
私はへの呼び出しの間にそれを想定していたでしょう
BeginPaint(hWnd, paintStructure);
...
EndPaint(hWnd, paintStructure);
すべての描画がバック バッファーで行われることを確認します。
ウィンドウはオフスクリーン ビットマップにレンダリングされます
一方、フロント バッファは影響を受けません。