Seite 31 von 35

Verfasst: 10.01.2008 04:04
von Thalius
ok, gezogen - werde mir das ganze mal durchstrukturieren und testen. Imo ist nix zu sehen auf dem Screen, ist das beabsichtigt ? Und ja, ich sehe dein Problem mit dem Memory ;)

Arbeite mich da mal durch, aber das wird nach dem Wochenende wohl sein - imo hock ich voll im Stress bei der Arbeit. Werde mal sehen ob ich da nicht ggf. ein paar Dinge vereinfachen kann. Apropos - habs nur überflogen PM mir am besten schnell genau was du machen willst. Wenns nur darum geht fonts im 3D Space zu plazieren gibts da nämlich einen eingebauten Node. :)

Mach weiter so, dank deinem Feedback hab ich schon einige Tücken in der Manual ausmerzen können und evtl. kann ich noch ein par Dinge für das nächste Release vereinfachen ( zb. Garbage Collection ) ... Danke!

Thalius

Verfasst: 10.01.2008 09:48
von tft
Hallo ....

das du nichts sehen kanst erstaunt mich nicht. Warscheinlich must du erst den "Standard.png" in die Directory packen in der auch das .pb fiele liegt. Ich lege meine Files leider immernoch nicht bei Media ab.

Sehen soltest du das

Bild

Verfasst: 13.01.2008 14:58
von Thalius
Also bins mir grad am durchkauen... muss das neu aufbauen. Prozedural solltest du dir etwas celaneren Aufbau zu Herzen nehmen.

Dein Leak liegt in: RefrechText3D()

Da wir hier mit pointer auf Strukturen arbeiten geht sowas zb. nicht.

Code: Alles auswählen

      If *ClearTextPageNode<>0
        IrrRemoveNode(*ClearTextPageNode)
        *ClearTextPageNode=0
      EndIf
...
          If *TextPageNode
            *ClearTextPageNode=*TextPageNode
            IrrRemoveNode(*TextPageNode)
          EndIf
Das kann nicht gehen da du die Adresse eines nodes übergibst welchen du nachher löscht und der pointer dadurch invalidiert wird. Kein wunder leakt das ;)



Thalius

Verfasst: 13.01.2008 15:26
von tft
Hallo ..

Ich habe versucht meine überlegungen zu prezisieren. Aber ich komme immer zu dem gleichen ergebniss. Und mit anderen Worte das gleiche erzählen bringt wol nichts.
Es hapert immernoch an dem problem das zwischen erstellen und darstellen einer Node eine Frame lücke ist. Dagegen wird eine Node beim Removen sofort entfernt. Daher entsteht ein flakkern, wenn es nicht mit hilfe von 2 Nodes gepuffert ist.

Frame Node 1 erstellen
Node anzeigen
Nachste node erstellen
Forherige löschen
Node darstellen

Wenn ich mit *Node2=*Node den Zeiger speicher. Dann mit *Node=CreateNode() eine neue erzeuge. Zeigen dann *Node2 immernoch auf die *Node und auf das gleiche object? Wenn ja. Dann habe ich verstanden was ich falsch mache. ich müste also zum Switschen auch 2 .irr_nodes anlegen. und die auch beim Löschen entsprechend verwenden.


