Mesa v18.0.5を使用しますが、OpenGL v3.0のみをインポート

Mesa v18.0.5を使用しますが、OpenGL v3.0のみをインポート

OpenGLを使用してC / C ++アプリケーションを開発しようとしています。残念ながら、OpenGL 3.0以降はどの機能にもアクセスできません。 Mesaバージョン18.0.5、Linux Mint 18 64ビット、4.18.1カーネル、およびIntel統合グラフィックスがあります。

ターミナル出力:

 ~ $ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Broadwell-U 
Integrated Graphics (rev 09)
 ~ $ 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.5 (Core Profile) Mesa 18.0.5
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 18.0.5
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.1 Mesa 18.0.5
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 
3.10
OpenGL ES profile extensions:

私のハードウェアはOpenGL 4.4までサポートしていると確信しています。 MSが最新のアップデートをプッシュ/強制する前は、このコンピュータはWindows 10コンピュータであり、その間OpenGL 4.4およびGLSL 440で開発していたためです。

また、JOGLを介してJavaでOpenGL 4.4プログラムを実行できます。このプログラムは、必要なすべてのOpenGLライブラリをまとめてパッケージ化し、システムバージョンとは完全に独立しているようです。

もしそうなら、デフォルトでは、Mesaはなぜコアバージョンが4.5であると言いながら、バージョン文字列を3.0として提供するのですか? (同じバージョンのglGetString(GL_VERSION)が返されます。)OpenGL 4.4に再度アクセスするにはどうすればよいですか? (4.5でなければ!)

ベストアンサー1

私が知っている限り、重要な値は「OpenGLバージョン文字列」ではなく、「最大コアプロファイルバージョン」です。コンテキストの作成時にコア構成ファイルを指定しなかった場合、または次のように作成した場合

glfwOpenWindowHint(GLFW_OPENGL_PROFILE, 0);

MesaはOpenGL 3.0のコンテキストを提供します(プロファイルがOpenGL 3.0に導入されたので、これはアプリケーションがプロファイルについて知らなかった最後のバージョンだったので意味があります)。最新バージョンのOpenGLが必要な場合は、その構成ファイルを指定する必要があります。

glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

または

glutInitContextProfile(GLUT_CORE_PROFILE);

そして使用されたバージョンglutInitContext()

この方法でOpenGLバージョンを強制すると強力な制約が発生することに注意してください。一部の開発者は比較的低いバージョン(OpenGL 3.2など)をターゲットにして、必要な拡張を要求しようとしています。一般的な拡張は、そのOpenGLバージョンで完全にサポートされる前にある程度利用可能になる傾向があるため、一般的にこの方法はうまく機能します。ドライバー。

MESA_GL_VERSION_OVERRIDEデバッグまたはMesa開発ツールにすぎず、報告されたOpenGLバージョンを強制的に無視し、Mesaが実際にサポートしていない値に設定できます。

おすすめ記事