<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><font size="4">Hi everyone:<br> I have got a problem when i try to remove a vtkActor and free the memery.As you can see, I add some actors to the render and I removed them and
delete them,but the memery does not free.But when i delete "<u style="background-color:rgb(255,0,0)">this->m_render->AddActor(actor);</u>" the problem was gone! Does anyone know how can I fix it?<br>
Here is the code:<br>-----------------------------------------------------------------------------<br> m_render = vtkRenderer::New();<br> vtkRenderWindow *renWin = vtkRenderWindow::New();<br> renWin->StereoCapableWindowOn();<br>
ui->qvtkWidget->SetRenderWindow(renWin);<br> renWin->AddRenderer(m_render);<br> m_render->SetBackground(0.1, 0.2, 0.4);<br> renWin->Render();<br><br> connect(this->ui->pushButton,SIGNAL(clicked()),this,SLOT(release()));<br>
QString folder = QFileDialog::getExistingDirectory();<br> QDir dir(folder);<br> dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);<br><br> foreach(QFileInfo info,dir.entryInfoList())<br> {<br> QString fileName = info.absoluteFilePath();<br>
char *name = fileName.toUtf8().data();<br> std::ifstream ifs;<br> if ( !liblas::Open(ifs, name))<br> {<br> return;<br> }<br><br> vtkPoints *points = vtkPoints::New();<br>
liblas::Reader reader(ifs);<br><br> while( reader.ReadNextPoint() )<br> {<br> liblas::Point point = reader.GetPoint();<br> points->InsertNextPoint(point.GetX(),point.GetY(),point.GetZ());<br>
}<br> ifs.close();<br> vtkCellArray *cell = vtkCellArray::New();<br> int num = points->GetNumberOfPoints();<br> cell->InsertNextCell(num);<br> for(int i = 0; i< num; i++)<br>
{<br> cell->InsertCellPoint(i);<br> }<br><br> vtkPolyData *polyData = vtkPolyData::New();<br> polyData->SetPoints(points);<br> polyData->SetVerts(cell);<br><br> vtkPolyDataMapper* mapper = vtkPolyDataMapper::New(); <br>
mapper->SetInput(polyData);<br> vtkActor *actor = vtkActor::New(); <br> actor->SetMapper(mapper);<br> this->m_actors.insert(fileName,actor);<br><span style="color:rgb(255,0,0)"> </span><u style="color:rgb(255,0,0)"> this->m_render->AddActor(actor);</u><span style="color:rgb(255,0,0)">// when i delete this ,the memery can be free,Why?</span><br>
<br> mapper->Delete();<br> polyData->Delete();<br> cell->Delete();<br> points->Delete(); <br> renWin->Render();<br> }<br>
foreach(QString file,this->m_actors.keys())<br> {<br> vtkActor *actor = this->m_actors[file];<br> this->m_actors.remove(file);<br> actor->Delete();<br> actor=NULL;<br> }<br>
---------------------------------------------------------------------------<br> Thank you!<br></font>
</blockquote></div><br>