графоманские улучшения ФЛЕНОВ МИХАИЛ AKA HORRIFIC Спецвыпуск: Хакер, номер #064, стр. 064-024-3 качество — производительность Оптимизация графики — это достаточно интересный процесс, потому что здесь, помимо общих принципов оптимизации программ, применяется множество других приемов. Например, чтобы оптимизировать размер картинки, ее сжимают классическим архиватором. Размер файла уменьшится, но коэффициент сжатия зависит от самой картинки. Например, фотографии с большим количеством цветов сжимаются очень плохо. Человеческий глаз не способен различить два оттенка цвета, если в них отличается на единицу только одна составляющая. Получается, что если объединить близлежащие точки с небольшим отличием в оттенке и заменить их одним цветом, то файл сожмется больше, а пользователь ничего и не заметит. Такое сжатие называется компрессией с потерей качества. Тут нужно добиваться компромисса качества изображения и качества сжатия, что достигается выбором максимальной разницы между оттенками, которые можно объединить. Если будут объединены два цвета, разница которых незаметна человеческому глазу, то качество пострадает несильно. Однако если отличие заметно, то качество теряется. Где это используется? Конечно же, в файлах изображений, которые способна загружать программа. Чем меньше файл, тем быстрее он загружается в память с жесткого диска, который является самым слабым звеном компьютера. Далее процессор восстановит изображение, и если алгоритм сжатия несложный, то, может быть, на это потребуется меньше времени, чем на загрузку с диска несжатых данных. Количество используемых цветов влияет и на потребности в ресурсах. Чем больше цветов мы используем, тем больше памяти требуется для хранения изображений, поверхности и тем больше потребности в процессорном времени, чтобы копировать всю эту память между поверхностями. Предположим, у нас есть картинка размером 100x100 пикселей. Если используется глубина цвета в один байт, для хранения изображения понадобится 10 000 байт памяти. Такая картинка может содержать максимум 256 цветов (что очень мало), и поэтому желательно использовать минимум два байта, когда количество цветов будет равно 65 535. Получается достаточно для хранения более качественного изображения, но понадобится 20 000 байт памяти, что в два раза больше, соответственно, и копирование данных будет требовать от процессора в два раза больше ресурсов. Если же выбрать глубину цвета в 24 бита, то тут уже понадобится в три раза больше ресурсов, хотя количество цветов будет исчисляться 16 777 216. Вот и думай после такого, что выбрать: качество или скорость. Наша задача — выбрать оптимальный вариант, который позволит получить лучшее соотношение скорости и качества. |