Emscripten:如何在运行时检测webgl上下文版本?

Emscripten:如何在运行时检测webgl上下文版本?,webgl,emscripten,Webgl,Emscripten,我在Emscripten中使用GLFW3和GLEW包装器,因此我不会手动调用Emscripten\u webgl\u create\u context,也不会设置context的属性。上下文版本仅由JS代码确定,这超出了我的范围。在我的C++代码中,我需要知道我们是在WebGL1还是WebGL2上下文中运行。是否有一种独立于文档的方法来执行此操作?比如: const auto ctx=emscripten_webgl_get_current_context(); emscripten_webgl

我在Emscripten中使用GLFW3和GLEW包装器,因此我不会手动调用
Emscripten\u webgl\u create\u context
,也不会设置context的属性。上下文版本仅由JS代码确定,这超出了我的范围。在我的C++代码中,我需要知道我们是在WebGL1还是WebGL2上下文中运行。是否有一种独立于文档的方法来执行此操作?比如:

const auto ctx=emscripten_webgl_get_current_context();
emscripten_webgl_get_context_version(ctx);//应该返回1或2。
在C语言中++

const char ES_VERSION_2_0[] = "OpenGL ES 2.0";
const char ES_VERSION_3_0[] = "OpenGL ES 3.0";

const char* version = glGetString(GL_VERSION);
if (strncmp(version, ES_VERSION_2_0, sizeof(ES_VERSION_2_0)) == 0) {
  // it's WebGL1
} else if (strncmp(version, ES_VERSION_3_0, sizeof(ES_VERSION_3_0)) == 0) {
  // it's WebGL2
} else {
  // it's something else
}
WebGL中的版本字符串具有所需的非硬件相关启动格式。看

版本:返回表单WebGL2.0的版本或发行号

以及

版本:返回表单WebGL1.0的版本或发行号

Emscripten还返回固定字符串。见出处


> C++中调用<代码> GLYVALIDE >它是硬件相关的。太不可靠了。它在WebGL/emscripten中不依赖硬件