typedef std::map<Program::LayoutHash, ProgramUniforms> ProgramMap;
// XXX All these mutables are a bit silly, but I'm out of better ideas
+ const Program *tied_program;
SlotMap uniform_slots;
std::vector<Uniform *> uniforms;
mutable BlockMap blocks;
mutable unsigned dirty;
public:
- ProgramData();
+ ProgramData(const Program * = 0);
ProgramData(const ProgramData &);
ProgramData &operator=(const ProgramData &);
~ProgramData();
private:
void uniform(const std::string &, Uniform *);
public:
+ void uniform(const std::string &, const Uniform &);
void uniform(const std::string &, int);
void uniform(const std::string &, float);
void uniform(const std::string &, int, int);
void uniform_matrix4_array(const std::string &, unsigned, const float *);
void remove_uniform(const std::string &);
+ std::vector<std::string> get_uniform_names() const;
+ const Uniform &get_uniform(const std::string &) const;
+
private:
unsigned compute_slot_mask(const Program::UniformBlockInfo &) const;
void update_block(UniformBlock &, const Program::UniformBlockInfo &) const;