Я создал C ++ & Анимационный движок OpenGL, поддерживаемый GLX и GLEW, заключен в модуль Node.js через SWIG. Цель состоит в том, чтобы использовать движок внутри приложения Electron в процессе браузера.
Двигатель выглядит довольно стабильно. Он поддерживает несколько контекстов, привязывает правильный контекст OpenGL перед всеми соответствующими операциями, проверяет ошибки практически после каждой возможной операции и поддерживается довольно большим набором тестов.
За пределами электронного приложения все работает просто отлично. Однако, как ни странно, простые скрипты, которые обычно работают вне Electron, не работают внутри приложения Electron в процессе браузера или рендерера.
glGenX
возвращается 0glGetString(GL_VERSION)
возвращает ноль, потом glGetError
не возвращает ошибкиВ этом порядке:
glXCreateContextAttribsARB
с разумным конфигом FB. Возвращаемое значение ненулевое.XSync(display, false)
вызывается, чтобы ждать X ошибок. Нет ошибок, вызывающих сбой программы, установка обработчика ошибок X не дает результатов.glXMakeCurrent
нет сообщений об ошибках glGetError
,glXIsDirect
,glewInit
, возвращаясь GLEW_OK
,Я довольно озадачен этим. Все проверяю появляется предположить, что контекст был создан правильно, но в противном случае он выглядит поврежденным или неработоспособным.
В чем дело? Что еще я могу проверить?
https://github.com/electron/electron/issues/8848 точно сообщает о проблеме с нулевым GL_VERSION и обвиняет Electron версии 1.6.1. Обходной путь должен был откатиться до версии 1.4.15.
Других решений пока нет …