Draw3D2 Speicherproblem [ERLEDIGT]
Übersicht

![]() |
ElendilBetreff: Draw3D2 Speicherproblem [ERLEDIGT] |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo allerseits,
hab mich jetzt endlich mal überwunden von der alten Draw3D auf die 2er umzusteigen. Bin auch echt begeistert davon -> klasse hectic ![]() ![]() Wenn ich folgenden Code ausführe und zwischen den SGGs wechsle, steigt der benutzte Arbeitsspeicher der blitzcc.exe mit jedem Ändern der ausgewählten SGG um 10-20mb (wahrs. je nachdem wie groß die Bilddatei der SGG ist). BlitzBasic: Graphics3D 1200,800,0,2 [der Code ist als Standartbeispiel beim Download der Draw3D2 dabei] Es scheint also so, als ob die vorherig geladen SGG nicht mehr gefreed wird, obwohl FreeSGG(show) aufgerufen wird. Ist das ein Problem der Draw3D2 oder liegt das Problem woanders? Hoffe ihr könnt mir helfen ![]() Liebe Grüße, Elendil |
||
- Zuletzt bearbeitet von Elendil am So, Nov 20, 2011 15:07, insgesamt einmal bearbeitet
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hab deine PN erhalten, antworte aber hier, da es vielleicht auch andere interessieren könnte.
Der immer größer werdende Speicherverbrauch von B3D kommt daher, dass immer ''neue'' Bilder geladen werden (das macht CreateSGG auch). Ich habe das Verhalten schon früher bemerkt und keine Lösung dazu gefunden. Ist kein Draw3D2 oder SGG -Problem, sondern ein Verhalten von B3D. Es ist allerdings auch nicht schlimm, denn nach einem Versuch den ich durchführte, unmengen an gespeicherten und übergroße Texturen zu laden und wieder zu löschen steigt der Speicherverbrauch nur so lange an, bis dieser es eine gewisse Obergrenze erreicht hat. Danach werden die zuvor belegten und wieder freigemachte Speicherbereiche benutzt. Es kommt zu keinen Überlauf. Natürlich vorrausgesetzt, man löscht ausreichend Texturen wieder. Ist vielleicht am besten mit dem Unterschied WinXP und Vista zu vergleichen. Wärend WinXP immer versucht nicht mehr benutzte Speicherbereiche frei zu machen, sammelt Vista immer fleissig die von langsamen Datenträgern (wie Festplatten) im schnellem RAM, bis dieser tatsächlich knapp wird. Der Vorteil: Lädt man eine Datei die zuvor frei gemacht wurde erneut, kann ggf. diese direkt aus dem RAM geholt werden, was die Sache beschleunigt. Ob das nun Absicht von B3D ist, oder doch nur ein Fehlverhalten, konnte ich mit meinen Methoden nicht feststellen da dieser Test dann doch zu umständlich gewesen wäre. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Elendil |
![]() Antworten mit Zitat ![]() |
---|---|---|
okey, danke für deine ausführliche antwort ![]() |
||
okeppelm |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
kann dieses problem mit dem obigen beschriebenen zusammenhängen?
https://www.blitzforum.de/foru...918#415918 |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich glaube nicht. Wenn Objekte einfach verschwinden, dann hast du eventuell zu viele davon. Singlesurface wäre hier eine mögliche Lösung zum Problem. Und wie in deinem Anfagspost beschrieben, sollte man Graphics3D nicht zum löschen des Bilrschirmes nutzen (siehe Beitrag von Holzchopf). Dieser Befehl gehört nur 1x (und eventuell ein weiteres mal, wenn der Nutzer in den Optionen die Auflösung ändert, ausgeführt). Besser ist jedoch, man setzt ein Vorabscreen im Fenstermodus mit den Einstellungen und erst wenn die Auflösung bestimmt wurde das Spiel gestartet wird. Danach sollte sich am besten die Auflösung gar nicht mehr ändern lassen. Es besteht durchaus ein Grund dafür, dass selbst sogenannte AAA-Spiele es nur selten zulassen die Auflösung während des Spieles zu ändern. Hinzu kommt, dass bestimmte Befehle einfach eine Zeit brauchen, bis diese komplett durchgelaufen sind (siehe: "garbage collection").
Ansonsten stelle dir eine Testumgebung zurecht in der genau die ganzen Sachen gemacht werden. Also Texturen und Objekte in großen Mengen laden und darstellen. Schalte dabei den Debugger ein. Habe ich zu meinem Thema auch gemacht und eben den Erkenntnisgewinn erreicht. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
okeppelm |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok danke hectic! ist dir dieser effekt noch nie begegnet?
single surfaces verwende ich schon, irgendwie trifft das ganze eher die großen texturen (2048x2048), komisch ist ja dass nach 1-2 minuten die texturen wieder erscheinen. es lassen sich ca. 4-5 graphics3d befehle durchführen, dann tritt es auf. dann werd' ich jetzt mal versuchen graphics3d weg zu lassen, clearworld dürfte dann wohl hoffentlich den job erledigen ohne jedes einzelne image mit freetexture zu löschen... |
||
okeppelm |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
nö das wars irgendwie nicht. scheint so als ob das programm im hintergrund irgendwie den speicher (vram oder ram?) auffüllt und dann am oberen ende an die grenzen stößt, der befehl renderworld dtl. langsamer (ca. -50%) ausgeführt wird, dann plötzlich ein paar große texturen verschwinden bevor es wieder beschleunigt. nach einiger zeit kommen diese texturen und gehen sie wieder... | ||
Eisbaer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Bin gerade am überlegen ob es nicht interessant wäre der blitzcc.exe einen Debug Code im entsprechenden Quellcode Bereich zu verpassen um das Direct auf BB ebene zu betrachten. | ||
Eigene Webseite:
http://www.eisbaer-studios.de |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group