デバイスがサポートする機能の調査

デバイスは実際のビデオカードがサポートする機能を調べた上で、作成する必要があります。

Managerクラスのメソッド
メソッド 説明
CheckDepthStencilMatch 深度ステンシル フォーマットが、特定のディスプレイモードでのレンダリング ターゲット フォーマットと互換性があるかどうか調べる。
CheckDeviceFormat

サーフェイスのフォーマットが、指定したリソース タイプとして使用できるかどうか調べる。

またこのアダプタを使うデバイスでテクスチャ、深度ステンシル バッファ、レンダリング ターゲットのいずれか、またはこれら 3つの組み合わせとして使用できるかどうかを調べる。

CheckDeviceFormatConversion デバイスがディスプレイ フォーマットの変換をサポートするかどうかをテストする。
CheckDeviceMultiSampleType このデバイスでマルチサンプリング テクニックを使用できるかどうかを調べる。
CheckDeviceType アダプタでハードウェア アクセラレーション デバイス タイプが使用可能かどうかを検証する。
GetAdapterMonitor オブジェクトに関連付けられているモニタのハンドルを返す。
GetDeviceCaps デバイスについてのデバイス固有の情報を取得する。
Managerクラス | MSDN

デバイス固有の情報 (DeviceCaps)

各機能のサポート状況は、DeviceCapsのプロパティを調べることで判明します。

DeviceCapsのプロパティで得られる情報は、必ずしも正確ではありません。構成システムのサンプル | MSDN

DeviceCaps構造体のプロパティ
プロパティ 内容
CanDrawSystemToNonLocal システム メモリ テクスチャから、非ローカル ビデオ メモリ テクスチャへのブリットをサポートする
CanRenderAfterFlip ページ フリップの後で、レンダリング コマンドをキューに入れることができる
CanStretchRectangleFromTextures ソースとしてテクスチャを使う StretchRectangleをサポートする
SupportsAdaptiveTessellateNPatch Nパッチの適応型テセレーションをサポートする
SupportsAdaptiveTessellateRtPatch RTパッチの適応型テセレーションをサポートする
SupportsDMapNPatch Nパッチのディスプレースメント マップをサポートする
SupportsDrawPrimitives2 DrawPrimitives2 をサポートする
SupportsDrawPrimitives2Ex 拡張DrawPrimitives2 をサポートする
SupportsDrawPrimitivesTransformedVertex DrawPrimitive対応のハードウェア アブストラクション レイヤ (HAL) をサポートする
SupportsExecuteSystemMemory システム メモリにある実行バッファを使うことができる
SupportsExecuteVideoMemory ビデオ メモリにある実行バッファを使うことができる
SupportsHardwareRasterization シーンのラスタ化用のハードウェア アクセラレーションがある
SupportsHardwareTransformAndLight ハードウェアでトランスフォーム&ライティングをサポートできる
SupportsNPatches Nパッチをサポートする
SupportsPreSampledDMapNPatch Nパッチの事前にサンプリングされたディスプレースメント マップをサポートする
SupportsPureDevice ハードウェアでラスタ化、トランスフォーム、ライティング、およびシェーディングをサポートする
SupportsQuinticRtPatches 5次ベジェ曲線および Bスプラインをサポートする
SupportsRtPatches 矩形パッチおよび三角形パッチをサポートする
SupportsRtPatchHandleZero ハードウェア アーキテクチャで情報をキャッシュする必要がなく、キャッシュされていないパッチ (ハンドル0) を、キャッシュされたパッチと同様、効率的に描画できる
SupportsSeparateTextureMemories 独立したメモリ プールからテクスチャ処理を行える
SupportsStreamOffset ストリーム オフセットをサポートする
SupportsTextureNonLocalVideoMemory 非ローカル ビデオ メモリからテクスチャを取得できる
SupportsTextureSystemMemory システム メモリからテクスチャを取得できる
SupportsTextureVideoMemory デバイス メモリからテクスチャを取得できる
SupportsTransformedVertexSystemMemory トランスフォーム済みライティング済みの頂点用に、システム メモリのバッファを使うことができる
SupportsTransformedVertexVideoMemory トランスフォーム済みラィング済みの頂点用に、ビデオ メモリのバッファを使うことができる
DeviceCaps 構造体のプロパティ | MSDN

サンプルコード

たとえばハードウェアによる頂点処理のサポート モードを決定するには、次のようにします。

using Microsoft.DirectX.Direct3D;

// デバイス固有の情報を取得する
Caps caps = Manager.GetDeviceCaps(
    Manager.Adapters.Default.Adapter,  // デフォルトのアダプタのインデックス
    DeviceType.Hardware                // ハードウェア デバイス
    );

CreateFlags flags;

if( caps.DeviceCaps.SupportsHardwareTransformAndLight )
{
    // ハードウェアによる頂点処理のサポートあり
    flags = CreateFlags.HardwareVertexProcessing;
}
else
{
    // ハードウェアによる頂点処理のサポートあり
    flags = CreateFlags.SoftwareVertexProcessing;
}

デバイスの能力 (Caps)

Caps Structure (Microsoft.DirectX.Direct3D) | MSDN

ユーティリティによる調査 (DirectX Caps Viewer)

DirectXのSDKに付属するDirectX Caps Viewerを使用することでも、ビデオカードの能力を確認できます。DirectX Caps Viewer | MSDN

このツールはスタートメニューの【すべてのプログラム → Microsoft DirectX SDK → DirectX Utilities → DirectX Caps Viewer】から起動できます。