]> git.sesse.net Git - nageru/blobdiff - nageru/image_input.cpp
Fix ImageInput sRGB behavior.
[nageru] / nageru / image_input.cpp
index 779f7ec0c77745367e974135d9a19b7639a77789..c8b10371b4d381eec9535246f1e216ba6b6f3bb6 100644 (file)
@@ -42,8 +42,8 @@ struct SwsContext;
 using namespace std;
 
 ImageInput::ImageInput(const string &filename)
-       : movit::FlatInput({movit::COLORSPACE_sRGB, movit::GAMMA_sRGB}, movit::FORMAT_RGBA_POSTMULTIPLIED_ALPHA,
-                          GL_UNSIGNED_BYTE, 1280, 720),  // Resolution will be overwritten.
+       : sRGBSwitchingFlatInput({movit::COLORSPACE_sRGB, movit::GAMMA_sRGB}, movit::FORMAT_RGBA_POSTMULTIPLIED_ALPHA,
+                                GL_UNSIGNED_BYTE, 1280, 720),  // Resolution will be overwritten.
          pathname(search_for_file_or_die(filename)),
          current_image(load_image(filename, pathname))
 {
@@ -71,7 +71,7 @@ void ImageInput::set_gl_state(GLuint glsl_program_num, const string& prefix, uns
                        set_texture_num(*current_image->tex);
                }
        }
-       movit::FlatInput::set_gl_state(glsl_program_num, prefix, sampler_num);
+       sRGBSwitchingFlatInput::set_gl_state(glsl_program_num, prefix, sampler_num);
 }
 
 shared_ptr<const ImageInput::Image> ImageInput::load_image(const string &filename, const string &pathname)
@@ -212,7 +212,7 @@ shared_ptr<const ImageInput::Image> ImageInput::load_image_raw(const string &pat
        check_error();
        glPixelStorei(GL_UNPACK_ROW_LENGTH, linesizes[0] / 4);
        check_error();
-       glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, frame->width, frame->height, 0, GL_RGBA, GL_UNSIGNED_BYTE, image_data.get());
+       glTexImage2D(GL_TEXTURE_2D, 0, GL_SRGB8_ALPHA8, frame->width, frame->height, 0, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8_REV, image_data.get());
        check_error();
        glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
        check_error();