Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Mär 29, 2024 08:00

Foren-Übersicht » Sonstiges » Meinungen zu den Projekten
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 131 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4, 5, 6, 7 ... 9  Nächste
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 24, 2008 09:46 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jul 20, 2006 17:34
Beiträge: 52
Danke, das funktioniert jetzt reibungslos! :D

Dann ist mir noch was aufgefallen, diesmal aber nur für die 2.0.1:
Gleicher Code wie vorher, nur der Schluss sieht jetzt so aus:
Code:
  1.  
  2.   glbmp:=TglBitmap2d.Create;
  3.   glbmp.AssignFromBitmap(bitmap);
  4.   glBmp.AddAlphaFromBitmap(bitmap);
  5.   glbmp.GenTexture;
  6.  

Resultat: EAccessViolation in UnMapLuminanceAlpha, weil pData nil ist.

_________________
2+2=5
For extremely large values of two


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 24, 2008 10:44 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ja auch das ist ein Fehler. Bei den Umstellungen für die 2.0 habe ich auch den Datenpointer in Data umbenannt. Nur Dumm. Die Funktion AddAlphaFromglBitmap (die Einzige die einen Alphakanal hinzufügen darf) bekommt einen Pointer Data übergeben. Das ist ein Datenpointer für den Fall, dass man dort eine Funktion angeben will. Und innerhalb der Methode benutze ich dann glatt den falschen Pointer. Der ist dann per Default nil.

In TglBitmap.AddAlphaFromglBitmap werden die Variablen pDest und pDest2 zugewiesen. Die müssen Self.Data und nicht nur Data zugewiesen bekommen.
Code:
  1.     pDest := Self.Data;
  2.     pDest2 := Self.Data;


Evtl ändere ich da aber noch mal was um solche Sachen zukünftig zu vermeiden.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 04, 2009 13:44 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Hallo Lossy,
Ein kurzer Hinweis für die Verwendung der glBitmap (Version 2.0.0 BETA) unter Linux mit Lazarus:

Einige meiner Bilddateien haben Namen mit deutschen Umlauten, und ich arbeite intern mit Widestrings . Wenn man die Widestrings an die Methode LoadFromFile weitergibt, wird offenbar eine falsche Dekodierungsroutine verwendet, zumindest in meinem Fall (Ubuntu), denn das Bild kann nicht geladen werden. Ich habe den String überprüft, es stehen falsche Umaute drin; möglichweise habe ich irgendeine Lazarus-Einstellung falsch (?).

Wenn man den WideString-Dateinamen UTF8-Enkodiert übergibt, dann klappt es.

Ansonsten: alles OK.
Viele Grüße
Traude


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 04, 2009 16:06 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Hallo Traude.

Erst mal danke für den Hinweis. Allerdings weiß ich so spontan nicht ob und was ich dort tun soll. Denn die glBitmap arbeitet nur mit Strings. Also Ansistrings. Weil Delphi nur Ansistrings verwendet. Besonders bei TFileStream. Lazarus geht an solchen Stellen her und akzeptiert anstelle von AnsiStrings auch UTF-8 Strings. Ansistrings und UTF-8 unterscheiden sich lediglich in der Kodierung. Umlaute haben in Ansistrings einen Wert > 127. Buchstaben mit Werte > 127 kennzeichnen in UTF-8 aber Zeichen die sich über 2-4 Bytes erstrecken. Entsprechend sollten nicht nur die Umlaute falsch sein sondern auch mindestens 1 Zeichen danach verschwunden sein.

Wenn du jetzt WideStrings an eine Methode übergibst die mit Strings (AnsiStrings) arbeitet, dann konvertiert Delphi das normal selbständig und übergibt den konvertierten String an die Methode. Ich befürchte an der Stelle wird Lazarus deinen WideString in einen AnsiString umwandeln und der TFileStream wird den String wiederrum als UTF-8 interpretieren. An den Strings hängen so auch keine Informationen in welchem Format sie vorliegen.

