我有一个在 qt 4.8 中用 cpp 编写的用于 gl 上下文的简单 opengl 代码,带有 qt-creator。
该代码使用 FBO 进行一些渲染到纹理,然后在屏幕上显示纹理。渲染到纹理涉及顶点缓冲区数组。然后是一些老式的立即渲染(glPushMatrix
, glBegin(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~precise1-Ubuntu)机器具有GEFORCE GTX 660 和 gl 版本 1.4 (2.1.2 英伟达 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