Sunteți pe pagina 1din 21

UNIVERSITATEA POLITEHNICA BUCURETI

FACULTATEA DE TIINE APLICATE


DEPARTAMENTUL MATEMATIC-INFORMATIC

REFERAT

Grafic pe calculator

Prof. Dr. Vladimir BALAN

~ 2014 ~
Grafica pe calculator reprezinta acele metode si tehnici de conversie a datelor
catre si de la un dispozitiv grafic prin intermediul calculatorului.
Aplicarea graficii pe calculator este format din urmtoarele domenii principale:
Vizualizarea informaiei
Proiectare
Modelare (simulare)
Interfa grafic pentru utilizatori GUI
n prezent cunoaterea elementelor de baz ale graficii pe calculator este necesar

inginerului,
omului de tiin,
artitilor plastici,
designerilor,
fotografilor,
pictorilor de animaie etc.

Datorit calculatorului putem avea la dispoziie n cteva fraciuni de secund variaii


multiple de culoare, forme, compoziii etc.

n baza tenologiilor graficii computerizate s-au dezvoltat:

Interfaa de utilizator - GUI


Proiectarea digital n arhitectur i grafica industrial
Efecte vizuale specializate, cinematografia digital
Grafica pe computer pentru filme, animaie, televiziune
Reeaua Internet
Conferinele video
Televiziunea digital
Proiecte multimedia, proiecte interactive
Fotografia digital i posibilitile avansate de prelucrare a fotografiei
Grafica i pictura digital (cu 2 laturi eseniale imitarea materialelor tradiionale
i noile instrumente de lucru digitale)
Vizualizarea datelor tiinifice i de afaceri
Jocuri la calculator, sisteme de realitate virtual (de ex. simulatoare pentru
aviaie)
Sisteme de proiectare automatizat
Tomografie computerizat
Poligrafia
Grafica laser

Grafica pe calculator este de asemenea i un domeniu de activitate tiinific

Grafica digital
OBSERVATIE: Grafica rastru i vector stau la baza graficii digitale.

Grafica digital este un domeniu al informaticii care acoper toate aspectele


legate de formarea imaginilor utiliznd un computer.
Termenul englez corespunztor este computer graphics.

Grafica digital mai este numit uneori grafic de computer, grafic de calculator,
grafic pe calculator, grafic computerizat.

Grafica digital este o activitate n care computerul este utilizat pentru sintetizarea
i elaborarea imaginilor, dar i pentru prelucrarea informaiei vizuale obinute din
realitatea ce ne nconjoar.

Grafica digital se divizeaz n mai multe categorii:

Grafica bidimensional (se constituie din grafic raster i grafic vector)


Grafica Fractal
Grafica tridimensional (este des utilizat n animaie, spoturi publicitare, jocuri la
computer etc.)
CGI grafica (CGI n englez imagini, personaje generate de computer)
Grafica animat
Grafica video
Grafica web
Grafica Multimedia
n grafica digital se opereaz cu diverse elemente grafice, pentru elaborarea i
controlul imaginilor ca de exemplu: pixel, punct, linie, curb, poligon etc.

La baza graficii digitale (i n special grafica bidimensionala) stau doua tipuri de


calculaii, Raster (sau rastru) i Vector (vectorial).

Grafica rastru i vector stau la baza graficii digitale, ele sunt utilizate de
programele 3 dimensionale, programe pentru montare video, animaie, etc.

Prezentarea la calculator a imaginii de tip Raster a segmentrii unei suprafee cu ajutorul


unor ptrele mici care se numesc pixeli.
multi pixeli. Cu ct mai muli pixeli avem n imagine cu att calitatea detaliilor e mai
nalt. Acest tip de grafic permite s cream i s reproducem oricare imagine cu
multitudinea de efecte i subtiliti, indiferent de complexitate. Imaginile procesate
cu ajutorul scanerului sau aparatelor foto snt formulate ca raster.

Neajunsurile e complicata redimensionarea graficii rastru, deoarece la interpolare


(adugare de pixeli n raport de cei existeni n imagine) computerul inventeaz
calculnd pixelii nu ntotdeauna satisfctor, cu toate c sunt diverse metode de
interpolare.

Grafica vectoriala e bazat ca principiu pe desen cu ajutorul liniilor calculate pe o


suprafaa. Liniile pot fi drepte sau curbe.
n cazul imaginilor vectoriale fiierul stocheaz liniile, formele i culorile care
alctuiesc imaginea, ca formule matematice. Imaginile Vector pot fi mrite
i micorate fr a pierde calitatea.
O imagine poate fi modificat prin manipularea obiectelor din care este alctuit,
acestea fiind salvate apoi ca variaii ale formulelor matematice specifice. Este des
utilizata n imagini cu funcii decorative, caractere-text, logotipuri, infograme, decor,
cat i n proiecte sofisticate 3D, montare video, animaie, etc.

Exist sisteme sofisticate de control cromatic al imaginilor. Adaptarea


valorilor cromatice se aplic n funcie de necesitai i scopuri. Astfel, pentru
controlul de culoare la computere, exist mai multe modele cromatice (sau
modele de culoare), care pot fi folosite pentru definirea cromatic a imaginii,
pentru selectarea culorilor n procesul desenrii i crerii imaginii, pentru
arhivare, etc.
n general exist dou tipuri majore de modele cromatice:
amestecul aditiv RGB (din englez de la Red-Green-Blue, rou-verde-albastru)
amestec de culori lumin se utilizeaz pentru ecran, monitor, televiziune,
scanare, aparate foto, design web, animaie i altele.
amestec substractiv CMYK (de la Cyan-Magenta-Yellow- blacK) amestec de
culori pigment se utilizeaz pentru proiecte poligrafice destinate tiparului color.

