web-dev-qa-db-ja.com

glxinfo OpenGLバージョンの意味を理解する

Glxinfoコマンドの出力のすべての異なるバージョン文字列の違いは何ですか?

私はすでにこれを尋ねました ここ 、しかし、多くの応答を得ませんでした、そして、とにかく、AskUbuntuにはもっと関連した質問があるようです。

glxinfo|grep OpenGLの出力は次のとおりです。

 glxinfo |grep Open
    Vendor: Intel Open Source Technology Center (0x8086)
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 520 (Skylake GT2) 
OpenGL core profile version string: 4.5 (Core Profile) Mesa 13.0.2
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 13.0.2
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 13.0.2
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:
.

OpenGLバージョン文字列が3.0であるのに、なぜ「コアプロファイル」が4.5なのですか?

4
Mali Remorker

OpenGL ESは、元のOpenGL仕様のサブセットであり、スマートフォンなどの組み込みシステム向けに設計されています。バージョン番号が一致しない理由は100%わかりませんが、一致しません。最新バージョンは、OpenGLの場合は4.5、OpenGL ESの場合は3.2です。これは、出力のOpenGL ES部分の理由を説明しています。あなたの場合、OpenGLとOpenGL ESの両方の最新バージョンをサポートしています。

OpenGLおよびOpenGL ESエントリには、バージョン文字列とシェーディング言語バージョン文字列があることに注意してください。 OpenGL 3.3より前は、OpenGLのバージョン番号とシェーディング言語のバージョン番号が一致していませんでした。これが、出力に個別のエントリがある理由だと思います(古いハードウェアでは明らかに異なる場合があるため)。出力に見られるように、バージョン番号(4.5)はシェーディング言語バージョン(4.5も)と一致します。

最も難しい部分(および私が100%確信していない部分)は、「OpenGLバージョン文字列」です。

いくつかの完全に異なるマシンで見たものから、これはバージョン3.0で制限されているようです。 3.0のシェーディング言語バージョンは1.3であるため、このOpenGLバージョンではシェーディング言語バージョン文字列が意味をなします。ただし、バージョンが3.0に制限されているのはなぜですか?私の考えは次のとおりです。

バージョン3.0では廃止が導入されました( このリンク を参照)。これは、2つの別個のプロファイル、「コア」と「互換性」の由来でもあります。 OpenGLの実装は、有効になるために「コア」仕様を実装するだけで済みます。

特定のバージョンのMesaリリースノートを読むと、このコア/互換性プロファイルの問題に関する声明が表示されます。以下は、最新バージョン17.0.0のリリースノートから引用したものです here

Mesa 17.0.0 implements the OpenGL 4.5 API, but the version reported by glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) / glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used. Some drivers don't support all the features required in OpenGL 4.5. OpenGL 4.5 is only available if requested at context creation because compatibility contexts are not supported.

最後の部分に注意してください。「OpenGL 4.5は、互換性コンテキストがサポートされていないため、コンテキスト作成時に要求された場合にのみ使用可能です」。したがって、「OpenGLバージョン文字列」は、「互換性」プロファイルコンテキスト(つまり、バージョン3.0以前の非推奨機能のサポート)でサポートされるバージョンだと思います。

5
gsxruk