AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi [GLscene] dyn. Objekte zu langsam erzeugt
Thema durchsuchen
Ansicht
Themen-Optionen

[GLscene] dyn. Objekte zu langsam erzeugt

Ein Thema von dizzy · begonnen am 15. Mär 2004 · letzter Beitrag vom 17. Mär 2004
Antwort Antwort
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#1

[GLscene] dyn. Objekte zu langsam erzeugt

  Alt 15. Mär 2004, 16:20
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
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: [GLscene] dyn. Objekte zu langsam erzeugt

  Alt 17. Mär 2004, 03:41
*vorsichtigpush*

Keiner eine klitzekleine Idee? Auch nicht irgendwas abwegiges eventuell?
Ich häng da blöd dran. Alles andere klappt
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von Pyr0cracker
Pyr0cracker

Registriert seit: 15. Nov 2002
Ort: Norddeutschland
232 Beiträge
 
Delphi 7 Personal
 
#3

Re: [GLscene] dyn. Objekte zu langsam erzeugt

  Alt 17. Mär 2004, 09:45
ich kenn mich nicht so gut mit glscene aus aber gibts da nicht sowas wie proxyobjekte?
guck dir mal das beispiel zu an...
vielleicht hilfts

gruß,
Dorian Vasco
dorianvasco.de
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: [GLscene] dyn. Objekte zu langsam erzeugt

  Alt 17. Mär 2004, 17:38
Hmmm... Proxys sind IMHO lediglich "leere" Objekte, die dazu dienen die Objekthirachie zu strukturieren. Eventuell hilft es aber, wenn ich die ganzen Würfel nicht unter nur EINEN Proxy packe, sonder auf mehrere verteile. Vielleicht verringert sich ja dann der "Verwaltungsaufwand" pro Proxy (so er existiert...), und das könnte ja beschleunigen. Mal testen! Danke für den Anstoß!

gruss,
dizzy
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz