@@ -618,15 +618,17 @@ core::smart_refctd_ptr<ICPUMeshBuffer> IMeshManipulator::createOptimizedMeshBuff
618
618
if (outbuffer->getPipeline ()->getPrimitiveAssemblyParams ().primitiveType == EPT_TRIANGLE_FAN)
619
619
{
620
620
outbuffer->getPipeline ()->getPrimitiveAssemblyParams ().primitiveType = EPT_TRIANGLE_LIST;
621
- auto newIb = idxBufferFromTrianglesFanToTriangles (outbuffer->getIndices (), outbuffer->getIndexCount (), canonicalMeshBufferIndexType, canonicalMeshBufferIndexType);
622
- outbuffer->setIndexCount (newIb->getSize () / sizeof (uint32_t ));
621
+ auto indexCount = outbuffer->getIndexCount ();
622
+ auto newIb = idxBufferFromTrianglesFanToTriangles (outbuffer->getIndices (), indexCount, canonicalMeshBufferIndexType, canonicalMeshBufferIndexType);
623
+ outbuffer->setIndexCount (indexCount);
623
624
outbuffer->setIndexBufferBinding ({ 0u , std::move (newIb) });
624
625
}
625
626
else if (outbuffer->getPipeline ()->getPrimitiveAssemblyParams ().primitiveType == EPT_TRIANGLE_STRIP)
626
627
{
627
628
outbuffer->getPipeline ()->getPrimitiveAssemblyParams ().primitiveType = EPT_TRIANGLE_LIST;
628
- auto newIb = idxBufferFromTriangleStripsToTriangles (outbuffer->getIndices (), outbuffer->getIndexCount (), canonicalMeshBufferIndexType, canonicalMeshBufferIndexType);
629
- outbuffer->setIndexCount (newIb->getSize () / sizeof (uint32_t ));
629
+ auto indexCount = outbuffer->getIndexCount ();
630
+ auto newIb = idxBufferFromTriangleStripsToTriangles (outbuffer->getIndices (), indexCount, canonicalMeshBufferIndexType, canonicalMeshBufferIndexType);
631
+ outbuffer->setIndexCount (indexCount);
630
632
outbuffer->setIndexBufferBinding ({ 0u , std::move (newIb) });
631
633
}
632
634
else if (outbuffer->getPipeline ()->getPrimitiveAssemblyParams ().primitiveType != EPT_TRIANGLE_LIST)
@@ -1535,7 +1537,7 @@ bool CMeshManipulator::calcMaxQuantizationError(const SAttribTypeChoice& _srcTyp
1535
1537
return true ;
1536
1538
}
1537
1539
1538
- core::smart_refctd_ptr<ICPUBuffer> IMeshManipulator::idxBufferFromLineStripsToLines (const void * _input, size_t _idxCount, E_INDEX_TYPE _inIndexType, E_INDEX_TYPE _outIndexType)
1540
+ core::smart_refctd_ptr<ICPUBuffer> IMeshManipulator::idxBufferFromLineStripsToLines (const void * _input, size_t & _idxCount, E_INDEX_TYPE _inIndexType, E_INDEX_TYPE _outIndexType)
1539
1541
{
1540
1542
if (_inIndexType == EIT_16BIT)
1541
1543
{
@@ -1554,7 +1556,7 @@ core::smart_refctd_ptr<ICPUBuffer> IMeshManipulator::idxBufferFromLineStripsToLi
1554
1556
return nullptr ;
1555
1557
}
1556
1558
1557
- core::smart_refctd_ptr<ICPUBuffer> IMeshManipulator::idxBufferFromTriangleStripsToTriangles (const void * _input, size_t _idxCount, E_INDEX_TYPE _inIndexType, E_INDEX_TYPE _outIndexType)
1559
+ core::smart_refctd_ptr<ICPUBuffer> IMeshManipulator::idxBufferFromTriangleStripsToTriangles (const void * _input, size_t & _idxCount, E_INDEX_TYPE _inIndexType, E_INDEX_TYPE _outIndexType)
1558
1560
{
1559
1561
if (_inIndexType == EIT_16BIT)
1560
1562
{
@@ -1573,7 +1575,7 @@ core::smart_refctd_ptr<ICPUBuffer> IMeshManipulator::idxBufferFromTriangleStrips
1573
1575
return nullptr ;
1574
1576
}
1575
1577
1576
- core::smart_refctd_ptr<ICPUBuffer> IMeshManipulator::idxBufferFromTrianglesFanToTriangles (const void * _input, size_t _idxCount, E_INDEX_TYPE _inIndexType, E_INDEX_TYPE _outIndexType)
1578
+ core::smart_refctd_ptr<ICPUBuffer> IMeshManipulator::idxBufferFromTrianglesFanToTriangles (const void * _input, size_t & _idxCount, E_INDEX_TYPE _inIndexType, E_INDEX_TYPE _outIndexType)
1577
1579
{
1578
1580
if (_inIndexType == EIT_16BIT)
1579
1581
{
0 commit comments