diff --git a/main.cpp b/main.cpp index 995e29357..11668c0ae 100644 --- a/main.cpp +++ b/main.cpp @@ -2,6 +2,7 @@ #include #include "debug.h" +#include "project/effect.h" extern "C" { #include @@ -24,17 +25,20 @@ int main(int argc, char *argv[]) { if (argc > 1) { for (int i=1;i #include +bool shaders_are_enabled = true; QVector effects; Effect* create_effect(Clip* c, const EffectMeta* em) { @@ -85,6 +86,8 @@ const EffectMeta* get_internal_meta(int internal_id, int type) { } void load_internal_effects() { + qWarning() << "Shaders are disabled, some effects may be nonfunctional"; + EffectMeta em; // internal effects @@ -785,8 +788,8 @@ void Effect::open() { if (isOpen) { qWarning() << "Tried to open an effect that was already open"; close(); - } - if (enable_shader) { + } + if (shaders_are_enabled && enable_shader) { if (QOpenGLContext::currentContext() == NULL) { qWarning() << "No current context to create a shader program for - will retry next repaint"; } else { @@ -848,7 +851,11 @@ void Effect::startEffect() { open(); qWarning() << "Tried to start a closed effect - opening"; } - if (enable_shader && glslProgram->isLinked()) bound = glslProgram->bind(); + if (shaders_are_enabled + && enable_shader + && glslProgram->isLinked()) { + bound = glslProgram->bind(); + } } void Effect::endEffect() { diff --git a/project/effect.h b/project/effect.h index 21e0f381b..413df6d9f 100644 --- a/project/effect.h +++ b/project/effect.h @@ -34,6 +34,7 @@ struct EffectMeta { int subtype; }; +extern bool shaders_are_enabled; extern QVector effects; double log_volume(double linear); diff --git a/ui/viewerwidget.cpp b/ui/viewerwidget.cpp index 3783b563f..f8adf8313 100644 --- a/ui/viewerwidget.cpp +++ b/ui/viewerwidget.cpp @@ -431,9 +431,9 @@ void ViewerWidget::process_effect(Clip* c, Effect* e, double timecode, GLTexture if (e->enable_coords) { e->process_coords(timecode, coords, data); } - if (e->enable_shader || e->enable_superimpose) { + if ((e->enable_shader && shaders_are_enabled) || e->enable_superimpose) { e->startEffect(); - if (e->enable_shader && e->is_glsl_linked()) { + if ((e->enable_shader && shaders_are_enabled) && e->is_glsl_linked()) { e->process_shader(timecode, coords); composite_texture = draw_clip(c->fbo[fbo_switcher], composite_texture, true); fbo_switcher = !fbo_switcher;