void RenderLayout::BindVertexStream(GraphicsBufferPtr const & buffer, ArrayRef<VertexElement> vet, stream_type type, uint32_t freq) { BOOST_ASSERT(buffer); uint32_t size = 0; for (size_t i = 0; i < vet.size(); ++ i) { size += vet[i].element_size(); } if (ST_Geometry == type) { for (size_t i = 0; i < vertex_streams_.size(); ++ i) { if (ArrayRef<VertexElement>(vertex_streams_[i].format) == vet) { vertex_streams_[i].stream = buffer; vertex_streams_[i].vertex_size = size; vertex_streams_[i].type = type; vertex_streams_[i].freq = freq; streams_dirty_ = true; return; } } StreamUnit vs; vs.stream = buffer; vs.format = vet.ToVector(); vs.vertex_size = size; vs.type = type; vs.freq = freq; vertex_streams_.push_back(vs); } else { instance_stream_.stream = buffer; instance_stream_.format = vet.ToVector(); instance_stream_.vertex_size = size; instance_stream_.type = type; instance_stream_.freq = freq; } streams_dirty_ = true; }