]> git.tdb.fi Git - libs/gl.git/blobdiff - source/technique.cpp
Bind ProgramData to a Program upon construction
[libs/gl.git] / source / technique.cpp
index d913f4d1aa490b0264c8f94600c9ed93d571f55d..9d13a8976ac4b40f56f077b4a4fcf5120bdea4f1 100644 (file)
@@ -20,6 +20,14 @@ using namespace std;
 namespace Msp {
 namespace GL {
 
+RenderPass &Technique::add_pass(const GL::Tag &tag)
+{
+       if(passes.count(tag))
+               throw KeyError("Duplicate pass");
+
+       return passes[tag];
+}
+
 bool Technique::has_pass(const GL::Tag &tag) const
 {
        return passes.count(tag);
@@ -27,7 +35,7 @@ bool Technique::has_pass(const GL::Tag &tag) const
 
 const RenderPass &Technique::get_pass(const GL::Tag &tag) const
 {
-       PassMap::const_iterator i=passes.find(tag);
+       PassMap::const_iterator i = passes.find(tag);
        if(i==passes.end())
                throw KeyError("Unknown pass");
        return i->second;
@@ -54,7 +62,7 @@ void Technique::Loader::init()
 
 void Technique::Loader::inherit(const string &n)
 {
-       obj.passes=get_collection().get<Technique>(n)->get_passes();
+       obj.passes = get_collection().get<Technique>(n)->get_passes();
        InheritLoader ldr(obj, get_collection());
        load_sub_with(ldr);
 }
@@ -80,14 +88,14 @@ Technique::InheritLoader::InheritLoader(Technique &t, Collection &c):
        add("texture", &InheritLoader::texture);
 }
 
-void Technique::InheritLoader::texture(const string &slot, const string &name)
+void Technique::InheritLoader::texture(unsigned index, const string &name)
 {
-       Texture *tex=get_collection().get<Texture>(name);
+       Texture *tex = get_collection().get<Texture>(name);
        for(PassMap::iterator i=obj.passes.begin(); i!=obj.passes.end(); ++i)
        {
                try
                {
-                       i->second.set_texture(slot, tex);
+                       i->second.set_texture(index, tex);
                }
                catch(const KeyError &)
                { }