Darstellungsfehler bei BMP's ?

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

Danilo hat geschrieben:[EDIT]
NicTheQuick hat Recht. Ist ein 32-bit BMP, und war früher
meist unüblich. Laut MSDN -> BITMAPINFOHEADER ist
das aber korrekt, d.h. 32-bit BMP sind offiziell erlaubt und
dokumentiert. Das erklärt auch warum es Größer ist als
dann mit 24-bit.
Scheinbar also ein PB-Problem mit 32-bit-BMP?
Zur Überprüfung an Fred gemeldet. :D
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Benutzeravatar
Lars
Beiträge: 347
Registriert: 31.08.2004 23:53
Wohnort: Shanghai
Kontaktdaten:

Beitrag von Lars »

NicTheQuick hat geschrieben:Am Anfang steht 654 mal die Bytefolge [c]'0000 00FF'[/c]. Auch weiterhin, wo anscheinend die nicht-schwarzen Bilddaten kommen, steht an vierter Stelle jedesmal dieses 'FF'.
Das ist eigentlich ziemlich einfach zu erklären. Bei einer 24 Bit BMP hat ja
ein Punkt 24 Bit = 1 Byte Rot, 1 Byte Grün, 1 Byte Blau. In einer 32 Bit
BMP dagegen hat jeder Pixel noch einen Alphawert, der natürlich auch bei
schwarzen Punkten 100% Deckkraft angibt.
Lars
The only problem with troubleshooting is, that sometimes the trouble shoots back.
P4 2,6Ghz, 512MB RAM, GeForce 6200, WinXP Pro SP2, PB V3.94
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8812
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

@Lars: Stimmt, du hast Recht. Ich hatte irgendwie im Kopf, dass der Alphawert 00 volle Deckkraft hat. LOL :lol:
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag von GPI »

NicTheQuick hat geschrieben:@Lars: Stimmt, du hast Recht. Ich hatte irgendwie im Kopf, dass der Alphawert 00 volle Deckkraft hat. LOL :lol:
Auslegungssache. Ist es jetzt Deckkraft oder Transparents :)
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
sbehrens
Beiträge: 274
Registriert: 08.09.2004 18:41
Kontaktdaten:

Beitrag von sbehrens »

Nochmal vielen Dank für eure Antworten, jetzt verstehe ich das mit dem 24- und 32-Bit (Ich hatte übrigens den Screen im 32-Bit Modus, habe es jetzt aber auf 24-Bit umgestellt, da 32-Bit-Screens ohne 32-Bit Bitmaps sinnlos sind.)
Kann man dann eigentlich, indem man den Alphawert der Pixel, die durchsichtig seien sollen, auf '00' setzt, einen Screen im 32-Bit Modus öffnen und die Sprites werden da wo der Alphawert auf '00' steht durchsichtig? D.h. man könnte (vorausgesetzt der 32-Bit Modus funzt auch richtig) theoretisch die Sprites mit [c]DisplaySprite()[/c] anstatt mit [c]DisplayTransparentSprite()[/c] darstellen, und trotzdem haben sie eine Transparenz. :?: (Ich hoffe das haben alle verstanden)
Jetzt ist mir noch eine Sache aufgefallen:
Mein Freund hat mir zB. auch die HalfBoss.bmp geschickt, diese Pic ist aber 100x100 Pixel groß.
http://de.geocities.com/basti_2004/halfboss.bmp (~40KB 32-Bit)
http://de.geocities.com/basti_2004/halfboss_mod.bmp (~30KB 24-Bit)
Der Unterschied zu den 50x50 Pixel großen Pics besteht darin; das hier auch das 32-Bit Pic funzt?!?! Sehr, sehr seltsam.

mfG
Basti

//Edit: Thx @Nic
Zuletzt geändert von sbehrens am 10.11.2004 20:18, insgesamt 1-mal geändert.
enjoy life... while you can!
Benutzeravatar
Lars
Beiträge: 347
Registriert: 31.08.2004 23:53
Wohnort: Shanghai
Kontaktdaten:

Beitrag von Lars »

ptI hat geschrieben:Kann man dann eigentlich, indem man den Alphawert der Pixel, die durchsichtig seien sollen, auf '00' setzt, einen Screen im 32-Bit Modus öffnen und die Sprites werden da wo der Alphawert auf '00' steht durchsichtig?
Ich fürchte nicht, da PB den Alphakanal nicht mag. Vielleicht später mal :D
Lars
The only problem with troubleshooting is, that sometimes the trouble shoots back.
P4 2,6Ghz, 512MB RAM, GeForce 6200, WinXP Pro SP2, PB V3.94
Robert Wünsche
Beiträge: 243
Registriert: 29.08.2004 12:46
Wohnort: Irgendwo im nirgendwo
Kontaktdaten:

Beitrag von Robert Wünsche »

Kann ja mal einer dazuprogen !
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8812
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

@ptI: Bleib lieber bei dem 32-Bit-Screen-Modus. Es gibt Grafikkarten, die den 24-Bit-Modus nicht besonders mögen und dann auch einiges langsamer sind als bei 16 Bit oder 32 Bit. Die heutigen Grafikkarten sind sowieso meist eher auf 32 Bit optimiert und sind dort wohl auch am schnellsten.
Das hängt vielleicht auch damit zusammen, dass ungerne in 3-Byte-Schritten geschrieben wird, sondern viel lieber in 2- oder 4-Byte-Schritten.

Naja, aber das ist auch nur eine wage Vermutung...
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag von GPI »

Das hängt vielleicht auch damit zusammen, dass ungerne in 3-Byte-Schritten geschrieben wird, sondern viel lieber in 2- oder 4-Byte-Schritten.

Naja, aber das ist auch nur eine wage Vermutung...
Vermutlich die richtige Vermutung. Eine Mulitplikation mal 2 oder 4 ist sehr schnell, da man nur bitweise verschieben muß. Bei mal 3 muß man kompliziert rechnen.

Die Berechnungen sind notwendig um die Manipulation der Adresse für die Pixel zu bestimmen.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

Zusatzfrage:

gibt es eine möglichkeit, 24bit bmps als 16bit zu speichern?

ich will speicherplatz sparen, da ich viele, viiieeeele sprites verwenden will...

[EDIT]

oder kann ich irgentwie, irgentwomit den alpha-kanal ordentlich einbinden und editieren ? :freak:
Antworten