я проинициализировал графику через ассемблер в 32, и 16 битах. Но в 16 битах цвета расположены(в смысле номериа) как-то странно. В 32 битах (режим 115h) при, допустим выводе на экран(в смысле проверки) цветов, а точнее перехода цвета из ,например, синего в красный она(программа) плавно вырисовывает все цвета, А в 16 битах (113h) она рисует переход, НО разбивает при этом область вывода на восьми пиксельные куски в нутри каждго из которых цвет идет от синего до красного(яркость зависит от области). ЧТО ДЕЛАТЬ ведь при выводе BMP в 16 дитах получается полная лажа???
PLEASE HELP!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ответ хотелось бы получить на мыло(e-mail для тех кто не знает, хотя вряд ли такие есть)
Значит, не уверен на все сто, потому что точно не помню, но скажу так:
в 16 битах 16 значимых единиц:
0000:0000 0000:0000
И они должны быть разбиты поровну на три части, чтобы создать три цветовые компоненты - красную, зелёную и синюю.
поделить 16 на три поровну нельзя, зато можно поделить 15 бит.
Получится пять бит. Тоесть на три компоненты уйдёт по пять бит на каждую - 15 бит. И ещё один остаётся.
Так вот насколько я помню зелёный цвет имеет не 5 бит а 6 бит, поскольку человеческий глаз наиболее чувствителен к изменениям в зелёном спектре, и следовательно для него наиболее всего необходимо дополнительное число тоновых градаций.
В общем получаем так:
RRRR:RGGG GGGB:BBBB
это в битах.
Следовательно красная и синяя компонента цвета может менять свои значения от 0 до 31, а зелёная от 0 до 63.
Комбинируя яркости компонент при помощи побитовых операций можно собрать 16битный цвет.
Вот функции, конвертирующие как туда, так и назад: