@@ -145,7 +145,7 @@ void ComputeBounds::apply(const vsg::VertexIndexDraw& vid)
145145
146146 if (vid.indices ) vid.indices ->accept (*this );
147147
148- applyDrawIndexed (vid.firstIndex , vid.indexCount , vid.firstInstance , vid.instanceCount );
148+ applyDrawIndexed (vid.firstIndex , vid.indexCount , vid.firstInstance , vid.instanceCount , vid. vertexOffset );
149149}
150150
151151void ComputeBounds::apply (const vsg::InstanceNode& in)
@@ -177,7 +177,7 @@ void ComputeBounds::apply(const vsg::InstanceDrawIndexed& idi)
177177 arrayState.apply (idi);
178178
179179 idi.indices ->accept (*this );
180- applyDrawIndexed (idi.firstIndex , idi.indexCount , instanceNode->firstInstance , instanceNode->instanceCount );
180+ applyDrawIndexed (idi.firstIndex , idi.indexCount , instanceNode->firstInstance , instanceNode->instanceCount , idi. vertexOffset );
181181}
182182
183183void ComputeBounds::apply (const vsg::BindVertexBuffers& bvb)
@@ -219,7 +219,7 @@ void ComputeBounds::apply(const Draw& draw)
219219
220220void ComputeBounds::apply (const DrawIndexed& drawIndexed)
221221{
222- applyDrawIndexed (drawIndexed.firstIndex , drawIndexed.indexCount , drawIndexed.firstInstance , drawIndexed.instanceCount );
222+ applyDrawIndexed (drawIndexed.firstIndex , drawIndexed.indexCount , drawIndexed.firstInstance , drawIndexed.instanceCount , drawIndexed. vertexOffset );
223223};
224224
225225void ComputeBounds::applyDraw (uint32_t firstVertex, uint32_t vertexCount, uint32_t firstInstance, uint32_t instanceCount)
@@ -242,7 +242,7 @@ void ComputeBounds::applyDraw(uint32_t firstVertex, uint32_t vertexCount, uint32
242242 }
243243}
244244
245- void ComputeBounds::applyDrawIndexed (uint32_t firstIndex, uint32_t indexCount, uint32_t firstInstance, uint32_t instanceCount)
245+ void ComputeBounds::applyDrawIndexed (uint32_t firstIndex, uint32_t indexCount, uint32_t firstInstance, uint32_t instanceCount, uint32_t vertexOffset )
246246{
247247 auto & arrayState = *arrayStateStack.back ();
248248 uint32_t lastIndex = instanceCount > 1 ? (firstInstance + instanceCount) : firstInstance + 1 ;
@@ -258,7 +258,7 @@ void ComputeBounds::applyDrawIndexed(uint32_t firstIndex, uint32_t indexCount, u
258258 {
259259 for (uint32_t i = firstIndex; i < endIndex; ++i)
260260 {
261- bounds.add (matrix * dvec3 (vertices->at (ushort_indices->at (i))));
261+ bounds.add (matrix * dvec3 (vertices->at (ushort_indices->at (i) + vertexOffset )));
262262 }
263263 }
264264 }
@@ -271,7 +271,7 @@ void ComputeBounds::applyDrawIndexed(uint32_t firstIndex, uint32_t indexCount, u
271271 {
272272 for (uint32_t i = firstIndex; i < endIndex; ++i)
273273 {
274- bounds.add (matrix * dvec3 (vertices->at (uint_indices->at (i))));
274+ bounds.add (matrix * dvec3 (vertices->at (uint_indices->at (i) + vertexOffset )));
275275 }
276276 }
277277 }
0 commit comments