Программа OpenGL не работает с X передачами

У меня есть программа OpenGL в сервере Linux. Я хочу запустить программу удаленно с X передачами, но она перестала работать, тогда как программы, такие как xclock и xeyes хорошо работают. (Я подтвердил, что программа работает в локальной настольной среде.) Ниже дополнительная информация.

Тестовый код:

#include <GL/glut.h>

#define WIDTH 300
#define HEIGHT 300

void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3d(1, 0, 0);
    glBegin(GL_POLYGON);
        glVertex2i(10, 10);
        glVertex2i(WIDTH / 2, HEIGHT - 10);
        glVertex2i(WIDTH - 10, 10);
    glEnd();
    glFlush();
}

int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitWindowPosition(0, 0);
    glutInitWindowSize(WIDTH, HEIGHT);
    glutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE);
    glutCreateWindow("Test");
    glMatrixMode(GL_PROJECTION);
    gluOrtho2D(0, WIDTH, 0, HEIGHT);
    glutDisplayFunc(display);
    glutMainLoop();
}

Выполнение:

$ gcc test.c -lGLU -lglut
$ ./a.out
Xlib:  extension "Generic Event Extension" missing on display "localhost:10.0".
freeglut (./a.out):  ERROR:  Internal error <Visual with necessary capabilities not found> in function fgOpenWindow
X Error of failed request:  BadWindow (invalid Window parameter)
  Major opcode of failed request:  4 (X_DestroyWindow)
  Resource id in failed request:  0x0
  Serial number of failed request:  17
  Current serial number in output stream:  20
$ glxgears
Xlib:  extension "Generic Event Extension" missing on display "localhost:10.0".
Error: couldn't get an RGB, Double-buffered visual
$
3
задан 07.10.2010, 10:30

1 ответ

Необходимо настроить удаленный рендеринг или использовать ssh клиент, который поддерживает для получения предварительно представленным окнами.

$ export LIBGL_ALWAYS_INDIRECT=1   or use any nonzero value

На моей машине Cygwin/X позволяет мне выполнять оба режима, в то время как Xming только позволяет удаленный рендеринг (на клиенте). Приложение я разработал также испытанные затруднения из-за того, чтобы не быть позволенным использовать 24-разрядный режим, но это работало, когда глубина цвета была неуказанной.

3
ответ дан 08.12.2019, 01:08

Теги

Похожие вопросы