Unele modele de culoare admit variaii ale diapazonului cromatic, din acest motiv
sunt mprite n diverse profiluri de culoare destinate diferitelor necesiti. De
exemplu, pentru modelul RGB exist mai multe profiluri. sRGB IEC61966-2.1
diapazon mediu utilizat mai des pentru pagini web, sau Adobe RGB (1998)
diapazon mai mare utilizat pentru prelucrarea imaginilor destinate produselor pentru
tipar.

Pe lng modelele cromatice RGB i CMYK mai exist i altele precum: Lab, HSB
/ HSL / HSI, Culori Indexate, Culori Pantone/PMS (Pantone Matching System),
Culori Spot.
Desktop Publishing abreviat DTP, este o expresie englez din domeniul
tipografiei, este procesul de creare i editare (modificare) a unui
document cu ajutorul unui computer avnd ca obiectiv final tiprirea lui.
n acest domeniu exist programe de specializate ce pot fi mprite n mai
multe categorii:
programe de creaie i prelucrare foto (Adobe Photoshop,
Corel Photopaint);
programe de creaie i prelucrare de grafic vectorial (Adobe
Illustrator, Corel Draw);
programe de paginare (Adobe InDesign, QuarkXPress, Adobe
Pagemaker, Corel Ventura);
programe utilitare (Adobe Acrobat Professional, Adobe Acrobat Distiller
etc);
Cel mai utilizat program pentru realizarea documentelor ce urmeaz a fi tiprite
este Corel Draw. Are setri speciale pentru separaii, overprint

Monitoarele sunt aparatele ce decodific semnalul electric i genereaz culorile RGB


(Red, Green, Blue rou, verde, albastru) prin suprapunere de lumin. Cnd nu exist
nici un fel de lumin este generat culoarea neagr, cnd intensitatea prin cele trei
canale este maxim, se obine culoarea alb.

Teoretic s-ar putea tipri i folosind direct spaiul de culori RGB, ns datorit
imperfeciunii hrtiei, cernelii i a mainilor de tipar, se folosete spaiul CMYK
(Cyan, Magenta, Yellow, blacK), urmnd ca negrul, care se tiprete la sfrit de
procedur, s acopere aceste imperfeciuni.
La o lucrare pretenioas este indicat ca imaginile, textele i obiectele colorate s
fie combinate atent, mai ales cnd se lucreaz cu culori Pantone, pentru ca la sfrit
s nu rezulte amestecaturi nedorite de culoare.
Funcia de overprint este suprapunerea la tipar a dou culori diferite, culoarea de
deasupra (ultim) acoperind total culoarea de dedesubt (anterioar). Dac activm
opiunea Overprint la culoarea neagr, atunci cercul va putea rmne ntreg i nu va mai
fi nevoie s fie mai nainte decupat n locurile unde urmeaz a fi tiprit textul negru
Afiarea i crearea imaginilor vectoriale

Display-urile computerelor sunt alctuite din puncte minuscule numite pixeli.


Imaginile bitmap sunt de asemenea construite folosind aceste puncte. Cu ct sunt mai
mici i mai apropiate, cu att calitatea imaginii este mai ridicat, dar i mrimea
fiierului necesar pentru stocarea ei. Dac imaginea este afiat la o mrime mai mare
dect cea la care a fost creat iniial, devine granulat i neclar, deoarece pixelii din
alctuirea imaginii nu mai corespund cu pixelii de pe ecran.

Pentru a crea i modifica imagini vectoriale sunt folosite programe software de desen
vectorial. O imagine poate fi modificat prin manipularea obiectelor din care este
alctuit, acestea fiind salvate apoi ca variaii ale formulelor matematice specifice.
Operatori matematici din software pot fi folosii pentru a ntinde, rsuci, colora
diferitele obiecte dintr-o imagine. n sistemele moderne, aceti operatori sunt
prezentai n mod intuitiv folosind interfaa grafic a calculatorului.

Conversia din i n format raster

Vectorizarea imaginilor este util pentru eliminarea detaliilor nefolositoare dintr-o


fotografie.

Conversia din format vectorial se face practic de fiecare dat cnd este afiat
imaginea, astfel nct procesul de l salva ca bitmap ntr-un fiier este destul de
simplu.

Mult mai dificil este procesul invers, care implic aproximarea formelor i culorilor
din imaginea bitmap i crearea obiectelor cu proprietile corespunztoare. Numrul
obiectelor generate este direct proporional cu complexitatea imaginii.

acestea, mrimea fiierului cu imaginea n format vectorial nu va depi de obicei pe


cea a sursei bitmap.

Aplicaiile grafice avansate pot combina imagini din surse vectoriale i raster i pun
la dispoziie unelte pentru amndou, n cazurile n care unele pri ale proiectului pot
fi obinute de la o camer, iar altele desenate prin grafic vectorial.
Vectorizarea

Aceasta se refer la programe i tehnologii/servicii folosite pentru a converti imagini


de tip bitmap n imagini de tip vectorial. Exemple de utilizare:

n Proiectarea asistata pe calculator (CAD) schiele sunt scanate, vectorizate i


transformate n fiiere CAD printr-un process denumit sugestiv hrtie-CAD.

n GIS imaginile provenite de la satelii sunt vectorizate cu scopul de a obine


hri.

n arta digitala i fotografie, imaginile sunt de obicei vectorizate folosind


plugin-uri pentru programe ca Adobe Photoshop sau Adobe Illustrator, dar
vectorizarea se poate face i manual. Imaginile pot fi vectorizate pentru o mai
bun utilizare i redimensionare, de obicei far diferene mari fa de original.
Vectorizarea unei fotografii i va schimba aspectul din fotografic n pictat sau
desenat; fotografiile pot fi transformate i n siluete. Un avantaj al vectorizrii
este c rezultatul poate fi integrat cu succes intr-un design precum un logo.

Dezavantaje i limitri