(%ç*%&//=(%(/%%*"*(&%&/(ç%&//(/&=ç) ich hoffe ich bekomms irgendwann auf die reihe

Gruss TFT

Verfasst: 13.01.2008 15:52
von Thalius
Frameverzögert passiert eigentlich nur mit einem Delay ( da dein Loop ja den Add Befehl gibt, welcher eine Veränderung in der Szene bewirkt und da dieser verzögert / asynchron zum 3D Prozessor läuft. Wenn du Szenenveränderungen durchführst welche Zeitkritisch sind, nimm sie aus dem Delay ( Delay sollte nur erfolgen wenn sich nix in der Szene verändert. Oder mit Delay noch im Zeitlichen margin liegt ).

Der Einfachheit halber werde ich fürs 1.53 ( Stable ) noch ein paar Kommands hinzufügen:
Returns amount of loaded meshes in the cache.
IrrGetMeshCount()

Returns current index number of the mesh, and -1 if it is not in the cache.
IrrGetMeshIndex(*mesh)

Removes a animated mesh from the cache.
IrrRemoveMesh(*mesh)

Removes a static from the cache.
IrrRemoveStaticMesh(*mesh)

returns an already loaded mesh.
IrrFindMesh(lowerMadeFilename.s)

Clears all unused Meshes from the Cache.
IrrClearUnusedMeshes()
Hoffe ich erreiche Mike die Tage, um mich mal mit ihm abzusprechen.

Apropos: Hats nen speziellen Grund dass du keine Billboards verwendest ?

Anonsten würde ich vorschlagen ein flaches Node zu erstellen ( welches im gegensatz zu Billboards auch gedreht werden kann ). Und dann nurnoch das surface neu zu berechnen und die Node-grösse dem jeweiligen Context anzupassen ( ist auch einiges performanter als alles jedesmal neu zu erstellen ).

Soll ich das ganze noch fertig neustrukturieren oder hast dus im Griff ?
ANosnten hock cih mich nämlich imo mal weiter hinter Manual.

Cheers,
Thalius

Verfasst: 13.01.2008 19:43
von tft
Hallo ...

habe jetzt etwas über 10 Stundne an diesem Prob gesessen und endlich eine Lösung gefunden. Da selbst das wegnehmenn des Delay(1) keine hilfe war. Und durch Experimente mit den Cores ganz klar eine Delay der Node darstellung auf Multicore zurückzuführen ist. Es gibt da einen Befehl der sich IrrSetDeleteAnimator() nennt. Damit habe ich die Verzögerung beseitigt. Indem ich den Pointer für die neue Node einfach widerverwende und vorher diesen als Parameter im DeleteAnimator verwende. Das hat auch die Speicher lags beseitigt. Im übrigen passiert das nicht auf meinem Laptop. Der ist recht langsam. Mir fehlt eindeutig mer intenes Wissen über die IrrlichtEngine und ihre Arbeitsweise. Aber so langsam bekomme ich es hin.

Billboards ? sind mir jetzt nicht so ein begriff. Aber da ich die sache jetzt zu laufen habe. Und mir noch einige Iddeen zum tut Fehlen. Könnte ich diese ja mal einbauen und schauen ob ichs begreife. Grundsätzlich benötige ich ein SingelSurface system. Es soll änlich funktionieren wie zu alten Dos Zeiten. Die Text und Ramen ellemente werden vom Font abgedeckt. Habe mich da von Hectics Draw3D von BlizBasic inspiriren lassen. Und da ich den Font verwenden darf..... baue ich darauf auf. Und weis wenigsten was passiert.

Gruss TFT

Verfasst: 17.01.2008 05:23
von Thalius
Hier eine aktuellere Version der Manual ( Endlich meinen Parser-Bug lokalisiert :D rest folgt. )

http://www.anwesend.ch/meckardt/irrlicht/docu/

Thalius

Verfasst: 17.01.2008 09:49
von Rings
thx

Verfasst: 17.01.2008 10:50
von dige
@Rings: Willkommen in der 3D-Welt :) wird das pbMC jetzt nach IRR portiert?

Verfasst: 17.01.2008 13:44
von Thalius
so.. heut Abend geh ich nochmals da drüber ( ich sollte sowas nicht um 4 Uhr morgens machen .. :roll: - ich schreib ja schlimmer als ne Kuh! )
@Rings: Willkommen in der 3D-Welt Smile wird das pbMC jetzt nach IRR portiert?
Er versuchts zumindest mal ... :mrgreen:

hehehehe

Thalius