X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Frender%2Finstancearray.cpp;h=5854906fe9229de3a59e46f13f27e8f3521c2d20;hb=d40673bd28c4b4524d3642b949d9d109dc6f9f24;hp=abd9fcd0bd870d14def0192392490b09c702fa2d;hpb=7aaec9a70b8d7733429bec043f8e33e02956f266;p=libs%2Fgl.git diff --git a/source/render/instancearray.cpp b/source/render/instancearray.cpp index abd9fcd0..5854906f 100644 --- a/source/render/instancearray.cpp +++ b/source/render/instancearray.cpp @@ -44,17 +44,18 @@ InstanceArray::InstanceArray(const Object &o): if(ARB_vertex_array_object && ARB_instanced_arrays && ARB_draw_instanced) { - instance_data = new VertexArray((ATTRIB4,matrix_location, ATTRIB4,matrix_location+1, ATTRIB4,matrix_location+2)); + instance_data = new VertexArray((RAW_ATTRIB4,matrix_location, RAW_ATTRIB4,matrix_location+1, RAW_ATTRIB4,matrix_location+2)); const VertexFormat &fmt = instance_data->get_format(); - matrix_offset = fmt.offset(make_indexed_component(ATTRIB4, matrix_location)); + matrix_offset = fmt.offset(make_indexed_attribute(RAW_ATTRIB4, matrix_location)); instance_buffer = new Buffer(ARRAY_BUFFER); instance_data->use_buffer(instance_buffer); vtx_setup = new VertexSetup; + vtx_setup->set_format_instanced(object.get_mesh()->get_vertices().get_format(), fmt); vtx_setup->set_vertex_array(object.get_mesh()->get_vertices()); vtx_setup->set_index_buffer(*object.get_mesh()->get_index_buffer()); - vtx_setup->set_instance_array(instance_data); + vtx_setup->set_instance_array(*instance_data); } else static Require req(ARB_vertex_shader); @@ -62,7 +63,7 @@ InstanceArray::InstanceArray(const Object &o): InstanceArray::~InstanceArray() { - for(std::vector::iterator i=instances.begin(); i!=instances.end(); ++i) + for(vector::iterator i=instances.begin(); i!=instances.end(); ++i) delete *i; delete vtx_setup; delete instance_data; @@ -112,7 +113,7 @@ void InstanceArray::update_instance_matrix(unsigned index) d[matrix_offset+i] = m(i/4, i%4); } -void InstanceArray::render(Renderer &renderer, const Tag &tag) const +void InstanceArray::render(Renderer &renderer, Tag tag) const { if(instances.empty()) return;