]> git.sesse.net Git - movit/blobdiff - effect_chain.h
Hack around FBO/VAO sharability issues.
[movit] / effect_chain.h
index 704c20cbee8db58ad4e025d39e3afbd60ca78f76..6452d14952dbbda0a67fe879e45c4b96cd86d37f 100644 (file)
@@ -99,13 +99,6 @@ struct Phase {
        // Identifier used to create unique variables in GLSL.
        // Unique per-phase to increase cacheability of compiled shaders.
        std::map<Node *, std::string> effect_ids;
-
-       // The geometry needed to draw this quad, bound to the vertex array
-       // object. (Seemingly it's actually a win not to upload geometry every
-       // frame, even for something as small as a quad, due to fewer state
-       // changes.)
-       GLuint vao;
-       GLuint position_vbo, texcoord_vbo;
 };
 
 class EffectChain {
@@ -235,6 +228,9 @@ private:
        // as the last effect. Also pushes all phases in order onto <phases>.
        Phase *construct_phase(Node *output, std::map<Node *, Phase *> *completed_effects);
 
+       // Execute one phase, ie. set up all inputs, effects and outputs, and render the quad.
+       void execute_phase(Phase *phase, bool last_phase, std::map<Phase *, GLuint> *output_textures, std::set<Phase *> *generated_mipmaps);
+
        // Set up the given sampler number for sampling from an RTT texture,
        // and bind it to "tex_" plus the given GLSL variable.
        void setup_rtt_sampler(GLuint glsl_program_num, int sampler_num, const std::string &effect_id, bool use_mipmaps);