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
Я столкнулся с узким местом на моей машине с разрешением около 39000x39000 пикселей при глубине цвета 8 бит. Поскольку SDL хранит поверхности в физической памяти, у меня заканчивается ОЗУ. Мощность процессора не проблема, так как я рендеринг неподвижного изображения. Я надеюсь удвоить это разрешение, но я возьму то, что смогу получить. Да, я могу потенциально разбить изображение на несколько файлов, но, поскольку на нем будет напечатана лазерная печать в высоком разрешении, позже, в любом случае, его придется открывать как один файл. Цель состоит в том, чтобы упаковать программу в единое целое, не требуя дополнительных шагов для сшивания и последующего преобразования изображений в другую программу.
SDL и C++ в целом, похоже, не поддерживают однобитовые переменные (bool не включен), поэтому назначение значения цвета для пикселя в 1 бит на пиксель с использованием SDL мне не подходит.