void attribute(unsigned, const std::string &);
void fragment_shader(const std::string &);
void attribute(unsigned, const std::string &);
void fragment_shader(const std::string &);
typedef std::map<std::string, UniformInfo> UniformMap;
typedef std::map<std::string, UniformBlockInfo> UniformBlockMap;
typedef std::map<std::string, UniformInfo> UniformMap;
typedef std::map<std::string, UniformBlockInfo> UniformBlockMap;
public:
/// Constructs an empty Program with no Shaders attached.
Program();
/// Constructs a Program with standard features.
public:
/// Constructs an empty Program with no Shaders attached.
Program();
/// Constructs a Program with standard features.
- Program(const ProgramBuilder::StandardFeatures &);
+ DEPRECATED Program(const ProgramBuilder::StandardFeatures &);
+
+ /// Constructs a Program from unified source code using ProgramCompiler.
+ Program(const std::string &);
/// Constructs a Program from vertex and fragment shader source code.
Program(const std::string &, const std::string &);
/// Constructs a Program from vertex and fragment shader source code.
Program(const std::string &, const std::string &);
void attach_shader(Shader &shader);
void attach_shader_owned(Shader *shader);
void detach_shader(Shader &shader);
void attach_shader(Shader &shader);
void attach_shader_owned(Shader *shader);
void detach_shader(Shader &shader);
void bind_attribute(unsigned, const std::string &);
void bind_attribute(VertexComponent, const std::string &);
void bind_attribute(unsigned, const std::string &);
void bind_attribute(VertexComponent, const std::string &);
- static unsigned compute_layout_hash(const std::vector<const UniformInfo *> &);
+ static void require_type(GLenum);
+ void query_uniforms();
+ void query_uniform_blocks(const std::vector<UniformInfo *> &);
+ void query_attributes();
+ static LayoutHash compute_layout_hash(const std::vector<const UniformInfo *> &);
static bool uniform_location_compare(const UniformInfo *, const UniformInfo *);
public:
bool is_linked() const { return linked; }
std::string get_info_log() const;
static bool uniform_location_compare(const UniformInfo *, const UniformInfo *);
public:
bool is_linked() const { return linked; }
std::string get_info_log() const;
const UniformBlockMap &get_uniform_blocks() const { return uniform_blocks; }
const UniformBlockInfo &get_uniform_block_info(const std::string &) const;
const UniformMap &get_uniforms() const { return uniforms; }
const UniformInfo &get_uniform_info(const std::string &) const;
int get_uniform_location(const std::string &) const;
const UniformBlockMap &get_uniform_blocks() const { return uniform_blocks; }
const UniformBlockInfo &get_uniform_block_info(const std::string &) const;
const UniformMap &get_uniforms() const { return uniforms; }
const UniformInfo &get_uniform_info(const std::string &) const;
int get_uniform_location(const std::string &) const;
-
- bool uses_legacy_variables() const { return legacy_vars; }
+ const AttributeMap &get_attributes() const { return attributes; }
+ const AttributeInfo &get_attribute_info(const std::string &) const;
+ int get_attribute_location(const std::string &) const;