Stack Window Manager

A verem ablakkezelő ( lebegő ablakkezelőnek is nevezik ) egy olyan ablakkezelő, amely az összes ablakot meghatározott sorrendben rajzolja meg, lehetővé téve azok átfedését a festő algoritmusának nevezett technikával . Minden ablakkezelő, amely lehetővé teszi az átfedő ablakokat, de az összetett ablakkezelőket nem , összetett ablakkezelőnek minősül , bár lehetséges, hogy nem mindegyik használja pontosan ugyanazt a technikát. A többi ablakkezelőt, amely nem tekinthető verem ablakkezelőnek, keretablakkezelőknek [1] nevezzük , amelyek nem teszik lehetővé az ablakok átfedését.

A halmozott ablakkezelők egyenként rajzolva lehetővé teszik az ablakok átfedését. Az átfedés vagy újrafestés ( a művész algoritmusa szerint ) az egyes ablakok képként való megjelenítését jelenti, amelyet közvetlenül az asztal fölé és a már megrajzolt ablakok tetejére rajzolnak, hatékonyan törölve a lefedett területeket. A folyamat általában az asztalon kezdődik, és az egyes ablakok és a gyermekablakok hátulról előre történő megrajzolásával folytatódik, míg végül meg nem rajzolódik az előtér ablak. [2]

Az ablakok egymásra helyezésének sorrendjét halmozási sorrendnek nevezzük .

Korlátozások

Az átfedés viszonylag lassú folyamat, minden ablakot egyenként újra kell rajzolni, a leghátsótól és a legkülsőtől a legelső és legbelsőig. Sok verem ablakkezelő nem mindig rajzolja át a háttérablakokat. Mások meghatározhatják, hogy mikor kell minden ablakot újrarajzolni, mivel egyes alkalmazások átfedést kérnek, amikor a kimenetük megváltozik. Az újrarajzolás általában egy ablakkezelő függvény meghívásával történik, amely szelektíven újrarajzolja az ablakokat szükség szerint. Például, ha egy háttérablak előtérbe kerül, csak azt az ablakot kell újrarajzolni.

Az átfedések közismert hátránya, hogy az ablakok átfestésekor ténylegesen törlik a képernyő bármely részének korábbi tartalmát. Ezeket az ablakokat újra kell rajzolni, amikor előtérbe kerülnek, vagy ha egy részük látható. Amikor egy ablak megváltozik, vagy ha megváltozik a képernyőn elfoglalt helye, az ablakkezelő észleli ezt, és át tudja rendezni az összes ablakot, így minden ablakot újra kell rajzolni, és átadja az új megjelenését az ablakkezelőnek, mielőtt megrajzolná. . Ha egy alkalmazás nem válaszol, előfordulhat, hogy nem tudja újrarajzolni magát, ami néha azt eredményezi, hogy az ablakkeret belsejében lévő terület megőrzi a többi ablak képét, amikor előtérbe kerül. Ez a probléma általában a Windows XP és korábbi verzióiban, valamint néhány X Window System ablakkezelőben fordul elő.

Egy másik jelentős korlátozás, amely szinte az összes verem ablakkezelőt érinti, hogy gyakran erősen korlátozott abban, hogy a grafikus feldolgozó egység (GPU) milyen mértékben tudja felgyorsítani az interfészt , és ez ellen nagyon keveset tehetünk.

Hogyan kerüljük el a korlátozásokat

Számos technológiai fejlesztés képes volt csökkenteni vagy kiküszöbölni az átfedés egyes hiányosságait. A hardveres gyorsítás korlátozott elérhetőségének egyik lehetséges megoldása az, hogy egyetlen előtérbeli ablakot különleges esetként kezelünk, amely különbözik a többi ablaktól.

Ez nem mindig igényli az ablakkezelő újratervezését, mert az előtérben lévő ablak utoljára rajzolódik a képernyő egy ismert helyére, és nem takarja el más ablak. Ezért rajzolás után könnyen elkülöníthető a képernyőn. Például, mivel tudjuk, hogy hol van az előtérablak, amikor a képernyő bittérképe eléri a grafikus hardvert, az előtérablak által elfoglalt terület könnyen lecserélhető egy gyorsított textúrára.

Ha azonban az ablakkezelő frissített képet is tud adni az alkalmazásnak arról, hogyan nézett ki a képernyő az előtérablak megrajzolása előtt, de miután az összes többi ablakot már megrajzolták, további lehetőségek nyílnak meg. Ez lehetővé tenné, hogy az előtérben lévő egyetlen ablak áttetszőnek tűnjön, ha a képet textúraszűrőként használjuk a végső kimenetben. Ez lehetséges volt a Windows XP rendszerben sok NVidia GeForce grafikus kártyához mellékelt szoftverrel , valamint harmadik féltől, hardveres textúra-leképezés segítségével. [3]

