デバイス

Direct3D デバイスは、Direct3D のレンダリング コンポーネントです。 デバイスは、レンダリングの状態をカプセル化して格納します。また、変換や照明の操作、サーフェスへのイメージのラスタライズを実行します。

アーキテクチャとしては、次の図に示すように、変換モジュール、照明モジュール、ラスタライズ モジュールが Direct3D デバイスに含まれます。

Direct3D デバイスのアーキテクチャの図

Direct3D では、主に 2 種類の Direct3D デバイスをサポートしています。

  • ハードウェア アクセラレータによるラスタライズと、ハードウェアとソフトウェアの両方の頂点処理によるシェーディングを備えた HAL デバイス
  • 参照デバイス

これらのデバイスは、2 つの独立したドライバーです。 ソフトウェア デバイスと参照デバイスはソフトウェア ドライバーによって表され、HAL デバイスはハードウェア ドライバーで表されます。 これらのデバイスを活用する最も一般的な方法は、アプリケーションを出荷する際には HAL デバイスを使用し、機能テストには参照デバイスを使用することです。 これらは、特定のデバイス (まだリリースされていない開発中のハードウェアなど) をエミュレートするために、サード パーティによって提供されます。

アプリケーションが作成する Direct3D デバイスは、アプリケーションが実行されるハードウェアの機能に対応している必要があります。 Direct3D は、コンピューターにインストールされている 3D ハードウェアにアクセスするか、ソフトウェアで 3D ハードウェアの機能をエミュレートすることにより、レンダリング機能を提供します。 したがって、Direct3D では、ハードウェアへのアクセスとソフトウェア エミュレーションの両方についてデバイスを提供します。

ハードウェア アクセラレータによるデバイスは、ソフトウェア デバイスよりも優れたパフォーマンスを提供します。 HAL デバイスは、Direct3D がサポートしているすべてのグラフィック アダプターで利用できます。 ほとんどの場合、アプリケーションは、ハードウェア アクセラレーションを備えたコンピューターを対象にしており、ローエンドのコンピューターに対応するためにソフトウェア エミュレーションを利用します。

参照デバイスを除いて、ソフトウェア デバイスが、常にハードウェア デバイスと同じ機能をサポートするとは限りません。 アプリケーションでは、常にデバイスの機能を照会して、サポートされている機能を特定する必要があります。

Direct3D 9 で提供されるソフトウェア デバイスと参照デバイスの動作は、HAL デバイスの動作と同じであるため、HAL デバイスで動作するように作成されたアプリケーション コードは、変更することなく、ソフトウェア デバイスや参照デバイスで動作します。 提供されるソフトウェア デバイスや参照デバイスの動作は HAL デバイスの動作と同じですが、デバイスの機能は異なり、特定のソフトウェア デバイスで実装されている機能はかなり少ない場合があります。

このセクションの内容

トピック 説明

デバイスの種類

Direct3D デバイスの種類には、ハードウェア アブストラクション レイヤー (HAL) デバイスとリファレンス ラスタライザーがあります。

ウィンドウ モードと全画面表示モード

Direct3D アプリケーションは、ウィンドウ モードと全画面表示モードのどちらでも実行できます。 ウィンドウ モードでは、アプリケーションは実行中のすべてのアプリケーションとデスクトップの利用可能な画面領域を共有します。 全画面表示モードでは、アプリケーションが実行されるウィンドウがデスクトップ全体に表示され、実行中のすべてのアプリケーション (開発環境を含む) が非表示になります。

喪失デバイス

Direct3D デバイスは、稼働状態または喪失状態に設定できます。 稼働状態は、デバイスが実行され、期待どおりにすべてのレンダリングが表示される、デバイスの通常の状態です。 全画面表示のアプリケーションでキーボード フォーカスが失われるなどのイベントによって、レンダリングが不可能になると、デバイスは喪失状態に移行します。

スワップ チェーン

スワップ チェーンは、ユーザーにフレームを表示するために使用されるバッファーのコレクションです。 アプリケーションが表示する新しいフレームを提供するたびに、スワップ チェーンの最初のバッファーが、表示されているバッファーの場所を取得します。 このプロセスは、スワップまたはフリップと呼ばれます。

ラスター化規則の概要

多くの場合、頂点として指定される点は、画面上のピクセルと正確には一致しません。 この場合、Direct3D は三角形のラスター化ルールを適用し、指定された三角形に適用するピクセルを決定します。

 

Direct3D グラフィックスの学習ガイド