X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcore%2Fprogram.h;h=e86ee0595f0ed307047681f74be256fbf06b3d70;hb=dccad64b2ec82249d850b9745614042171499972;hp=fc60db46fcc2265af0b1ad9282eec1b5b19f6dcb;hpb=7aaec9a70b8d7733429bec043f8e33e02956f266;p=libs%2Fgl.git diff --git a/source/core/program.h b/source/core/program.h index fc60db46..e86ee059 100644 --- a/source/core/program.h +++ b/source/core/program.h @@ -11,6 +11,7 @@ namespace Msp { namespace GL { +class Module; class Shader; /** @@ -20,10 +21,10 @@ generated with a set of standard features. class Program: public Bindable { public: - class Loader: public DataFile::ObjectLoader + class Loader: public DataFile::CollectionObjectLoader { public: - Loader(Program &); + Loader(Program &, Collection &); private: virtual void finish(); @@ -31,6 +32,7 @@ public: void attribute(unsigned, const std::string &); void fragment_shader(const std::string &); void geometry_shader(const std::string &); + void module(const std::string &); void vertex_shader(const std::string &); }; @@ -65,15 +67,14 @@ public: GLenum type; }; - typedef std::vector ShaderList; typedef std::map UniformMap; typedef std::map UniformBlockMap; typedef std::map AttributeMap; private: unsigned id; - ShaderList shaders; - ShaderList owned_data; + std::vector shader_ids; + const Module *module; bool linked; UniformBlockMap uniform_blocks; UniformMap uniforms; @@ -88,21 +89,23 @@ public: Program(const std::string &); /// Constructs a Program from vertex and fragment shader source code. - Program(const std::string &, const std::string &); + DEPRECATED Program(const std::string &, const std::string &); private: void init(); public: virtual ~Program(); - void attach_shader(Shader &shader); - void attach_shader_owned(Shader *shader); - void detach_shader(Shader &shader); - const ShaderList &get_attached_shaders() const { return shaders; } + void add_stages(const Module &); - void bind_attribute(unsigned, const std::string &); - void bind_attribute(VertexComponent, const std::string &); - void bind_fragment_data(unsigned, const std::string &); + DEPRECATED void attach_shader(Shader &shader); + DEPRECATED void attach_shader_owned(Shader *shader); + DEPRECATED void detach_shader(Shader &shader); + DEPRECATED const std::vector &get_attached_shaders() const; + + DEPRECATED void bind_attribute(unsigned, const std::string &); + DEPRECATED void bind_attribute(VertexComponent, const std::string &); + DEPRECATED void bind_fragment_data(unsigned, const std::string &); void link(); private: @@ -114,7 +117,7 @@ private: static bool uniform_location_compare(const UniformInfo *, const UniformInfo *); public: bool is_linked() const { return linked; } - std::string get_info_log() const; + DEPRECATED std::string get_info_log() const; LayoutHash get_uniform_layout_hash() const { return uniform_layout_hash; } const UniformBlockMap &get_uniform_blocks() const { return uniform_blocks; }