无法在Linux Minut中运行简单的OpenGL程序

时间:2019-03-08 22:59:07

标签: c++ linux opengl linuxmint

我正在Mac上学习OpenGL,在它可以正常工作的情况下,我试图在VirtualBox虚拟机上的Linux Mint 17.3上重新创建程序。

听说我只需要g ++,make,freeglut3-dev和文本编辑器,我相信我已经拥有了所有这些。例如,如果我做sudo apt-get install g++,它会说g++ is already the newest version,其余的也一样。

我写了一个简单的程序:

#include <GL/freeglut.h>
#include <GL/gl.h>

void renderFunction() {
    glClearColor(0.0, 0.0, 0.0, 0.0);
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1.0, 1.0, 1.0);
    glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
    glBegin(GL_POLYGON);
    glVertex2f(-0.5, -0.5);
    glVertex2f(-0.5, 0.5);
    glVertex2f(0.5, 0.5);
    glVertex2f(0.5, -0.5);
    glEnd();
    glFlush();
}

int main(int argc, char** argv) {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE);
    glutInitWindowSize(500,500);
    glutInitWindowPosition(100,100);
    glutCreateWindow("OpenGL - First window demo");
    glutDisplayFunc(renderFunction);
    glutMainLoop();  

return 0;
}

编译命令g++ opengl.c -lglut -lGL -lGLEW -lGLU -o opengl似乎有效。但是当我运行./opengl时,会收到大量错误消息:

pci id for fd 4: 80ee:beef, driver (null)
OpenGL Warning: glFlushVertexArrayRangeNV not found in mesa table
OpenGL Warning: glVertexArrayRangeNV not found in mesa table
OpenGL Warning: glCombinerInputNV not found in mesa table
OpenGL Warning: glCombinerOutputNV not found in mesa table
OpenGL Warning: glCombinerParameterfNV not found in mesa table
OpenGL Warning: glCombinerParameterfvNV not found in mesa table
OpenGL Warning: glCombinerParameteriNV not found in mesa table
OpenGL Warning: glCombinerParameterivNV not found in mesa table
OpenGL Warning: glFinalCombinerInputNV not found in mesa table
OpenGL Warning: glGetCombinerInputParameterfvNV not found in mesa table
OpenGL Warning: glGetCombinerInputParameterivNV not found in mesa table
OpenGL Warning: glGetCombinerOutputParameterfvNV not found in mesa table
OpenGL Warning: glGetCombinerOutputParameterivNV not found in mesa table
OpenGL Warning: glGetFinalCombinerInputParameterfvNV not found in mesa table
OpenGL Warning: glGetFinalCombinerInputParameterivNV not found in mesa table
OpenGL Warning: glDeleteFencesNV not found in mesa table
OpenGL Warning: glFinishFenceNV not found in mesa table
OpenGL Warning: glGenFencesNV not found in mesa table
OpenGL Warning: glGetFenceivNV not found in mesa table
OpenGL Warning: glIsFenceNV not found in mesa table
OpenGL Warning: glSetFenceNV not found in mesa table
OpenGL Warning: glTestFenceNV not found in mesa table
libGL error: core dri or dri2 extension not found
libGL error: failed to load driver: vboxvideo
OpenGL Warning: XGetVisualInfo returned 0 visuals for 00000000023ace70
OpenGL Warning: Retry with 0x8002 returned 0 visuals
OpenGL Warning: XGetVisualInfo returned 0 visuals for 00000000023b2810
OpenGL Warning: Retry with 0x8003 returned 0 visuals

...

OpenGL Warning: XGetVisualInfo returned 0 visuals for 00000000023b1520
OpenGL Warning: Retry with 0x8003 returned 0 visuals
freeglut (./opengl):  ERROR:  Internal error <visualInfo could not be retrieved from FBConfig> in function fgOpenWindow

我不知道这意味着什么或如何处理。

1 个答案:

答案 0 :(得分:2)

OpenGL依赖图形驱动程序。 VirtualBox没有最新,有效的驱动程序。最好的办法是安装来宾添加。 Freeglut也不起作用,最有希望的是仅使用gladGLFW手工编写所需的最少代码。但是不要期望太多,当然也不要“测试我的程序的可移植性”。

几次尝试后,我曾经设法通过一些实验性台面驱动程序使OpenGL 3.3在特定版本的Ubuntu上运行,但是我不知道如何可靠地重现该版本。 askubuntu上的问题几乎相同。