我创建了一个C ++&由GLX和GLEW支持的OpenGL动画引擎,通过SWIG封装在Node.js模块中。目标是在浏览器进程中使用Electron应用程序内的引擎。
引擎看起来很稳定。它具有多上下文感知能力,在所有相关操作之前绑定正确的OpenGL上下文,在几乎所有可能的操作之后检查错误,并由相当大的测试套件支持。
在电子应用程序之外,一切正常。然而,神秘的是,通常在Electron之外工作的简单脚本在浏览器或渲染器进程中的Electron应用程序内失败。
glGenX
生成的任何内容都返回0 glGetString(GL_VERSION)
返回null,之后glGetError
返回无错误按此顺序:
glXCreateContextAttribsARB
创建OpenGL上下文,并使用合理的FB配置。返回的值不为零。XSync(display, false)
等待X错误。没有错误导致程序崩溃,设置X错误处理程序不会产生任何结果。glXMakeCurrent
保持同步,glGetError
未报告任何错误。glXIsDirect
检查。glewInit
,返回GLEW_OK
。我对此非常困惑。我正在检查的所有内容以表明上下文已正确创建,但它看起来已损坏或功能失调。
发生了什么事?我还能检查什么?
答案 0 :(得分:2)
https://github.com/electron/electron/issues/8848完全报告了无效GL_VERSION的问题,并指责电子版1.6.1。解决方法是回滚到版本1.4.15。