Quote:

- ent_create laedt das Modell und fuehrt das erste Mal zu einem Disk-Zugriff. Wenn das Modell einmal geladen ist, aendern weitere ent_creates nur nur etwas an der internen Datenbank und fuehren zu keiner Zeitverzoegerung mehr.

- Wenn die Entity das erste Mal sichtbar wird, wird das Mesh und die Textur erzeugt. Je nach 3D-Hardware kann das zu einer Verzoegerung fuehren, auf die die Engine natuerlich keinen Einfluss hat. Simple Abhilfe: die Entity mit ent_preload erzeugen.




@JCL: Ich glaube nicht, dass ENT_PRELOAD eine Lösung für das Problem mit den Verzögerungen ist.

Mit ENT_PRELOAD wird doch nur der DISK-ZUGRIFF durchgeführt. ENT_PRELOAD erzeugt ja noch nicht die Textur bzw. kopiert die Textur noch nicht in den Grafikkartenspeicher.

Und die Aussetzer/Verzögerungen entstehen ja hauptsächlich dadurch, dass große Texturen in den Grafikkartenspeicher kopiert werden müssen (das dauert bei meiner Grafikkarte bis zu 4 Sekunden bei Texturgrößen von 4096x4096 Pixel!).
Und dieses Kopieren passiert ja erst dann, wenn das Model zum ersten mal am Bildschirm sichtbar wird. Ein zuvor durchgeführtes ENT_PRELOAD hilft da gar nichts.

Noch dazu kommen diese Aussetzer ja auch bei Models vor, die mit dem Level geladen wurden (also nicht per ENT_CREATE erstellt wurden). Und in diesem Fall bräuchte man ja gar kein ENT_PRELOAD zu benutzen.


Die einzige Lösung, um diese Aussetzer zu vermeiden, ist momentan folgende:

- Man muss die Models am Beginn vom Spiels kurz sichtbar werden lassen. Ich löse das meistens so, dass ich gleich nach dem Laden des Levels die Kamera zunächst für kurze Zeit so positioniere, dass alle Models im Level für die Kamera sichtbar sind. Das ganze passiert natürlich verborgen hinter einem Panel.


Schön wäre es allerdings, wenn es einen Befehl (oder einen zusätzlichen Parameter beim ENT_PRELOAD) gäbe, mit dem man steuern könnte, dass auch die Textur/Skin erstellt bzw. in den Speicher kopiert wird. Also OHNE dass das Model zuvor SICHTBAR werden muss.


Freundliche Grüße,
Thomas