Zitat:
Warum lädst und erzeugst du die Texturen für jedes Abspielen eines einzelnen Songs neu?
Tue ich ja nicht nur am Anfang irgendwie muss ich ja mein QuadTexture Array mit Daten füllen.
Ist das Album im Karussell enthalten wird nichts geladen da im Array QuadTextures vorhanden.
Warum?
Behalte doch einfach die
OpenGL-Texture während der Laufzeit des Plug-Ins?
Wenn ich das richtig verstehe, schmeißt du ja die Texturen weg, sobald die Grenze von (aCovers.count > QuadCount) überschritten ist.
Der Flaschenhals ist ja das übertragen des JPEG-Bildes auf das Bitmap-Bild.
Hier kannst du übrigens ein paar Zeilen einsparen:
Anstatt:
Delphi-Quellcode:
// Create Bitmap
BMP := TBitmap.Create;
BMP.pixelformat := pf32bit;
BMP.Width := JPG.Width;
BMP.Height := JPG.Height;
BMP.canvas.draw(0, 0, JPG); // Copy the JPEG onto the Bitmap
Kannst du auch das schreiben:
Delphi-Quellcode:
BMP := TBitmap.Create;
BMP.Pixelformat := pf32bit;
BMP.Assign(JPG);
Es würde viel zu lange dauern 1000 Alben beim Start in ein Dictionary einzulesen und dann zu vergleichen wenn ein neuer Titel abgespielt wird.
Musst ja nicht beim Start über den ganzen Root-Ordner suchen, hat auch keiner vorgeschlagen.
Das Vergleichen mit den neuen Titel/Albumpfad ist übrigens super schnell per TDictonary.
Ich tue nichts anderes nur die Texture abspeichern halte ich für unnötig.
Wäre doch aber sinnvoller, da das neuladen ja anscheinend deine Performance-Bremse ist.
Letztendlich ist das auch nur ein *.jpg oder anderer typ.
Warum soll ich diese dann abspeichern wenn sie schon im Albums Pfad vorhanden ist.
Ich glaube du hast das falsch verstanden. Nicht abspeichern im Sinne von "auf die Festplatte schreiben" sondern abspeichern im Sinne von: im Arbeitsspeicher halten! Siehe TDictionary.