OpenGL 3.3以降を必要とするラップトップでプログラムを使用する必要があります。どうやら私の「効果的な」OpenGLバージョンは3.0です。以下はglxinfoからの出力です。これはxubuntu 16.10で、グラフィックカードはIntel HD 5500です。何が問題なのかわかりません。少なくとも3.3を入手するには、ハードウェアとソフトウェアの両方が十分に最新のものであるようです。誰かが助けてくれることを願っています!
glxinfo|grep OpenGL
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 5500 (Broadwell GT2)
OpenGL core profile version string: 4.3 (Core Profile) Mesa 12.0.3
OpenGL core profile shading language version string: 4.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 12.0.3
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.1 Mesa 12.0.3
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10
OpenGL ES profile extensions:
短い答え:あなたのOpenGLバージョンは3.0でスタックしていません。 「OpenGLコアプロファイルバージョン文字列」行には、サポートされているOpenGLが「4.3」として表示されます。
詳細な説明:この複雑なバージョン管理は、OpenGLバージョン3.0で行われた変更に関連しており、それまではすべてのOpenGLバージョンが完全に下位互換性がありました。 OpenGLバージョン3.0以降、一部の機能は非推奨としてマークされ、新しいドライバーは必ずしもOpenGL 3.1+互換であるためにそれらをサポートする必要はありません。
OpenGLドライバーが廃止された機能をサポートできるようにするとともに、バージョン3.1+と完全に互換性を持たせるために、OpenGLは「コア」および「互換」プロファイルを導入しました。
基本的に、「互換性のある」プロファイルのコンテキストでアプリケーションを実行する場合、すべての非推奨機能を含む特定のバージョンまでのすべてのOpenGL機能へのアクセスが保証されます。これは、「コア」プロファイルのコンテキストでアプリケーションを実行する場合には当てはまりません。
私の推測では、コンテキスト非対応アプリケーションの場合、OpenGLバージョンは互換性を最大にするために意図的に3.0として報告される可能性があります。これは、MESA_GL_VERSION_OVERRIDE=4.3
などの環境変数が便利でした。
詳細: OpenGL Context
アプリケーションはバージョン文字列を取得して報告しているだけかもしれません。ただし、これは利用可能な最大バージョンを表すものではなく、おそらくアプリケーションが使用しているものではないでしょう。私の「OpenGLバージョン文字列」はあなたのものとまったく同じであると報告されており、このシステムでOpenGL 3.2を使用して開発しています。
コマンドglxinfo | grep Max
を実行すると、コアプロファイル、互換性プロファイルなどで使用可能な最大バージョンの詳細リストが表示されます。これを実行して、レポートの内容を確認します。最大コアプロファイルバージョンが4.3(3.0ではない)として報告されると思います。もしそうなら、あなたはドライバーの問題があるとは思わない。
ソフトウェアアプリケーションを簡単に見てみましたが、OpenGL 3.3の要件については何も言及していませんでした。しかし、彼らのサイトは異なるGPUの間に大きな違いがあることを示唆しています。
彼らはサポートを提供しているように見えるので、あなたがまだ問題を抱えているならば、彼らがさらに助けることができるかどうか見るのが最善かもしれません。
お役に立てば幸いです。
glmark2用に更新されました
glmark2はOpenGL(ES)2.0ベンチマークです。繰り返しになりますが、これは単にバージョン文字列を引っ張っているだけかもしれません。他のベンチマークアプリケーションをグーグルで調べたところ、GFXBenchが利用可能です こちら 。これをダウンロードしてインストールし、実行してから、画面の下部にある「情報」を選択すると、OpenGLの最大バージョンが表示されます。私のカードには「3.3(コア)」と記載されていますが、これは私のカードがサポートする正しい最大バージョンです。
また、V4.xを必要とするテストも含まれており、セットアップでは実行されないため、試してみる価値があります。
更新されたMesa環境変数
Mesa環境変数MESA_GL_VERSION_OVERRIDE
に出会いました。詳細情報 こちら 。この変数は次のことを示しています。
changes the value returned by glGetString(GL_VERSION) and possibly the GL API type.
システムで次のコマンドを試しました。
MESA_GL_VERSION_OVERRIDE=3.3 glxinfo | grep OpenGL
これにより、OpenGLバージョン文字列とOpenGLシェーディング言語バージョン文字列について次のことがわかりました。
OpenGL version string: 3.3 (Core Profile) Mesa 12.0.3
OpenGL shading language version string: 3.30
これは、環境変数なしで報告されたものではありません。正しいバージョンを強制的に使用する可能性があるため、アプリケーションを実行するときにこの環境変数を使用してみる価値があります。次を使用します。
MESA_GL_VERSION_OVERRIDE=4.3 command
コマンドを、アプリケーションの実行に使用するコマンドに置き換えるだけの場所。