21
Računarska grafika Šifra: 5130 (5535) Elektronski fakultet Niš Grafički API

3.Graficki API

Embed Size (px)

DESCRIPTION

Racunarska grafika graficki api predavanje

Citation preview

Page 1: 3.Graficki API

Računarska grafikaŠifra: 5130 (5535)

Elektronski fakultet Niš

Grafički API

Page 2: 3.Graficki API

Elektronski fakultet u Nišu

Definicija

Grafički API (Application Programming Interface) je skup grafičkih funkcija organizovanih u jednu ili više grafičkih biblioteka koje predstavljaju interfejs između aplikacionog programa i grafičkog sistema.

Page 3: 3.Graficki API

Elektronski fakultet u Nišu

GAPI

Programer “vidi” samo GAPI dok su detalji o hardverskoj i softverskoj implementaciji sadržani u grafičkoj biblioteci

Aplikacioni

program

GAPI Grafički sistem (HW)

Page 4: 3.Graficki API

Elektronski fakultet u Nišu

GAPI

Korišćenje GAPI-ja omogućava da se grafički sistem posmatra kao “crna kutija”

Aplikacioni

program

Grafički sistem (HW)

Pozivi funkcija

Podaci

Page 5: 3.Graficki API

Elektronski fakultet u Nišu

Istorijski pregled

Prvi GAPI je nastao 1973 godine. IFIPS (InternationalFederation of Information Processing System) jeformirao dve komisije koje su realizovale GKS(Graphical Kernel System).

Ovaj sistem je standardizovan najpre kao ISO a zatimkao ANSI standard (1980).

Kasniji pokušaj da se proširi na 3D je bio neuspešan.

Page 6: 3.Graficki API

Elektronski fakultet u Nišu

Istorijski pregled

PHIGS (Programmers Hierarchycal GraphicsSystem) – ovaj standardni GAPI je nastao poduticajem CAD programera i korisnika.

X Windows - sistem razvijen od DEC-a / MIT-a(prvi je imao client-server arhitekturu u radu sagrafikom).

PEX - jedan od neuspelih pokušaja da se spojiPHIGS i X Windows (pretežak je zakorišćenje).

Page 7: 3.Graficki API

Elektronski fakultet u Nišu

Istorijski pregled

1982 godine Silicon Graphics (SGI) po prvi putimplementira protočnu obradu podataka(pipeline) kod hardvera, što je predstavljalorevoluciju u oblasti razvoja grafičkih radnihstanica. Za pristup hardveru je korišćena GLbiblioteka. Ona je omogućila relativnojednostavno programiranje 3D interaktivnihaplikacija.

Page 8: 3.Graficki API

Elektronski fakultet u Nišu

Istorijski pregled

1992. godine nastaje OpenGL kao GAPI koji jenezavisan od platforme. Ovo je bila revolucija u sveturačunarske grafike.

Evoluciju OpenGL-a kontroliše ARB (ArchitecturalReview Board) grupa. Ova grupa je sastavljena odvodećih kompanija u oblasti računarstva i računarskegrafike: Microsoft, Silicon Graphics, NVidia, HP, IBM...

Trenutna verzija OpenGL-a je 4.2.

Page 9: 3.Graficki API

Elektronski fakultet u Nišu

Funkcije GAPI-ja

Svaki dobar GAPI mora da ima sledeće grupe funkcija:

1.Funkcije za primitive - Grafičke primitive su objektinajnižeg nivoa. To su osnovni entiteti koje grafičkisistem može da prikaže (tačka, linija, poligon, piksel,tekst,...)

2.Funkcije za kontrolu atributa primitiva - Primitivedefinišu šta će se nacrtati, a njihovi atributi kako će senacrtati (boja i debljina linije, tip linije,...).

Page 10: 3.Graficki API

Elektronski fakultet u Nišu

Funkcije GAPI-ja

