Grafiikkalaitteen käyttöliittymä - Graphics Device Interface

Graphics Device Interface ( GDI ) on legacy osa Microsoft Windows tehtävänä on edustaa objekteja ja niiden lähettämiseksi tulostuslaitteita , kuten näytöt ja tulostimet . Windows -sovellukset käyttävät Windows -sovellusliittymää vuorovaikutuksessa GDI: n kanssa esimerkiksi viivojen ja käyrien piirtämiseen, fonttien renderointiin ja palettien käsittelyyn . Windows-käyttäjä alijärjestelmä käyttää GDI jotta tällainen käyttöliittymän elementit kuten ikkunanpuitteet ja valikot. Muissa järjestelmissä on komponentteja, jotka ovat samanlaisia ​​kuin GDI; Esimerkiksi: MacOS on kvartsi ja X Window System on X.Org Server .

GDI: n merkittävimmät edut suorempiin laitteiston käyttötapoihin verrattuna ovat kenties sen skaalausominaisuudet ja abstrakti esitys kohdelaitteista. GDI: tä käyttämällä on mahdollista piirtää useilla laitteilla, kuten näytöllä ja tulostimella, ja odottaa asianmukaista toistoa kussakin tapauksessa. Tämä ominaisuus on useimpien " Mitä näet on mitä saat " -sovellusten keskellä Microsoft Windowsissa.

Yksinkertaiset pelit, jotka eivät vaadi nopeaa grafiikan toistoa, voivat käyttää GDI: tä. Kuitenkin GDI on suhteellisen vaikea käyttää kehittynyttä animaatiota, puuttuu käsite synkronointia yksittäisten videoruutuja on näytönohjain , ja siitä puuttuu laitteisto rasterization 3D. Nykyaikaisissa peleissä käytetään yleensä DirectX- , Vulkan- tai OpenGL -pelejä .

Tekniset yksityiskohdat

GDI: ssä laitekonteksti (DC) määrittää tulostuslaitteen, esimerkiksi näytön tai tulostimen, tekstin ja kuvien määritteet. GDI ylläpitää todellista kontekstia. Lähdön luominen vaatii kahvan laiteyhteyteen (HDC). Lähdön luomisen jälkeen kahva voidaan vapauttaa.

GDI käyttää Bresenhamin viivapiirrosalgoritmia piirrettyjen viivojen piirtämiseen .

Versiohistoria

Varhaiset versiot

GDI oli läsnä Windowsin ensimmäisessä versiossa. MS-DOS-ohjelmat olivat tähän asti manipuloineet grafiikkalaitteistoa ohjelmistokatkoilla (joskus Video BIOSin kautta ) ja manipuloimalla suoraan videomuistia . Koodi kirjoitettu tällä tavalla odottaa, että se on ainoa käyttäjä näyttömuistia, joka ei ollut pitäviä on usean tehtävänä ympäristössä , kuten Windows. BYTE lehteä, joulukuussa 1983 keskusteltiin Microsoftin suunnitelmat järjestelmän lähtöön grafiikkaa sekä tulostimia ja näyttöjä samalla koodilla tulevassa ensimmäinen versio Windows.

Windows XP

Kun Windows XP otettiin käyttöön , GDI+ täydensi GDI: tä. GDI+on kirjoitettu kielellä C ++. Se lisää anti-aliased 2D -grafiikan, liukuluku-koordinaatit, liukuvärjäyksen, monimutkaisemman reitinhallinnan, luontaisen tuen nykyaikaisille grafiikkatiedostomuodoille, kuten JPEG ja PNG , ja tuen affinisten muunnosten koostumukselle 2D-näkymässä. GDI+ käyttää RGBA -arvoja värin esittämiseen. Näiden ominaisuuksien käyttö näkyy Windows XP -komponenteissa, kuten Microsoft Paint , Windows Picture and Fax Viewer , ohjattu valokuvien tulostustoiminto ja Omat kuvat -esityksen näytönsäästäjä. Niiden läsnäolo perusgrafiikkakerroksessa yksinkertaistaa suuresti vektorigrafiikkajärjestelmien, kuten Adobe Flashin tai SVG: n, toteutusta . Lisäksi .NET Framework tarjoaa hallitun käyttöliittymän GDI+: lle System.Drawing nimitilan kautta .

