Таинственно неверный контекст OpenGL в Electron

Я создал анимационный движок C++ и OpenGL, поддерживаемый GLX и GLEW, обернутый в модуль Node.js через SWIG. Цель состоит в том, чтобы использовать движок внутри приложения Electron в процессе браузера.

Двигатель выглядит довольно стабильно. Он поддерживает несколько контекстов, привязывает правильный контекст OpenGL перед всеми соответствующими операциями, проверяет ошибки практически после каждой возможной операции и поддерживается довольно большим набором тестов.

За пределами электронного приложения все работает просто отлично. Однако, как ни странно, простые скрипты, которые обычно работают вне Electron, не работают внутри приложения Electron в процессе браузера или рендерера.

симптомы

  • Все, что сгенерировано glGenX возвращается 0
  • glGetString(GL_VERSION) возвращает ноль, потом glGetError не возвращает ошибки

факты

В этом порядке:

  • Контекст OpenGL создается с glXCreateContextAttribsARB с разумным конфигом FB. Возвращаемое значение ненулевое.
  • XSync(display, false) вызывается, чтобы ждать X ошибок. Нет ошибок, вызывающих сбой программы, установка обработчика ошибок X не дает результатов.
  • Контекст обновляется с помощью glXMakeCurrent нет сообщений об ошибках glGetError,
  • Контекст прямой, проверяется с помощью glXIsDirect,
  • GLEW инициализируется с glewInit, возвращаясь GLEW_OK,
  • Действия в этом случае происходят в одном потоке. В приложении Electron контекст создается и сразу используется в том же процессе; Создание контекста само запрашивает версию в том же методе. Те же симптомы до и после того, как приложение "Электрон" готово.

Я довольно озадачен этим. Все, что я проверяю, говорит о том, что контекст был создан правильно, но в противном случае он кажется поврежденным или неработоспособным.

В чем дело? Что еще я могу проверить?

1 ответ

Решение

https://github.com/electron/electron/issues/8848 точно сообщает о проблеме с нулевым GL_VERSION и обвиняет Electron версии 1.6.1. Обходной путь должен был откатиться до версии 1.4.15.

Другие вопросы по тегам