18

私はその構成を実行しています:

  • Ubuntu 12.04
  • インテルHDグラフィックス4000

glxinfoそのパラメータを教えてください:

OpenGL renderer string: Mesa X11
OpenGL version string: 2.1 Mesa 8.0.4
OpenGL shading language version string: 1.20
OpenGL extensions:

私の目標は、OpenGL 3.3(およびGLSL 3.3)を実行することでした。開発の問題が簡単な場合、ハードウェアとドライバーに夢中になっているので、誰かが私の構成でそれを達成する方法を知っていますか?

4

3 に答える 3

5

この件に関して多くのスレッドを見てきたので、ここで回答するのが良いと思いました。Intel ivybridgeでUbuntu 15.04を実行しています。「Linux 用インテル グラフィックス インストーラー」アプリケーションを使用した後、glxinfo は openGl に関する次の情報を提供します。

OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.6.0
OpenGL core profile shading language version string: 3.30
OpenGL version string: 3.0 Mesa 10.6.0
OpenGL shading language version string: 1.30

ここから、コアプロファイルと glsl バージョンが 3.3 であることがわかりますが、互換性のある openGl は 3.0 のみであるため、コードを 3.3 で実行する場合は、opengl コア プロファイルと glsl コア プロファイルの両方を指定する必要があります。freeglut と glew を使用している場合は、次の手順で機能します。

  • glsl #version は、コア プロファイルが必要であることを指定する必要があります。

#version 330 core

  • opengl 3.3 を指定します。

glutInitContextVersion (3, 3);

  • 最後に glewInit() の前に glewExperimental を true に設定します。

glewExperimental = GL_TRUE;

編集:

freeglutを使用しているほとんどの* nixユーザーに関連していると思われる言及を忘れていたのは、深さテスト、つまり、特定の視点からメッシュの何を描画する必要があるか(およびすべきでないか)に関するものです。

Linux で深度テストを使用するには、次の方法で深度テストを有効にする必要があるだけではありません。

(glEnable(GL_DEPTH_TEST);

ただし、深度バッファーを持つには、過剰なコンテキストを作成する必要もあります (通常、Windows には既定で深度バッファーがあるようですが、Linux にはありません)。

GLUT_DEPTHfreeglut を使用すると、glutInitDisplayModeに含める必要があることを意味します。これにより、深度バッファを持つコンテキストが作成されます。

glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH);

ps私が取った大学のモジュールがそれを使って実行するためのデモコードを私たちに与えたので、私はfreeglutだけを使っています。それ以来、代わりにglfwに切り替えることをお勧めします。私の答えの最初の部分は、代わりに glfw メソッドを使用するだけで、ほとんど適用されます。

于 2015-10-02T11:30:13.037 に答える
1

残念ながら、Intel が提供するオープン ソース ドライバーしか利用できないため、現時点ではこれは不可能のようです。お使いのものよりも新しいバージョン (Mesa 9.0.1) がありますが、インテル オープン ソース Web サイトのリリース ノートで読むことができるように、OpenGL 3.0 および GLSL 1.30 を引き続きサポートしています。

問題は、オープン ソース ドライバーが Mesa に固執していることです。Mesa は現時点では GLSL 1.40 のみをサポートしています

残念ながら、OpenGL 3.3 環境を使用する必要がある場合は、利用可能なバイナリ ドライバー (nvidia または ati カード) を備えた専用 GPU を入手する必要があります。

于 2013-02-11T07:40:24.657 に答える