void VertexStreamFormat(uint32_t index, vertex_elements_type const & vet) { vertex_streams_[index].format = vet; uint32_t size = 0; for (size_t i = 0; i < vet.size(); ++ i) { size += vet[i].element_size(); } vertex_streams_[index].vertex_size = size; streams_dirty_ = true; }
void RenderLayout::BindVertexStream(GraphicsBufferPtr const & buffer, vertex_elements_type const & 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 (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; return; } } StreamUnit vs; vs.stream = buffer; vs.format = vet; vs.vertex_size = size; vs.type = type; vs.freq = freq; vertex_streams_.push_back(vs); } else { instance_stream_.stream = buffer; instance_stream_.format = vet; instance_stream_.vertex_size = size; instance_stream_.type = type; instance_stream_.freq = freq; } streams_dirty_ = true; }