我正在尝试接收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)
。