Ce este 2D OpenGL®?

Open Graphics Library® (OpenGL®) este în primul rând o interfață de programare care permite aplicațiilor software să interacționeze cu hardware-ul grafic și să creeze scene tridimensionale (3D) rapid și eficient. Folosind tehnici de programare bidimensionale (2D) OpenGL®, accelerarea hardware oferită de bibliotecă poate îmbunătăți performanța și, uneori, ușurința programării software care nu utilizează neapărat modele sau transformări 3D. Cea mai comună metodă de utilizare a 2D OpenGL® este de a desena patrulatere sau dreptunghiuri, care sunt texturate cu o imagine, creând efectiv un obiect în spațiul 3D dintr-o imagine. Odată stabilite, aceste patrulatere pot fi manipulate, fie prin metode stricte 2D, fie prin transformarea cu matrici 3D pentru efecte speciale care altfel ar fi greu de realizat doar cu grafica raster 2D. Există unele complicații pe care le aduce utilizarea unei biblioteci 3D atunci când o folosești numai pentru grafica 2D, inclusiv hiperprecizie care poate face complexă izolarea locațiilor cu un singur pixel, precum și necesitatea de suport hardware 3D pentru un program care ar putea să nu necesite cu adevărat aceasta.

Mulți dezvoltatori de hardware și software oferă drivere și interfețe personalizate de programare abstractă (API-uri) care fac produsele lor specifice pe deplin compatibile cu biblioteca OpenGL®. Această acceptare pe scară largă a unui standard deschis oferă programatorilor o modalitate de a accesa direct hardware-ul pe o mare varietate de sisteme. Accelerația hardware furnizată atunci când utilizați 2D OpenGL® poate permite unui program să ruleze mai bine decât ar fi posibil altfel. Această viteză este echilibrată de faptul că utilizarea conductei OpenGL® pentru grafică poate fi foarte diferită de utilizarea metodelor tradiționale de programare 2D care, în general, nu utilizează un model de mașină de stat precum OpenGL®.

Majoritatea programelor 2D OpenGL® folosesc dreptunghiuri plate care sunt realizate în aceleași proporții ca o imagine de textură pentru a portretiza grafica. Acest lucru are avantajul de a fi foarte rapid de randat, precum și de a simplifica programarea, astfel încât să folosească o parte din aceeași logică ca și grafica raster-buffered. Unele efecte, cum ar fi scalarea unei imagini, rotirea unei imagini sau inversarea unei imagini, pot fi de fapt realizate mult mai eficient folosind OpenGL®.

Există anumiți factori care pot face ca programele 2D OpenGL® să fie mai complexe decât ar putea fi în mod normal alte programe 2D. Unul dintre acești factori este precizia pixelilor de pe afișaj. OpenGL® nu echivalează o parte a sistemului de coordonate virtual cu un pixel de pe un ecran, așa cum o fac grafica raster, așa că uneori trebuie să fie folosite numerele în virgulă mobilă pentru coordonatele ecranului pentru a preveni golurile în afișaj sau plasările ciudate de pixeli.

O altă problemă este că OpenGL® necesită utilizarea unei plăci grafice pentru a crește viteza de randare. Dacă o aplicație folosește OpenGL® pentru afișarea unei interfețe sau a unei ferestre de sistem, atunci dispozitivele care nu au accelerație grafică ar putea suferi o pierdere de performanță pentru grafica care ar putea părea foarte simplă pentru un utilizator final. De asemenea, OpenGL nu oferă nici un suport nativ pentru afișarea textului, ceea ce înseamnă că afișarea unor zone mari de text ar putea necesita o cantitate suficientă de cod personalizat.