Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет dibr ([info]dibr)
@ 2011-01-16 16:54:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Внезапные простые решения
     Когда-то давно, когда по поверхности планеты бегали велосирапторы, а на компьютерах "Ай-Би-эМ Пи-Си" стоял MS-DOS, программисты уже писали программы "с окошками" (и, подозреваю, у каждого компьютерщика тех времён найдётся самописная "оконная библиотечка"). Окошки создавались тривиально - сохранением и последующим восстановлением области экрана под окном, благо в текстовом режиме места она занимает мало.
     Потом появился графический интерфейс (например в виде Windows), и выяснилось что "картинку под окном" сохранять нельзя, ибо некуда (обычной памяти мало, видеопамяти - очень мало, помню все эти расчёты при покупке видюхи "если поставить 1024х768 то получится всего 256 цветов, а в 800х600 уже можно позволить себе 64k цветов"), и для окошек надо что-то придумать. И придумали, гениально простую вещь - содержимое окна не сохранять вообще, для восстановления - попросить приложение, которому принадлежит окно, "перерисоваться". Кстати, до меня только сейчас дошло, почему в win1.0 были запрещены перекрывающиеся окна: они просто ещё не умели их перерисовывать!

     Быстро шли годы, медленнее проходили десятилетия. Типичный объем компьютерной памяти вырос до нескольких гигабайт, видеопамять тоже росла как на дрожжах: меньше полугига сейчас уже наверное и не найти (а в полгига, если что, можно примерно 60 раз целиком уложить экран 1920х1200). Я когда-то удивлялся, зачем видеокарте памяти в разы больше, чем может понадобиться для вывода картинки, потом привык. Параллельно, на деньги любителей 3D игр, производители видюх развивали вроде-бы-больше-никуда-не-нужное 3D (я про него вспоминал разве что глядя очередную киношку "через оверлей", причём вспоминал только когда "оверлей" глючил). Сама операционная система 3D особо не пользовала, а окошки при показе так и перерисовывались приложениями: в XP все признаки перерисовки при переключении (вроде "белых окон", подтормаживания и перерисовки "не всего и не того") были в полный рост.

     А потом как-то внезапно до софтописателей дошло. Что сейчас уже можно каждому окну выделить собственную область видеопамяти - пусть себе там рисует по потребности, а когда нужно его показать - достаточно просто сделать эту область видимой средствами видеокарты!
     И получился интерфейс Windows Aero (впервые появившийся в Vista, если я не путаю - лично с вистой не работал, сразу перешёл на 7). И внезапно оказалось, что если все окошки в готовом виде хранятся в видеопамяти, а видеокарта позволяет с ними произвольно оперировать, многие вещи становятся легче, проще и удобнее. Показ окна становится настолько дешевым действием, что его можно делать по событию вида "навелись мышом куда надо" (убрали мышь - убрали окно), можно дёшево показать "превью" окна (при этом оно будет "живым и шевелящимся", поскольку это и есть настоящее окно, только уменьшенное средствами видеокарты), можно так же дёшево делать всякую мелкую анимацию при исчезновении/появлении, фишки вроде полупрозрачности - и всё это без нагрузки на процессор, ибо всё делается видеокартой в реальном времени. Даже в превьюшках, показываемых в переключалке alt/tab, окна "шевелятся" - и оно и понятно, это ж теперь очень дешевое (по расходу процессора) действие!

     А я-то до недавнего времени считал что 3D в видеокартах - "неизбежное зло, и для UI от него пользы никакой". А в win1.0 негров линчевали окна перекрываться не могли. А оно вон какой внезапно прогресс. :-)
     Кстати, любопытно - как оно сейчас во всяких юниксах типа линукса. С одной стороны - памяти раньше всем не хватало, а значит "во времена оные" как-то извращаться приходилось всем. С другой стороны - если я правильно понимаю идеологию xserver/xclient, просить приложение перерисовываться по каждому чиху может оказаться накладным, перерисовываться желательно xserver'у (но "окно" хранить не в виде дампа, конечно, а более компактно), что резко упрощает идеологически переход к "все окна лежат в реальной видеопамяти".
     Я лично с линуксом давно дел не имел, поэтому не в курсе. Кто скажет - там уже так же как в Aero? А они это первыми придумали, или микрософт?


(Читать комментарии) - (Добавить комментарий)


[info]nil59@lj
2011-01-16 12:06 (ссылка)
в OSX - сразу было так, как в aero.

собственно - большая часть ламерских восторгов от маков как раз отсюда и проистекала...

(Ответить) (Ветвь дискуссии)


[info]dibr@lj
2011-01-16 12:34 (ссылка)
Эппл, вообще, молодцы - столько полезного напридумывали (или как минимум популяризовали). Жаль, в результате производители привыкли "бегать за эпплом": если эппл что-то сделал, значит "нам тоже нужно так же"...

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]nil59@lj
2011-01-16 13:00 (ссылка)
по моим ощущениям - до выхода эппла на большую арену другие производители вообще никуда не бегали, а тупо продавали нам продукты прошлого века.

(Ответить) (Уровень выше)


(Читать комментарии) -