Page 1 of 1

PictView: DDS: Nesprávné rozbalení R5G6B5 do R8G8B8 (DXT1-5)

Posted: 04 Feb 2008, 02:51
by zarevak
Tak už si zase hraji s DDS texturami a narazil jsem na problém PictView, který nesprávně převádí 16bit barvy do 24bitů. Pravděpodobně si PictView ulehčuje prácí a bity pouze posune.

Z R5G6B5 bílé: 1111 1111 1111 1111 se tak stane R8G8B8 světle zelená: 1111 1000 1111 1100 1111 1000 (R:248 G:252 B:248)

Je možné toto napravit, aby bílá bílou byla? 8)

Ve svých programech využívám toto doplnění nižších bitů, které funguje bez problémů:
byte GetR(int16 col)
{
int r = (col & 0xF800) >> 11;
return (r << 3) | (r >> 2);
}
byte GetG(int16 col)
{
int g = (col & 0x07E0) >> 5;
return (g << 2) | (g >> 4);
}
byte GetB(int16 col)
{
int b = (col & 0x001F);
return (b << 3) | (b >> 2);
}

Re: PictView: DDS: Nesprávné rozbalení R5G6B5 do R8G8B8 (DXT1-5)

Posted: 04 Feb 2008, 21:22
by Jan Patera
zarevak wrote:Tak už si zase hraji s DDS texturami a narazil jsem na problém PictView, který nesprávně převádí 16bit barvy do 24bitů. Pravděpodobně si PictView ulehčuje prácí a bity pouze posune.
Ano, pravdepodobne to tak je.