void attribute(unsigned, const std::string &);
void fragment_shader(const std::string &);
void attribute(unsigned, const std::string &);
void fragment_shader(const std::string &);
- struct StandardFeatures
- {
- class Loader: public DataFile::ObjectLoader<StandardFeatures>
- {
- public:
- Loader(StandardFeatures &);
- };
-
- bool texture;
- bool material;
- bool lighting;
- bool specular;
- bool normalmap;
- bool shadow;
- bool reflection;
- bool transform;
-
- StandardFeatures();
-
- std::string create_flags() const;
- };
-
+ typedef unsigned LayoutHash;
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;
- Program(const StandardFeatures &);
+
+ /// Constructs a Program with standard features.
+ 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.
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 add_standard_shaders(const StandardFeatures &);
-private:
- static std::string process_standard_source(const char **, const std::string &);
-public:
- const ShaderList &get_shaders() const { return shaders; }
+ const ShaderList &get_attached_shaders() const { return shaders; }
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;