iOS 256 цветов (VGA) в RGB - PullRequest
       79

iOS 256 цветов (VGA) в RGB

1 голос
/ 29 января 2011

Я бы хотел преобразовать цвет VGA (256 цветов; 8 бит) в цвет RGB на iOS.

Можно ли это вычислить или мне нужно использовать таблицы цветов (используя CGColorSpaceCreateIndexed).

UIColor не поддерживает 256 цветов.

Спасибо:)

1 Ответ

1 голос
/ 29 января 2011

Где-то заголовок, который вы переносите, должен был установить палитру.На VGA 256 цветов отображаются через таблицу, которую программист предварительно настроил для преобразования их в 18-битный цвет RGB (с одинаковыми 6 битами на канал).Если вы запускаете оригинальный заголовок с помощью эмуляции, следите за записью в порты 0x3c6, 0x3c8 и 0x3c9 или обращениями к BIOS через int 10h, с ax = 0x1010 (для установки одного цвета) или 0x1012 (для установки диапазона).Если у вас есть исходный код, очевидно, ищите источник таблицы палитры.

В терминах рисования вы можете сохранить палитру самостоятельно, например, как массив в стиле C из 256 CGColorRefs, или использовать CGColorSpaceCreateIndexed какВы предлагаете (игнорируйте небольшую ошибку документации Apple; таблица цветов может содержать до 256 записей, а не до 255), вероятно, с растровым контекстом, чтобы просто передать свой буфер в CoreGraphics и забыть об этом.

Я ожидаюпереназначение будет выполняться на процессоре, поэтому, если это будет слишком дорого, подумайте об использовании GL ES 2.x и написании подходящего пиксельного шейдера - вы загрузите свое фактическое изображение, скажем, в виде яркости (то есть, одного канала) текстуры, плюс текстура 256x1, где цвет в каждой точке является записью палитры, затем напишите шейдер, который считывает из первой текстуры текущие координаты текстуры и использует это значение для индексации второй.

...