Principalul dezavantaj al imaginilor vectoriale este c, fiind alctuite din obiecte


descrise cu formule matemetice, att numrul acestor obiecte ct i complexitatea lor
sunt limitate, depinznd de biblioteca de formule matematice folosit de programul
de desenare. De exemplu, dispozitivele digitale, cum ar fi camerele foto sau
scannerele, produc fiiere raster care nu pot fi reprezentate fidel folosind imagini
vectoriale. Chiar i n cazul n care se reuete vectorizarea unei astfel de imagini,
editarea acesteia la complexitatea original este dificil.

Un alt dezavantaj este c formatele n care sunt stocate imaginile vectoriale sunt
foarte complexe. Implementarea acestor formate pe dispozitive diferite este
problematic din aceast cauz. Conversia dintr-un format n altul este de asemenea
dificil.

Aplicaii
Datorit flexibilitii n ceea ce privete rezoluia imaginilor vectoriale, acestea sunt
folosite intensiv pentru crearea materialelor ce trebuie imprimate la mrimi foarte
diverse: acelai fiier poate fi folosit pentru un card de vizit ct i pentru un panou
publicitar, n ambele cazuri.rezultatele fiind foarte clare i precise.
O alt aplicaie semnificativ a graficii vectoriale este n modelarea suprafeelor 3D,
unde se dorete o calitate ridicat a obiectelor.

GIS este acronimul provenit de la Geographic Information System (Sistem


Informatic Geografic - uneori tradus n forma SIG n limba romn). Acest sistem e
utilizat pentru a crea, stoca, a analiza i prelucra informaii distribuite spaial printr-
un proces computerizat. Tehnologia GIS poate fi utilizat n diverse domenii
tiinifice cum ar fi: managementul resurselor, studii de impact asupra mediului,
cartografie, planificarea rutelor.

Specific unui GIS este modul de organizare a informaiei gestionate. Exist dou
tipuri de informaie: una grafic care indic repartiia spaial a elementelor studiate
i alta sub form de baz de date pentru a stoca atributele asociate acestor elemente
(de ex. pentru o osea lungimea ei, limea, numrul benzilor, materialul de
construcie etc.).

Informaia grafic poate fi de dou feluri: raster sau vectorial. Grafica raster este o
modalitate de reprezentare a imaginilor n aplicaii software sub forma de matrice de
pixeli n timp ce grafica vectorial este o metoda de reprezentare a imaginilor cu
ajutorul unor primitive geometrice (puncte, segmente, poligoane), caracterizate de
ecuatii matematice. Specific sistemelor GIS este asocierea unui sistem de coordonate
geografic matricii de pixeli (la imaginile raster) sau vectorilor - procedeul poarta
numele de Georeferentiere. Astfel unui obiect (reprezentat fie printr-o imagine, fie
printr-un vector) i este asociat o poziie unic n Sistemul Informatic
corespunztoare poziiei geografice din lumea real.

Informaie tip raster - imagine satelitar - dintr-un sistem GIS

Datorit informaiilor asociate graficii, Sistemele Informatice Geografice beneficiaz


de toate oportunitile de interogare pe care le ofera sistemele moderne de baze de
date i n plus pot oferi uor analize orientate pe anumite zone geografice - aa
numitele hri tematice.

Un exemplu comun de Sistem Informatic Geografic l reprezent Sistemele de


Navigaie. Harta rutier n form vectorial este georefereniat astfel nct Sistemul
de Poziionare Global (Global Positioning System - GPS) s poat indica poziia
exact a autovehiculului. Planificarea rutei este n fapt o hart tematic obinut n
urma unei interogri spaiale (cutarea distanei celei mai scurte ntre dou puncte)
combinat cu o interogare a bazei de date asociate drumurilor din hart astfel nct s
fie respectate o serie de condiii (limitri de vitez, gabarit, sensuri de circulaie,
interdicii, etc.).

Datorit impactului pozitiv, sistemele software GIS s-au dezvoltat foarte mult. Exist
pe pia un numr foarte mare de produse, att ale dezvoltatorilor consacrai (ESRI,
Intergraph, Autodesk, MapInfo, etc.) dar i de tip Open source (Grass GIS, Quantum
GIS, GVSIG, OpenJump, etc.).
Adobe Photoshop este un software folosit pentru editarea imaginilor
digitale pe calculator, program produs i distribuit de compania american Adobe
Systems i care se se adreseaz n special profesionitilor domeniului.

Adobe Photoshop, aa cum este cunoscut astzi, este vrful de lance al gamei de
produse software pentru editare de imagini digitale, fotografii, grafic pentru tipar,
video i Web de pe pia. Photoshop este un program cu o interfa intuitiv i care
permite o multitudine extraordinar de modificri necesare n mod curent
profesionitilor i nu numai: editri de luminozitate i contrast, culoare, focalizare,
aplicare de efecte pe imagine sau pe zone (selecii), retuare de imagini degradate,
numr arbitrar de canale de culoare, suport de canale de culoare pe 8, 16 sau 32 bii,
efecte third-party etc. Exist situaii specifice pentru un profesionist n domeniu cnd
alte pachete duc la rezultate mai rapide, ns pentru prelucrri generale de imagine,
ntruct furnizeaz instrumente solide, la standard industrial, Photoshop este efectiv
indispensabil.

Alturi de aplicaia Photoshop (ajuns la versiunea CS5), este inclus i aplicaia


ImageReady, cu un impresionant set de instrumente Web pentru optimizarea i
previzualizarea imaginilor (dinamice sau statice), prelucrarea pachetelor de imagini
cu ajutorul sistemului droplets-uri (mini-programe de tip drag and drop) i realizarea
imaginilor rollover (imagini ce i schimb aspectul la trecerea cu mouse-ul peste),
precum i pentru realizarea de GIF-uri animate.

