@@ -308,7 +308,7 @@ struct DrawIndexedIndirectInput
308
308
309
309
static constexpr asset::E_PRIMITIVE_TOPOLOGY mode = asset::EPT_TRIANGLE_LIST;
310
310
static constexpr asset::E_INDEX_TYPE indexType = asset::EIT_16BIT;
311
- static constexpr size_t stride = sizeof (DrawElementsIndirectCommand_t) ;
311
+ static constexpr size_t stride = 0ull ;
312
312
};
313
313
314
314
using Range_t = SRange<void , core::vector<ICPUMeshBuffer*>::iterator>;
@@ -373,7 +373,7 @@ void packMeshBuffers(video::IVideoDriver* driver, DrawData& drawData)
373
373
MeshPacker::AllocationParams allocParams;
374
374
allocParams.indexBuffSupportedCnt = 20000000u ;
375
375
allocParams.indexBufferMinAllocSize = 5000u ;
376
- allocParams.vertexBuffSupportedSize = 200000000u ;
376
+ allocParams.vertexBuffSupportedSize = 80000000u ;
377
377
allocParams.vertexBufferMinAllocSize = 5000u ;
378
378
allocParams.MDIDataBuffSupportedCnt = 20000u ;
379
379
allocParams.MDIDataBuffMinAllocSize = 1u ; // so structs are adjacent in memory
@@ -424,7 +424,7 @@ void packMeshBuffers(video::IVideoDriver* driver, DrawData& drawData)
424
424
425
425
core::vector<IMeshPackerBase::PackedMeshBufferData> pmbd (mdiCnt);
426
426
427
- core::vector<MeshPacker::CombinedDataOffsetTable> cdot (offsetTableSz );
427
+ core::vector<MeshPacker::CombinedDataOffsetTable> cdot (mdiCnt );
428
428
429
429
bool commitSuccessfull = mp.commit (pmbd.data (), cdot.data (), allocData->data () + drawData.pushConstantsData [i], mbRangeBegin, mbRangeEnd);
430
430
if (!commitSuccessfull)
@@ -436,15 +436,16 @@ void packMeshBuffers(video::IVideoDriver* driver, DrawData& drawData)
436
436
DrawIndexedIndirectInput mdiCallInput;
437
437
438
438
mdiCallInput.maxCount = mdiCnt;
439
+ mdiCallInput.offset = pmbd[0 ].mdiParameterOffset * sizeof (DrawElementsIndirectCommand_t);
439
440
440
- drawData.drawIndirectInput .push_back (std::move ( mdiCallInput) );
441
+ drawData.drawIndirectInput .push_back (mdiCallInput);
441
442
442
443
// auto glsl = mp.generateGLSLBufferDefinitions(0u);
443
444
444
445
// setOffsetTables
445
- for (uint32_t i = 0u ; i < mdiCnt; i ++)
446
+ for (uint32_t j = 0u ; j < mdiCnt; j ++)
446
447
{
447
- MeshPacker::CombinedDataOffsetTable& virtualAttribTable = cdot[i ];
448
+ MeshPacker::CombinedDataOffsetTable& virtualAttribTable = cdot[j ];
448
449
449
450
offsetTableLocal.push_back (virtualAttribTable.attribInfo [0 ]);
450
451
offsetTableLocal.push_back (virtualAttribTable.attribInfo [2 ]);
@@ -851,7 +852,7 @@ int main()
851
852
852
853
// TODO: change it to vector of smart pointers
853
854
core::vector<ICPUMeshBuffer*> meshBuffers;
854
- for (uint32_t i = 0u ; i < 100 ; i++)
855
+ for (uint32_t i = 0u ; i < mesh_raw-> getMeshBufferVector (). size () ; i++)
855
856
meshBuffers.push_back (mesh_raw->getMeshBufferVector ()[i].get ());
856
857
857
858
DrawData drawData;
0 commit comments