Hi Leute,
irgendwie kann ich nicht mehr klar denken :-)
Obwohl die SplitNode-Funktion zu funktionieren scheint, leuchtet mir nicht mehr ein, warum die Dreiecke des Endknotens nicht gelöscht werden, obwohl es eine Anweisung zum Löschen der eigenen Dreiecks-Liste gibt.
Die Begriffe wurden leicht umbenannt, haben aber die selbe Wirkung.
|
Quellcode
|
1
2
3
4
5
6
7
8
9
|
// Temporäre Liste wieder freigeben
SAFE_DELETE_ARRAY(pdwTemp)
// Diesen Unterknoten rekursiv unterteilen, wenn es sich von der Anzahl der
// Dreiecke her lohnt.
if (dwCounter >= 32)
m_pChilds[i]->SplitNode(pTriangles, iMaxDepth - 1);
}
// Eigene Dreiecksliste löschen
SAFE_DELETE_ARRAY(m_pdwTriangles)
|
Wenn m_pChilds
->SplitNode ausgeführt wird und m_pChils[i] ist ein Endknoten (mit weniger als 32 Dreiecken), kommt doch auch auf diesen Knoten die Anweisung SAFE_DELETE_ARRAY(m_pdwTriangles) zu. Also müßten doch auch die Dreiecke des Endknotens gelöscht werden. Das wäre sicherlich nicht so schön. Aber irgendwie scheint ja die TriBase Funktion SplitNode trotzdem zu funzen.
Ich weiß nicht wieso(?)