Avantaje

Principalele elemente prin care Photshop se difereniaz de aplicaiile concurente i


prin care stabilete noi standarde n industria prelucrrii de imagini digitale sunt:
Seleciile
Straturile (Layers)
Mtile (Masks)
Canalele (Channels)
Retuarea

Formate fiiere
Photoshop poate citi majoritatea fiierelor raster i vector. De asemenea, are o
serie de formate proprii:

PSD (abreviere pentru Photoshop Document). Acest format conine o imagine


ca un set de straturi (Layers), incluznd text, mti (mask), informaii despre
opacitate, moduri de combinare (blend mode), canale de culoare, canale alfa
(alpha), ci de tiere (clipping path), setri duotone precum i alte elemente
specifice Photoshop. Acesta este un format popular i des rspndit n rndul
profesionitilor, astfel c este compatibil i cu unele aplicaii concurente
Photoshop.
PSB (denumit Large Document Format) este o versiune mai nou a formatului
PSD, conceput special pentru fiiere mai mari (2GB) sau cu o informaie
prezent pe o suprafa definit de laturi mai mari de 30.000 de pixeli (suport
pn la 300.000x300.000 pixeli).
PDD este un format mai puin ntlnit, fiind asociat iniial aplicaiei Adobe
PhotoDeluxe, astzi (dup 2002) compatibil doar cu aplicaiile Adobe
Photoshop sau Adobe Photoshop Elements.

Ultimele instrumente

Camera RAW: Instrumentul ofer acces rapid i facil la imaginile tip RAW
produse de majoritatea camerelor foto digitale profesionale i de mijloc.
Camera RAW se folosete de toate detaliile acestor fiiere pentru a obine un
control total asupra aspectului imaginii, fr a modifica fiierul n sine.
Adobe Bridge: Un browser complex, de ultim generaie, ce simplific
gestionarea fiierelor, poate procesa mai multe fiiere de tip RAW n acelai
timp i pune la dispoziia utilizatorului informaia metadata de tip EXIF etc.
Multitasking: Adobe introduce posibilitatea de a folosi toate aplicaiile sale
din suita "Creative suite 2" n sistem multitasking.
Suport High Dynamic Range (HDR) pe 32 bii: Creeaz i editeaz imagini
pe 32 bii, sau combin cadre fotografice de expuneri diferite ntr-una ce
include valorile ideale de la cele mai intense umbre pn la cele mai puternice
zone de lumin.
Shadow/Highlight: mbuntete contrastul fotografiilor subexpuse sau
supraexpuse, inclusiv imagini CMYK, pstrnd n continuare echilibrul vizual
al imaginii.
Vanishing Point: Ofer posibilitatea de a clona, picta sau lipi elemente ce
automat se transpun n perspectiva obiectelor din imagine.
Image Warp: Capacitatea de a deforma imaginile plane dup o matrice uor
editabil, folosind mouse-ul.
Corectarea deformrilor cauzate de lentile: Lens Distort corecteaz cu
uurin efectele obinuite date de lentilele aparatelor foto precum cele
cilindrice, sferice, tip plnie, "efectul de vignet" (funcie de poziionarea fa
de lumin, colurile fotografiilor sunt fie ntunecate, fie luminate n contrast cu
restul fotografiei) sau aberaiile cromatice.
Personalizarea aplicaiei:Posibilitatea de a personaliza orice scurttur sau
chiar funciile din meniul aplicaiei i posibilitatea de a salva modificrile
pentru fiecare mod de lucru n parte.
Control mbuntit al straturilor (layers): capacitatea de a selecta mai
multe straturi n acelai timp.
Smart objects: abilitatea de a deforma, redeforma i a reveni la starea iniial a
obiectelor fr a pierde din calitate.

Aplicaiile grafice se realizeaz prin utilizarea urmtoarelor clase de produse


software: editoare grafice, biblioteci grafice, programe grafice specializate, desktop
publishing, worksheet graphics (birotic).
Editoarele grafice sunt destinate prelucrrii grafice in domeniul proiectrii asistate de
calculator dintre produsele care nglobeaz editoare grafice amintim: Auto Cad,
Freelanec 2 Plus, Windows Paint, Corel Draw.
Bibliotecile grafice sunt destinate prelucrrilor prin intermediul limbajelor de
programare de nivel nalt (C, Visual C, Visual Basic, Delphi, Open GL etc...).
Acestea conin biblioteci cu rutine (primitive) grafice care realizeaz funcii grafice
necesare aplicaii grafice.
Programe grafice specializate sunt destinate rezolvrii problemelor din anumite
domenii, oferind utilizatorului s enune probleme ct mai simplu i n concordan
cu limbajul utilizat n domeniul su. De exemplu: Matlab, Mathematica, Mathcad.

Desktop publishing sunt produse software destinate realizrii de publicatii (ziare,


reviste, reclame, etc.) la birou, parcurgnd toate etapele dintr-o tipografie clasic. De
exemplu: Xerox Ventura Publisher care este compatibil cu mai multe procesoare de
text si cu unele editoare grafice, Pagemaker, Xpress, Super Paint, Publish IT, etc.

O interfata API este un cod sursa oferit de catre sistemul de operare sau o
librarie pentru a permite apeluri la serviciile care pot fi generate din API-uri
respective de catre un program.
Termenul API este folosit in 2 sensuri:
- O interfata coerenta care consta din clase sau seturi de functii sau
proceduri interconectate.
- Un singur punct de intrare, cum ar fi o metoda, o functie sau o
procedura.
Doua Interfete API foarte cunoscute sunt Single UNIX Specification si Microsoft
Windows API.
Interfete API sunt deseori incorporate in Software Development Kit (SDK) .

Modelul de design a Interfetelor API

Exista o multime de modele de design a Interfetelor API. Cele


