PNG Dateien unter Lazarus ohne OpBitmap

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Antworten
pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

PNG Dateien unter Lazarus ohne OpBitmap

Beitrag von pluto »

Hallo,
da ich gerne Andorra verwenden möchte, und die Grafiken als PNG vorliegen kann ich OpBitmap leider nicht verwenden.
Daher habe ich es mit "DevIL Header" versucht http://openil.sourceforge.net/" onclick="window.open(this.href);return false;
aber leider weiß ich nicht wie ich aus der einen Pas Datei eine SO Datei für Linux erzeugen kann.
Ich habe es über apt-get installiert, aber anscheind wurden hier auch keine entsprechenden Libs erzeugt.

Dann habe ich das noch mit "FreeImage Header"
http://freeimage.sourceforge.net/" onclick="window.open(this.href);return false;
Hier das gleiche Ergebnis

Der Kompiler findet einfach keine entsprechende LIBS.

Ich würde ja sonst einfach OpBitmap einbinden, habe ich auch schon versucht, aber das gleiche.
Sonst müsste ich die Grafiken umwandeln nach BMP.... Bis ich eine andere Lösung gefunden habe.

ich habe auch versucht die png Datei einzubinden, aber leider ohne erfolgt.

Ich vermute es auch nur das es an den PNG Bildern liegt. Da er genau da abricht wo die Image List geladen wird.
Das ist nur eine Zeile. Meine Narchforschungen habe ergeben das die ImageList Datei zwar geladen wird,
die Anzahl der Grafiken wird auch richtig ausgelesen, aber dann bricht er bei der ersten Grafik schon ab.
mit der Fehler Meldung Division durch 0.

Ich nehme mal, wie gesagt das es an den PNG Grafiken liegt, weil mit BMP Dateien hatte ich bisher noch keine Probleme.

PS: Ich mache aber trotzdem schon Fortschritte mit Andorra. Für 2D Spiele ist die Andorra gar nicht mal so schlecht. Und kann auch wesentlich mehr als DelphiX. Unter Linux wird einfach OpenGL verwenden und ab der nächsten Version auch SDL. Unter Windows kann dann noch DirectX verwendet werden.
Einige Probleme konnte ich schon lösen damit.
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: PNG Dateien unter Lazarus ohne OpBitmap

Beitrag von theo »

pluto hat geschrieben:Hallo,
da ich gerne Andorra verwenden möchte, und die Grafiken als PNG vorliegen kann ich OpBitmap leider nicht verwenden.
Wieso nicht? Bzw. die LCL kann doch auch PNG lesen. Was ist denn damit?

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ich weiß es nicht, wie gesagt es ist nur eine Vermutung.
Welche Dateien muss ich denn für PNG einbinden ? Evlt. liegt ich auch mit meiner Annahme daneben. Aber bisher deuten viele hinweise darauf.

Gibt es von PNG evlt. mehre Versionen ? wie bei BMP ?
Wenn ja, währe es möglich das die LCL nicht alle Versionen lesen kann ?
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

pluto hat geschrieben:Ich weiß es nicht, wie gesagt es ist nur eine Vermutung.
Welche Dateien muss ich denn für PNG einbinden ?
Müsste so gehen, mit Graphics.
pluto hat geschrieben: wäre es möglich das die LCL nicht alle Versionen lesen kann ?
Glaube ich eher nicht.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Leider immer noch nicht:
FORMS.PP] ExceptionOccurred
Sender=EDivByZero
Exception=Division by zero
Stack trace:
$B74C4B2F
TApplication.HandleException Division by zero
Stack trace:
$B74C4B2F
[FORMS.PP] ExceptionOccurred
Ich habe sie an erster stelle eingebunden.
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Was ist seltsamen finde ist das die Farbtiefe falsch ausgelesen wird von Andorra:

Code: Alles auswählen

procedure TAdTexture.LoadFromStream(AStream: TStream);
var c:char;
    bmp:TAdBitmap;
begin
  AStream.Read(c,1);
  if c = 'T' then
  begin
    bmp := TAdBitmap.Create;
    try
      bmp.LoadFromStream(AStream);
      AStream.Read(FBitDepth,1);
      writeln(Assigned(bmp));
      Texture.LoadFromBitmap(bmp, FParent.GetTextureParams(BitDepth));
 
     // writeln('TEST');
 
      bmp.Free;
    except
      bmp.Free;
      raise;
    end;
  end;
end;
71 wird ausgelesen, aber die Farbtiefe steht auf 32. Aber das anscheind nicht der Fehler.
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

So ich habe ein klein Test gemacht, es liegt anscheind doch nicht an den PNG Bildern sondern an dieser Zeile
SharedImageList.LoadFromFile('/home/pluto/Desktop/TD_Andorra2/Data/Tex/Textures.ail');

Das laden so geht:

Code: Alles auswählen

procedure LoadTex;
begin
  with SharedImageList.Add('0') do
    Texture.LoadGraphicFromFile('/home/pluto/Desktop/TD_Andorra2/Data/Tex2/5.png');
  //SharedImageList.LoadFromFile('/home/pluto/Desktop/TD_Andorra2/Data/Tex/Textures.ail');
end;
Also muss es an der Bilder liste Liegen. Aber ich habe auch schon nachgeforscht und nix gefunden.
Außer halt das die Farbtiefe Falsch ausgelesen wird.

Also ligt es nur an der
//SharedImageList.LoadFromFile('/home/pluto/Desktop/TD_Andorra2/Data/Tex/Textures.ail');
und NICHT an den PNG Bildern.
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

bmp.LoadFromStream(AStream);
AStream.Read(FBitDepth,1);
writeln(Assigned(bmp));

Verstehe nicht we du damit die Farbtiefe ausgibst ?!
Assigned gibt eigentlich doch nen Boolean zurück oder?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ja, davor hatte ich das mit der Farbtiefe gemacht. So wollte ich nur sicher gehen, das BMP nicht gleich nil ist.
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

pluto hat geschrieben:ja, davor hatte ich das mit der Farbtiefe gemacht. So wollte ich nur sicher gehen, das BMP nicht gleich nil ist.
Also ich kenne TADBitmap nicht, aber wie kommst du drauf, dass du damit

bmp.LoadFromStream(AStream);
AStream.Read(FBitDepth,1);

Irgenwas über die BitDepth erfährst?
Mal angenommen, dieser Wert wäre tatsächlich in Byte 1 des Streams den du einliest (was ich sehr bezweifle), dann müsstest du die Stream Postition zuerst auf 0 setzen.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ich kenne dieses Format nicht. Das ist das Imagelist Format von Andorra. Eine Grafikk Engine.
Ganze einfach das FBitDepth kling für mich wie die Farbtiefe. darum.

Aber die Farbtiefe ist egal. Das ist wie gesagt nicht der Fehler. Ich habe mal Testweisee die FBitDepth manuell auf 32 gesetzt, aber der Fehler kommt immer noch.

Das Manuelle Laden geht. Wie gesagt. Es ist eindeutig ein Fehler in der Imagelist-Verwaltung. Bzw. beim Laden einer Imagelist Datei.
Das sind Dateien die viele Grafiken beinhalten können, so eine art Grafik Archiv.

Wie gesagt, das stammt nicht von mir. Ich versuche nur den Fehler zu verstehen.
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

@Theo, er fummelt da anscheinend direkt im Andorra Code rum.

@Pluto, sag nicht so oft definitiv. Vielleicht verstehst du die Benutzung nur falsch.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Nein! Christian ! Der Code ist Idioten Sicher.
Wenn ich es direkt lade ohne Imagelist geht es ja. Nur wenn ich es über die ImageList funktion LoadFrom File mache dann geht es nicht.

Also muss es wohl an Andorra liegen. Oder noch an was anders.
Schau dir doch mal Andorra an.
MFG
Michael Springwald

Antworten