次の方法で共有


DirectComposition のベスト プラクティス

注意

Windows 10上のアプリの場合は、DirectComposition ではなく Windows.UI.Composition API を使用することをお勧めします。 詳細については、「 Visual レイヤーを使用してデスクトップ アプリをモダン化する」を参照してください。

このトピックでは、Microsoft DirectComposition を使用するためのベスト プラクティスについて説明します。

ベスト プラクティス

次の表は、Microsoft DirectComposition ビジュアルを操作するために推奨されるプラクティスを示しています。

実習 説明
DirectComposition デバイスを作成した後、各WM_PAINT メッセージに応答して IDCompositionDevice::CheckDeviceState メソッドを呼び出して、デバイスがまだ有効であることを確認します。
Microsoft DirectX グラフィックス インフラストラクチャ (DXGI) デバイスが失われた場合、DXGI デバイスに関連付けられている DirectComposition デバイスも失われます。 紛失したデバイスを検出すると、DirectComposition はすべてのウィンドウに WM_PAINT メッセージを送信します。 各WM_PAINT メッセージに応答して CheckDeviceState を呼び出すと、DirectComposition デバイス オブジェクトがまだ有効であるかどうかを判断し、有効でない場合はコンテンツを回復する手順を実行できます。
詳細については、「 Device オブジェクト」を参照してください。
コンポジションまたはアニメーションに必要なビジュアルの数のみを作成し、DirectComposition の使用が完了した直後にビジュアルを破棄します。
DirectComposition は、グラフィックス処理装置 (GPU) を使用します。これは、アプリケーションが他のアプリケーションおよびオペレーティング システムと共有するリソースです。 この方法により、すべてのアプリケーションとオペレーティング システムが適切な GPU リソースを確実に受け取ります。
詳細については、「 ビジュアル」を参照してください。
不透明度を 0% に設定してビジュアルを非表示にしないでください。代わりに、ビジュアル ツリーからビジュアルを削除します。
不透明度を 0% に設定すると、ビジュアル ツリーから削除するよりも多くのシステム リソースが必要です。
詳細については、「 不透明度ビジュアル ツリー」を参照してください。
空の (サイズが 0 の) クリップ四角形をビジュアルに適用して、ビジュアルを非表示にしないでください。 代わりに、ビジュアル ツリーからビジュアルを削除します。
ビジュアル ツリーからビジュアルを削除すると、空のクリップ四角形を適用するよりもパフォーマンスが向上します。
詳細については、「 クリッピング」を参照してください。
ビジュアルのビットマップ コンテンツ全体を含むクリップ四角形など、クリップ四角形が不要な場合は、ビジュアルにクリップ四角形を適用しないでください。
不要なクリップ四角形は、システムのパフォーマンスを低下させます。
詳細については、「 クリッピング」を参照してください。
大きな単色ビットマップが必要な場合は、小さいビットマップ サーフェスを作成し、フルサイズのサーフェスを作成する代わりにスケール変換を適用します。
スケール変換を小さいサーフェスに適用すると、フル サイズのサーフェスよりも少ないシステム リソースが使用されます。
詳細については、「 Bitmap オブジェクトTransforms」を参照してください。
親とその子孫など、ビジュアル ツリーの複数のレベルに 3D 変換を適用しないでください。
3D 変換をビジュアル ツリーの複数のレベルに適用すると、ツリー内で 3D 変換が乗算されないため、意図しない結果が生成される可能性があります。 たとえば、子の y 軸を中心に 90 度回転し、親の y 軸を 90 度回転すると、両方のビジュアルが何も回転しません。
詳細については、「Effects」 (エフェクト) を参照してください。

セキュリティに関する考慮事項

次の記事では、セキュリティで保護された C++ コードを記述するためのガイダンスを提供します。

DirectComposition の使用方法