简单的opengl代码(渲染到纹理)适用于mac但不适用于ubuntu

时间:2013-07-25 10:34:34

标签: opengl ubuntu nvidia

我有一个简单的opengl代码,用qt 4.8编写,用于gl上下文,使用qt-creator。

代码使用FBO进行一些渲染到纹理,然后在屏幕上显示纹理。渲染到纹理涉及顶点缓冲区数组。然后一些老派立即渲染(glPushMatrixglBegin(GL_POINTS)glVertex等)进行调试。

在macbookpro中。没问题,代码工作正常。

然后我试图在ubuntu上移植它。 .pro文件中的一些更改:

LIBS += -lglut -lGLU -lGL -lGLEW                 #linux

LIBS += -framework GLUT -framework OpenGL -lGLEW # mac

并在标题中:

// linux
#include <GL/glew.h>
#include <GL/gl.h>
#include <GL/glu.h>

// mac
#include <GL/glew.h>
#include <gl.h>
#include <glu.h>

在ubuntu中,即时渲染工作,它显示它必须做什么,但纹理是空的(当我在屏幕上绘制它们时,如果我从纹理缓冲区到QImage进行像素传输,以及在mac中效果很好。

macbookpro有一个 Intel HD Graphics 4000 512MB,以及gl版本2.1 INTEL-8.12.47 ,而Ubuntu(12.04,3.5.0-36-generic#57~precision1-Ubuntu)机器有一个 GEFORCE GTX 660和gl版本1.4(2.1.2 NVIDIA 319.23)

我认为gl / nvidia驱动程序存在一些问题,因为当我运行qt应用程序时,我有这个警告:

libGL error: failed to load driver: swrast
libGL error: Try again with LIBGL_DEBUG=verbose for more details.

如果值得的话,我最后使用的是没有_EXT后缀的opengl命令..

我对opengl和卡功能以及(特别是)在linux下安装驱动程序不实用。

编辑:

如果按照建议,我尝试使用调试详细标记调用glewinfo:

libGL: screen 0 does not appear to be DRI2 capable
libGL: OpenDriver: trying /usr/lib/i386-linux-gnu/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib/i386-linux-gnu/dri/swrast_dri.so
libGL error: failed to load driver: swrast

1 个答案:

答案 0 :(得分:2)

  

GEFORCE GTX 660和gl版本1.4(2.1.2 NVIDIA 319.23)。

基本上尖叫说没有安装正确的OpenGL驱动程序。 GeForce 660GTX支持OpenGL-4。

确保正确安装了NVidia二进制驱动程序(开源nouveau驱动程序正在取得进展,但它们在功能和性能方面仍远远落后)。

apt-get install nvidia-glx nvidia-kernel-source nvidia-vdpau-driver libgl1-nvidia-glx libglx-nvidia-alternatives

应该这样做。