Таинственно неверный контекст 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 контекст создается и сразу используется в том же процессе; Создание контекста само запрашивает версию в том же методе. Те же симптомы до и после того, как приложение «Электрон» готово.

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

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

12

Решение

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

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]