Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi 24/32-Bit - Was ist der Unterschied zu 16Bit? (https://www.delphipraxis.net/42508-24-32-bit-ist-der-unterschied-zu-16bit.html)

Pseudemys Nelsoni 20. Mär 2005 05:45


24/32-Bit - Was ist der Unterschied zu 16Bit?
 
Moin,

es sind ja praktisch 16,7~ Millionen Farben möglich (256*256*256)...

Wie sieht das denn eigentlich mit 24 bzw 32 Bit aus? Es kann doch eigentlich gar nicht mehr Farben geben oder?


NACHTRAG: Könnten Helligkeit/Kontrast eine Rolle spielen?

sECuRE 20. Mär 2005 06:03

Re: 24/32-Bit - Was ist der Unterschied zu 16Bit?
 
Hi,

also, soweit ich weiß, sind 24/32-Bit das selbe, nur werden eigentlich noch 8 Bit Header gespeichert, die man beim Zählen entweder weglässt (24 Bit) oder wenn man's genau nimmt dazuzählt (32 Bit).

Alle Angaben wie immer ohne Gewähr ;)

cu

Harald 20. Mär 2005 06:29

Re: 24/32-Bit - Was ist der Unterschied zu 16Bit?
 
Schau mal hier:

www.filmscanner.de

Da ist das ganz gut erklärt!

Gruß
Harald

alcaeus 20. Mär 2005 06:34

Re: 24/32-Bit - Was ist der Unterschied zu 16Bit?
 
Moin Pseudemys Nelsoni,

32-Bit-Farben sind normalerweise 24-Bit-Farben, bei denen 8 Bit fuer den Alpha-Kanal gespeichert werden. Sieh dir einfach die XP-Icons an, Das sind auch 32-Bit-Icons. Das Problem mit dem schwarzen Rand um Bilder in ImageLists, das hier immer wieder welche haben, kommt einfach daher, dass die Icons 32-Bit sind, die ImageList aber nur mit 24-Bit arbeitet, und der Alpha-Kanal dann eben fuer den unschoenen Rand sorgt.

Greetz
alcaeus

Pseudemys Nelsoni 20. Mär 2005 06:56

Re: 24/32-Bit - Was ist der Unterschied zu 16Bit?
 
Danke auch allen ;)

@Harald: guck ich mir gleich an.

@alcaeus: danke ;)

btw: Die imagelist unterstützt 32bit icons, SOFERN man das XP Manifest auf der Form hat. Ohne selbige sind dort schwarze Ränder.

rantanplan99 20. Mär 2005 06:59

Re: 24/32-Bit - Was ist der Unterschied zu 16Bit?
 
Also bei Grafikkarten ist der Unterschied zwischen 24 und 32 bit NICHT vorhanden. Man nimmt halt 32bit weil es einfacher zu adressieren ist, und damit schneller ist. Hat was mit der Registerbreite zu tun, es gibt Register mit 8, 16, und 32bit, aber keine mit 24bit. Also hat man bei Grafikkarten 32bit 'Fartiefe' eingeführt, bei denen aber nur 24bit genutzt werden, 8bit sind einfach unbenutzt.

Oder wie alcaeus schon richtig gesagt hat werden bei Dateiformaten die 'ungenutzten' 8 bit als Alpha-Kanal verwendet.

rantanplan

Muetze1 20. Mär 2005 11:50

Re: 24/32-Bit - Was ist der Unterschied zu 16Bit?
 
Moin!

Nicht wegen der Registerbreite sondern eher mit der Breite des Datenbusses. Da dieser 32 Bit gross ist und wenn dann noch die Daten an einer durch 4 teilbaren Adresse liegen, dann kann die CPU alle 4 Byte komplett mit einem Lesezyklus lesen. Wenn du nun aber einen 24 Bit Bild hast, dann liest die CPU (abhängig vom Modell) entweder einmalig 32 Bit und schmeisst ein Byte weg, oder er liest ein Word und danach nochmal ein Byte. Dieses sind dann schon 2 Lesezyklen. Die heutigen Prozessoren würden da die erste Methode nutzen. Nun aber zu dem Problem dahinter: Wenn du nun Anfang der Zeile mit Pixelwerten a 24 Bit stehst und diese Adresse ist aligned auf eine gerade 32 Bit Adresse (die die CPU perfekt in einem Zyklus lesen kann) liegt und jetzt den 2. Pixel lesen willst, dann ist Stress angesagt:

1. Pixel: gerade Adresse (32 Bit aligned) (Offset 0000)
2. Pixel: ungerade Adresse (Offset 0003)
3. Pixel: gerade Adresse (aber nicht 32 Bit aligned) (Offset 0006)
4. Pixel: ungerade Adresse (Offset 0009)
5. Pixel: gerade Adresse (32 Bit aligned) (Offset 0012)

Daher. Bei dem 2. und 4. Pixel muss der Prozessor noch 2 extra Lesezyklen einschieben um den Wert aus dem RAM zu lesen, beim 3. einen extra (2x 1 Word lesen) und nur den 1. und 5. Pixel kann er in einem Rutsch auslesen.

Bei den älteren Prozessoren waren Daten die nicht an eine gerade 32 Bit Adresse angepasst waren fast schon Performance-tödlich. Heutzutage sorgen Data Prefetch und Cache Management dafür, das der Cache die Daten sich schon vorher besorgt - aber trotzdem sind es Geschwindigkeitseinbussen.

Zu dem 4. Byte bei 32 Bit: Die normalen WinAPI Funktionen ist das 4. Byte egal. Die AlphaBlend() Funktion hingegen arbeitet schon damit und nutzt es als Alphachannel für die Pixel. DirectX wiederrum nutzt das 4. Byte auch - z.T: auch anders und nicht als Alphachannel... Hauptvorteil von 32 Bit: an gerade 32 Bit Adresse angelegte Daten. Selbst Windows sorgt dafür, das der erste Pixel
pro Zeile an einer 32 Bit gerade Adresse liegt bei den 32 Bit Bitmaps...

MfG
Muetze1


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz