デバイスの種類Device types

Direct3D デバイスの種類には、ハードウェア アブストラクション レイヤー (HAL) デバイスとリファレンス ラスタライザーがあります。Direct3D device types include Hardware Abstraction Layer (hal) devices and the reference rasterizer.

HAL デバイスHAL Device

主なデバイスの種類は HAL デバイスで、ハードウェア アクセラレータによるラスタライズと、ハードウェアとソフトウェアの両方の頂点の処理をサポートします。The primary device type is the hal device, which supports hardware accelerated rasterization and both hardware and software vertex processing. アプリが実行されているコンピューターに、Direct3D をサポートするディスプレイ アダプターが搭載されている場合、アプリケーションではディスプレイ アダプターを使用して Direct3D を操作する必要があります。If the computer on which your application is running is equipped with a display adapter that supports Direct3D, your application should use it for Direct3D operations. Direct3D HAL デバイスは、変換、照明、ラスタライズ モジュールのすべてまたは一部をハードウェアに実装します。Direct3D hal devices implement all or part of the transformation, lighting, and rasterizing modules in hardware.

アプリケーションでは、グラフィックス アダプターに直接アクセスしないでください。Applications do not access graphics adapters directly. これらは、Direct3D の関数とメソッドを呼び出します。They call Direct3D functions and methods. Direct3D は、HAL を通じてハードウェアにアクセスします。Direct3D accesses the hardware through the hal. アプリケーションが実行されているコンピューターが HAL をサポートする場合、HAL デバイスを使用することにより最高のパフォーマンスを実現できます。If the computer that your application is running on supports the hal, it will gain the best performance by using a hal device.

参照デバイスReference Device

Direct3D では、参照デバイスまたはリファレンス ラスタライザーと呼ばれる、追加のデバイスの種類がサポートされています。Direct3D supports an additional device type called a reference device or reference rasterizer. ソフトウェア デバイスとは異なり、リファレンス ラスタライザーは、すべての Direct3D の機能をサポートします。Unlike a software device, the reference rasterizer supports every Direct3D feature. このデバイスは、デバッグの目的で使用されるため、DirectX SDK がインストールされているコンピューターでのみ利用できます。This device is intended to be used for debugging purposes and is therefore only available on machines where the DirectX SDK has been installed. これらの機能は、速度ではなく精度のために実装され、ソフトウェアに実装されるため、結果はそれほど高速ではありません。Because these features are implemented for accuracy rather than speed and are implemented in software, the results are not very fast. リファレンス ラスタライザーは、可能な場合は常に CPU の特殊な命令を使用しますが、これは製品版のアプリケーションで使用することを意図していません。The reference rasterizer does make use of special CPU instructions whenever it can, but it is not intended for retail applications. リファレンス ラスタライザーは、機能のテストやデモの目的でのみ使用してください。Use the reference rasterizer only for feature testing or demonstration purposes.

HAL vs します。REF デバイスHAL vs. REF Devices

HAL (ハードウェア アブストラクション レイヤー) デバイスおよび REF (リファレンス ラスタライザー) デバイスは、Direct3D デバイスの 2 つの主要な種類です。前者は、ハードウェア サポートに基づいており、非常に高速ですが、すべてがサポートされているわけではありません。後者は、ハードウェア アクセラレータを使用しないため、非常に低速ですが、Direct3D の機能セット全体を適切な方法でサポートすることが保証されています。HAL (Hardware Abstraction Layer) devices and REF (REFerence rasterizer) devices are the two main types of Direct3D device; the first is based around the hardware support, and is very fast but might not support everything; while the second uses no hardware acceleration, so is very slow, but is guaranteed to support the entire set of Direct3D features, in the correct way. 一般的に、使用する必要があるのは HAL デバイスのみですが、グラフィックス カードがサポートしていない一部の高度な機能を使用している場合は、REF へのフォールバックが必要になることもあります。In general you'll only ever need to use HAL devices, but if you're using some advanced feature that your graphics card does not support then you might need to fall back to REF.

REF を使用することが必要になるその他の機会として、HAL デバイスが奇妙な結果が生成する場合があります。つまり、コードが正しいことが確実であるにもかかわらず、結果が予期したものではない場合です。The other time you might want to use REF is if the HAL device is producing strange results - that is, you're sure your code is correct, but the result is not what you're expecting. REF デバイスは正しく動作することが保証されているため、REF デバイス上でアプリケーションをテストし、奇妙な動作が引き続き発生するかどうかを確認できます。The REF device is guaranteed to behave correctly, so you may wish to test your application on the REF device and see if the strange behavior continues. 発生しない場合は、(a) アプリケーションが、グラフィックス カードでサポートしていない機能をサポートしていると想定しているか、(b) ドライバーのバグです。If it doesn't, it means that either (a) your application is assuming that the graphics card supports something that it doesn't, or (b) it's a driver bug. REF デバイスでもはっせいする場合は、アプリケーションのバグです。If it still doesn't work with the REF device, then it's an application bug.

ハードウェアとします。ソフトウェアの頂点の処理Hardware vs. Software Vertex Processing

ハードウェアとソフトウェアによる頂点処理は、実際には HAL デバイスにのみ適用されます。Hardware versus Software vertex processing only really applies to HAL devices. パイプラインで頂点をプッシュする場合、頂点を変換 (ワールド、ビュー、プロジェクション マトリックス) し、照明を適用する (D3D の組み込みライトによる) 必要があります。この処理の段階をT&L (変換と照明) と呼びます。When you push vertices through the pipeline, they need to be transformed (by the world, view, and projection matrices in turn) and lit (by D3D's built-in lights) - this processing stage is known as T&L (for Transformation & Lighting). ハードウェアによる頂点処理は、ハードウェアがサポートしている場合、この処理がハードウェアで行われることを意味し、ソフトウェアによる頂点処理は、ソフトウェアで行われます。Hardware vertex processing means this is done in hardware, if the hardware supports it; ergo, Software vertex processing is done is software. 一般的なプラクティスでは、最初にハードウェア T&L デバイスを作成し、それが失敗した場合は混在を試します。それでも失敗した場合はソフトウェアを試します The general practice is to try creating a Hardware T&L device first, and if that fails try Mixed, and if that fails try Software. (ソフトウェアが失敗した場合は、あきらめて、エラーを出力して終了します)。(If software fails, give up and exit with an error.)

関連トピックRelated topics

デバイスDevices