Giddion Skrevet 17. oktober 2005 Del Skrevet 17. oktober 2005 Jeg holder på med et program som skal lese en dds fil det er en bilde fil som inneholder pixler i forskjelige formater. fks R 10 bit G 10 bit B 6 bit problemet er at det mange formater og det hadde vært fint å fått en felles måte å behandle alle formatene på hitil har jeg gjor det slik struct DXTR4G4B4 { unsigned short r : 4; unsigned short g : 4; unsigned short b : 4; inline void ToR8G8B8( const DXTR8G8B8& in ) { r = in.r >> 4; g = in.g >> 4; b = in.b >> 4; } }; prinsippet er at jeg skal convertere til felles formatet RGB på 8 bit hver og koverter verdiene med bitshift antall opp eller ned slik at jeg får 8 jeg vurderte å konvertere til float som felles variable, men vil helst ungå dette. takker for alle svar Lenke til kommentar
GeirGrusom Skrevet 19. oktober 2005 Del Skrevet 19. oktober 2005 vanligvis ser RGBA16 slik ut: r5 g6 (dette er grunnen til at Voodoo og GeForce 2 grafikk ser litt grønt ut i 16-bit) b5 eller r5 g5 r5 x1 det finnes også med 1 bit alpha (selvsagt) men det har jeg aldri sett før Men uansett må du multiplisere opp verdiene slik: 4 bit : x16 (16 x 16 = 256) 5 bit : x8 (32 x 8 = 256) 6 bit : x4 (64 x 4 = 256) for å få det til RGB24/32 hvorfor skriver du unsigned short? skrives det ikke bare slik? struct rgb16 { unsigned : 4 r; unsigned : 4 g; unsigned : 4 g; }; Lenke til kommentar
Giddion Skrevet 20. oktober 2005 Forfatter Del Skrevet 20. oktober 2005 egentlig skulle struct se slik ut struct DXTX4R4G4B4 { unsigned short : 4 x; unsigned short : 4 r; unsigned short : 4 g; unsigned short : 4 g; }; Jeg bruker short så antall bit ikke overstiger 16 siden det største formatet jeg skal lese er Rgb 16 * 4 og jeg syntes det blir lettere å finne feil siden compilatoren lyser rødt hvis jeg overfører den til noe mindre int (mulig bare en uvane jeg har ) for å ta hele historien så angies DDS pixlene av en 32 bit bitfelt som ser noe slik ut R 0x000000FF G 0x0000FF00 B 0x00FF0000 A 0xFF000000 og så en verdi som angir antall bit pr pixel så det jeg kikker etter en effektiv måte å kovertere rådataene til fks R8G8B8 uten å måtte hard kode vært enkelt format (som det er en god del av ) Lenke til kommentar
GeirGrusom Skrevet 21. oktober 2005 Del Skrevet 21. oktober 2005 (endret) tar jeg ikke helt feil er det også mulig at rød og blå er byttet om i ekte microsoft stil. Jeg har ingen forslag utenom hardkoding, desverre... Endret 21. oktober 2005 av GeirGrusom Lenke til kommentar
Giddion Skrevet 21. oktober 2005 Forfatter Del Skrevet 21. oktober 2005 Den er god og det er et format (i dds) som er rgb og et bgr og det sier veldig mye om antallet. Takker for hjelpen Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå