X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=tweaked_inputs.h;h=0ca13ced94877a3084fec7609bdc0cdd93a39f8b;hb=fa54f2630c56a1df0046923d6a77b1bd58abf240;hp=37c67827fe922f0cc247035729b50bec49e69deb;hpb=e7042ad94ffec1505feaf7f8c5a265b2165957a0;p=nageru diff --git a/tweaked_inputs.h b/tweaked_inputs.h index 37c6782..0ca13ce 100644 --- a/tweaked_inputs.h +++ b/tweaked_inputs.h @@ -47,30 +47,26 @@ public: sRGBSwitchingFlatInput(movit::ImageFormat format, movit::MovitPixelFormat pixel_format, GLenum type, unsigned width, unsigned height) : movit::FlatInput(format, pixel_format, type, width, height) {} - void set_gl_state(GLuint glsl_program_num, const std::string &prefix, unsigned *sampler_num) override - { - movit::FlatInput::set_gl_state(glsl_program_num, prefix, sampler_num); - - // This flag is ignored for non-sRGB-uploaded textures, so we can set it - // without checking can_output_linear_gamma(). - glActiveTexture(GL_TEXTURE0 + *sampler_num - 1); - if (output_linear_gamma) { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SRGB_DECODE_EXT, GL_DECODE_EXT); - } else { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SRGB_DECODE_EXT, GL_SKIP_DECODE_EXT); - } - } + ~sRGBSwitchingFlatInput(); + void set_gl_state(GLuint glsl_program_num, const std::string &prefix, unsigned *sampler_num) override; + void clear_gl_state() override; bool set_int(const std::string &key, int value) override { if (key == "output_linear_gamma") { output_linear_gamma = value; } + if (key == "needs_mipmaps") { + needs_mipmaps = value; + } return movit::FlatInput::set_int(key, value); } private: - int output_linear_gamma = false; + bool output_linear_gamma = false; + bool needs_mipmaps = false; + GLuint sampler_obj = 0; + GLuint texture_unit; };