Also ich denke entweder gibt es eine Einstellung mit der du die aktuelle Codepage einstellen kannst. Also damit die automatische Konvertierung von WideString zu UTF-8 klappt. Oder aber du müsstest die Strings als utf-8 übergeben. Sonst würde mir nichts einfallen was man da machen kann.


PS: Du solltest eventuell auch die aktuellste Version der glBitmap downloaden. In der 2.0.0 und 2.0.1 sind jeweils Fehler enthalten. Die BETA war sogar noch vor der 2.0.0.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 04, 2009 16:20 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Zitat:
Ich befürchte an der Stelle wird Lazarus deinen WideString in einen AnsiString umwandeln und der TFileStream wird den String wiederrum als UTF-8 interpretieren.

Ja, genau. Und wenn ich das vorher selber mache und dann ein UTF8Decode aufrufe - was ja eigentlich die richtigere Methode wäre - dann gibt es einen Crash weil der String von UTF8Decode offenbar falsch dekodiert wird. Warum, weiß ich nicht. Ich weiß nur, dass es bei mir so ist.

Du kannst hier gar nichts machen, das ist ein Fehler im Lazarus. Ich dachte nur, vielleicht stößt der eine oder andere drauf, und da ist es besser, wenn ich es Dir hier mal berichte.

Ich habe noch eine alte Version der glBitmap, ich weiß. Ich arbeite in den letzten Monaten mit Volldampf, und habe nicht so viel Zeit übrig. Alles, was im Augenblick funktioniert, steht ganz unten auf der Prioritätenliste. :wink:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 04, 2009 16:35 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Traude, du meinst doch sicherlich UTF8Encode um aus einem WideString einen UTF8String zu machen, oder? Decode macht aus UTF8 nämlich UCS-2 (= WideString). Liegt da vielleicht der Fehler oder war das gerade nur ein Tippfehler ausm Gedächtnis heraus?

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 04, 2009 17:10 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Hallo Lord Horazont.

(Tschuldigung, Off Topic: hast Du nicht jetzt Deine Prüfungen? Ich halte Dir die Daumen!)


Ich habe das ursprünglich so gemacht: Widestring ===> Typecast in AnsiString ===> Programm-Crash.

Dann habe ich folgende kompliziertere Methode genommen, weil ich irgendwie auf Ansistring fixiert war:
Widestring (nicht überprüfbar im Debugger) ==> UTF8Encode ===> UTF8String (dieser String ist lt. Debugger OK)
===> UTF8Decode ===> Ansistring (dieser ist laut Debugger falsch) ===> auch Programm-Crash

Wirklich geholfen hat nur:

Code:
  1. Var LocalFileName: WideString
  2. LoadFromFile(UTF8Encode(LocalFileName));    // "LoadFromFile" ist eine Methode der glBitmap


Aber wenn ich es mir jetzt recht überlege, verhält ist das vermutlich so: Lazarus arbeitet mit UTF8. Die glBitmap arbeitet mit dem Typ "String", der folglich hier auch ein UTF8-String ist, richtig? Und daher muss ich den Widestring mit UTF8Encode umwandeln. Daher ist es vermutlich gar kein Lazarus-Fehler, sondern nur meine eigener.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 04, 2009 18:39 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Hallo Traude,

UTF8Decode wandelt nicht in Ansistring sondern WideString um. Wenn du AnsiString haben willst, nimmst du UTF8ToAnsi.

UTF8Encode ist, wie du schon festgestellt hast, das mittel der Wahl. Lazarus arbeitet intern tatsächlich nur mit UTF8 und "überlistet" da an einer stelle, die etwas mit den Codepages der Quelltextdateien zu tun hat auch den FPC, damit er da garnicht erst rumpfuscht.

Gruß Lord Horazont
(@Prüfungen: ne, ich hab noch ein Jahr ;). Jetzt freu ich mich erstmal halbwegs entspannt (alle Klausuren für dieses Halbjahr sind durch) auf die Sommerferien in 1 1/2 monaten ;). Aber ich nehms einfach schonmal im Vorraus für nächstes Jahr )

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 19, 2009 17:32 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Hey Lossy eX,

