OpenGLを学びたいのですが、インターネット上のほとんどのチュートリアルはOpenGL 3.0以降のガイドのみを提供します。だから私のOpenGLバージョンを見つけました。
glxinfo | grep OpenGL
次を生成します。
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Ironlake Mobile
OpenGL version string: 2.1 Mesa 10.0.4
OpenGL shading language version string: 1.20
だから私は次のドライバの公式ウェブサイトを訪問しました。 https://01.org/linuxgraphics/
最新バージョンをインストールしましたが、まだ同じ内容が表示されます。私のハードウェアがいくつかのDirectX11レンダリングをサポートしていることを知っていますが、OpenGL3.0をサポートしていないのはなぜですか?
あ、忘れてしまいましたね。私はFedora 20 64ビットを使用しています。
答え1
その理由は、Ironlakeグラフィックアーキテクチャがivybridgeやsandybridgeではなく、Clarkdale / Arrendale世代の技術であるためです。厳密に言えば、ハードウェアは拡張機能をサポートしますが、その機能はそのグラフィックドライバでは実装されません。
ドライバのプログラミング経験がある場合は、自分で追加してみてください。
http://www.phoronix.com/scan.php?page=news_item&px=MTMxMDQ
リンクが機能しない場合関連セクション:
「Sandy Bridge以前のIntelハードウェア世代のIronlake(Clarkdale / Arrandale)はOpenGL 2.1時代に設計されていますが、このハードウェアには多くのOpenGL 3.0 / GL Shading Language 1.30機能を実装できます。利用可能なES 3.0(組み込み/モバイルGLのバリエーション)が迅速に議論され、ドライバ開発者は以前のハードウェアへの関心を素早く失いました。
Phoronixの読者は、このバグレポートとKenneth Graunkeの1月のコメントを指摘しました。
Team Fortress 2には、現在Sandy Bridgeおよび最新のハードウェアでのみサポートされているOpenGL 3.0およびGLSL 1.30の特定の機能が必要です。残念ながら、Ironlake以前のバージョンにはまだこの機能はありません。
Ironlakeで欠落している機能を実装することが可能でなければなりません。コードはオープンソースで、ハードウェア文書はWeb(*)で無料で利用できるため、理論的には誰でも作業を進めることができます。
残念ながら、私たちのチームは最新のハードウェアを開発するのに忙しいので、IronlakeのGL 3.0サポートを実装する時間がないようです...少なくとも短期的ではありません。本当に残念です。そんなことが起きてほしい。
(*) https://01.org/linuxgraphics/documentation/driver-documentation-prms
デフォルトでは、Intel Linuxドライバ開発者は最新のハードウェアやその他の機能を開発するのに忙しいので、以前のIntel製品にはなかった機能がない可能性があります。ただし、IntelはNDAなしのプログラミング文書を提供しているため、他の有能な開発者が上記の機能を提供できる必要があります。このバグのコメントは、IronlakeがLinuxのValveソースエンジンゲームで動作しないことに対する答えです。
私はIronlakeハードウェアの一部を所有していますが、Intelが最新のハードウェアサポートに取り組んでいるのを見たいと思います。 Intel i965 DRIドライバがソースエンジンゲームに必要なGL3 / GLSL1.30機能を実装していても、まだかなり遅いです。 Intelグラフィックスが統合グラフィックス性能の面で実際に大きな進歩を遂げたのは、Sandy Bridgeになっていた。 Ironlakeはそれほど有能ではなく、新しい(まだリリースされていない)ハードウェアはより興味深く、新しいドアを開くでしょう。明らかに、Intelはハードウェアもアップグレードしたいと考えています。 」
したがって、簡単な答えは次のようになります。 Intelは、これらの機能を実装するのにあまり気にしないか、インセンティブを持っていません。しかし、少なくともこれらの機能を実装したいという意志や技術/資金があれば、実装/することができます。 OGL 3.x 機能が必要な場合、Ironlake アーキテクチャはこれらの機能をサポートしておらず、おそらくサポートしないので、ハードウェアをアップグレードすることをお勧めします。
答え2
私はソースから直接コンパイルするのではなく、ソースRPMをダウンロードし、.spec
RPMファイルの設定スイッチを変更して再構築する傾向があります。これがFedoraパッケージで唯一欠落しているようです。ここを参照してください。FedoraがOpenGL 3.0をリリースしないのはなぜですか? (インテルハードウェアでは無効にすることもできます)。
抜粋:[Mesaユーザー] IvyBridgeにOpenGLバージョンを公開
Michael Cronenworthは2013年2月17日日曜日00:48 -0600に次のように書きました。
Phoronixでは、IvyBridge/SandyBridgeハードウェアがMesa 9.0および9.1でOpenGL 3.0/3.1をサポートする必要があると聞きました。しかし、glxinfoは他に何かを伝えます。
CPU: Core i3-3225(HD4000) ディストリビューション: Fedora 18 x86_64 OpenGL ベンダー文字列: Intel OpenGL OpenGL レンダラー文字列: Mesa DRI Intel(R) Ivybridge Desktop OpenGL バージョン文字列: 2.1 Mesa 9.0.1 OpenGL シェーディング言語バージョン文字列: 1.30
これは正しいですか、それともPhoronixが間違って理解していますか?
HD4000はOpenGL 3.1をサポートします。ただし、米国特許のため、Mesa の Fedora ビルドには OpenGL 3.0/3.1 を無効にする --enable-texture-float 設定オプションはありません。私は弁護士ではありませんが、私が知っている限り、世界中の特許ではないため、米国以外の地域では --enable-texture-float を使用するのが安全であり、一部のLinuxディストリビューション(Ubuntuなど)ではそうします。基本的に。 Fedora 18で指定されたオプションを使用してソースRPMからMesaを再構築すると、HD3000でOpenGL 3.1 / shading 1.40が有効になります。
——トーマス・ブレチコ
スピード
一般的な手順は次のとおりです。
$ yumdownloader --source mesa-libGL
$ rpmdev-setuptree
$ rpm -Uvh mesa-9.2.4-1.20131128.fc19.src.rpm
$ (umask 022; sudo yum-builddep mesa-9.2.4-1.20131128.fc19.src.rpm)
$ (umask 022; sudo yum install gcc-c++)
次にmesa.spec
ファイルを編集します。
$ vim ~/rpmbuild/SPECS/mesa.spec
.spec
次に、ファイルにスイッチを追加します。
## add the --enable-texture-float to configure
次に、この.spec
ファイルを使用してパッケージを再構築します。
$ rpmbuild -ba ~/rpmbuild/SPECS/mesa.spec
.rpm
すべての操作が完了すると、RPMSディレクトリに新しく作成されたファイルが表示されます。