[Interest] Qt3D not deleting buffers

Juan José Casafranca jjcasmar at gmail.com
Mon Oct 3 13:40:36 CEST 2016


Hello!

I'm posting to act some questions about Qt3D.

I'm trying to show some information for my program. This information consist 
on a regular grid (I'm painting the lines that define the voxels), a distance 
map (in each voxel vertex I store a distance value) and the sources for the 
distance (zones where distance is 0)

The software supports resizing the grid or changing the sources so the views 
must be updated accordingly. To achieve that, I emit a signal when a change in 
the distance or the grid is done and connect that signal to a slot that 
performs the scene preparation. It isn't the best solution but for now is 
enough. 

The scene preparation slots cleans the previously allocated scene 
(m_rootEntity->deleteLater()) and reconstructs the scene. 

The reconstruction generates the geometry data for the different things I want 
to view, creates the renderer and the materials and adds this components to 
different entities. Finally, this entities are added to the root entity. 

To reduce code paths, the first view also performs this steps (removes the 
previously scene, which is null) and creates the new one. This works well. 

My problem is when trying to delete an existing scene. I have been debugging 
with gDEBugger and I have seen that buffers are not deleted (I imagine that VAO 
are also kept) though the buffers are constructed with the geometry as parent, 
and the geometry es an entity children (the entity is delete when I delete 
m_rootEntity). 

After 2 or 3 remeshing steps, the screen goes black and I cant see any 
information. 

I'm using the Qt3D version shipped with Qt 5.7. 

Any idea what I'm doing wrong? I can provide some code if you ask for it, but 
as the software I'm developing is big, I prefer to show the code when you ask 
for it, so I don't fill this question with a lot of code that wouldn't be 
necessary. 

Thanks!



More information about the Interest mailing list