Автор Тема: tilemolester-палитра  (Прочитано 8247 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Онлайн paul_met

  • Супермодератор
  • Сообщений: 8119
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Re: tilemolester-палитра
« Ответ #30 : 02 Ноябрь 2012, 12:08:26 »
Цитата: HoRRoR
Затем упаковываем эти значения в два байта.

А каким образом упаковываем? Палитра у меня с прямым порядком байт. Модель возьмём RGB555.

Цитата: Mr2
Это как поездил на москвиче, теперь уже хочется ауди!? Тебе по делу или перед девками на районе выпендриваться? Можно добавить скрипт(список файлов и формат конвертирования), и будет лучше гуёвой!

Неуместное сравнение. Просто программа должна быть не только функциональной, но иметь достойный вид. Я понимаю, что некоторые делают в первую очередь для себя и чтобы она выполняла основную функцию - то бишь работала. Но если выкладывать прогу во всеобщее пользование, то она должна выглядеть достойно. Это  всего лишь моё мнение конечно.

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1618
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Re: tilemolester-палитра
« Ответ #31 : 02 Ноябрь 2012, 13:21:04 »
Но если выкладывать прогу во всеобщее пользование, то она должна выглядеть достойно. Это  всего лишь моё мнение конечно.
Если есть время на бантики и рюшечки, то конечно с ними лучше. Согласен. ;)

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: tilemolester-палитра
« Ответ #32 : 02 Ноябрь 2012, 13:50:53 »
Цитата
А каким образом упаковываем? Палитра у меня с прямым порядком байт. Модель возьмём RGB555.
Два байта - это 16 бит. Выставляем первые 5 бит в значение R, следующие - в G, затем в B, последний бит не используется. На C++ достаточно было бы создать структуру с битовыми полями:
struct RGB555
{
  unsigned short r: 5;
  unsigned short g: 5;
  unsigned short b: 5;
  unsigned short a: 1;
};

Иначе — с помощью операций сдвига и логического или.
unsigned short color = 0;
color = ((r & 0x1F) << 11) | ((g & 0x1F) << 6) | ((b & 0x1F) << 1);
Мог ошибиться. И не помню точно, какой бит не используется - старший или младший. В примере - младший.

Онлайн paul_met

  • Супермодератор
  • Сообщений: 8119
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Re: tilemolester-палитра
« Ответ #33 : 02 Ноябрь 2012, 17:48:04 »
HoRRoR
А если пойти от обратного? То, если я правильно понял получается:
Берем конечный результат в (hex): AA 28
----------------------------------------
Переводим в bin: 10101 01000 10100 0
----------------------------------------
Разбиваем по 5 бит (последний не учитываем):
R=10101
G=01000
B=10100
----------------------------------------
Переводим полученное в dec:
R=21
G=8
B=20
----------------------------------------
Делим на 31 и умножаем на 255 и получаем:
R=173
G=66
B=166
----------------------------------------
А начальное значение было:
R=64
G=136
B=80
----------------------------------------
Вывод: Не сходится.

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: tilemolester-палитра
« Ответ #34 : 02 Ноябрь 2012, 18:29:51 »
Либо это разные цвета, либо не та модель, либо не тот порядок байтов, либо ошибка в вычислениях. Попробуй по-разному, всего 6 вариантов:
1. RGB555, little endian, не используется старший бит
2. RGB555, little endian, не используется младший бит
3. RGB555, big endian, не используется старший бит
4. RGB555, big endian, не используется младший бит
5. RGB565, little endian
6. RGB565, big endian
Каждый из них даст совершенно разные результаты.

Либо вообще какая-то своя модель. Я ж не знаю, что там у тебя.
Добавлено позже:
norm(64, 136, 80) = (0.25, 0.53, 0.31)
(0.25, 0.53, 0.31) * 31 = (8, 17, 10)
bin(8, 17, 10) = (01000, 10001, 01010)

А 0xAA28 в RGB555 с младшим неиспользуемым битом  равно (1, 01010, 10001, 01000), т.е., видимо, модель ABGR1555, либо же я запутался с порядком.
« Последнее редактирование: 02 Ноябрь 2012, 18:41:10 от HoRRoR »

Онлайн paul_met

  • Супермодератор
  • Сообщений: 8119
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Re: tilemolester-палитра
« Ответ #35 : 05 Ноябрь 2012, 10:19:28 »
Цитата: HoRRoR
видимо, модель ABGR1555, либо же я запутался с порядком.

Точно, так и есть - это BGR.
« Последнее редактирование: 05 Ноябрь 2012, 10:34:11 от paul_met »