Не удается запустить простую программу OpenGL в Linux Minut - PullRequest
0 голосов
/ 09 марта 2019

Я изучаю OpenGL на Mac, где он работает нормально, и я пытаюсь воссоздать свои программы на Linux Mint 17.3 на виртуальной машине VirtualBox.

Мне сказали, что мне нужен только 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 Ответ

2 голосов
/ 09 марта 2019

OpenGL опирается на графические драйверы. VirtualBox не имеет самых современных, работающих драйверов. Лучшее, что вы можете сделать, это установить гостевые дополнения. Freeglut тоже не помогает, наиболее перспективным было бы написать минимальный код, необходимый вручную, только с использованием glad и GLFW. Но не ожидайте многого и уж точно не «проверяйте переносимость моей программы».

Однажды мне удалось заставить OpenGL 3.3 работать над определенной версией Ubuntu с некоторыми экспериментальными меза драйверами после нескольких попыток, но я не знаю, как надежно воспроизвести это. Почти такой же вопрос на askubuntu .

...