私はその構成を実行しています:
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)を実行することでした。開発の問題が簡単な場合、ハードウェアとドライバーに夢中になります。そのため、私の構成でそれを達成する方法を誰かが知っていますか?
残念ながら現時点では、Intelが提供するオープンソースドライバーしか利用できないため、これは不可能のようです。 Intel Open Source Webサイト のリリースノートで確認できるように、お使いのバージョン(Mesa 9.0.1)より新しいバージョンがありますが、OpenGL 3.0とGLSL 1.30は引き続きサポートされています。
問題は、オープンソースドライバーがMesaで動かなくなっていることです。現時点では、GLSL 1.40のみをサポートしています。これは、 http://www.mesa3d.org/shading.html#support
OpenGL 3.3環境を使用する必要がある場合は、バイナリドライバー(nvidiaまたはATIカード)を備えた専用GPUを入手する必要があると思います。
素晴らしいニュース!!!
Mesa 10がリリースされました。これは、Opengl 3.3
およびGLSL 3.3
のサポートを意味します!
これは、HD 4400グラフィックチップセットを搭載した第4世代Core i5モバイルプロセッサでテストされています。
Linuxの統合Intelチップセットで最新のOpenGL
開発が可能になりました!これは大きな前進です。 Note that ubuntu 15.04 ship with Mesa 10.5
これが、GLSL 3.3シェーダーを使用して三角形をレンダリングする方法です:)
わかりましたので、Ubuntu 13.10でこれを機能させるための実験的なドライバーを入手するには、いくつかのことを行う必要があります。
# Note this will take awhile!
1.) Add the PPA Repository
$ Sudo add-apt-repository ppa:oibaf/graphics-drivers
2.) Update sources
$ Sudo apt-get update
3.) Dist-upgrade (rebuilds many packages)
$ Sudo apt-get dist-upgrade
4.) Reboot!
In your code make sure you request a Opengl 3.3 context!
このコマンドを実行しますglxinfo | grep OpenGL
次のようなものが得られます...
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Haswell Mobile
OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.1.0-devel (git-f9cfe5c saucy-oibaf-ppa)
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
出典記事
だから私はこれを取り巻くスレッドをたくさん見ました、そして私はここが応答するのに良い場所だと思いました。私はIntel ivybridgeでUbuntu 15.04を実行しています。 「Linux用Intel Graphicsインストーラー」アプリケーションを使用した後、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
_
これから、coreプロファイルとglslバージョンが3.3であることがわかりますが、互換性のあるopenGlは3.0のみなので、コードを3.3で実行する場合openglコアプロファイルとglslコアプロファイルの両方を指定する必要があります。次の手順は、freeglutとglewを使用している場合に機能します。
_#version 330 core
_
glutInitContextVersion (3, 3);
_glewExperimental = GL_TRUE;
_
編集:
Freeglutを使用しているほとんどの* nixユーザーに関連すると思われる、私が言及するのを忘れていたものは、深さテスト、つまり特定の観点からメッシュの何を描画するべきか(そして何を描画してはいけないか)に関するものです。
Linuxで深度テストを使用するには、深度テストを有効にするだけでなく、
_(glEnable(GL_DEPTH_TEST);
_
ただし、深度バッファーを作成するためにglutコンテキストを作成する必要もあります(Windowsは通常デフォルトで深度バッファーを持っているようですが、Linuxにはありません)。
Freeglutを使用することは、_GLUT_DEPTH
_を glutInitDisplayMode に含める必要があることを意味し、深度バッファを持つコンテキストを作成します。
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH);
p.s。私が取ったカレッジモジュールがそれを使用して実行するためのデモコードを提供してくれたため、私はfreeglutのみを使用しています。それ以来、代わりに glfw に切り替えることをお勧めします。私の答えの最初の部分はまだほとんど適用されていますが、代わりにglfwメソッドを使用しています。