]> git.tdb.fi Git - libs/gl.git/blobdiff - source/builders/sequencetemplate.cpp
Make it possible to specify explicit clear values
[libs/gl.git] / source / builders / sequencetemplate.cpp
index be8f3d7186b3450018e04c5da50605bdb4d97467..6e50c24838aafeebd751008a10e7e36d40022ec9 100644 (file)
@@ -19,7 +19,10 @@ SequenceTemplate::SequenceTemplate():
        hdr(false),
        alpha(false),
        required_multisample(0),
-       max_multisample(0)
+       max_multisample(0),
+       clear_enabled(false),
+       clear_depth(1.0f),
+       clear_stencil(0)
 { }
 
 SequenceTemplate::~SequenceTemplate()
@@ -64,6 +67,7 @@ SequenceTemplate::Loader::Loader(SequenceTemplate &t, Collection &c):
 {
        add("hdr", &SequenceTemplate::hdr);
        add("alpha", &SequenceTemplate::alpha);
+       add("clear", &Loader::clear);
        add("multisample", &Loader::multisample);
        add("multisample", &Loader::multisample_range);
        add("postprocessor", &Loader::postprocessor);
@@ -79,6 +83,13 @@ void SequenceTemplate::Loader::postprocessor_loaded()
        obj.postprocessors.push_back(get_postprocessor_template());
 }
 
+void SequenceTemplate::Loader::clear()
+{
+       ClearLoader ldr(obj);
+       load_sub_with(ldr);
+       obj.clear_enabled = true;
+}
+
 void SequenceTemplate::Loader::multisample(unsigned samples)
 {
        obj.required_multisample = samples;
@@ -124,6 +135,30 @@ void SequenceTemplate::Loader::step_with_slot(const string &tag, const string &r
 }
 
 
+SequenceTemplate::ClearLoader::ClearLoader(SequenceTemplate &t):
+       ObjectLoader<SequenceTemplate>(t)
+{
+       add("color", &ClearLoader::color);
+       add("depth", &ClearLoader::depth);
+       add("stencil", &ClearLoader::stencil);
+}
+
+void SequenceTemplate::ClearLoader::color(float r, float g, float b, float a)
+{
+       obj.clear_colors.push_back(Color(r, g, b, a));
+}
+
+void SequenceTemplate::ClearLoader::depth(float d)
+{
+       obj.clear_depth = d;
+}
+
+void SequenceTemplate::ClearLoader::stencil(int s)
+{
+       obj.clear_stencil = s;
+}
+
+
 SequenceTemplate::Step::Loader::Loader(Step &p):
        DataFile::CollectionObjectLoader<Step>(p, 0)
 {