X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=effect_chain.h;h=1ecee63d660cbac4d2565e846c908cc26efad0b0;hp=59949491e668eba68ec21202f8779d7dd6967ab4;hb=67b2debafd624d3be66588171d6ec677b54247ba;hpb=407d90be3e45ddb7f5a53c16728bfa791998cb72 diff --git a/effect_chain.h b/effect_chain.h index 5994949..1ecee63 100644 --- a/effect_chain.h +++ b/effect_chain.h @@ -17,7 +17,7 @@ // the EffectChain holds textures and other OpenGL objects that are tied to the // context. -#include +#include #include #include #include @@ -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 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 node_map; Effect *dither_effect; + std::map fbos; // One for each OpenGL context. std::vector inputs; // Also contained in nodes. std::vector phases;