prevazute pentru executie rapida deseori consta din functii, proceduri, variabile
si structuri de date. Exista si alte modele cum ar fi interpretatori (emulatori)
care evalueaza expresii in ECMAScript (cunoscut sub nume JavaScript) sau alt
layer abstract, oferind programatorului posibilitatea de a evita implicarea in
relatiile functiilor cu nivelul inferior al abstractiei.
Unele Interfete API, cum sunt cele standard pentru un sistem de operare, sunt
implementate ca librarii de cod separate care sunt distribuite impreuna cu
sistemul de operare. Altele au integrata functionalitatea interfetei API direct in
aplicatie. Microsoft Windows API este distribuita cu sistemul de operare.
Interfetele API pentru sisteme embedded, cum sunt console de jocuri video, in
general intra in categoria API-urilor integrate direct in aplicatie.
O interfata API care nu necesita drepturi mari de acces sunt numite "open"
(OpenGL ar fi un exemplu).
Cateva exemple de Interfete API:
- Single UNIX Specification (SUS)
- Microsoft Win32 API
- Java Platform, Enterprise Edition API's
- OpenGL cross-platform API
- DirectX for Microsoft Windows
- Google Maps API
- Wikipedia API
- Simple DirectMedia Layer (SDL)
- svgalib pentru Linux si FreeBSD
- Carbon si Cocoa pentru Macintosh OS
Microsoft Windows API's

Windows API, neoficial WinAPI, este numele dat de catre Microsoft pentru
un set de Interfete API disponibile in sisteme de operare Microsoft Windows.
Aceste interfete au fost construite pentru a fi folosite de catre programatori C/C++ si
sunt cel mai direct mod de a interactiona cu sistemul Windows pentru aplicatii
software. Accesul la nivel inferior la sistemul Windows, in general necesar pentru
drivere, este oferit de catre Windows Driver Foundation in versiunea curenta a
Windows-ului.
In sisteme de operare Windows este disponibil un Software Development Kit
(SDK), care ofera documentatia si unelte pentru a permite dezvoltatorilor
crearea aplicatiilor folosind Interfete API si tehnologii Windows asociate.

Compilatoare suportate

Pentru a dezvolta software care foloseste Interfetele API Windows, este


nevoie de compilator care poate importa si manipula fisierele DLL si obiectele
COM caracteristice Microsoft-ului. Compilatorul trebuie sa accepte dialectul
limbajelor C sau C++ si sa manipuleze IDL (interface definition language) fisiere
si fisiere header care expun denumirile functiilor interioare ale Interfetelor API.
Aceste compilatoare, unelte, librarii si fisiere header sunt impreunate in
Microsoft Platform SDK (Software Development Kit). Pentru mult timp
familia de compilatoare si unelte Microsoft Visual Studio si compilatoare
Borland, au fost singurele care puteau la cerintele sus mentionate. Acuma exista
MinGW si Cygwin care ofera interfete bazate pe GNU Compiler Collection. LCC-
Win32 este disponibil pentru utilizare non-comerciala, continand compilator C
si intretinut de catre Jacob Navia. Pelles C este compilator C gratuit oferit de
catre Pelle Orinius.

Microsoft DirectX

Microsoft DirectX este o colectie de Interfete API folosita pentru


manipularea taskurilor legate de multimedia, in special programarea jocurilor
si video, pe platforme Microsoft.

DirectX este de asemenea folosit si de alti producatori software, in mare parte in


sectorul de inginerie, din cauza abilitatii de redare rapida a obiectelor 3D de
inalta calitate.

Atat DirectX runtime cat si software development kit (kitul de dezvoltare soft)
sunt disponibilie gratuit, dar sunt proprietate Microsoft si sunt closed-source
(fara posibilitate de schimbare, rescriere, suprascriere). DirectX a fost initial
redistribuit de catre dezvoltatori de jocuri impreuna cu kiturile de instalare, dar
in ultim timp DirectX a fost inclus in kit de instalare a sistemului de operare
(sau in Service Packs). Unii dezvoltatori de jocuri inca mai includ DirectX in
kitul de instalare si ofera posibilitate de a-l instala (sau de a face update) dupa
instalarea jocului.
Cel mai recente versiuni ale DirectX-ului sunt DirectX 10 si DirectX 9.0L,
disponibile exclusiv pentru Windows Vista (motivul fiind, dupa cum sustine
Microsoft, faptul ca exista schimbari in arhitectura grafica a Windowsului si din
cauza introducerii Windows Display Driver Model).

Interfetele API din DirectX

Majoritatea Interfetelor API din DirectX sunt in forma de obiecte COM.

Componentele care le contine DirectX sunt:

DirectX Graphics, alcatuit din doua Interfete API (DirectX 8.0 sau mai mult):

1. DirectDraw: pentru generarea de obiecte grafice 2D (acum


dezaprobat, desi este inca folosit de multi programatori)
2. Direct3D (D3D): pentru generarea obiectelor grafice in 3D

DirectInput pentru tastaura, mouse, joustick sau alte controlere pentru jocuri
(nu mai este folosit decat pentru Xinput, in controlere la Xbox 360)

DirectPlay pentru comunicare jocurilor in retea (Impreuna cu DirectInput a


fost folosit ultima data in DirectX 8. Acuma este dezaprobat)

DirectSound pentru redarea sunetului si inregistrarea sunetului in forma wave

DirectMusic pentru redarea sunetelor autorizate de catre DirectMusic Producer

DirectX Media contine DirectAnimation pentru animatii web 2D, DirectShow


pentru redare multimedia, DirectX Transform pentru interactionare web si
Direct3D Retained Mode pentru obiecte grafice 3D de nivel inalt. DirectShow
mai contine DirectX Plugins pentru procesarea semnalului audio si DirectX
Video Acceseration pentru a accelera redarea video.

