Цветные компоненты 15 бит, сдвиг битов - PullRequest
0 голосов
/ 01 июня 2011

Хорошо, сдвиг битов все еще немного странен для меня.

У меня есть 16-битное значение. Первые 15 бит - это цвета, а последний - альфа.

Я сделал это с 24- и 32-битными цветами без проблем, поскольку они имеют хороший размер в байтах, но я не могу заставить его работать с 15/16 битами.

Это то, что я делал в прошлом, с 24/32 битными цветами

(m_colorValue >> RED_CHANNEL) & 0xFF;

Я пытаюсь разделить значение на 4 значения. 3 5-битные значения цвета и 1 альфа-значение. Я не знаю, какую маску мне следует использовать.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 01 июня 2011

Если я правильно понимаю:

red = (packed >> 0) & 0x1F;
green = (packed >> 5) & 0x1F;
blue = (packed >> 10) & 0x1F;
alpha = (packed >> 15) & 0x01;

упакованный должен быть лучше без знака, и я, вероятно, на заказ.

1 голос
/ 01 июня 2011

Ваш вопрос довольно расплывчатый, но если вы пытаетесь извлечь отдельные компоненты цвета из RGB1555, это должно помочь:

unsigned short color;

const unsigned int 
    a = color & 0x8000, 
    r = color & 0x7C00, 
    g = color & 0x03E0, 
    b = color & 0x1F; 
1 голос
/ 01 июня 2011

использовать битовое смещение.

ushort s;
ushort b= s&0x1F // first five bits
ushort g= (s>>5)&0x1F // second five bits

и т.д ...

...