private:
void uniform1i(const std::string &, int);
void uniform1f(const std::string &, float);
+ void uniform2i(const std::string &, int, int);
void uniform2f(const std::string &, float, float);
+ void uniform3i(const std::string &, int, int, int);
void uniform3f(const std::string &, float, float, float);
+ void uniform4i(const std::string &, int, int, int, int);
void uniform4f(const std::string &, float, float, float, float);
void uniform_array_(const std::string &, DataType, unsigned);
void uniform1i_array(const std::string &);
void uniform1f_array(const std::string &);
+ void uniform2i_array(const std::string &);
void uniform2f_array(const std::string &);
+ void uniform3i_array(const std::string &);
void uniform3f_array(const std::string &);
+ void uniform4i_array(const std::string &);
void uniform4f_array(const std::string &);
void uniform_array(const std::string &);
};
void uniform(DataType, unsigned, const void *);
void uniform1i(int);
void uniform1f(float);
+ void uniform2i(int, int);
void uniform2f(float, float);
+ void uniform3i(int, int, int);
void uniform3f(float, float, float);
+ void uniform4i(int, int, int, int);
void uniform4f(float, float, float, float);
};
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(const std::string &, float, float);
+ void uniform2(const std::string &, const int *);
void uniform2(const std::string &, const float *);
+ void uniform(const std::string &, int, int, int);
void uniform(const std::string &, float, float, float);
void uniform(const std::string &, const Vector3 &);
+ void uniform3(const std::string &, const int *);
void uniform3(const std::string &, const float *);
+ void uniform(const std::string &, int, int, int, int);
void uniform(const std::string &, float, float, float, float);
void uniform(const std::string &, const Vector4 &);
void uniform(const std::string &, const Color &);
+ void uniform4(const std::string &, const int *);
void uniform4(const std::string &, const float *);
void uniform(const std::string &, const LinAl::Matrix<float, 2, 2> &);
void uniform_matrix2(const std::string &, const float *);
void uniform_matrix4(const std::string &, const float *);
void uniform1_array(const std::string &, unsigned, const int *);
void uniform1_array(const std::string &, unsigned, const float *);
+ void uniform2_array(const std::string &, unsigned, const int *);
void uniform2_array(const std::string &, unsigned, const float *);
+ void uniform3_array(const std::string &, unsigned, const int *);
void uniform3_array(const std::string &, unsigned, const float *);
+ void uniform4_array(const std::string &, unsigned, const int *);
void uniform4_array(const std::string &, unsigned, const float *);
+ void uniform_matrix2_array(const std::string &, unsigned, const float *);
+ void uniform_matrix3_array(const std::string &, unsigned, const float *);
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;