DirectX Media Objects suport pentru pentru obiecte cu streamuri cum sunt
encodere, decodere si efecte.

DirectSetup pentru instalarea componentelor DirectX (care de fapt nu prea este


API)
Inainte de existenta DirectX-ului, Microsoft avea deja inclus setul de API-uri
OpenGL pe platformele Windows NT. In acel timp OpenGL necesita hardware
de inalta performanta si era limitat pe inginerie si utilizatori CAD. Direct3D
(introdus de persoane care au dezvoltat DirectX ca o alternativa pentru
OpenGL) urma sa fie o concurenta pentru (atunci) mai costisitor (din punct de
vedere hardware) OpenGL pentru dezvoltarea jocurilor. Cu timpul, dupa ce
puterea placilor video au crescut, OpenGL a devenit standard si conducatorul
pietei. In acel punct a inceput "batalia" intre adepti ai cross-platform OpenGL
si Windows-only Direct3D, care dupa cum multi sustineau era inca un exemplu
de adoptare, extindere si eliminare (embrace, extend and extinguish) de la
Microsoft. Alte Interfete API din DirectX sunt deseori combinate cu OpenGL in
crearea jocurilor video datorita faptului ca OpenGL nu include toate
functionalitatile care le are DirectX (cum ar fi suport pentru sunet sau joystick).
Totusi, combinatia intre OpenGL si OpenAL (Open Audio Library) pentru
acest scop a devenit populara.

DirectX este folosit ca si baza pentru Interfetele API de la console Xbox si Xbox
360, oferite de catre Microsoft. Interfetele API au fost dezvoltate de catre
Microsoft si NVIDIA (care a dezvoltat hardware folosit de consola). Intefetele
API din Xbox sunt similare cu cele din DirectX 8.1, dar fara posibilitate de
update. Xbox a fost numit DirectXbox, dar numele a fost prescurtat pentru
motive comerciale.

Compatibilitate

Producatori hardware sunt nevoiti sa scrie drivere si sa testeze fiecare bucata


aparte, pentru a le face compatibile cu DirectX. Unele dispozitive hardware au
doar drivere compatibile cu DirectX (ceea ce inseamna ca utilizatorul trebuie sa
instaleze DirectX pentru a folosi acele dispozitive). Versiunile mai vechi de
DirectX includeau si o librarie care continea toate driverele cunoscute si
disponibile la momentul lansarii versiunii respective. La aceasta practica s-a
renuntat in favoarea sistemului de reactualizare, bazat pe web, Windows Update
care permite utilizatorilor sa descarce doar drivere relevante pentru dispozitivul
lor.

Inainte de DirectX 10, DirectX era considerat ca fiind compatibil cu versiuni


precedente (versiunile noi erau compatibile cu cele vechi). Asta este consecinta
pozitiva a modelului COM folosit pentru API-ul DirectX.

Cu Windows Vista si Direct3D 10 cu schimbari radicale, compatibilitate nu mai


este posibila. Din acest motiv DirectX 10 ofera Interfata API Direct3D 9, astfel
incat sa fie posibila rularea jocurilor si aplicatiilor mai vechi.

DirectX 10 si 9.0L

Windows Vista este lansata cu DirectX 10 (si 9.0L pentru


compatibilitate cu versiuni mai vechi) si este singurul sistem de operare din
familia Windows care il contine. Schimbari radicale au fost facute: DirectInput
este defavorizat si inlocuit cu Xinput, din Xbox. De asemenea, DirectSound este
defavorizat si inlocuit cu XACT. DirectX 10 a renuntat la suport pentru
accelerarea dispozitivelor audio, iar sunetul este redat in softearul pe CPU.
DirectPlay este defavorizat si inlocuit cu Games for Windows - LIVE, in timp ce
DirectShow este defavorizat si inlocuit cu Media Foundation, un set diferit de
Interfete API lansate impreuna cu Windows Vista, pentru manipularea de
secvente audio si video. DirectMusic va fi probabil singurul ramas intact.

Direct3D

O proprietate noua majora in DirectX 10 este Direct3D (initial numit


Windows Graphics Foundation). Folosind noul Windows Display Driver Model,
Shader Model 4.0 si noile, mai stricte, cerinte pentru producatori de GPU
(Graphical Processing Unit) care trebuie satisfacute pentru a sustine
compatibilitate cu Direct3D, versiunea 10 de Direct3D reprezinta indepartarea
de la practicile versiunilor mai vechi. Pentru a oferi compatibilitate cu versiunile
precedente de Direct3D, DirectX 10 contine de fapt trei versiuni de Direct3D:

- Direct3D 9: aceasta Interfata API emuleaza comportamentele ale Direct3D 9


pe Windows XP pentru a oferi compatibilitate cu aplicatii mai vechi. Toate
detaliile si avantajele ale Windows Display Driver Model (WDDM) din Vista,
sunt ascunse de aplicatie (in caz ca WDDM drivere sunt instalate). Aceasta este
singura Interfata API disponibila in caz ca exista doar drivere grafice XP.

- Direct3D 9Ex (initial numit 9.0L): permite acces total la noile capabilitati ale
WDDM, in timp ce pastreaza compatibilitate pentru aplicatii Direct3D existente
folosind o interfata API separata. Efectul de transparenta ("glass effect") din
Windows Aero se bazeaza pe codul din Direct3D 0Ex. Cand 9Ex era inca sub
numele de cod 9.0L, existau zvonuri ca acesta va fi Direct3D 10 pentru Windows
XP. Pana la urma s-a demonstrat ca nu este asa, in mare parte din cauza
incompatibilitati al WDDM pe Windows XP.

- Direct3D 10: Temporar, singurul GPU compatibil cu Direct3D este NVIDIA


GeForce 8 Series, care de fapt profita foarte putin de capabilitatile ale Direct3D
10.

