浏览代码

GLES2: Check for GPU capabilities to display an error

The engine will still segfault, but the error message should be displayed by the
OS in a blocking manner, so that it will only crash once users have acknowledged
the error dialog.

Closes #1162.
Rémi Verschelde 9 年之前
父节点
当前提交
a155342eca
共有 1 个文件被更改,包括 10 次插入1 次删除
  1. 10 1
      drivers/gles2/rasterizer_gles2.cpp

+ 10 - 1
drivers/gles2/rasterizer_gles2.cpp

@@ -10788,8 +10788,17 @@ void RasterizerGLES2::init() {
 	if (OS::get_singleton()->is_stdout_verbose()) {
 		print_line(String("GLES2: Using GLEW ") + (const char*) glewGetString(GLEW_VERSION));
 	}
-#endif
 
+	// Check for GL 2.1 compatibility, if not bail out
+	if (!glewIsSupported("GL_VERSION_2_1")) {
+		ERR_PRINT("Your system's graphic drivers seem not to support OpenGL 2.1 / GLES 2.0, sorry :(\n"
+			  "Try a drivers update, buy a new GPU or try software rendering on Linux; Godot will now crash with a segmentation fault.");
+		OS::get_singleton()->alert("Your system's graphic drivers seem not to support OpenGL 2.1 / GLES 2.0, sorry :(\n"
+					   "Godot Engine will self-destruct as soon as you acknowledge this error message.",
+					   "Fatal error: Insufficient OpenGL / GLES drivers");
+		// TODO: If it's even possible, we should stop the execution without segfault and memory leaks :)
+	}
+#endif