Дмитрий Радищев (dibr) wrote,
Дмитрий Радищев
dibr

Внезапные простые решения

     Когда-то давно, когда по поверхности планеты бегали велосирапторы, а на компьютерах "Ай-Би-эМ Пи-Си" стоял 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? А они это первыми придумали, или микрософт?
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 29 comments