Mahlzeit Kameraden!
Habe ein eher ärgerliches Problem mit GLscene. In meinem Proggy brauche ich eine größere Anzahl von gleichen Würfeln, die der Szene dynamisch hinzugefügt werden sollen, da der User Größe (un somit auch Position) wählen können soll.
Folgendermaßen gehe ich z.Zt. vor:
Delphi-Quellcode:
Global:
var
boxes : array of array of array of TCube;
cubeCount: Integer = 20;
.
.
.
procedure GenerateCells;
var x, y, z : Integer;
PosHelper: Single;
begin
SetLength(boxes, cubeCount, cubeCount, cubeCount);
PosHelper := -(cubeCount/4)-0.25;
for x := 0 to cubeCount-1 do
begin
for y := 0 to cubeCount-1 do
begin
for z := 0 to cubeCount-1 do
begin
boxes[x,y,z] := TCube(Form1.GLScene1.Objects.AddNewChild(TCube));
boxes[x,y,z].Position.X := PosHelper+(x*0.5);
boxes[x,y,z].Position.Y := PosHelper+(y*0.5);
boxes[x,y,z].Position.Z := PosHelper+(z*0.5);
boxes[x,y,z].CubeWidth := 0.5;
boxes[x,y,z].CubeHeight := 0.5;
boxes[x,y,z].CubeDepth := 0.5;
boxes[x,y,z].Visible := false;
end;
end;
end;
end;
Das ganze wird auf Knopfdruck ausgeführt, und dauert bei 20³ Würfeln schon üppig lang. Nehme ich z.B. 25 dauert es
erheblich länger, bei 30 hatte ich schon keine Lust mehr ganz abzuwarten. Es ist klar, dass das länger dauert, 25³ sind ja schonmal locker 15.625 Objekte á 6 Seiten. Es sind jedoch nicht zu jedem Zeitpunkt alle Würfel sichtbar, aber da pro Zeitzyklus teilweise sehr viele Würfel erzeugt/gekillt werden müssten, würde ich somit die Framerate sehr mekrbar drücken.
Es geht um das gute alte "Life"-Programm, in 3D. Daher diese Menge an Würfeln.
Wie würdet ihr daran gehen?
Habe auch schon getestet, 30³ Würfel erstellen, und dann die Szene abspeichern. Nur dauert das Lader der Szene dann NOCH länger, als das pure Erzeugen (was eigentlich auch logisch ist...). Zumal ich mir dann auch noch über die Würfelnamen die Referenzen in mein array holen müsste, was ja string-Operationen sind. Auch nicht DIE Lösung
Hülfeee
gruss,
dizzy
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel