|
@@ -758,10 +758,8 @@ DisplayServerWeb::DisplayServerWeb(const String &p_rendering_driver, WindowMode
|
|
godot_js_os_request_quit_cb(request_quit_callback);
|
|
godot_js_os_request_quit_cb(request_quit_callback);
|
|
|
|
|
|
#ifdef GLES3_ENABLED
|
|
#ifdef GLES3_ENABLED
|
|
- // TODO "vulkan" defaults to webgl2 for now.
|
|
|
|
- bool wants_webgl2 = p_rendering_driver == "opengl3" || p_rendering_driver == "vulkan";
|
|
|
|
- bool webgl2_init_failed = wants_webgl2 && !godot_js_display_has_webgl(2);
|
|
|
|
- if (wants_webgl2 && !webgl2_init_failed) {
|
|
|
|
|
|
+ bool webgl2_inited = false;
|
|
|
|
+ if (godot_js_display_has_webgl(2)) {
|
|
EmscriptenWebGLContextAttributes attributes;
|
|
EmscriptenWebGLContextAttributes attributes;
|
|
emscripten_webgl_init_context_attributes(&attributes);
|
|
emscripten_webgl_init_context_attributes(&attributes);
|
|
attributes.alpha = OS::get_singleton()->is_layered_allowed();
|
|
attributes.alpha = OS::get_singleton()->is_layered_allowed();
|
|
@@ -770,20 +768,17 @@ DisplayServerWeb::DisplayServerWeb(const String &p_rendering_driver, WindowMode
|
|
attributes.explicitSwapControl = true;
|
|
attributes.explicitSwapControl = true;
|
|
|
|
|
|
webgl_ctx = emscripten_webgl_create_context(canvas_id, &attributes);
|
|
webgl_ctx = emscripten_webgl_create_context(canvas_id, &attributes);
|
|
- if (emscripten_webgl_make_context_current(webgl_ctx) != EMSCRIPTEN_RESULT_SUCCESS) {
|
|
|
|
- webgl2_init_failed = true;
|
|
|
|
- } else {
|
|
|
|
- if (!emscripten_webgl_enable_extension(webgl_ctx, "OVR_multiview2")) {
|
|
|
|
- // @todo Should we log this?
|
|
|
|
- }
|
|
|
|
- RasterizerGLES3::make_current();
|
|
|
|
- }
|
|
|
|
|
|
+ webgl2_inited = webgl_ctx && emscripten_webgl_make_context_current(webgl_ctx) == EMSCRIPTEN_RESULT_SUCCESS;
|
|
}
|
|
}
|
|
- if (webgl2_init_failed) {
|
|
|
|
|
|
+ if (webgl2_inited) {
|
|
|
|
+ if (!emscripten_webgl_enable_extension(webgl_ctx, "OVR_multiview2")) {
|
|
|
|
+ print_verbose("Failed to enable WebXR extension.");
|
|
|
|
+ }
|
|
|
|
+ RasterizerGLES3::make_current();
|
|
|
|
+
|
|
|
|
+ } else {
|
|
OS::get_singleton()->alert("Your browser does not seem to support WebGL2. Please update your browser version.",
|
|
OS::get_singleton()->alert("Your browser does not seem to support WebGL2. Please update your browser version.",
|
|
"Unable to initialize video driver");
|
|
"Unable to initialize video driver");
|
|
- }
|
|
|
|
- if (!wants_webgl2 || webgl2_init_failed) {
|
|
|
|
RasterizerDummy::make_current();
|
|
RasterizerDummy::make_current();
|
|
}
|
|
}
|
|
#else
|
|
#else
|