Egy másik módszer az átfedések korlátainak csökkentésére a hardveres átfedés és a chromakey használata . Mivel a GPU tud rajzolni a kimenő képernyőre, a rendszer egy ismert színt tartalmazó ablakot rajzol, amely lehetővé teszi a videohardver számára, hogy meghatározza, hogy az ablak mely részei jelenjenek meg, és melyikre rajzoljon. Ez a módszer lehetővé teszi gyorsított videó és animáció hozzáadását a 3D és 2D ablakokhoz.

A teljes képernyős videót úgy is tekinthetjük, mint a fedvények korlátainak elkerülését. A teljes képernyős mód ideiglenesen felfüggeszti az ablakkezelés szükségességét , lehetővé téve az alkalmazások számára, hogy teljes hozzáférést kapjanak a grafikus kártyához. A Windows XP és korábbi gyorsított 3D-s játékok teljes mértékben erre a módszerre támaszkodtak, mivel ezeket a játékokat nem lehetett volna ablakos módban játszani. Ennek a módszernek azonban technikailag semmi köze az ablakkezelőhöz, és csak helyettesíti azt.

Hibrid ablakkezelők

Egyes ablakkezelők egészen másképp kezelhetik az előtérben lévő ablakot, ha közvetetten jelenítik meg, és a kimenetét elküldik a videokártyára, hogy hozzáadják a kimeneti bittérképhez . Bár ez a technika néhány verem ablakkezelőben megvalósítható, technikailag kombinálva van, az előtér ablakot és a képernyő bittérképét ugyanúgy kezelik, mint két ablakot egy összetett ablakkezelőben .

Ahogy korábban leírtuk, akkor lehet hozzáférni egy korábbi átfedési szakaszhoz, amikor az előtér ablak még nincs megrajzolva. Még ha később is rendereli és elküldi a grafikus kártyára, akkor is teljesen felülírhatja hardveresen egy kissé elavult verzióval, majd létrehozhat egy kompozitot anélkül, hogy az ablakot az eredeti helyére rajzolná. Ez lehetővé teszi, hogy az előtér ablak átlátszó vagy akár 3D legyen.

Sajnos az eredeti előtér ablakterületén kívüli objektumokkal való interakció is lehetetlen lehet, mert az ablakkezelő nem tudja meghatározni, hogy a felhasználó mit lát, és az ilyen egérkattintásokat továbbítja a képernyő ezen területeit elfoglaló programoknak. az utolsó átfedő esemény.

X Window System

Az X Window System számos ablakkezelője verem ablakfunkciókat biztosít:

Microsoft Windows

A Microsoft Windows 1.0 keret ablakkezelő segítségével jelenítette meg az ablakokat . A Windows 2.0-ban ezt egy egymásra rakható ablakkezelő váltotta fel, amely lehetővé tette az ablakok átfedését. A Microsoft a Windows XP előtt támogatta a halmozott ablakkezelőt, amely komoly korlátokat támasztott a hardveresen gyorsított tartalom normál ablakokban való megjelenítésére. Bár technikailag lehetséges volt a látványelemek egy részét harmadik féltől származó szoftverekkel létrehozni. [3] A Windows Vista rendszertől kezdődően a kompatibilis rendszereken alapértelmezés szerint az új összetett ablakkezelőt használják. [négy]

Történelem

Lásd még

Jegyzetek

  1. Útmutató: Ablakkezelő kiválasztása Linuxban . Engadget . Letöltve: 2019. augusztus 22. Az eredetiből archiválva : 2012. november 1..
  2. Festő algoritmusa . medialab.di.unipi.it . Letöltve: 2019. augusztus 22. Az eredetiből archiválva : 2019. július 18.
  3. 1 2 TweakGuides.com - Nvidia GeForce Tweak Guide (nem elérhető link) . www.tweakguides.com . Letöltve: 2019. augusztus 22. Az eredetiből archiválva : 2019. augusztus 22. 
  4. Desktop Window Manager – Windows alkalmazások . docs.microsoft.com . Letöltve: 2019. augusztus 22. Az eredetiből archiválva : 2019. május 4..
  5. A Xerox Alto . toastytech.com . Letöltve: 2019. augusztus 22. Az eredetiből archiválva : 2015. november 6..
  6. A Xerox csillag . toastytech.com . Letöltve: 2019. augusztus 22. Az eredetiből archiválva : 2011. július 18.
  7. GEM 1.1 . toastytech.com . Letöltve: 2019. augusztus 22. Az eredetiből archiválva : 2019. október 2.
  8. GEM 2.0 . toastytech.com . Letöltve: 2019. augusztus 22. Az eredetiből archiválva : 2019. október 1..

Linkek