Meine Laderoutine..
Delphi-Quellcode:
// is ShowCover
if ShowCover then
begin
if CoverPath <> '' then
begin
if CoverPath <> Path then
ScanDirectory(CoverPath, 'jpg, jpeg, png', False);
if aCovers.count > -1 then
begin
LstCoverPath.Clear;
LstQuadTexture.Clear;
end;
if (aCovers.count <= QuadCount) then
begin
for I := 0 to (aCovers.count - 1) do
begin
// extract Filename
aFileName := ExtractFileName(aCovers[I]);
// extract extension
aFileName := Copy(aFileName, 1, Length(aFileName) - Length(ExtractFileExt(aFileName)));
// uppercase
aFileName := AnsiUpperCase(aFileName);
Name := ExtractFileName(GetAlbumArtisName);
Name := Copy(Name, 1, Length(Name) - Length(ExtractFileExt(Name)));
if (aFileName = 'FOLDER') or (aFileName = Name) then
begin
if quadTexture[I] <> NoCoverTexture then
glDeleteTextures(1, @quadTexture[I]);
LoadTexture(aCovers[I], quadTexture[I], False);
LstQuadTexture.Add(IntToStr(quadTexture[I]));
LstCoverPath.Add(aCovers[I]);
end;
end; // end for i
transAlpha := 1.0;
if (LastAddCover = 0) or (LastAddCover = Round(NoCoverTexture)) then
Result := False;
if LstCoverPath.count <> 0 then
begin
InitAlbumIniPath;
SaveINI;
end;
exit; // exit For
end
else // else aCovers.count
begin
if (aCovers.count > QuadCount) then
begin
aCovers.Delete(0);
for I := 0 to (aCovers.count - 1) do
begin
// extract Filename
aFileName := ExtractFileName(aCovers[I]);
// without extension
aFileName := Copy(aFileName, 1, Length(aFileName) - Length(ExtractFileExt(aFileName)));
aFileName := AnsiUpperCase(aFileName);
Name := AnsiUpperCase(GetAlbumArtisName);
Name := Copy(Name, 1, Length(Name) - Length(ExtractFileExt(Name)));
if (aFileName = 'FOLDER') or (aFileName = Name) then
begin
if quadTexture[I] <> NoCoverTexture then
glDeleteTextures(1, @quadTexture[I + 1]);
LoadTexture(aCovers[I], quadTexture[I], False);
LstQuadTexture.Add(IntToStr(quadTexture[I]));
LstCoverPath.Add(aCovers[I]);
end;
end; // end for i
transAlpha := 1.0;
if LstCoverPath.count <> 0 then
begin
InitAlbumIniPath;
SaveINI;
end;
end; // end aCovers.count
end; // end else aCovers.count
end; // end CoverPath
end; //end ShowCover
Hat jemand eine Idee wie man das beschleunigen könnte.?
Das Problem ist das ich bei jeder neu eingelegten CD (Abspielen eines Albums)
Alle Covers neu eingelesen und zugeordnet werden müssen da ich das erste Cover des Karussells lösche um am ende ein neues zu addieren.
Aber nur dann wenn das Cover sich noch nicht im Karussell befindet.
Mir fällt im Moment keine schnellere Lösung ein.
Was die Anwendung blockt ist LoadTexture.
Den Prozess weiterlaufen lassen bringt keine Abhilfe weil man dann das ersetzen jedes Cover sehen kann.
gruss