Svet delovnih postaj se je s pojavom sistema X Window dramatièno spremenil. Zdaj po nekaj letih uporabe okenskih vmesnikov in aplikacij, lahko uporabniki raèunajo na trden vmesnik za vse vrste in modele raèunalnikov. Prav tako ne bo veè potrebno izdelovati razliènih verzij aplikacij za poganjanje na razliènih okenskih sistemih in uporabnikom se ne bo potrebno veè prilagajati razliènim vmesnikom na razlièni strojni opremi.
Sistem X Window omogoèa tudi "meduporabnike" aplikacije - aplikacije, ki teèejo na enem stroju in se prikaejo na zaslonu pri drugem uporabniku z drugo strojno opremo. Zdaj je mogoèe, da program teèe na streniku ali na streniku z bazo podatkov in prikazuje rezultate na eni od odaljenih delovnih postaj, brez kakernegakoli posega v spomin te delovne postaje oziroma raèunalnika.
Èeprav X omogoèa to prenoslijivost in "meduporabnost" za tekstovno bazirane in 2D grafiène aplikacije, ne zadostuje za enak napredek pri 3D grafiènih aplikacijah. 3D grafiène aplikacije so e vedno vezane na uporabo lastnih grafiènih sistemov ali sistemov, kot je npr. PHIGS, ki predvideva prenosljivost, vendar ni vedno "meduporabniki". Prodajalci PHIGS-a ali drugih 3D grafiènih sistemov prav tako potrebujejo naèin za prenos njihovega sistema v okolje X.
Potrebna je bila torej 3D raziritev za sistem X Window. Ta raziritev naj bi omogoèila 3D aplikacijam izvritev obljube X-a in bi priskrbela osnovo za visoko nivojske 3D grafiène sisteme in orodjarne. Iz tega sta se rodila PEX in knjinica PEXlib.
PEX je 3D raziritev za X. S tem je dodanih okrog 200 protokolarnih zahtev za definiranje in prikazovanje 3D slik. PEX predvideva vse splone posebnosti, ki jih najdemo v najbolj modernih 3D grafiènih sistemih in jih hkrati brez problemov integrira z X-om.
PEX grafièni model je le malo podoben 2D grafiènim modelom baziènega X-a. S PEX-om lahko definiramo modele v primernem koordinatnem sistemu, ga rotiramo, premikamo in poljubno poveèujemo. S transformacijami si ga ogledujemo z razliènih smeri (pogledi pod doloèenimi koti) in ga razlièno osvetlimo ali osenèimo.
Osnovni mehanizem X-a je protokol X. Pod X si veèina predstavlja knjinico Xlib, ki generira protokol X in strenik X, ki prevaja protokol X. Bistvo je torej res v protokolu X, ki definira X in mu omogoèa meduporabnost.
PEX je raziritev protokola X. Tako kot protokol X, tudi protokol PEX potuje med odjemalcem (klientom - aplikacijskim programom) in strenikom. Strenik vsebuje raziritev PEX, ki sprejema in prevaja protokol PEX ter izvruje zahteve PEX. Kot vedno pri X-u, lahko poganjamo odjemalec in strenik na enem ali veè strojih.
Èeprav je PEX definiran kot protokol, doloèa visoko kompatibilen grafièni sistem.
Prav tako kot aplikacije uporabljajo Xlib za kreiranje in poiljanje protokola X, uporabljajo PEXlib za kreiranje in poiljanje protokola PEX. Xlib in PEXlib imata nalogo, da za aplikacijo oblikujeta in poiljata zahtevke. Za uporabo PEXlib-a nam ni potrebno poznati protokola PEX. Razumeti je potrebno le kaj PEX omogoèa in funkcije PEXlib.
Slika 1 prikazuje kakna je povezava med aplikacijo, Xlib, PEXlib in strenikom X. Aplikacija je nad Xlib in PEXlib in klièe Xlib za opravljanje nalog z okni, kot je npr. vzpostavitev povezave s strenikom in kreiranje oken ter klièe PEXlib za risanje 3D podob. Zahtevki X in PEX potujejo do strenika pomeano na istem komunikacijskem vodu. Sprejemnik zahtevkov v streniku usmerja zahtevke X v jedro strenika in poilja zahtevke PEX k raziritvi PEX. Èe so uporabljene e druge raziritve in so njihovi zahtevki pomeani z zahtevki X in PEX, jih odpoiljalec v streniku usmeri v ustrezen del strenika.
PEX je kratica za "PHIGS Extension to X". To nam pove, da je namen PEX-a podpreti popularni 3D grafièni standard PHIGS. Vendar gre PEX v svoji uporabnosti preko PHIGS-a. Ime je tako bolj posledica preteklosti kot sedanjosti.
Èe pustimo pravilo PEXlib kot raziritev X-a ob strani, lahko gledamo nanj kot na preprosto 3D grafièno knjinico, tesno povezano z X-om. Grafiène knjinice so vmesni èlen med aplikacijo in zaslonsko napravo (ekranom), ki upravlja z zaslonom glede na ukaze iz aplikacije. Grafiène knjinice so lahko nizko ali visoko nivojske. Nizko nivojske knjinice upravljajo s piksli in lastnostmi zaslonske strojne opreme. Visoko nivojske knjinice pa upravljajo z abstraktnimi grafiènimi objekti in barvami. Nizko nivojski in od strojne opreme odvisni detajli so skriti.
PEXlib je visoko nivojska knjinica. Programer opisuje grafiène podobe s termini, ki so sorodni objektom in njihovim lastnostim. Detajli o izvritvi slike v oknu niso potrebni. PEXlib dovoljuje uporabniku, da reèe: "Narii iroko rdeèo èrto od prve do zadnje toèke." Kakrni koli zahtevki po opisovanju pikslov niso potrebni. Vsi detajli o izrisu slike so prepuèeni streniku PEX. Uporabnik samo doloèi geometrijo, poloaj in nekaj lastnosti objekta.
To pravilo je razirjeno na objekte, ki so bolj kompleksni kot npr. èrta in lastnosti, ki so manj opazne kot npr. barva. Recimo, da hoèemo sliko sobe polne pohitva. PEX dovoljuje uporabniku, da doloèi: kje so stene, obliko, lego in barvo pohitva, kakna je svetloba in od kje prihaja ter toèko, kjer je opazovalec.
PEX predvideva niz znanih grafiènih objektov imenovanih primitivi. Ti imajo lastnosti, ki kontrolirajo njihov poloaj, orientacijo, barvo in videz. S temi primitivi lahko definiramo preproste modele ali pa zapletene scene. Prikazanih je lahko veè pogledov na objekt. Posamezne dele scene lahko celo poenemo v gibanje.
PEX nudi dve poti za izris slike:
1.) Posredovanje posameznih primitivov na sceni PEXlib-u in prikaz
le-teh takoj za tem.
2.) Primitive shranimo v grafièno bazo in potem
nekje v programu ukaemo prikaz urejenih podatkov v bazi.
Po prvi metodi, ki jo splono imenujemo immediate mode, moramo poslati primitive PEX-u vsakiè, ko elimo spremembo ali ponovni prikaz slike, ker PEX nae primitive pozabi.
Po drugi metodi imenovani structure mode za ponovni prikaz slike ni potrebno ponovno poiljati primitivov, ampak le ukaemo ponoven prikaz primitivov shranjenih v grafièni bazi. Posamezne dele slike, ki se spremenijo le preuredimo v grafièni bazi. Primitive in njihove lastnosti, ki so shranjene v grafièni bazi imenujemo struktura.
Obe metodi imata doloèene prednosti in slabosti, tako da so posamezne aplikacije prilagojene eni ali drugi.
Structure mode je bolj primerna za programe CAD, ker se kreira grafièni model, ki se potem preureja in opazuje z razliènih pogledov.
Mona je tudi kombinirana uporaba immediate in structure mode.
PEX dolguje svoj izvor PHIGS-u. PHIGS je 3D grafièni standard, ki ga je sprejel ISO. Dostopen je od leta 1988 in je uporabljen v velikem tevilu aplikacij. Osnovna naloga PEX-a je podpora PHIGS-a v okolju X. To pa ni njegov edini cilj.
S strani aplikacije PHIGS stree istemu cilju kot PEXlib, s tem, da je vmesen èlen med aplikacijo in strenikom. To prikazuje slika 2. V okolju X PHIGS poilja protokol PEX streniku X in s tem dosee izvajanje funkcij PEX-a.
Z rojstvom knjinice PEXlib izvedbe PHIGS-a lahko uporabljajo PEXlib za poiljanje zahtevkov PEX.
Veèina zahtevkov PEX je bila oblikovana tako, da podpira identièno funkcionalnost v PHIGS-u. Tako PEXlib kot PHIGS uporabljata iste grafiène primitive in njihove lastnosti in si delita isti model za doloèitev scene. PEX pa gre tudi preko PHIGS-a, saj predvideva tudi immediate mode prikazovanje in boljo integracijo z X-om.
Ker je bil standard PHIGS doloèen pred X-om, v njem ni nièesar o X-u in tako posebno pravilo X-a za kontroliranje zaslona in vhodnih naprav ni upotevano. PHIGS doloèa lastne poti za kontrolo zaslona in vhodnih naprav. Poleg tega pa tudi naredi nekaj odloèitev, ki jih "razumsko prost" vmesnik prepusti aplikaciji. PHIGS ni opremljen kot raziritev Xlib-a, lahko pa bi bil dopolnjen tako, da bi se dobro razumel s X-om, s tem, da bi bili nekateri njegovi deli ponovno doloèeni kot raziritev za usluge X-u. To pa je sedaj, ko je PHIGS priznan in iroko uporabljen standard, skoraj nemogoèe.
PEX in PEXlib sta svea rezultata za 3D vmesnik. V nasprotju s prilagajanjem in gradnjo PHIGS-a sta zgrajena, kot da je 3D grafika sestavni del okenskega sistema. PEXlib uporablja obstojeèe mehanizme X-a: komunikacijski kanal, protokol zahtevkov in odgovorov in vrsto dogodkov. Izogiba se podrobnemu doloèanju in to raje prepusti aplikaciji, s tem da predvideva funkcije za to.
Kot 3D grafièna knjinica ima PEXlib veè tekmecev. Nekatere si bomo ogledali in navedli razlike glede na PEXlib.
Kot smo e dejali je PHIGS mednarodni standard uporabljen v velikem tevilu aplikacij. Od PEXlib se razlikuje po tem, da je na rahlo vijem nivoju kar pomeni, da doloèa doloèene detajle, ki jih PEXlib prepuèa uporabniku. Poleg tega pa PHIGS ni tako dobro usklajen z X-om in nima monosti immediate mode prikazovanja.
GL je 3D immediate mode grafièna knjinica. Èeprav je bil GL oblikovan za Silicon Graphics raèunalnike, je njegovo novo verzijo mogoèe uporabljati tudi na drugih raèunalnikih in je dostopna preko drugih prodajalcev programske opreme. GL se uporablja za simulacije in vizualne aplikacije, ki potrebujejo visoke zmonosti grafike.
GL podpira le immediate mode prikazovanje. Ne podpira pa urejanje podatkov v podatkovne baze in naknadno prikazovanje, kot je to predvideno v PEX-u.
Obstaja tudi protokol GL, ki je raziritev protokola X. Namen tega protokola je podpora knjinici GL.
Render Man je grafièna knjinica za izdelavo zelo kompleksnih in zelo realistiènih slik. Izdelana je za prikazovanje scen, ki zahtevajo irok razpon vizualnih efektov, kot so senèenje itd., ni pa izdelana za interaktivne aplikacije, kot je PEXlib. Render Man poganjajo na tevilnih razliènih raèunalnikih.
GKS je drug grafièen standard doloèen in priznan s strani ISO. Je predhodnik PHIGS-a in uporablja drugaène in stareje grafiène modele. S hierarhiènimi modeli ni tako dobro usklajen, kot sta usklajena PHIGS in PEX. Predvideva pa immediate mode grafiko.
Obstajata verziji 2D in 3D GKS-a. Izvedba 2D se veliko uporablja. Obstaja prilagojena knjinica 2D GKS za izdajo R5 sistema X Window.
Xlib je API (application programmer's interface - programski aplikacijski vmesnik) za protokol X. Vsebuje bazièno 2D grafièno sposobnost prilagajanja za sistemsko okensko programiranje. Xlib ne vsebuje veliko posebnosti potrebnih v grafièni knjinici, kot so transformacije, kompleksni primitivi itd. in tudi ni zmoen oblikovati kompleksnih objektov ali hierarhij.