アプリケーションがメイン GPU を使用するように強制しようとしています。これで、CPU 上のものが自動的に取得されます。DirectX9 と OpenGL の両方で試しました。
GetAdapterCount() 関数を呼び出すと、DirectX は 1 つのアダプターのみを返します。また、glGetString( GL_RENDERER ) を呼び出すと、OpenGL は 1 つのアダプターのみを返します。
適切な GPU を使用していることを確認する方法はありますか?
Nvidia Optimus + SandyBridge CPU ラップトップでこの問題が発生しました。全員 (DX、GL) から返されたアダプターは 1 つだけで、Intel GPU が提供されました。
Nvidiaドライバーを更新することでこれを修正しました。最新バージョンの DirectX をインストールすると、2 つのアダプターが正しく報告され、ベンダー ID (Intel と Nvidia) に基づいて、アプリケーションで使用する GPU を選択できました。
または、Nvidia コントロール パネルに移動して、実行可能ファイルのプロファイルを作成し、常に Nvidia GPU を使用するように設定することもできます。もちろん、実行可能ファイルを他の人に渡して、悪いドライバーを使用してシステムで実行させた場合、これは同じ問題を解決しません。
別のオプションは、実行可能ファイルの名前を一般的なゲームの実行可能ファイル名に変更することです。rage.exe や bf3.exe のように。これが機能するのは、Nvidia コントロール パネルには、一般的なゲームの exe 名を持つ事前定義されたプロファイルが多数あり、それらはすべて Intel GPU の代わりに Nvidia GPU を使用するように設定されているためです。
これは複雑で、ハードウェアに依存します。ハイブリッド グラフィックスを搭載したラップトップを使用していますか? その場合、通常、ドライバーは OpenGL コンテキストの「メイン」GPU を提供するように設定されます (デスクトップ レンダリング用の統合グラフィックスにフォールバックします)。デスクトップの場合、通常は 2 つの GPU が物理的に異なるモニター出力を駆動します。ディスクリート グラフィックス カードにモニターが接続されていますか。