Переглянути джерело

[Web] Force WebGL2 when supported.

Fabio Alessandrelli 2 роки тому
батько
коміт
3ff7964145
1 змінених файлів з 10 додано та 15 видалено
  1. 10 15
      platform/web/display_server_web.cpp

+ 10 - 15
platform/web/display_server_web.cpp

@@ -758,10 +758,8 @@ DisplayServerWeb::DisplayServerWeb(const String &p_rendering_driver, WindowMode
 	godot_js_os_request_quit_cb(request_quit_callback);
 
 #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;
 		emscripten_webgl_init_context_attributes(&attributes);
 		attributes.alpha = OS::get_singleton()->is_layered_allowed();
@@ -770,20 +768,17 @@ DisplayServerWeb::DisplayServerWeb(const String &p_rendering_driver, WindowMode
 		attributes.explicitSwapControl = true;
 
 		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.",
 				"Unable to initialize video driver");
-	}
-	if (!wants_webgl2 || webgl2_init_failed) {
 		RasterizerDummy::make_current();
 	}
 #else