次の方法で共有


デバイスの種類 (Direct3D 9)

HAL デバイス

主なデバイスの種類は hal デバイスであり、ハードウェアアクセラレータラスタライズと、ハードウェア頂点処理とソフトウェア頂点処理の両方をサポートします。 アプリケーションが実行されているコンピューターに Direct3D をサポートするディスプレイ アダプターが装備されている場合、アプリケーションは Direct3D 操作に使用する必要があります。 Direct3D hal デバイスは、変換、照明、およびラスター化モジュールのすべてまたは一部をハードウェアに実装します。

アプリケーションはグラフィックス アダプターに直接アクセスしません。 Direct3D 関数とメソッドを呼び出します。 Direct3D は hal を介してハードウェアにアクセスします。 アプリケーションが実行されているコンピューターが hal をサポートしている場合は、hal デバイスを使用して最高のパフォーマンスが得られます。

hal デバイスを作成するには、デバイス 種類としてD3DDEVTYPE_HALを使用して CreateDevice を呼び出します。

参照デバイス

Direct3D では、参照デバイスまたは参照ラスタライザーと呼ばれる追加のデバイスの種類がサポートされています。 ソフトウェア デバイスとは異なり、リファレンス ラスタライザーはすべての Direct3D 機能をサポートします。 このデバイスはデバッグ目的で使用することを目的としているため、DirectX SDK がインストールされているマシンでのみ使用できます。 これらの機能は速度ではなく精度のために実装され、ソフトウェアで実装されているため、結果はあまり高速ではありません。 参照ラスタライザーは、可能な場合は常に特別な CPU 命令を使用しますが、リテール アプリケーション向けではありません。 参照ラスタライザーは、機能テストまたはデモンストレーションの目的でのみ使用します。 参照デバイスを作成するには、デバイス 種類としてD3DDEVTYPE_REFを使用して CreateDevice メソッドを呼び出します。

HAL デバイスと REF デバイス

HAL (ハードウェア抽象化レイヤー) デバイスと REF (REFerence ラスタライザー) デバイスは、Direct3D デバイスの 2 つの主要な種類です。1つ目はハードウェアサポートに基づいており、非常に高速ですが、すべてをサポートしていない可能性があります。2つ目はハードウェアアクセラレーションを使用しませんが、非常に遅いですが、Direct3D機能のセット全体を正しい方法でサポートすることが保証されています。 一般に、HAL デバイスを使用するだけで済みますが、グラフィックス カードでサポートされていない高度な機能を使用している場合は、REF にフォールバックする必要がある場合があります。

REF を使用するもう 1 つの場合は、HAL デバイスが奇妙な結果を生成している場合です。つまり、コードが正しいことは確かですが、結果は期待した結果ではありません。 REF デバイスは正しく動作することが保証されているため、REF デバイスでアプリケーションをテストし、奇妙な動作が続くかどうかを確認できます。 そうでない場合は、(a) アプリケーションがグラフィックス カードがサポートしていないものをサポートしていると想定しているか、(b) ドライバーのバグであると想定していることを意味します。 それでも REF デバイスで動作しない場合は、アプリケーションのバグです。

ハードウェアとソフトウェアの頂点処理

ハードウェアとソフトウェアの頂点処理は、実際には HAL デバイスにのみ適用されます。 パイプラインを通して頂点をプッシュする場合、頂点を変換 (ワールド、ビュー、プロジェクション マトリックスによって順番に) し、(D3D の組み込みライトによって) 点灯する必要があります。この処理ステージは、T&L (変換 & 照明の場合) と呼ばれます。 ハードウェア頂点処理は、ハードウェアがサポートしている場合にハードウェアで行われることを意味します。ergo、ソフトウェア頂点処理が行われるソフトウェアです。 一般的な方法では、最初にハードウェア T&L デバイスを作成し、失敗した場合は Mixed を試し、失敗した場合はソフトウェアを試します。 (ソフトウェアが失敗した場合は、あきらめてエラーで終了します)。

Direct3D デバイス