2013-05-29 19 views
8

私はSDLとOpenGLでC++を使ってアプリケーションを開発しているチームの一員です。強制的に専用グラフィックスカードを使用するマシンを強制しますか?

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

この問題は問題のノートパソコンに固有であり、私たちがコードで解決できるものではないと感じています。しかし、誰かが知っている場合、それは素晴らしいだろう解決策があります。

+0

デュアルグラフィックスカードのラップトップを意味しますか?手動で専用カードのヘルプに切り替える(nvidiaの設定またはそれがどこにあるのか)? – riv

+0

ターゲットプラットフォームの特定のAPIを使用して、使用可能なデバイスにアクセスし、アクティブなコンテキストを作成するデバイスを選択することができます。私はあなたが正しいと感じていますが、非アクティブなグラフィックスデバイスは、@rivによって提案されたようにラップトップの設定でオンになるまで表示されません。 – kc7zax

+1

@rivはいそれはデュアルグラフィックカードを備えたラップトップです。もちろん、nvidia/ati設定で専用カードを使用するアプリケーションのリストにアプリケーションを追加することもできますが、エンドユーザーにとっては、そうする必要はありません。 –

答えて

3

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

アプリケーションの実行可能ファイル名をドライバが探しているものに変更してみてください。たとえば、 "Doom3.exe"です。それがうまくいくなら、あなたはあなたの問題を見つけました。

それはドライバーが、3Dアプリケーションのリストでアプリケーションを挿入作る方法についてのこのビデオの指示に従ってみてください、助けにはならなかった場合:

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

しかし、上記のみ検証するためでありますこれが本当にあなたの問題ならば。これに対する実際の解決策は、グラフィックスドライバベンダ(AMDおよびNVidia)がアプリケーションのプロファイルをリストに挿入する最良の方法を調べることです。 NVidiaはNVAPIを提供し、AMDはADLAGSを提供します。彼らは確かに研究の価値がある。

+0

最終的な目的は、専用のグラフィックスカードを使用するアプリケーションのリストにアプリケーションを追加する必要がないようにすることです。 これは、nvidia以外のデバイスでも発生する可能性があります。あなたが送ったリンクを見てみましょう。 ATIカードにも同様のソリューションがありますか? –

+1

@ConnorHollis:アプリケーションプロファイルが保存されている場所はよく知られています。問題の解決策は、インストーラにAMDとNVidiaのドライバ用のアプリケーションプロファイルを追加させることです。 – datenwolf

+0

しかし、情報の場所が既に変更されており、いつでも再び変更される可能性があるため、NvidiのNvidiを使用してアプリケーションプロファイルを作成する必要はありません。 –

10

専用のグラフィックスカードが代わりにWindowsでチップセットスイッチャブル・グラフィックスの使用されていることを確実にするためにC++からの最も簡単な方法は、以下のシンボル(MSVCのサンプルコード)をエクスポートすることです:

Enable dedicated graphics for NVIDIA

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

Enable dedicated graphics for AMD Radeon

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

警告:ユーザーは、統合chipseを使用するアプリケーションのプロファイルを作成している場合t、これらは動作しません。

Linux/MacOS(これはそうではない)でも同様に動作するかどうかはわかりません。

+0

ある変数に '__declspec'、別の変数に' _declspec'があります。私は何かを逃していますか? – HolyBlackCat

+0

それに気付きましてありがとうございます! 2つのアンダースコアはより正確ですが、_declspecは期待通りに動作しています:http://stackoverflow.com/questions/1399215/difference-between-declspec-and-declspec –

+0

ちょっと、どうすればC#プロジェクトで使用できますか? (WPF) – user2088807

関連する問題