0
AMD Radeon HD 3800:ATIの逆襲

Direct3D 10.1: 互換性がない?

AMDは、新GPUシリーズ「Radeon HD 3000」で、Direct3Dの次期バージョンであるDirect3D 10.1を初めてサポートします。しかし、Microsoft APIのこの新バージョンは、私たちに何をもたらすのでしょうか?

この夏、Direct3D 10.1に関する最初の情報がリークされた際、一部のウェブサイトでは不安を煽る噂が飛び交いました。この新バージョンは以前のバージョンと互換性がないというのです!たちまち、ウェブ上で怒りの声が上がりました。実のところ、MicrosoftはDirect 3Dをめぐる騒動で自ら撒いた種を刈り取る羽目になったのです。ゲーマーたちは、このバージョンが以前のバージョンと互換性がなく、レドモンドの最新OSであるVistaにのみ対応することを受け入れざるを得ませんでした。Microsoftは、将来を見据えた新しいAPIを保証するためには、これは避けられないことだと約束していました。ところが、それから数ヶ月後、再び互換性のないバージョンが登場したのです。多くの人々にとって、もう我慢の限界でした。

Instancing 10: Direct3D 10 SDK のデモ

しかし、Web ではよくあることですが、Direct3D 10.1 は前身と完全に互換性があるため、すべて無駄になりました。しかし、API の互換性バージョンについて話すとき、私たちが何を意味しているかをもっと深く掘り下げてみましょう。バージョン 9 までは、さまざまな DirectX イテレーションが次々と登場し、互換性が低下し続けました。新しい DirectX バージョンをインストールすると、以前のバージョンを使用した古いゲームをすべてプレイできました。同様に、ゲームで DirectX 9 インターフェイスを作成しても、それを DirectX 8 インターフェイスとしてのみ使用することができました。とりわけ、これにより開発者は 2 種類のカードをサポートするために 1 つのコードのみを維持すればよくなり、DirectX 9 を真に処理するカードの高度な機能サポートは確保できました。これを行うために、プログラマーはカードの実際の能力の詳細なリストを提供する構造にアクセスできました。逆に言えば、この互換性は Direct3D 10 ではもう存在しません。古いゲームが Vista で確実に実行されるように、Microsoft は最新の OS に両方の API を統合しました。

Windows Vista API

同様に、Direct3D 10 インターフェースは、多くの API が削除されたため、第 9 バージョンの API へのアクセスを許可しません。開発者がゲームで Direct3D 9 と 10 をサポートしたい場合、ゲームの 2 つの異なるバージョンを計画する必要があります。これは、OpenGL と Direct3D をサポートしたい場合と実質的に変わりません。ここでは、この特定のケースを「互換性のない API」と呼びます。

Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。

逆に言えば、Direct3D 10 のみに対応したカードに Direct3D 10.1 インターフェースを作成することは十分に可能です。新しい API は後者の完全なスーパーセットです。Direct3D 10 の機能はすべて、上位の Direct3D 10 にも含まれています。開発者の唯一の義務は、Direct3D 10 カードで Direct3D 10.1 にのみ存在する機能を呼び出さないようにすることです。これは、以前のバージョンの API でも既に必須でした。

既に利用可能なDirect3D 10 GPU(G8x、G9x、R6x0)は、最新のAPIのアドオンをサポートしていないことは明らかです。これは当然のことのように思えますが、この点は多くの混乱を招いています。実際、古いGPUのサポートに関しては、MicrosoftはDirect3D 10でCapsビットを廃止すると約束しており、その約束を守っています…まあ、ある意味ですが。今後はCapsビットは存在しなくなり、Microsoftが「機能レベル」と呼ぶものに置き換えられます。主な違いは、各機能が個別にサポートされていることを確認する必要がなくなったことです。機能レベルがDirect3D 10かDirect3D 10.1かを確認するだけで、GPUが何をサポートしているかを正確に判断できます。