18

私は、C++ と SDL および OpenGL を使用してアプリケーションを開発するチームの一員です。

ラップトップでアプリケーションを実行すると、専用のグラフィック カードが使用されず、必要な GL のバージョンを統合グラフィック カードがサポートしていないため、GL コンテキストの作成に失敗します。

この問題は問題のラップトップに固有のものであり、コードで解決できるものではないと感じています. しかし、解決策があるかどうかを誰かが知っていれば、それは素晴らしいことです。

4

2 に答える 2

31

C++ から、Windows でチップセット切り替え可能グラフィックスの代わりに専用グラフィックス カードが使用されるようにする最も簡単な方法は、次のシンボルをエクスポートすることです (MSVC サンプル コード)。

NVIDIA の専用グラフィックスを有効にします。

extern "C" 
{
  __declspec(dllexport) unsigned long NvOptimusEnablement = 0x00000001;
}

AMD Radeon の専用グラフィックスを有効にします。

extern "C"
{
  __declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1;
}

警告: ユーザーが統合チップセットを使用するアプリケーションのプロファイルを作成した場合、これらは機能しません。

これが Linux / MacOS で同様に機能するかどうかはわかりません (ありそうにありません)。

于 2016-08-19T20:23:42.457 に答える
3

NVidia専用のグラフィックスを使用していますか? 私の知る限り、統合型から専用型に自動的に切り替えるプロセスは、アプリケーション プロファイルに基づいています。あなたのアプリケーションはドライバーの既知の 3D アプリケーションのリストにないため、ユーザーは手動で専用 GPU に切り替える必要があります。

アプリケーションの実行可能ファイル名を、ドライバーが検索する名前に変更してみてください。たとえば、「Doom3.exe」。それが機能する場合は、問題が見つかりました。

それでも問題が解決しない場合は、このビデオの手順に従って、ドライバーがアプリケーションを 3D アプリのリストに挿入する方法を試してください。

http://www.frequency.com/video/how-to-whitelist-game-with-nvidias/24814032

ただし、上記は、これが実際に問題であるかどうかを確認するためのものです。これに対する実際の解決策については、アプリケーションのプロファイルをリストに挿入する最良の方法について、グラフィックス ドライバー ベンダー (AMD および NVidia) に確認する必要があります。NVidia はNVAPIを提供し、AMD はADLAGSを提供します。それらは間違いなく研究する価値があります。

于 2013-05-29T20:46:54.187 に答える