我在Emscripten中使用GLFW3和GLEW包装器,因此我没有手动调用emscripten_webgl_create_context
,也没有设置上下文的属性。上下文版本仅由JS代码确定,这超出了我的范围。在我的C ++代码中,我需要知道我们是在WebGL1还是WebGL2上下文中运行。有没有独立于文档的方法吗?像这样:
const auto ctx = emscripten_webgl_get_current_context();
emscripten_webgl_get_context_version(ctx);// Should return 1 or 2.
答案 0 :(得分:1)
在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中的版本字符串具有必需的非硬件相关的起始格式。参见the spec for WebGL2
VERSION:返回WebGL
2.0 形式的版本或发行号。 <供应商特定信息>
VERSION:返回WebGL
1.0 <供应商特定信息>形式的版本或发行号。
Emscripten还返回固定的字符串。参见来源