我正在尝试学习 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 gen技术,虽然严格来说硬件支持扩展,但相关图形驱动程序中没有实现这些功能。
如果您有驱动程序编程经验,您可以尝试自己添加它们。
http://www.phoronix.com/scan.php?page=news_item&px=MTMxMDQ
相关部分,以防链接失效:
“虽然 Ironlake(Clarkdale/Arrandale)——Sandy Bridge 之前的一代英特尔硬件——是在 OpenGL 2.1 时代设计的,但许多 OpenGL 3.0 / GL 着色语言 1.30 功能都可以为此硬件实现。今天早上分享时,客户很快就讨论了现在适用于 Sandy Bridge 的 OpenGL ES 3.0(嵌入式/移动 GL 变体),驱动程序开发人员很快就对旧硬件失去了兴趣。
一位 Phoronix 读者指出了这个错误报告以及 Kenneth Graunke 一月份的评论:
《军团要塞 2》需要 OpenGL 3.0 和 GLSL 1.30 的某些功能,目前我们仅在 Sandy Bridge 和更新的硬件上支持这些功能。不幸的是,Ironlake 和更早的版本目前还没有。
应该可以在 Ironlake 上实现缺失的功能。该代码是开源的,并且硬件文档可以在网络上免费获得(*),因此理论上,任何人都可以在这方面取得进展。
遗憾的是,我们的团队正忙于开发更新的硬件,不太可能有时间为 Ironlake 实现 GL 3.0 支持……至少短期内不会。对此我深表歉意;我们也很乐意看到它发生。
(*) https://01.org/linuxgraphics/documentation/driver-documentation-prms
基本上,英特尔 Linux 驱动程序开发人员正忙于开发更新的硬件和其他功能,因此旧英特尔产品缺少的功能可能不会出现。但由于英特尔确实提供了免 NDA 的编程文档,其他有能力的开发人员应该能够提供上述功能。此错误评论是为了回应 Ironlake 不适用于 Linux 上的 Valve 源引擎游戏。
虽然我确实拥有一些 Ironlake 硬件,但我更愿意看到英特尔致力于更新的硬件支持。即使 Intel i965 DRI 驱动程序实现了 Source Engine 游戏所需的 GL3/GLSL1.30 功能,它仍然会非常慢。直到 Sandy Bridge,英特尔显卡才真正在集成显卡性能方面发挥了作用。 Ironlake 的能力不是很强,而更新的(尚未发布的)硬件更令人兴奋,并将打开新的大门。显然,英特尔也希望你也升级你的硬件。”
因此,简单的答案是:英特尔不太关心或没有任何动力来实现这些功能,但至少如果您愿意并且有技能/资金来实现这些功能,您/可以/实现它们。如果您需要 OGL 3.x 功能,我建议升级您的硬件,因为 Ironlake 架构不支持而且很可能不支持这些功能。
答案2
我倾向于下载源 RPM,修改 RPM.spec
文件中的配置开关并重建它们,而不是直接从源代码编译它们。这似乎是 Fedora 软件包中唯一缺少的东西,请参见此处:为什么 Fedora 不发布 OpenGL 3.0? (甚至为英特尔硬件禁用它)。
摘录自:[Mesa-users] 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 渲染器字符串:Mesa DRI Intel(R) Ivybridge Desktop OpenGL 版本字符串:2.1 Mesa 9.0.1 OpenGL 着色语言版本字符串: 1.30
这是准确的还是 Phoronix 弄错了?
HD4000确实支持OpenGL 3.1。然而,由于美国专利的影响,Fedora 构建的 Mesa 没有 --enable-texture-float 配置选项,这会禁用 OpenGL 3.0/3.1。我不是律师,但据我所知,因为它不是全球专利,如果您在美国境外,使用 --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 目录中看到新建的文件。