使用opengl图形系统时崩溃



我做了一个Qt/Qml应用程序,它在栅格模式下工作得很好。

QApplication::setGraphicsSystem("raster");

但是一旦我将其更改为opengl,它就会崩溃,并显示以下消息:

hijackWindow() context created for QmlApplicationViewer(0xbfce6e5c) 1 
QGLContext::makeCurrent(): Failed.
QGLFramebufferObject: Unable to resolve framebuffer object extensions - make sure there is a current context when creating the framebuffer object.
QGLWindowSurface: Failed to create valid FBO, falling back 
QGLPixelBuffer: Unable to find a context/format match - giving up.
QGLWindowSurface: Failed to create valid pixelbuffer, falling back 
QGLContext::makeCurrent(): Failed.
QGLWindowSurface: Using plain widget as window surface QGLWindowSurface(0x932b428) 
QGLContext::makeCurrent(): Failed.
QGLShader: could not create shader 
Vertex shader for simpleShaderProg (MainVertexShader & PositionOnlyVertexShader) failed to compile
QGLShader: could not create shader 
Fragment shader for simpleShaderProg (MainFragmentShader & ShockingPinkSrcFragmentShader) failed to compile
QGLShaderProgram: could not create shader program 
Errors linking simple shader: "" 
QGLShader: could not create shader 
Vertex shader for blitShaderProg (MainWithTexCoordsVertexShader & UntransformedPositionVertexShader) failed to compile
QGLShader: could not create shader 
Fragment shader for blitShaderProg (MainFragmentShader & ImageSrcFragmentShader) failed to compile
QGLShaderProgram: could not create shader program 
Errors linking blit shader: "" 
QGLContext::makeCurrent(): Failed.
QGLShader: could not create shader 
Warning: "" failed to compile! 
QGLContext::makeCurrent(): Failed.
QGLContext::makeCurrent(): Failed.
QGLShader: could not create shader 
Warning: "" failed to compile! 
QGLContext::makeCurrent(): Failed.
QGLContext::makeCurrent(): Failed.
QGLContext::makeCurrent(): Failed.
QGLContext::makeCurrent(): Failed.
The program has unexpectedly finished.

平台:Ubuntu 12.04 - 32位- Intel i5 - Qt 4.8


编辑1:

我尝试了一种方法,使用这种方法在SO中提到。它确实有效,但即使使用如此强大的平台,我的性能也最差!

我错过了什么吗?谁能列出一个平台上应该确保的所有内容,以确保应用程序实际上在opengl模式下工作,而不是回到本机模式。

。显卡/驱动程序/opengl支持等?


编辑2:

当我尝试运行glxinfo命令时,其中一行显示:direct rendering: No这是我应该担心的吗?


编辑3:

我试图安装一些驱动程序,并注意到direct rendering: No在我完成后改为Yes

听起来你没有为你的GPU安装OpenGL驱动程序,所以你又回到了软件光栅化模式,这是sloooooowglxinfo的相关谱线是OpenGL renderer stringOpenGL version stringGLX字符串没什么意思,因为GLX只是通过网络传输OpenGL命令,X11协议扩展用于创建OpenGL上下文,并且主要独立于GPU及其驱动程序。

/usr/sbin/lspci | egrep 'VGA|Graphics'的输出是什么?

在系统上执行时,你的GPU安装在Direct Rendering: No是一个警告标志,OpenGL驱动程序安装不完整。然而,你也可以在远程连接上使用OpenGL,并且通过编写良好的程序,这甚至可以非常高效(不是通过拨号,而是在局域网内)。

最新更新