|
@@ -52,6 +52,11 @@
|
|
|
#include "scene/gui/texture_rect.h"
|
|
|
#include "scene/gui/tool_button.h"
|
|
|
|
|
|
+// Used to test for GLES3 support.
|
|
|
+#ifndef SERVER_ENABLED
|
|
|
+#include "drivers/gles3/rasterizer_gles3.h"
|
|
|
+#endif
|
|
|
+
|
|
|
static inline String get_project_key_from_path(const String &dir) {
|
|
|
return dir.replace("/", "::");
|
|
|
}
|
|
@@ -878,7 +883,14 @@ public:
|
|
|
rasterizer_container->add_child(rshb);
|
|
|
rasterizer_button_group.instance();
|
|
|
|
|
|
- bool is_gles3 = OS::get_singleton()->get_current_video_driver() == OS::VIDEO_DRIVER_GLES3;
|
|
|
+ // Enable GLES3 by default as it's the default value for the project setting.
|
|
|
+#ifndef SERVER_ENABLED
|
|
|
+ bool gles3_viable = RasterizerGLES3::is_viable() == OK;
|
|
|
+#else
|
|
|
+ // Whatever, project manager isn't even used in headless builds.
|
|
|
+ bool gles3_viable = false;
|
|
|
+#endif
|
|
|
+
|
|
|
Container *rvb = memnew(VBoxContainer);
|
|
|
rvb->set_h_size_flags(SIZE_EXPAND_FILL);
|
|
|
rshb->add_child(rvb);
|
|
@@ -886,9 +898,14 @@ public:
|
|
|
rs_button->set_button_group(rasterizer_button_group);
|
|
|
rs_button->set_text(TTR("OpenGL ES 3.0"));
|
|
|
rs_button->set_meta("driver_name", "GLES3");
|
|
|
- rs_button->set_pressed(is_gles3);
|
|
|
+ rs_button->set_pressed(gles3_viable);
|
|
|
+ // If GLES3 can't be used, don't let users shoot themselves in the foot.
|
|
|
+ rs_button->set_disabled(!gles3_viable);
|
|
|
rvb->add_child(rs_button);
|
|
|
l = memnew(Label);
|
|
|
+ l->set_text(TTR("Not supported by your GPU drivers."));
|
|
|
+ rvb->add_child(l);
|
|
|
+ l = memnew(Label);
|
|
|
l->set_text(TTR("Higher visual quality\nAll features available\nIncompatible with older hardware\nNot recommended for web games"));
|
|
|
rvb->add_child(l);
|
|
|
|
|
@@ -901,7 +918,7 @@ public:
|
|
|
rs_button->set_button_group(rasterizer_button_group);
|
|
|
rs_button->set_text(TTR("OpenGL ES 2.0"));
|
|
|
rs_button->set_meta("driver_name", "GLES2");
|
|
|
- rs_button->set_pressed(!is_gles3);
|
|
|
+ rs_button->set_pressed(!gles3_viable);
|
|
|
rvb->add_child(rs_button);
|
|
|
l = memnew(Label);
|
|
|
l->set_text(TTR("Lower visual quality\nSome features not available\nWorks on most hardware\nRecommended for web games"));
|