Platform SDK: DirectX

ステップ 2 : DirectDraw デバイスの能力の表示

[C++]

ここでは、Visual Basic でのアプリケーション開発について説明する。C++ については、「DirectDraw C/C++ チュートリアル」を参照すること。

[Visual Basic]

デバイスの 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

次項 : ステップ 3 : DirectDraw デバイスの 3D 能力の表示