Поверхность SDL, где bpp = 1

6/4/14

Мне нужно (если возможно) создать поверхность в SDL 1.2, где bpp = 1. bpp — Bits Per Pixel.

Я работаю в 100% черно-белом режиме, размер поверхности настолько смехотворно велик, что моя физическая память сводит меня с ума.
У меня 4 ГБ оперативной памяти, и программа должна работать на бюджетных машинах, то есть 2-4 гигабайта.
Я использовал глубину цвета 8; Я полагаю, я реально трачу около 3/4 памяти?
Я сохраняю поверхность в виде файла .bmp, который должен поддерживать черно-белый формат, где bpp = 1.

Есть ли способ снизить bpp в SDL или я должен искать альтернативу?


6/5/14

Я столкнулся с узким местом на моей машине с разрешением около 39000×39000 пикселей при глубине цвета 8 бит. Поскольку SDL хранит поверхности в физической памяти, у меня заканчивается ОЗУ. Мощность процессора не проблема, так как я рендеринг неподвижного изображения.
Я надеюсь удвоить это разрешение, но я возьму то, что смогу получить.
Да, я могу потенциально разбить изображение на несколько файлов, но поскольку на нем будет напечатана лазерная печать в высоком разрешении, его придется открывать как один файл, в любом случае. Цель состоит в том, чтобы упаковать программу в единое целое, не требуя дополнительных шагов для сшивания и последующего преобразования изображений в другую программу.

SDL и c ++ в целом, похоже, не поддерживают однобитовые переменные (bool не включен), поэтому назначение значения цвета для пикселя в 1 бит на пиксель с использованием SDL мне не подходит.

3

Решение

Задача ещё не решена.

Другие решения