소스 검색

Merge pull request #5909 from akien-mga/pr-gles2-error-before-crash

GLES2: Check for GPU capabilities to display an error
Juan Linietsky 9 년 전
부모
커밋
548a69aca7
2개의 변경된 파일11개의 추가작업 그리고 2개의 파일을 삭제
  1. 10 1
      drivers/gles2/rasterizer_gles2.cpp
  2. 1 1
      platform/windows/os_windows.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
 
 
 

+ 1 - 1
platform/windows/os_windows.cpp

@@ -1343,7 +1343,7 @@ void OS_Windows::vprint(const char* p_format, va_list p_list, bool p_stderr) {
 void OS_Windows::alert(const String& p_alert,const String& p_title) {
 
 	if (!is_no_window_mode_enabled())
-		MessageBoxW(NULL,p_alert.c_str(),p_title.c_str(),MB_OK|MB_ICONEXCLAMATION);
+		MessageBoxW(NULL, p_alert.c_str(), p_title.c_str(), MB_OK | MB_ICONEXCLAMATION | MB_TASKMODAL);
 	else
 		print_line("ALERT: "+p_alert);
 }