Ah ja, da ist ein kleiner Fehler drin. GLScene.Objects gibt dir immer ein Wurzelelement zurück. Dieses enthält alle BaseSceneObjects (wenn ich mich richtig erinner), die wiederum als Elternteil für weitere BaseSceneObjects dienen können.
Versuch es mal mit etwas wie:
Delphi-Quellcode:
var buffer : TGLBaseSceneObject;
begin
if GLScene.Objects.Count > 0 then
begin
for i := 0 to GLScene.Objects.Count - 1 do
begin
if GLScene.Objects.Children[i] is TGLCube then
begin
buffer := GLScene.Objects.Children[i];
GLScene.Objects.Remove(buffer);
buffer.Free;
end; // if GLScene.Objects.Children[i] is TGLCube
end; // for i := 0 to GLScene.Objects.Count - 1
end; // if GLScene.Objects.Count > 0
end;
Also so ungefähr, irgendwie konnte man glaube ich noch sagen, was mit den Kindern von einem Objekt geschehen soll, wenn dieses entfernt wird. Musst du ggf. anpassen, ist leider ungetestet. Sitze gerade vor einem sehr langsamen Rechner, da würde es wirklich lange dauern Delphi mit GLScene zum laufen zu bekommen.