3

「glGetString(GL_VERSION)」と「glGetString(GL_SHADING_LANGUAGE_VERSION)」を使用してコンピューターの OpenGL バージョンを確認したところ、次の情報が得られました。

3.1.0 - GL_VERSION のビルド 8.15.10.2538

1.40 - GL_SHADING_LANGUAGE_VERSION 用のインテル ビルド 8.15.10.2538

「Geeks3D GPU Caps Viewer」を実行すると、グラフィック カード (NVS 4200M) の OpenGL バージョンが

GL_バージョン: 4.3.0

GLSL バージョン: Cg コンパイラ経由の 4.30 NVIDIA

私のグラフィック カードは一部の OpenGL 4.3.0 機能しかサポートしておらず、4.3 コンテキストを作成できないということですか?

4

1 に答える 1

13

グラフィック カードはNVIDIA Optimusカードです。これは、統合された Intel グラフィックスと専用 GPU のどちらかを「自動的に」選択することを意味します。Intel グラフィックスは 3.1 までしかサポートしていませんが、専用 GPU は 4.3 をサポートしています。どちらを選択したかによって、そのバージョンまでしかサポートされません。Optimus の唯一の問題は、DirectX、CUDA、C++ AMP、および OpenCL のみを自動的に選択することです。

これは多くの混乱 フラストレーションを引き起こしました。

専用 GPU の使用を強制するには、いくつかの解決策があります。

  1. 最も簡単な方法は、NVIDIA コントロール パネルを介してアプリケーションに専用 GPU を使用させることです。これは通常、あなたのマシンでのみ機能するため、一時的な解決策です。
  2. プログラムの最初に CUDA または OpenCL を少し (またはリンクして) 呼び出し、専用カードへの切り替えをトリガーします。ただし、これにより CUDA または OpenCL への依存関係が追加されます。
  3. グローバル変数をエクスポートします_declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;。通常はこれが最善の解決策ですが、使用している言語によっては、グローバル変数をエクスポートできない場合があります。

NVIDIA はこれに関するドキュメントをリリースしました: http://developer.download.nvidia.com/devzone/devcenter/gamegraphics/files/OptimusRenderingPolicies.pdf

于 2013-08-06T04:26:22.617 に答える