AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi glDeleteTextures gibt Speicher nicht frei
Thema durchsuchen
Ansicht
Themen-Optionen

glDeleteTextures gibt Speicher nicht frei

Ein Thema von EWeiss · begonnen am 23. Mai 2008 · letzter Beitrag vom 21. Jul 2008
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#21

Re: glDeleteTextures gibt Speicher nicht frei

  Alt 17. Jul 2008, 04:22
Mal so nebenbei, ich lösche die geladenen OpenGL-Texturen mit einem Einzeiler:

glDeleteTextures(TEXTURE_COUNT, @glTextures[0]); glTextures kann ein statyisches oder dyn. Array sein, welches die Texturen (die Adresse(n) derer) enthält.

Beispiel:

Delphi-Quellcode:
var
  glTextures: Array [0.. TEXTURE_COUNT - 1] of gluInt;

const
  TEXTURE_COUNT = 1;

  TEX_WHITE = 0;
  TEX_BLACK = 1;

//...
begin
  LoadTexture(TexturePath + 'Image1.jpg', glTextures[TEX_WHITE]);
  LoadTexture(TexturePath + 'Image2.jpg', glTextures[TEX_BLACK]);
end;
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#22

Re: glDeleteTextures gibt Speicher nicht frei

  Alt 17. Jul 2008, 04:39
Ich auch im normal fall

Delphi-Quellcode:
    if Assigned(QuadTexture) then
    begin
      glDeleteTextures(Length(QuadTexture), @QuadTexture[Low(QuadTexture)]);
      SetLength(QuadTexture, 0);
    end;
Das geht aber nicht in meiner LoadCover function
Dort dürfen nur Texturen gelöscht werden die <> wie NoCoverTexture beinhalten.
Daher das löschen in einer schleife.

Ist also Programm abhängig

EDIT:
Das hätte zur folge das meine NoCoverTexturen die nur einmal beim start geladen werden
als weiße leere Texture zurück bliebe

gruss Emil
  Mit Zitat antworten Zitat
Benutzerbild von Lossy eX
Lossy eX

Registriert seit: 7. Aug 2007
113 Beiträge
 
#23

Re: glDeleteTextures gibt Speicher nicht frei

  Alt 17. Jul 2008, 10:38
Ich glaube glDeleteTextures wird innerhlab des Treibers sowieso in einzelne Texturlöschbefehle verwandeln weswegen es da vermutlich kaum einen Unterschied geben sollte.

Zur glBitmap. Ja ab der 2.0 habe ich einiges umgestellt. Also unter anderem eine Linuxkompatibilität, die Unterstützung für SDL, SDL_image, libJPEG und libPNG. Allerdings wird die pngimage und die JPEG Implementation von Delphi weiterhin unterstützt. Die glBitmap ist ab der 2.0 von Hause aus relativ nackt. Es werden nur DDS, TGA und BMP (mittlerweile vollkommen intern geladen) unterstützt. Die Unterstützung für alle anderen Schnittstellen muss man zusätzlich aktivieren.

EWeiss: Für deinen Fall musst du folgende Defines aktivieren.
- GLB_DELPHI um die Unterstützung von Delphi TBitmaps zu aktivieren.
- GLB_DELPHI_JPEG um die JPEG Implementation von Delphi zu aktivieren
und evtl. noch folgendes define
- GLB_PNGIMAGE um die native delphipng/pngimage implementation zu aktivieren.
bzw das folgende define kannst du evtl auch noch aktivieren
- GLB_NO_NATIVE_GL deaktiviert den internen Header und benutzt dafür die dglOpenGL.pas

Vorteile durch die glBitmap: Auch wenn ich mir damit selber ein bisschen den Boden unter den Füßen wegziehe. Ich denke nicht, dass das Laden von JPEGs durch die glBitmap schneller sein wird. Denn die Delphi Implementation ist und bleibt langsam und nur weil jemand anders sie benutzt wird es nicht schneller gehen. Die libJPEG ist aber um einiges schneller als die Delphivariante. Nichts desto trotz dürfte die glBitmap einige Vorteile haben. Alleine dadurch, dass alles ausreichend getestet wurde und eine entsprechende Kompatibilität aufweist.
Wobei ich aber in jedem Fall zu den glBitmap eigenen Objekten raten würde. Dadurch, dass man die Objekte benutzt hat man viel mehr Kontrolle über die Texturen. Jetzt laden. Später eine Textur erstellen. Und es stehen einfach viel viel mehr features zur Verfügung. Ich habe es schon häufiger bereuht, dass ich die Methoden überhaupt eingebaut hatte.

