LINUX.ORG.RU

цвета в иксах при 16bpp


0

0

как пакуются цвета в пикселе при 16bpp ? при 24 всё ясно rgb, по байту на цвет, проблем нет, а при 16 как ?

пробовал вычислять пиксель так

XColor xcol; Colormap cmap; int err; cmap = DefaultColormapOfScreen(DefaultScreenOfDisplay(display)); xcol.red = r; xcol.green = g; xcol.blue = b; xcol.flags = DoRed | DoGreen | DoBlue; err = XAllocColor(display, cmap, &xcol); printf("color err %i\n",err); err всегда 1, т.е без ошибки поидее после этого в xcol.pixel должен быть пиксел наиболее близкий по цвету, но там всегда 0

где я неправ

заранее спасибо

anonymous

глубина экрана говорит лишь о том СКОЛЬКО цветом может быть использовано, а не какие цвета

глубина это и есть размерность идентификатора цвета, для 16bpp это два байта, тоесть максимальный идентификатор может быть 65535.

что-бы по идентификатору цвета зафетчить его компоненты есть QueryColors

lg ★★
()

да блин, растановка переносов збилась, тока щас посмотрел, сори... дак и как мне быть-то ? XAllocColor почему неработает-то, всегда возвращает 1 и пиксель при этом всегда 0...

когда 24 бита на пиксел (4 байта) можно ручками в пиксел всё засувать и всё пашет, а при 16 битах на иксах как мне на них отрисовать картинку 24х битную ?

anonymous
()

XColor xcol; Colormap cmap; int err; cmap = DefaultColormapOfScreen(DefaultScreenOfDisplay(display)); xcol.red = r; xcol.green = g; xcol.blue = b; xcol.flags = DoRed | DoGreen | DoBlue; err = XAllocColor(display, cmap, &xcol); printf("color err %i\n",err);

сырец изначально выглядел так

anonymous
()

блин куда расстановка девается

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.