Deine Bibliothek könnte mir gerade meinen Schülerhals gerettet haben. Ich hatte hier einige hundert png-files die ich zusammen in eine Datei flicken musste. Als Linuxer und Pascaller blieb mir nur Freepascal. Habe es mit fpimage ausprobiert, das hat pro PNG-Datei (ca. 300kB) > 10 Sekunden gebraucht zu laden. Das hätte noch die halbe nacht gedauert.
Mit der glBitmap und der libpng als backend (musste da allerdings ein wenig was umschreiben, damit das mit der png.pas von FPC läuft) sowie einer kleinen Methode, die ich hinzugefügt habe (kann ich alles public machen, ist nur leider seeehr spezialisiert), braucht der weniger als eine Minute um alle bilder zu laden und auf die größere Fläche zu zeichnen.

Also, Lossy, die glBitmap bietet auch ohne, dass man OpenGL verwenden will, eine super Schnittstelle zu allen möglichen Bild-Lade-Bibliotheken. Dankeschön hierfür :)

greetings

P.S.: Besonders hat die glBitmap fpimage geschlagen, weil ich damit auch Bitmaps von mehr als 15000x15000 erstellen und handeln kann, ohne, dass man groß was merkt. fpimage ist da mit Invalid Pointer Operations und Out of Memory eingeknickt (fpimage rechnet intern *immer* mit RGBA16).

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Okt 20, 2009 11:15 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also so etwas hört man doch echt gerne. :) Da ich ein fauler Mensch bin war ich auch grundsätzlich bemüht wirklich nur das zu machen was notwendig ist. Je nachdem was du machst kanns aber trotzdem mal länger dauern. Also Speziell die Konvertierungen sind zwar flexibel aber nicht so schnell wie man es hätte machen können. ;)

Zu deinen Änderungen. Du kannst die gerne mal posten und ich schau mir das dann mal an. Vielleicht kann ich dann auch direkt die Unterstützung für die PNG.pas einbauen. Wobei ich ja eh auch eine libpng auf meiner Webseite habe die auch direkt unterstützt wird. ;) Aber gut, wenn freepascal so etwas direkt auch anbietet wäre das irgendwo auch quatsch.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Okt 20, 2009 14:16 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Hi Lossy,

also, wie gesagt, sehr spezialisiert. Vorallem, da ich ja kaum Zeit hatte und noch dazu das ganze möglichst schnell arbeiten sollte. Die Kopierfunktion meckert also rum, wenn die Formate der Bitmaps ungleich RGBA8 ist ... aber das kann man recht einfach denke ich darauf erweitern, dass es so lange funktioniert, wie beide Bitmaps das gleiche Format haben. Muss ja eigentlich nur die Konstante 4 geändert werden. Wenn aber nicht, geht das ziehmlich fix.

Die libpng.pas auf deiner Website habe ich nicht gefunden - hätte mir vielleicht etwas Arbeit erspart, zumal in der png.pp von FPC die Konstanten fehlen ... Die habe ich dazugedichtet. Dennoch mit angehangen. Im Archiv sind jeweils die diffs gegen das Original (im Falle der glBitmap 2.0.2) sowie die veränderte Version.

Viel Spaß damit. Ich weiss nicht, obs sich lohnt, aber okay ;).

greetings


Dateianhänge:
glbitmap+png.zip [40.79 KiB]
397-mal heruntergeladen

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 24, 2009 16:36 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Okt 23, 2009 12:22
Beiträge: 26
Programmiersprache: Delphi(, C++)
Das habe ich dich zwar schon per Mail gefragt, aber vielleicht kann mir ja auch jemand anders helfen:

Ich benutze den Loader gl3ds in Delphi 2009. Das funktioniert auch solange gut, bis ich mal eine 3ds mit Texturen lade. Dann bekomme ich regelmäßig die Meldung "TGLBitmap.LoadFromStream - Couldn't load Stream. It's possible to be an unknown Streamtype.

Woran liegt das?

//Edit: Mir ist es jetzt mit etwas Hilfe gelungen, in der glBitmap.pas Delphi 2009 einzubinden. Nachdem ich alle Char-Probleme gelöst habe, bekomme ich nun den Fehler 'LoadJPG - unable to initialize libJPEG.' - Bitte helft mir! :?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 25, 2009 10:19 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Hallo,

