]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/pipelinestate.cpp
Keep track of the buffers of bound uniform blocks
[libs/gl.git] / source / core / pipelinestate.cpp
index 210a0703868035dc69572fc56cc50eaf67b9ff08..fd474d28f3f106d0dcdf1226a28d42755877b09d 100644 (file)
@@ -2,6 +2,7 @@
 #include <msp/core/algorithm.h>
 #include "error.h"
 #include "pipelinestate.h"
+#include "uniformblock.h"
 
 using namespace std;
 
@@ -44,9 +45,11 @@ void PipelineState::set_uniform_block(int binding, const UniformBlock *block)
        if(i==uniform_blocks.end() || i->binding!=binding)
                i = uniform_blocks.insert(i, BoundUniformBlock(binding));
        i->used = block;
-       if(block!=i->block || binding<0)
+       const Buffer *buffer = (block ? block->get_buffer() : 0);
+       if(block!=i->block || buffer!=i->buffer || binding<0)
        {
                i->block = block;
+               i->buffer = buffer;
                i->changed = true;
                changes |= UNIFORMS;
        }