Vaikka GDI+ sisältyy Windows XP: hen ja sitä uudempiin versioihin, GDI+: n dynaaminen kirjasto voidaan myös toimittaa sovelluksen mukana ja käyttää vanhemmissa Windows -versioissa.

GDI+: n tekstinkäsittely- ja erottelukyvyttömyysominaisuuksien vuoksi CPU suorittaa tekstinmuodostuksen. Tulos on suuruusluokkaa hitaampi kuin laitteistokiihdytetty GDI. Chris Jackson julkaisi joitain testejä, jotka osoittivat, että hänen kirjoittamansa tekstinmuodostuskoodi voisi näyttää 99 000 kuvion sekuntia GDI: ssä, mutta sama koodi käyttämällä GDI+: ta tuotti 16 600 kuvitusta sekunnissa.

GDI+ on (tarkoitukseltaan ja rakenteeltaan) samanlainen kuin Applen QuickDraw GX -alijärjestelmä sekä avoimen lähdekoodin libart- ja Kairo- kirjastot.

Windows Vista

Windows Vistassa kaikki Windows-sovellukset, mukaan lukien GDI- ja GDI+ -sovellukset, toimivat uudessa yhdistelmäkoneessa, Desktop Window Manager (DWM), joka on laitteistokiihdytetty. Sellaisena GDI itse ei ole enää laitteistokiihdytetty. Sommittelutoimintojen luonteen vuoksi ikkunan liikkeet voivat olla nopeampia tai reagoivampia, koska sovelluksen ei tarvitse toistaa uudelleen taustalla olevaa sisältöä.

Windows 7

Windows 7 sisältää GDI -laitteistokiihdytyksen blitting -toimintoja varten Windows -näytönohjainmallissa v1.1 . Tämä parantaa GDI -suorituskykyä ja sallii DWM: n käyttää paikallista videomuistia kompostointiin, mikä vähentää järjestelmän muistin jalanjälkeä ja lisää grafiikkatoimintojen suorituskykyä. Useimmat primitiiviset GDI-toiminnot eivät edelleenkään ole laitteistokiihdytettyjä, toisin kuin Direct2D . GDI+ luottaa edelleen ohjelmistojen renderointiin Windows 7: ssä.

GDI -tulostimet

GDI -tulostin tai Winprinter (analoginen Winmodemille ) on tulostin, joka on suunniteltu vastaanottamaan tulostus isäntätietokoneesta, jossa on Windows. Isäntätietokone suorittaa kaiken tulostuskäsittelyn: GDI tekee sivusta bittikartan, jonka tulostinohjain vastaanottaa, käsittelee ja lähettää siihen liittyvään tulostimeen. GDI: n ja kuljettajan yhdistelmä on kaksisuuntainen; he saavat tulostimelta tietoja, kuten onko se valmis tulostamaan tai onko paperi loppu.

Tulostimet, jotka eivät luota GDI: hen, tarvitsevat laitteistoa, laiteohjelmistoa ja muistia sivujen esittämiseen, kun taas GDI -tulostin käyttää isäntätietokonetta tähän. Tulostin, jolla on oma ohjauskieli, voi kuitenkin vastaanottaa syötteitä mistä tahansa laitteesta, jolla on sopiva ohjain, kun taas GDI -tulostin vaatii tietokoneen, jossa on Windows. GDI -tulostimet voidaan asettaa verkon tietokoneiden saataville, jos ne on yhdistetty jaetuiksi tulostimiksi tietokoneessa, jossa on Windows ja jossa se on käytössä. Jotkut "yleiset" GDI -ohjaimet, kuten pnm2ppaon kirjoitettu; niiden tavoitteena on tehdä GDI-tulostimet yhteensopiviksi muiden kuin Windows-käyttöjärjestelmien, kuten FreeBSD , kanssa, mutta ne eivät tue kaikkia tulostimia.

