2009-05-07 29 views
1

紳士と尊敬される女性。Direct3D 10のCOM露出がありますか

私はこの問題をCode ProjectのCOMフォーラムに掲載しました。ひどい返信がありましたので、あなたはもっと役立つでしょう。

Microsoftには、GUID 81BDCBCA-64D4-426d-AE8D-AD0147F4275Cで公開されたDirect3D 9用のCOMライブラリがあります。

MicrosoftはDirect3D 10をCOMに公開していますか?もしそうなら、インターフェイスGUIDは何ですか?

ありがとうございます。

答えて

4

MSDNのドキュメントからは、IDirect3D9::CreateDeviceなどのメンバ関数を持つIDirect3D9オブジェクトから、D3D10CreateDeviceなどのグローバル関数を使用するように移動したようです。 Direct3D 10では、(例えば)アダプタに関するIDirect3D9にあった多くの機能をDirectX Graphics Infrastructure (DXGI)に分割しました。

つまり、Direct3D 10ではCOMを使用していますが、IDirect3D9には対応していません。 IDirect3D9を使用したことは、他の手段で達成されています。

編集:上記のGUIDを持つCOMクラスはIDirect3D9です。 Direct3D 10にはこのバージョンの更新版がありません(IDirect3D9はIDirect3D10にはない機能があります)。代わりに、そのクラスのメンバ関数をオブジェクト経由ではなく直接呼び出すグローバル関数(D3D10CreateDeviceなど)とDXGIクラス(IDXGIOutputなど)に分割しました。 IDirect3D10オブジェクトを使用する必要があるため、IDirect3D10オブジェクトは必要ありません。これは、さまざまな方法で行われます。

Direct3DヘッダーファイルでDEFINE_GUIDマクロを検索することで、GUIDをCOMクラス名にマップできるはずです。

+0

すごく素晴らしいです。申し訳ありませんが、私の質問は100%正しい方向に進んでいないことに気づきました。しかし、今ではあなたが意味することを正確に理解しているヘッダーファイルにGUIDSが表示されます。助けを借りて! –

+0

私はそれが理にかなってうれしいです:-) –

0

COMでは、要求しているライブラリ情報がタイプライブラリ(TLBファイル)にエンコードされています。 Direct3Dは、ほぼ10年前のDirectX 8.0以来、オブジェクトのタイプライブラリやCoCreateInstanceを使用していませんでした。 Direct3Dは、オブジェクトの寿命を管理するためにCOMインターフェイスを使用します。彼らはQueryInterfaceをまったく使用しません。ほとんどのCOMインフラストラクチャは、Direct3Dおよび関連オブジェクトによって使用されるインターフェイスには適用されません。

これらのオブジェクトは、オブジェクトの作成にCoCreateInstanceを使用せず、基本インターフェイスを取得する単一のファクトリ関数(Direct3DCreate9など)を提供し、その基本インターフェイスの作成メソッドを使用して他のものを取得します。 Direct3D 10では、彼らはディスプレイやその他を列挙するベースインターフェイスが安定しており、D3D 8とD3D 9で同じであることを認識しており、安定したベースインターフェイスIDXGIFactoryに移行しました。同じDXGIコードがD3D 10,10.1,11に使用されています。

関連する問題