]> git.tdb.fi Git - libs/gl.git/blobdiff - source/render/programdata.cpp
Store program resource information in vectors instead of maps
[libs/gl.git] / source / render / programdata.cpp
index b63ad60e3e5138e908ac9781d129ce27f016c144..d6271a733be69ed1f5e8f51e23b25132e80d0560 100644 (file)
@@ -611,7 +611,7 @@ void ProgramData::apply() const
                        dirty = 0;
                }
 
-               const Program::UniformBlockMap &prog_blocks = prog->get_uniform_blocks();
+               const vector<Program::UniformBlockInfo> &prog_blocks = prog->get_uniform_blocks();
 
                UniformBlock *old_last_block = last_block;
                if(pu.dirty==ALL_ONES)
@@ -622,29 +622,29 @@ void ProgramData::apply() const
                        pu.blocks.reserve(prog_blocks.size());
 
                        pu.used = 0;
-                       for(Program::UniformBlockMap::const_iterator i=prog_blocks.begin(); i!=prog_blocks.end(); ++i)
+                       for(vector<Program::UniformBlockInfo>::const_iterator i=prog_blocks.begin(); i!=prog_blocks.end(); ++i)
                        {
-                               SharedBlock *shared = get_shared_block(i->second);
+                               SharedBlock *shared = get_shared_block(*i);
                                if(shared)
                                {
                                        if(shared->dirty==ALL_ONES)
-                                               update_block_uniform_indices(*shared, i->second);
+                                               update_block_uniform_indices(*shared, *i);
                                        pu.used |= shared->used;
                                }
 
-                               pu.blocks.push_back(ProgramBlock(i->second.bind_point, shared));
+                               pu.blocks.push_back(ProgramBlock(i->bind_point, shared));
                        }
                }
 
                // Update the contents of all dirty blocks.
                bool buffered_blocks_updated = false;
                std::vector<ProgramBlock>::iterator j = pu.blocks.begin();
-               for(Program::UniformBlockMap::const_iterator i=prog_blocks.begin(); i!=prog_blocks.end(); ++i, ++j)
+               for(vector<Program::UniformBlockInfo>::const_iterator i=prog_blocks.begin(); i!=prog_blocks.end(); ++i, ++j)
                {
                        if(!j->shared || !j->shared->dirty)
                                continue;
 
-                       update_block(*j->shared, i->second);
+                       update_block(*j->shared, *i);
                        j->shared->dirty = 0;
                        buffered_blocks_updated |= (j->bind_point>=0);
                }