]> git.sesse.net Git - movit/blobdiff - init.cpp
Add a hack to use #version 110 but keep using 130 features, for the benefit of OS X.
[movit] / init.cpp
index 5b8da897271e8cf6b282cf153759bb8666e47a53..7781ba24ccd7e8fb76c1e5f305ecff8ba75c35bc 100644 (file)
--- a/init.cpp
+++ b/init.cpp
@@ -433,9 +433,25 @@ bool init_movit(const string& data_directory, MovitDebugLevel debug_level)
                if (get_glsl_version() < 1.30f) {
                        fprintf(stderr, "Movit system requirements: Needs at least GLSL version 1.30 (has version %.1f)\n",
                                get_glsl_version());
-                       return false;
+                       if (get_glsl_version() >= 1.10f) {
+                               fprintf(stderr, "Attempting to continue nevertheless; expect shader compilation issues.\n");
+                               fprintf(stderr, "Try switching to a core OpenGL context, as especially OS X drivers\n");
+                               fprintf(stderr, "support newer GLSL versions there.\n");
+                               movit_shader_model = MOVIT_GLSL_130_AS_110;
+                       } else {
+                               return false;
+                       }
+               }
+               if (get_glsl_version() < 1.50f) {
+                       movit_shader_model = MOVIT_GLSL_130;
+               } else {
+                       // Note: All of our 1.50 shaders are identical to our 1.30 shaders,
+                       // but OS X does not support 1.30; only 1.10 (which we don't support
+                       // anymore) and 1.50 (and then only with core contexts). So we keep
+                       // a second set of shaders around whose only difference is the different
+                       // #version declaration.
+                       movit_shader_model = MOVIT_GLSL_150;
                }
-               movit_shader_model = MOVIT_GLSL_130;
        } else {
                movit_shader_model = MOVIT_ESSL_300;
        }