via Mail sagtest du, dass du auch bei BMPs diese Meldung bekommst. Das sollte nicht sein. BMPs weren nativ von der glBitmap unterstützt. Genau so auch TGAs und DDS. Sollte so ein Problem weiter bestehen, dann sende mir bitte mal eine dieser Dateien zu. Meine Mail Adresse findest du auf meiner Webseite oder hier auf der Teamseite im Wiki.

JPEGs und PNGs sind zu komplex als das ich diese Formate nativ unterstützen werde. Entsprechend greife ich dabei auf externe Bibliotheken zurück. Da die Delphi Bibliotheken in Linux nicht unterstützt werden muss ich auch mehr als eine Möglichkeit unterstützen. Und dementsprechend musst du der glBitmap zu erst einmal sagen welche Bibliotheken auf deinem System benutzt werden können. Das geschiet über defines im oberen Teil der glBitmap. Unter der Versions history.

Für deinen Fall müsstest du folgende Defines aktivieren. GLB_DELPHI und GLB_DELPHI_JPEG. Die anderen Defines bitte durch einen Punkt deaktivieren. Also wieder auf den Ausganszustand bringen. Wenn du dann allerdings kompilierst dürftest du die Meldung "The unit JPEG won't work without delphi." bekommen. Das liegt leider daran, dass die glBitmap die Delphis 2009 und 2010 nicht kennt. Ist ein ziemlich dämliches Konstrukt. Ärgert mich selbst, dass ich das so gemacht habe. Um das zu umgehen gehe bitte in die Zeile 270 der Unit und füge die unterere Zeile in die Unit ein. Damit kannst die diese Delphiprüfung außer kraft setzen.
Code:
  1. {$ifdef GLB_DELPHI} // bestehende zeile
  2.   {$define GLB_DELPHI_COMPILER} // NEUE ZEILE
  3.   {$ifdef ver130} // bestehende Zeile


Anschließend solltest du in der Lage sein die JPEG lesen zu können. Und ja. Die Unit ist leider noch nicht so wirklich Delphi 2009 kompatibel. Wenn du da jetzt schon was angepasst hast, dann belass es erst einmal dabei. Ich hatte damit zwar auch schon mal angefangen aber hatte es noch nicht abgeschlossen. Sollte ich mal tun.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 26, 2009 13:19 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Okt 23, 2009 12:22
Beiträge: 26
Programmiersprache: Delphi(, C++)
Juhu! Endlich funktionieren auch Texturen bei mir! :D
Ich musste dafür die LibJPEG wieder deaktivieren und die von Delphi aktivieren, die glBitmap.pas speichern und mein Projekt schließen und wieder neu öffnen... :?
Habe nicht dran gedacht, dass Delphi anscheinend die *.pas-Dateien für die Projekte im Arbeitsspeicher behält und es deshalb keine Wirkung zeigt, wenn ich eine davon ändere.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glBitmap
BeitragVerfasst: Sa Dez 26, 2009 22:56 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jul 20, 2006 17:34
Beiträge: 52
Ich hätte da mal wieder ein Problem mit diesem in allen anderen Bereichen doch so hervorragenden Loader.
Und zwar verwende ich die glBitmap momentan mit Lazarus unter Windows. Und hierbei scheint es so zu sein, dass GetPixel an der Stelle an der ich es brauche nichts tut. Und zwar deshalb nicht - so viel hab ich rausgefunden - weil fGetPixelFunc nil ist.
Warum ist das so und wie kann man das ändern?

Falls es was ausmacht: Die Ursprungsdateien sind PNGs, als Textur benutzen funktioniert wunderbar und SaveToFile liefert auch eine vernünftige Datei.

_________________
2+2=5
For extremely large values of two


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 131 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4, 5, 6, 7 ... 9  Nächste
Foren-Übersicht » Sonstiges » Meinungen zu den Projekten


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 17 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.062s | 20 Queries | GZIP : On ]