我正在运行该配置:
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)。如果我很容易遇到开发问题,那么我就失去了硬件和驱动程序,那么有人知道通过我的配置实现这一目标的方法吗?
答案 0 :(得分:30)
好消息!!!
梅萨10 已经出局,这意味着对Opengl 3.3
和GLSL 3.3
的支持!
这是在我的第四代酷睿i5移动处理器上测试的,带有HD 4400图形芯片组。
现在可以在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
源文章
答案 1 :(得分:5)
所以我看到很多线程围绕着这个,我认为这将是一个回应的好地方。我用intel ivybridge运行Ubuntu 15.04。在使用“Intel Graphics installer for 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,则以下步骤应该有效:
#version 330 core
glutInitContextVersion (3, 3);
glewExperimental = GL_TRUE;
<强> 编辑: 强>
我忘了提及哪些与大多数* nix用户使用freeglut相关的东西是关于深度测试,我应该从特定的角度绘制(以及不应该)网格:
要在Linux上使用深度测试,您不仅需要通过
启用深度测试 (glEnable(GL_DEPTH_TEST);
但是你还需要创建你的过度上下文以获得一个深度缓冲区(Windows似乎默认情况下通常有深度缓冲区,而Linux则没有。)
使用freeglut意味着您需要在glutInitDisplayMode中包含GLUT_DEPTH
,以便创建具有深度缓冲区的上下文,例如
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH);
p.s。我只使用了freeglut,因为我拿的大学模块给了我们使用它运行的演示代码。从那时起,我肯定会建议切换到glfw。我的回答的第一部分仍然非常适用,只需使用glfw方法。
答案 2 :(得分:1)
不幸的是,此时看起来这是不可能的,因为英特尔提供的开源驱动程序是唯一可用的。有一个比你更新的版本(Mesa 9.0.1),但它仍然支持OpenGL 3.0和GLSL 1.30,你可以在Intel Open Source website的发行说明中阅读。
问题是开源驱动程序被Mesa所困,目前只支持GLSL 1.40,如下所示:http://www.mesa3d.org/shading.html#support
我担心如果你需要使用OpenGL 3.3环境,你需要获得一个带二进制驱动程序的专用GPU(nvidia或ati卡)。