littleDave: Ich würde dir evtl auch empfehlen die glBitmap auf den neusten Stand zu bringen. In der letzten Version habe ich TGAs noch mal erheblich beschleunigt. Bzw in der Version 1.8.11 hatte ich noch einen Fehler innerhalb der TGAs korrigiert. Der taucht aber nur bei recht wenigen Programmen auf.
Ich habe ja keine Vorurteile gegenüber Autofahrern ... aber Fahrer von BMW und Mercedes bestätigen diese regelmäßig.
Außerdem neue technologische Errungenschaften: Serienmäßig eingebaute Rechtsfahrsperre und der stromsparende Blinker.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#24

Re: glDeleteTextures gibt Speicher nicht frei

  Alt 17. Jul 2008, 10:58
Zitat:
EWeiss: Für deinen Fall musst du folgende Defines aktivieren.
- GLB_DELPHI um die Unterstützung von Delphi TBitmaps zu aktivieren.
- GLB_DELPHI_JPEG um die JPEG Implementation von Delphi zu aktivieren
und evtl. noch folgendes define
- GLB_PNGIMAGE um die native delphipng/pngimage implementation zu aktivieren.
bzw das folgende define kannst du evtl auch noch aktivieren
- GLB_NO_NATIVE_GL deaktiviert den internen Header und benutzt dafür die dglOpenGL.pas
Werde es auf jedenfall mal versuchen und schauen welche vorteile es bringt.
Zumindest sieht das teil jetzt schon mal so aus.

Extra BIG in *.png Format für die Feinheiten.
Der Font kann während der laufzeit geändert werden.

gruss Emil
Miniaturansicht angehängter Grafiken
unbenannt_131.png  
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#25

Re: glDeleteTextures gibt Speicher nicht frei

  Alt 21. Jul 2008, 15:47
Denke vorerst mal fertig

Lade es mal hoch zum testen und spielen wenn jemand interesse hat.

Vorraussetzung:
Im Album Ordner müssen zwei Bitmaps (zumindest das Cover) vorhanden sein damit der Covermode funktioniert
Cover und CDLabel *.jpg, oder *.bmp am besten im Format 512x512

Das Archiv nach Winamp extrahieren
Winamp starten das Plugin wählen und fertig.
Konfiguriert wird es mit einem rechten Mausklick auf der Vis
dann sollte sich ein Preferences Dialog öffnen da nachschauen was es so gibt.

Denke wohl das ihr damit klar kommt wenn es denn läuft

Klick auf ein Cover wenn vorhanden öffnet ein Album Info Fenster.
Aber nur wenn auch ein reales Cover vorhanden ist ansonsten geht nix auf.
Auf das Image klicken dann gibt es Infos von dem aktuell spielenden Album
Klickt man auf Play wird die Playliste von Winamp geleert und alle Titel vom aktuellen Album zur Playliste addiert.
So kann man sein lieblings Album hören.

Der nicht Covermode ermöglicht eine art slideshow abzuspielen
Alle Bilder im Screenmode Format bsp:640x480, 1024x768 usw.. die sich im CompDisk Ordner befinden
werden dann bei jeden neuen Titel überblendet und ein neues Bild angezeigt.

getestet mit Winamp 5.54

PS: Quelltext schicke ich später mal.

gruss Emil
Miniaturansicht angehängter Grafiken
wa_197.jpg   me_889.jpg  
Angehängte Dateien
Dateityp: rar vis_bassvis_186.rar (1,60 MB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#26

Re: glDeleteTextures gibt Speicher nicht frei

  Alt 21. Jul 2008, 16:28


Das hat doch jetzt nichts mit diesem Thread zu schaffen ?
Wenn es sich um ein Softwaretest im allgemeinen handelt mache dies bitte im Freewarethread bzw. Forum.

Gruss...
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#27

Re: glDeleteTextures gibt Speicher nicht frei

  Alt 21. Jul 2008, 17:03
Zitat von turboPASCAL:


Das hat doch jetzt nichts mit diesem Thread zu schaffen ?
Wenn es sich um ein Softwaretest im allgemeinen handelt mache dies bitte im Freewarethread bzw. Forum.

Gruss...
Wer diktiert das ?
Für mich ist der Thread gut sagt aus das mein problem mit dem Speicher behoben ist und das ergebniss getestet werden kann.
Ob es jetzt hier steht oder sonst wo ..
Ich sehe hier einen zusammenhang.

gruss Emil
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 08:01 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