Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Опять графика (VESA), теперь формирование цвета 
:(
    Опции темы
vadims
Дата 10.6.2005, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 8.6.2005

Репутация: 2
Всего: 17



Задавал вопрос по графике – БОЛЬШОЕ СПАСИБО всем кто откликнулся – разобрался, сам могу консультировать.
Но нет счастья в жизни – не могу правильно сформировать код цвета, хоть тресни.

Беру рисунок из BMP файла (8 бит), как перекодировать эти значения для видеорежима 0x114, 800x600x64К,
тип модели памяти = 6 (непосредственные цвета)

Вроде простое решение Color = red<<11 | green<<5 | blue не помогает, тк при анализе палитры в BMP файле
оказалось, что что значения red,green,blue зачастую оказываются больше чем можно представить 5:6:5 битами.

Наверное я что-то фундаментально насчет цветов не понимаю.



--------------------
Cpu not found ! Press any key for software emulation.
PM MAIL   Вверх
oleg1973
Дата 10.6.2005, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



потому что палитра вмр сделана как 8:8:8 3 байта на цвет
ну а если тебе необходимо получить 16 бит на пиксель то что мешает сделать сразу в данном формате вмр? имхо удобней и быстрее чем на лету перекодировать


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
Дрон
Дата 10.6.2005, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 93



vadims
Значит нужно перекодировать, что делается достаточно просто
Код

red5 = red8 >> 3;
green6 = green8 >> 2;
blue5 = blue8 >> 3;

Вот и всё smile

Здесь red5,green6,blue5 это как раз те значения, которые нужно писать в память. А red8,green8,blue8 это то, что ты прочитал из bmp
Добавлено @ 11:21
Кстати, я сейчас точно не помню, но порядок следования компонент RGB в bmp файлах и в видео-памяти может и не совпадать, так что будь внимателен smile smile


--------------------
Да. Именно так.
PM   Вверх
oleg1973
Дата 10.6.2005, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



если просто сделать shift право то будет бяка
там насколько я помню есть некий алгоритм для этого


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
Дрон
Дата 10.6.2005, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 93



Цитата(oleg1973 @ 10.6.2005, 12:27)
если просто сделать shift право то будет бяка

А вот это уже интересней. Почему?



--------------------
Да. Именно так.
PM   Вверх
oleg1973
Дата 10.6.2005, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



не помню для 16 бит картинок
но для получения grayscale есть формула
grayValue = (int)(0.299*redValue + 0.587*greenValue + 0.114*blueValue);

для 16 бит есть нечто подобное


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
Дрон
Дата 10.6.2005, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 93



oleg1973
Для оттенков серого формулу я знаю...
А вот для 16 бит ни разу не слышал, хотя чем чёрт не шутит smile

Это сообщение отредактировал(а) Дрон - 10.6.2005, 11:39


--------------------
Да. Именно так.
PM   Вверх
vadims
Дата 10.6.2005, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 8.6.2005

Репутация: 2
Всего: 17



Только сейчас въехал, что более значимая часть r,g,b находиться как раз в старших битах, а я наоборот младшие использовал. Старость наверное smile))

Большое спасибо всем всем кто откликнулся!!!




--------------------
Cpu not found ! Press any key for software emulation.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0626 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.