Platform SDK: DirectX |
ここでは、Visual Basic でのアプリケーション開発について説明する。C++ については、「DirectDraw C/C++ チュートリアル」を参照すること。
デバイスの DirectDraw ハードウェアおよびソフトウェアの能力を取得するには、まず DirectDraw オブジェクトを作成して、アプリケーションの協調レベルを設定して DirectDraw7.GetCaps メソッドを呼び出す。このメソッドは 2 つのパラメータを取るが、どちらも DDCAPS 型変数である。このメソッドを呼び出すと、最初のパラメータ hwCaps にハードウェアの能力が格納される。2 つ目のパラメータ helCaps には、ハードウェア エミレーション レイヤ (HEL) の能力が格納される。ハードウェアおよびソフトウェア能力の詳細情報は、「DirectDraw アーキテクチャの概要」を参照すること。
GetCaps メソッドを呼び出した後で、DDCAPS 変数に返されたフラグをチェックし、能力を表示する。
Dim dd As DirectDraw7 Dim hwCaps As DDCAPS 'ハードウェア。 Dim helCaps As DDCAPS 'ソフトウェア エミュレーション。 Set dd = m_dx.DirectDrawCreate(sGuid) dd.SetCooperativeLevel Me.hWnd, DDSCL_NORMAL 'HW が機能をサポート 'するかどうかを調べるのは良い考えである。 'サポートされない機能は、ソフトウェアを介して 'エミュレートされるが、処理速度はかなり遅くなる。 dd.GetCaps hwCaps, helCaps '利用可能なビデオ メモリ量。 OutList.AddItem " HW CAPS" OutList.AddItem " total video memory " + Str(hwCaps.lVidMemTotal) OutList.AddItem " free video memory " + Str(hwCaps.lVidMemFree) 'パレット サポート。 'ほとんどのアプリケーションは、すべてのカードが '16bpp をサポートするため、パレットを使用しない。 '速度の観点から 8bpp を使用する場合もある。 lVal = hwCaps.lPalCaps If (lVal = 0) Then OutList.AddItem " no hw palette support" End If If (lVal And DDPCAPS_1BIT) Then OutList.AddItem " palette support 1bpp " End If If (lVal And DDPCAPS_2BIT) Then OutList.AddItem " palette support 2bit " End If 'ガンマ ランプ インターフェイスをサポートするか ? lVal = hwCaps.ddsCaps.lCaps2 If lVal And DDCAPS2_CANCALIBRATEGAMMA Then OutList.AddItem " supports gamma correction" Else OutList.AddItem " no support for gamma correction" End If Set dd = Nothing