Alternative
Exista alternative pentru aceasta arhitectura, unele mai complete decat
altele. Nu exista o solutie unica care sa ofere toate functionalitatile care le ofera
DirectX, dar prin combinare de librarii - OpenGL, OpenAL, SDL, OpenML,
FMOD, etc - utilizatorul pote sa implementeze o solutie comparabila
cu DirectX si in aceasi timp gratuita si cross-platform (poate fi
folosite pe diferite platforme).
OpenGl
Cnd vorbim despre o aplicaie OpenGl, nseamn c este scris ntr-un
limbaj de programare (ca C/C++) ce apeleaz una sau mai multe librrii
OpenGL.
Un OpenGL API poate conine urmtoarele librrii.
Funciile efective ce definesc OpenGL sunt coninute n librria
opengl32.dll i fiierul header GL/gl.h.
OpenGL utility library (GLU) cu librria glu32.dll i fiierul header
GL/glu.h, contine functii ce usureaza crearea programelor, ca de exemplu
desenarea sferelor, discurilor si cilindrelor, etc.
Auxiliary (toolkit) library (AUX) este glaux.lib, iar declaratiile acesteia
sunt continute in GL/glaux.h. Permite de exemplu scrierea rapida a unui
program care foloseste OpenGL fara sa mai pierdeti timpul cu gestiunea
ferestrelor etc.
Folositi biblioteca glut (The OpenGL Utility Toolkit = GLUT).
Pentru sisteme X Window (UNIX), extensia OpenGL se numeste GLX, iar
pentru Microsoft Windows se numeste WGL.
OpenGL este o interfa software pentru plcile grafice. OpenGL se
bazeaz pe IrisGL dezvoltat de Silicon Graphics (SGI). Scopul iniial al
dezvoltrii IrisGL a fost de a dezvolta o interfa programabil pentru staiile
grafice SGI. Aceast interfa programabil s-a intenionat iniial a fi
independent de hardware i a ndeplini cerinele speciale ale programrii
grafice 3D. Ulterior IrisGL a devenit interesant i pentru alte staii
(www.opengl.org).
OpenGL (Open Graphics Library) permite primitive grafice de baz
cum ar fi punctele, segmentele de dreapt, poligoanele i imaginile,
precum i operaii de redare de baz cum ar fi transformrile afine i
proiective i calculele de iluminare. El permite de asemenea operaii de
redare avansat cum ar fi maparea texturilor i redarea cu antialiasing.
OpenGL este portabil, fiind disponibil pe o varietate de sisteme cum ar
fi PC, Macintosh, Silicon Graphics, UNIX, Linux, Irix, Solaris, HP-UX
OpenGL ruleaz pe fiecare din principalele sisteme de operare incluznd
MacOS, OS/2, UNIX, Windows95, Windows NT, Linux, OPENStep, Python
i BeOS.
OpenGL este de asemenea scalabil deoarece poate rula pe o varietate de
calculatoare, de la cele personale pn la staii de lucru i supercalculatoare
Aceasta
se realizeaz prin mecanismul OpenGL de cerere a capacitilor
hardware.
OpenGL este bine structurat avnd o arhitectur intuitiv i comenzi
logice (n
numr de cteva sute). Utiliznd comenzile OpenGL se pot scrie aplicaii
avnd cteva linii de cod spre deosebire de programele realizate utiliznd
alte biblioteci. Una din caracteristicile forte ale interfeei OpenGL este c
interfaa sa este uor de
utilizat de ctre nceptori fiind n acelai timp suficient de puternic pentru a
satisface cerinele unor aplicaii profesioniste indiferent c acestea sunt
simulatoare de zbor, animaii, aplicaii de proiectare asistat sau vizualizri
tiinifice. Driverele
OpenGL ncapsuleaz informaii despre substratul hardware, elibernd
dezvoltatorul aplicaiei de necesitatea de a scrie aplicaiile pentru anumite
caracteristici hardware.

Sisteme grafice pentru grafica 3D

Pentru grafica 3D sunt disponibile cteva sisteme. Un sistem relativ bine