3. Funkcije pogleda - omogućavaju formiranje 2D prikaza na osnovu 3D objekta (koji objekti iz realnog 3D sveta će biti uključeni u 2D prikaz i na koji način).

4. Funkcije za geometrijske transformacije -Omogućavaju 2D i 3D geometrijske transformacije nad objektima (translacija, rotacija, skaliranje,...).

5. Funkcije za ulaz - Omogućavaju korisnicima da vrše unos podataka u aplikaciju putem delova grafičkog sistema (tastatura, miš, tabla, skener,...).

Page 11: 3.Graficki API

Elektronski fakultet u Nišu

Funkcije GAPI-ja

6. Kontrolne funkcije - Omogućavaju komunikaciju sa operativnim sistemom pod kojim se grafička aplikacija izvršava (inicijalizacija, kontrola prozora,...).

7. Ispitivačke funkcije - Omogućavaju dobijanje informacija o karakteristikama pojedinih komponenata grafičkog sistema (broj boja koje monitor može da prikaže, rezolucija,...). Na ovaj način programeri dobijaju mogućnost da pišu takozvane device independent aplikacije koji ne zavise od grafičkogsistema na kome se izvršavaju.

Page 12: 3.Graficki API

Elektronski fakultet u Nišu

GAPI Standardi

GKS (ANSI X3.124) PHIGS Java 2D Java 3D GDI OpenGL DirectX

Page 13: 3.Graficki API

Elektronski fakultet u Nišu

Windows GDI

GDI (Graphics Device Interface) je 2D GAPI koji koristi Microsoft u svojim operativnim sistemima.

Page 14: 3.Graficki API

Elektronski fakultet u Nišu

Windows GDI

Princip rada

Page 15: 3.Graficki API

Elektronski fakultet u Nišu

Device Context

Device Context je apstraktni (virtuelni) uređaj. Kada se programira, pristupa se ovom virtuelnom uređaju i na taj način se ne vodi računa direktno o hardveru (koji je tip, kakve su karakteristike,...). O hardveru vode računa drajveri (device drivers).

Page 16: 3.Graficki API

Elektronski fakultet u Nišu

Enkapsulacija GDI funkcija u MFC klase

CDC – Device Context CPen – Olovka CBrush – Četka CBitmap – Rasterska slika CPalette – Paleta ...

Page 17: 3.Graficki API

Elektronski fakultet u Nišu

OpenGL

OpenGL (Open Graphics Library) je organizovan u nekoliko biblioteka:– GL je jezgro OpenGL-a. Ona je osnovna biblioteka

OpenGL-a. Ona sadrži imena svih OpenGL funkcija.– GLU (graphic utility library) je biblioteka koja

obezbeđuje potrebnu funkcionalnost OpenGLjezgra. Ova biblioteka koristi samo GL funkcije isadrži kod za kreiranje objekata koji se često koristekao i procedure koje se često koriste.

Page 18: 3.Graficki API

Elektronski fakultet u Nišu

OpenGL

– GLUT (GL Utility Toolkit) je biblioteka kojaobezbeđuje minimum funkcionalnosti koja seočekuje od modernih sistema zasnovanih naprozorima (otvaranje prozora, ulaz - miš, tastatura,meniji,...).

– GLX (WGL, AGL). Služe za spregu sa operativnimsistemima. Korišćenjem ovih funkcija se gubipotreba da OpenGL aplikacija poziva direktnofunkcije operativnog sistema. GLX je sprega sa XWindows-om, WGL sa Microsoft Windows-om, AGLsa Apple Mac O/S-om.

Page 19: 3.Graficki API

Elektronski fakultet u Nišu

Organizacija OpenGL biblioteka

Page 20: 3.Graficki API

Elektronski fakultet u Nišu

Softverska organizacija OpenGL programa

Page 21: 3.Graficki API

Elektronski fakultet u Nišu

OpenGL protočna obrada