Speicherproblem [erledigt]

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Elendil

Betreff: Speicherproblem [erledigt]

BeitragDo, Dez 09, 2010 21:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey,
Bin grad ein wenig am "Bug" fixen von unserem spiel. Bin jetzt aktuell grade dabei die Performance ein wenig zu erhöhen, da wir an gewissen Stellen nur 20 FPS haben und der Speicherverbrauch über 800 mb ist! Und das ist wirklich ein deutig zu viel =\. Habe dann mal ein wenig "nachgeforscht" und heraus gefunden, dass das an den erstellten maskierten texturen liegt, die ich auf die objekte anwende. Hier lade ich zuerst die Grundtextur (png) mit flag 2 und erstelle dann mit hilfe dieses codes:

BlitzBasic: [AUSKLAPPEN]

Function CreateMaskTexture(tex, cutOff = 0)


Local texWidth = TextureWidth(tex)
Local texHeight = TextureHeight(tex)
Local maskTex = CreateTexture(texWidth, texHeight, 5+8)
Local x, y, pixel, alpha

If cutOff>0 Then

;self defined cut off
LockBuffer TextureBuffer(maskTex)
LockBuffer TextureBuffer(tex)

For y = 0 To texWidth - 1
For x = 0 To texWidth - 1
pixel = ReadPixelFast(x,y,TextureBuffer(tex))
If pixel Shr 24 => cutOff Then
;set opaque
pixel = pixel Or $FF000000
Else
;set transparent
pixel = pixel And $00FFFFFF
EndIf
WritePixelFast x,y, pixel, TextureBuffer(maskTex)
Next
Next

xUnlockBuffer TextureBuffer(tex)
xUnlockBuffer TextureBuffer(maskTex)

Else
;simple CopyRect works fine
CopyRect 0,0, texWidth, texHeight, 0,0, TextureBuffer(tex), TextureBuffer(maskTex)
EndIf

Return maskTex

End Function


die maskierten texturen. Ohne die Texturen habe ich bei der gleichen Szene 50-60 FPS! Auch als ich noch DDS texturen auf die meshes anwendete (mach ich jetzt inzwischen nicht mehr, da es da probleme mit dem Zorder gab) lief es schneller. Das muss doch jetzt auch irgendwie mit der methode gehen, dass das etwas schneller läuft und vorallem nicht so enorm viel speicher verbraucht! Die Grundtexturen, welche ich zum erstellen der masked texturen benutze, gebe ich sofort nach benutzen wieder frei (vor der schleife nach dem erstellen der maskierten).
Hoffe ihr könnt mir da irgendwie helfen Smile Wäre echt super Smile
Lg Elendil


Edit1: Okey das mit dem Speicher nehme ich zurück, der scheint doch gleich groß zu bleiben oO aber zumindest das mit dem FPS verlust liegt an den Texturen.
  • Zuletzt bearbeitet von Elendil am Fr, Dez 10, 2010 21:02, insgesamt einmal bearbeitet

Eingeproggt

BeitragDo, Dez 09, 2010 21:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Also das Wichtigste:
Ich hoffe diese Funktion rufst du nur einmal beim Laden auf und nicht in einer Schleife!
Wenn wir das sicher gestellt haben dann fällt mir leider nur noch ein, "tex" am Ende der Funktion zu löschen, damit dieselbe Textur nicht 2mal im Speicher liegt (einmal Original, einmal modifiziert).

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Elendil

BeitragDo, Dez 09, 2010 21:49
Antworten mit Zitat
Benutzer-Profile anzeigen
neh, ich ruf sie nicht in ner schleife auf, dass wär mir sonst aufgefallen ^^
Und die Originale lösch ich alle wieder, nachdem die Texturen alle fertig modifiziert sind.
Lg Elendil

Elendil

BeitragFr, Dez 10, 2010 21:02
Antworten mit Zitat
Benutzer-Profile anzeigen
so, hab jetz nochma nachgeschaut: das mit dem speicher lag an ner anderen sache - hab ich gefixt.
un mit der FPS-Anzahl: hab jetz die original texturen verkleinert (also ina kleineren auflösung gespeichert), jetzt läuft s schneller =\ wollts eig so groß lassen, aber anshceind gehts wohl anders nich =\
Lg Elendil

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group