2012-03-01 18 views
3

私はグラフィックスにdirectx 11を使ってC++でプログラムを書いています。私のラップトップには、軽量のIntelグラフィックスカードがあり、これはバッテリーの寿命を延ばすために使用され、「軽量」のグラフィックスにしか使用されないことになっています。私は別のはるかに強力なビデオカードをインストールしている。C++ Directx 11複数のビデオカード

どのビデオカードをdirectxで使用するかを指定する方法はありますか?自分のコード内で使用するカードを指定するデバイスを作成する方法はありますか?

おかげ

+1

あなたの質問に対する答えはわかりませんが、本当の解決策は、そうしないことです。 DirectXは、オペレーティングシステムの設定でユーザーが選択した正しいグラフィックスカードを自動的に使用します。 2枚目のグラフィックスカードがある場合は、モニターが接続されていない可能性もあります。 –

答えて

2

あなたのカードがいくつかのIntel/NVIDIAの組み合わせであれば、2つのオプションがあります。

- まずは、3D設定の管理、NVIDIAコントロールパネルに(れる好ましいデバイスとしてグローバルにnvidiaのカードを設定されています/

コードを使用するもう一つの方法は、DXGIでアダプタを列挙し、制限された機能レベルでデバイスを取得することです(使用できない場合はCreateDeviceが失敗し、ほとんどのインテルカードは10.1です)

列挙型アダプターへの10

http://msdn.microsoft.com/en-us/library/windows/desktop/bb174538(v=vs.85).aspx

次に、各アダプタに対してD3D_FEATURE_LEVEL_11_0を使用してデバイスを作成しようとすると、それをサポートするデバイスのみが作成されます。

0

私も同様の問題がありました。私はまだグラフィックカードのドライバをアップグレードしようとはしていませんが、コンピュータをインターネットに接続し直すことになります。

は、ここで私が見つけたものだとどのように私は(陪審-不正別名)私の問題「解決」:

症状:上記のポスターと同様に

  1. を。
  2. DirectX 11をサポートすると主張しているNVDIAグラフィックカードは1つしかありません
  3. DirectX Caps Viewerで見ると、DirectX 9.3以下しかサポートされていませんでした。

ソリューション:D3D_FEATURE_LEVELて後方

  1. 反復、D3D11CreateDeviceAndSwapChain()を呼び出すたびに。
  2. D3D11CreateDeviceAndSwapChain()が機能すると、選択したグラフィックカードでサポートされている最大の機能レベルが見つかりました。

これを行うにはもっときれいな方法があるかもしれませんが、それが私の「問題」です。明らかに、私のカードがDX11システム全体をサポートしていれば良いでしょうが、ユーザーに同様の問題がある場合には、それは悪い保障措置ではありません。少なくとも私は問題をプログラムで識別できます。

関連する問題