cunoscut este PHIGS (Programmer's Hierarchical Interactive Graphics
System). Bazat pe GKS (Graphics Kernal Systems), PHIGS este standard
ANSI. PHIGS asigur modalitatea de a manipula i a desena obiecte 3D prin
ncapsularea descrierii obiectelor i a atributelor ntr-o list de display care
este apoi referit cnd obiectul este afiat sau manipulat. Un avantaj al listei
de display este c un obiect complex este descris doar o dat chiar dac este
afiat de mai multe ori. Aceasta este important n special dac obiectul de
afiat trebuie transmis dea lungul unui canal de band joas (cum ar fi
reeaua). Un dezavantaj al listei de display este c poate cere un efort
considerabil pentru respecificarea obiectului dac el este modificat continuu ca
rezultat al interaciunii cu utilizatorul. O alt dificultate cu PHIGS este lipsa
suportului caracteristic de redare avansat cum ar fi suportul pentru maparea
texturilor.
n final, exist API-uri care asigur accesul la redarea 3D ca un
rezultat al metodelor pentru descrierea obiectelor grafice de nivel ridicat.
Liderii acestora sunt HOOPS i IRIS Inventor.
Caracteristicile de standardizare, stabilitate, fiabilitate, portabilitate,
uurin n utilizare i buna documentare fac din OpenGL un produs preferat
naintea altor
biblioteci pentru realizarea vizualizrilor tiinifice, a mediilor virtuale,
aplicaiilor CAD/CAM/CAE, imagistic medical, jocuri, etc.
Cei mai renumii dezvoltatori de software utilizeaz OpenGL ca suport
pentru realizarea unor API de nivel mai nalt.
Lista aplicaiilor realizate avnd la baz OpenGL este mare i ea
cuprinde
aplicaii de modelare i animaie 3D (Maya, truSpace, 3D Studio Max, etc.),
aplicaii CAD/CAM (CATIA, 3D Studio Viz, Pro/ENGINEER, I-DEAS, etc),
simulri vizuale i realitate virtual (Visualisation Data Explorer,
WorldToolKit, Designer,
Workbranch, etc.), playere VRML {Cosmo World, RenderSoft VRML Editor,
etc.), jocuri (Quake2, X-Plane, Unreal, etc.).
OpenGL permite dezvoltatorilor de software accesul la primitive
geometrice i imagine, liste de display, transformri de modelare, iluminare
i texturare, antialiasing, blending i multe alte faciliti.
Din punctul de vedere al programatorului, OpenGL reprezint un set de
comenzi care permit specificarea obiectelor geometrice n dou sau trei
dimensiuni,
mpreun cu comenzi care controleaz felul n care aceste obiecte sunt
rasterizate n buffer-ul cadru (framebuffer). Pentru cele mai multe din aceste
comenzi, OpenGL
asigur o interfa cu efect imediat, n sensul c specificarea unui obiect
determin desenarea sa.
OpenGL conine o mare cantitate de informaii de stare. Aceast
stare
controleaz modul n care sunt desenate obiectele n framebuffer. OpenGL
se afl totdeauna ntr-o stare definit, setat prin variabile de condiie; aceasta
nseamn c OpenGL este o maina de stare. Un exemplu de variabil de
condiie este culoarea
curent cu care sunt redate (desenate) primitivele individuale. Aceasta este
setat utiliznd comanda glcolor() i apoi culoarea setat se aplic tuturor
obiectelor care se deseneaz, pn cnd este utilizat o nou comand de
modificare a culorii. La un
anumit moment, o parte din aceast stare -chiar i coninutul unei texturi i al
memoriei video - este disponibil n mod direct utilizatorului, care poate
utiliza comenzi pentru a obine valori asociate cu diferite informaii de
stare. O parte a
informaiilor de stare sunt vizibile, ns, doar prin efectul pe care l au asupra
a ceea ce se deseneaz.
OpenGL permite de asemenea aplicaii de vizualizare cu imagini 2D
tratate ca
tipuri de primitive care pot fi manipulate la fel ca i obiectele geometrice 3D.
OpenGL dispune de unmai 10 primitive geometrice, i orice obiect care se
deseneaz n OpenGL este compus din aceste primitive. Setul de instruciuni
din bibliotec
conine cteva sute de comenzi, toate fiind prefixate de gl. OpenGL asigur
controlul direct asupra operaiilor fundamentale de grafic 3D i 2D. Aceste
operaii includ specificarea unor parametrii cum ar fi matricele transformrilor,
coeficienii ecuaiilor
de iluminare, operatori pentru actualizarea pixelilor. El nu asigur o modalitate
pentru descrierea sau modelarea obiectelor geometrice complexe (cum ar fi
cilindrul, cubul, sfera, etc.). Altfel spus, OpenGL asigur mecanismele pentru
a descrie cum sunt
redate obiectele geometrice complexe i nu mecanismele de a descrie obiectele
complexe nsele.
Toate corpurile complexe trebuie s fie construite de dezvoltatorul
aplicaiei 3D pe baza primitivelor simple - puncte, linii, poligoane.
Pentru a simplifica puin lucrurile pentru dezvoltatorii de aplicaii,
experii n grafica 3D au dezvoltat cteva biblioteci dintre care cele mai
importante sunt GLU (OpenGL Utility Library), GLUT
(OpenGL Utility Toolkit) sau echivalentul su Microsoft -GLAUX. GLU
simplific lucrurile pentru crearea calculelor de proiecie i pentru
construirea suprafeelor complexe, reprezentnd printre altele curbe i
suprafee NURBS (Non-uniform-
rational-B-splines). GLUT este un utilitar independent de sistem pentru
manevrarea n mod simplu a ferestrelor OpenGL i pentru furnizarea
dezvoltatorului de aplicaii de rutine pentru controlarea evenimentelor
externe provenite de la utilizator prin
mouse sau
tastatur.
Oricine dorete s devin expert n grafica 3D trebuie s se
familiarizeze cu cteva noiuni fundamentale de algebr i geometrie
analitic. Altfel utilizarea
comenzilor OpenGL se face mecanic fr o profund nelegere a
mecanismelor interne. Aceste noiuni sunt calculul vectorial (produs scalar,
produs vectorial), calcul matricial (nmulirea matricelor, matrice identitate),
transformri geometrice. Sunt de asemenea necesare cteva cunotine din
domeniul opticii. Cei interesai pot s i remprospteze aceste cunotine i
din cri care prezint fundamentele graficii cu calculatorul.
Bibliografia

1. G. Albeanu, Grafic pe calculator. Algoritmi fundamentali, Editura


Univ.
Bucureti,2001.
2. Baciu, R., Programarea aplicaiilor grafice 3D cu
OpenGL, Editura Albastr, Cluj-Napoca, 2005.
3. Moldoveanu, F., Racovi, Z.,Hera, G., Petrescu, .,
Zaharia, M., Grafica pe calculator, Editura Teora,
Bucureti, 1996.
4. Ionescu, F., Grafica n realitatea virtual, Editura Tehnic,
Bucureti 2000.
5. Hearn, Donald, Backer,M. Pauline, Computer Graphics,
Prentice-Hall, Inc, Englewood Cliffs, New Jersy, 1986
6. Foley,J., A.vanDame, Feiner, S.K., Hughes, J.F.,
Computer Graphics: principles and practice, Addison
Wesley Publishing Company, second edition, 1993.
7. Neider, J., Davis, T., Woo, M., OpenGL Programming
Guide, Addison- Wesley, Menlo Park, 1993.
8. www.wikipedia.org

S-ar putea să vă placă și