]> git.sesse.net Git - movit/blobdiff - effect_chain.h
Stop using BGR, BGRA and grayscale formats.
[movit] / effect_chain.h
index 59949491e668eba68ec21202f8779d7dd6967ab4..1ecee63d660cbac4d2565e846c908cc26efad0b0 100644 (file)
@@ -17,7 +17,7 @@
 // the EffectChain holds textures and other OpenGL objects that are tied to the
 // context.
 
-#include <GL/glew.h>
+#include <epoxy/gl.h>
 #include <stdio.h>
 #include <map>
 #include <set>
@@ -99,6 +99,13 @@ 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 {
@@ -280,6 +287,7 @@ private:
        std::map<Effect *, Node *> node_map;
        Effect *dither_effect;
 
+       std::map<void *, GLuint> fbos;  // One for each OpenGL context.
        std::vector<Input *> inputs;  // Also contained in nodes.
        std::vector<Phase *> phases;