Share via


VideoMemory のサンプル

アプリケーションでは、システム上で利用可能なビデオ メモリーの量を把握しなければならない場合がよくあります。通常は、使用可能なメモリーの情報を使用して、ディスクのページを使用することなく、割り当てられたビデオ メモリーにコンテンツが収まるかどうかを判断します。

ビデオ メモリーの分類

ビデオ メモリーは、2 種類に分類できます。1 つ目のタイプは、専用ビデオ メモリーです。専用ビデオ メモリーは、ビデオ ハードウェアだけが使用できます。専用ビデオ メモリーは通常、ビデオ ハードウェアと非常に高速にやり取りできます。"オンボード" ビデオ メモリーまたはローカル ビデオ メモリーとも呼ばれますが、それはビデオ カードに搭載されることが多いためです。統合ビデオ カードは、専用ビデオ メモリーを持たない場合がよくあります。

ビデオ メモリーの 2 つ目のタイプは、共有システム メモリーです。共有システム メモリーは、既にシステム メモリーの一部になっているメモリーです。このメモリーは、専用ビデオ メモリーと同様な方法でビデオ ハードウェアから使用できますが、オペレーティング システムおよびその他のアプリケーションからも使用できます。別個のビデオ カードの場合は、非ローカル ビデオ メモリーと呼ばれることもあります。統合ビデオ カードは、共有システム メモリーしか持たない場合がよくあります。共有システム メモリーは通常、専用ビデオ メモリーに比べて、ビデオ ハードウェアとのやり取りが低速です。

ビデオ メモリーの取得方法

システム上のビデオ メモリーのサイズを取得する方法は、いくつかあります。このサンプルでは、5 とおりの方法を示します。最初の 4 とおりの方法は Windows XP 以降で利用可能ですが、DXGI は Windows Vista 以降でのみ利用できます。

  • GetVideoMemoryViaDirectDraw:この方法では、利用可能なビデオ メモリーの量を DirectDraw 7 インターフェイスに問い合わせます。別個のビデオ カードの場合、得られる値は専用ビデオ メモリーの量に近いことが多く、共有システム メモリーの量は通常考慮されません。
  • GetVideoMemoryViaWMI:この方法では、Windows Management Instrumentation (WMI) インターフェイスに対して問い合わせを実行し、ビデオ メモリーの量を決定します。別個のビデオ カードの場合、得られる値は専用ビデオ メモリーの量に近いことが多く、共有システム メモリーの量は通常考慮されません。
  • GetVideoMemoryViaDxDiag:DxDiag は、内部で DirectDraw 7 および WMI を使用し、WMI が利用可能な場合は WMI の値 (四捨五入された値) を返します。WMI を利用できない場合は、DirectDraw 7 の値 (四捨五入された値) を返します。
  • GetVideoMemoryViaD3D9:この方法では、利用可能なテクスチャー メモリーの量を D3D9 に問い合わせます。Windows Vista の場合、この数値は通常、(専用ビデオ メモリー) + (共有システム メモリー) - (テクスチャーおよびレンダー ターゲットで使用中のメモリー量) という値になります。
  • GetVideoMemoryViaDXGI:DXGI は Windows Vista 以降のみで利用できます。この方法では、専用ビデオ メモリーの量、専用システム メモリーの量、および共有システム メモリーの量が返されます。DXGI は、前述の 4 つの方法に比べて、真のシステム構成を反映しています。

ベスト プラクティス

Windows Vista 以降の場合、利用可能なビデオ メモリーを問い合わせる時は常に DXGI を使用してください。

Windows XP の場合、WMI は良い選択肢ですが、統合ビデオ カードが共有システム メモリーしか持たない場合が多い点に注意してください。返された値は、統合ビデオ カードとの互換性の問題を抑えるために、注意して使用する必要があります。