当请求WebGL2时,任何浏览器都会给我一个WebGL1上下文(emscripten)



我正在尝试接收WebGL 2.0上下文。我正在使用-s USE_WEBGL2=1 -s MIN_WEBGL_VERSION=2,并已尝试添加-s FULL_ES3=1。编译既不会发出警告,也不会出现错误。我使用GLES3/标头。

此外:

EmscriptenWebGLContextAttributes atrs;
emscripten_webgl_init_context_attributes(&atrs);
atrs.alpha = true;
atrs.depth = true;
atrs.stencil = false;
atrs.majorVersion = 2;
atrs.minorVersion = 0;
emctx = emscripten_webgl_create_context(id, &atrs);
emscripten_webgl_make_context_current(emctx);
std::cout << "GL_VERSION=" << glGetString(GL_VERSION) << std::endl;

Chrome控制台中的结果:

OpenGL ES 2.0 (WebGL 1.0 (OpenGL ES 2.0 Chromium))

在Firefox中也有类似的结果。

我已经花了大约一周的时间来寻找如何做到这一点。

所以我终于尝试了一切,找到了解决方案。我的问题是,我一直在使用makefile进行编译,并且我的.cpp转换为具有所有适当标志的.o文件,但在链接器步骤中,您还需要指定这些标志,否则WebGL2.0将不可用。

这看起来有点像[0],请尝试将-lGL添加到链接标志中。

[0]https://github.com/emscripten-core/emscripten/issues/12118

我刚刚遇到这样的问题。是否需要在Emscripten中编辑library_browser.js,以提供"webgl2"上下文而不是"2d"?

它在编译时写入getContext('2d'),在编译前必须在library_browser.js中编辑为getContext('webgl2',yourSettings)

相关内容

  • 没有找到相关文章

最新更新