Jotta Winprintersin ohjainten luominen olisi helpompaa, luotiin Microsoftin yleinen tulostinohjain . Tämän avulla tulostinvalmistajat voivat kirjoittaa yleisen tulostinkuvauksen (GPD) "miniohjaimet", jotka kuvaavat tulostimen ominaisuuksia ja komentojoukkoja selkeänä tekstinä sen sijaan, että joutuisivat kehittämään ytimen tilan ohjaimia.

Microsoft on siirtynyt pois tästä tulostusmallista, jossa on Open XML Paper Specification .

Rajoitukset

Jokainen ikkuna kuluttaa GDI -objekteja. Kun ikkunan monimutkaisuus kasvaa, lisäominaisuuksilla, kuten painikkeilla ja kuvilla, myös sen GDI -objektien käyttö kasvaa. Kun liian monta objektia on käytössä, Windows ei pysty piirtämään enää GDI -objekteja, mikä johtaa virheelliseen ohjelmistoon ja jäädytettyyn ohjelmaan. Monet sovellukset on myös koodattu väärin eivätkä vapauta GDI -objekteja käytön jälkeen, mikä lisää ongelmaa entisestään. Käytettävissä olevat GDI -objektit vaihtelevat Windows -versioittain: Windows 9x -käyttöjärjestelmässä oli enintään 1200 objektia; Windows 2000: ssa on enintään 16 384 objektia; ja Windows XP: ssä ja uudemmissa versioissa on määritettävissä oleva raja (rekisterin kautta), jonka oletusarvo on 10 000 objektia prosessia kohden (mutta teoreettinen enimmäismäärä 65 536 koko istunnon ajan). Windows 8 ja uudemmat nostavat GDI -objektien rajan 65 536: een käyttäjän kirjautumisistuntoa kohden.

Aikaisemmat Windows -versiot, kuten Windows 3.1 ja Windows 98, sisälsivät Resource Meter -ohjelman, jonka avulla käyttäjä voi seurata, kuinka suuri osa järjestelmän koko GDI -resursseista oli käytössä. Tämä resurssimittari kuluttaa itse GDI -objekteja. Uudemmat versiot, kuten Windows 2000 ja Windows XP, voivat raportoida GDI -objektien käytön kullekin ohjelmalle Tehtävienhallinnassa, mutta ne eivät voi kertoa käyttäjälle käytettävissä olevaa GDI -kapasiteettia.

Ylivirtaava GDI -kapasiteetti voi vaikuttaa itse Windowsiin, estää uusien ikkunoiden avautumisen, valikoiden näyttämisen ja hälytysruutujen näkymisen. Tilannetta voi olla vaikea selvittää ja se voi edellyttää järjestelmän pakotettua nollaamista, koska se estää järjestelmän ydinohjelmien toiminnan. Windows 8: ssa ja 8.1: ssä pakollinen uloskirjautuminen tapahtuu GDI-kapasiteetin ylivuoton seurauksena uudelleenkäynnistyksen sijaan.

Seuraaja

Direct2D on GDI: n ja GDI+: n seuraaja. Sen sisar, DirectWrite , korvaa Uniscriben . Ne toimitettiin Windows 7: n ja Windows Server 2008 R2: n kanssa, ja ne olivat saatavana Windows Vistalle ja Windows Server 2008: lle (Platform Update asennettu). Myöhemmin Microsoft kehitti Win2D: n , joka on ilmainen ja avoimen lähdekoodin GDI-tyyppinen luokkakirjasto. Win2D: n kohdeyleisö on kehittäjiä, jotka käyttävät C ++ -, C# - ja Visual Basic.NET -ohjelmaa Universal Windows Platform -sovellusten kehittämiseen .

Katso myös

Huomautuksia ja viitteitä

Ulkoiset linkit