#include <vector>
#include <msp/core/attributes.h>
#include "bindable.h"
+#include "programdata.h"
namespace Msp {
namespace GL {
class ClipPlane;
class Matrix;
-class ProgramData;
class Clipping: public Bindable<Clipping>
{
private:
- std::vector<const ClipPlane *> planes;
+ struct AttachedPlane
+ {
+ const ClipPlane *plane;
+ mutable unsigned generation;
+
+ AttachedPlane(const ClipPlane *p): plane(p), generation(0) { }
+ };
+
+ std::vector<AttachedPlane> planes;
+ mutable ProgramData shdata;
public:
static unsigned get_n_attach_points();
DEPRECATED void attach(unsigned, const ClipPlane &p) { attach(p); }
DEPRECATED void detach(unsigned);
- void update_shader_data(ProgramData &, const Matrix &) const;
+ const ProgramData &get_shader_data() const;
void bind() const;