X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=blur_effect.cpp;h=e6a9a313ec8fd82918d7719570d96a194814beb9;hp=8ffd6ddeec25c706a2634af1e466a4b847540d14;hb=fe785e6f62ab58ef05972850d9275005794505b7;hpb=879854382e1f6db14812cd6bd5390ca01f4b1d5a diff --git a/blur_effect.cpp b/blur_effect.cpp index 8ffd6dd..e6a9a31 100644 --- a/blur_effect.cpp +++ b/blur_effect.cpp @@ -18,9 +18,13 @@ BlurEffect::BlurEffect() { vpass->set_int("direction", SingleBlurPassEffect::VERTICAL); } -void BlurEffect::add_self_to_effect_chain(EffectChain *chain, Effect *input) { - hpass->add_self_to_effect_chain(chain, input); - vpass->add_self_to_effect_chain(chain, hpass); +void BlurEffect::add_self_to_effect_chain(EffectChain *chain, const std::vector &inputs) { + assert(inputs.size() == 1); + hpass->add_self_to_effect_chain(chain, inputs); + + std::vector vpass_inputs; + vpass_inputs.push_back(hpass); + vpass->add_self_to_effect_chain(chain, vpass_inputs); } bool BlurEffect::set_float(const std::string &key, float value) { @@ -43,9 +47,9 @@ std::string SingleBlurPassEffect::output_fragment_shader() return read_file("blur_effect.frag"); } -void SingleBlurPassEffect::set_uniforms(GLuint glsl_program_num, const std::string &prefix, unsigned *sampler_num) +void SingleBlurPassEffect::set_gl_state(GLuint glsl_program_num, const std::string &prefix, unsigned *sampler_num) { - Effect::set_uniforms(glsl_program_num, prefix, sampler_num); + Effect::set_gl_state(glsl_program_num, prefix, sampler_num); int base_texture_size, texture_size; if (direction == HORIZONTAL) { @@ -198,3 +202,13 @@ void SingleBlurPassEffect::set_uniforms(GLuint glsl_program_num, const std::stri set_uniform_vec4_array(glsl_program_num, prefix, "samples", samples, NUM_TAPS + 1); #endif } + +void SingleBlurPassEffect::clear_gl_state() +{ + glActiveTexture(GL_TEXTURE0); + check_error(); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0); + check_error(); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 1000); + check_error(); +}