X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=flat_input.h;h=9266659596ad8026f7993380c3cf1053a655714f;hp=a906a5d36a812938aeba6647c30c657385f82eda;hb=3d1f6c11c53cd9d3d5c1fb60f4accf050b7f135e;hpb=0dc1dfe6444a700ebd2c9f006cba000b90c3a7b0 diff --git a/flat_input.h b/flat_input.h index a906a5d..9266659 100644 --- a/flat_input.h +++ b/flat_input.h @@ -7,20 +7,23 @@ // comes from a single 2D array with chunky pixels. class FlatInput : public Input { public: - FlatInput(ImageFormat format, unsigned width, unsigned height); + FlatInput(ImageFormat format, MovitPixelFormat pixel_format, unsigned width, unsigned height); // Create the texture itself. We cannot do this in the constructor, // because we don't necessarily know all the settings (sRGB texture, // mipmap generation) at that point. void finalize(); + // TODO: Check that we actually have the required extension. + virtual bool can_output_linear_gamma() const { return true; } + std::string output_fragment_shader(); // Uploads the texture if it has changed since last time. void set_gl_state(GLuint glsl_program_num, const std::string& prefix, unsigned *sampler_num); - ColorSpace get_color_space() { return image_format.color_space; } - GammaCurve get_gamma_curve() { return image_format.gamma_curve; } + ColorSpace get_color_space() const { return image_format.color_space; } + GammaCurve get_gamma_curve() const { return image_format.gamma_curve; } // Tells the input where to fetch the actual pixel data. Note that if you change // this data, you must either call set_pixel_data() again (using the same pointer @@ -53,10 +56,11 @@ public: private: ImageFormat image_format; + MovitPixelFormat pixel_format; GLenum format; GLuint pbo, texture_num; bool needs_update, finalized; - int use_srgb_texture_format, needs_mipmaps; + int output_linear_gamma, needs_mipmaps; unsigned width, height, pitch, bytes_per_pixel; const unsigned char *pixel_data; };