OpenGL

De la Wikipedia, enciclopedia liberă
Salt la: Navigare, căutare
OpenGL
OpenGL logo
Autor inițial Silicon Graphics
Dezvoltator
Versiune inițială ianuarie 1992 (1992-01)
Ultima versiune 4.5 (11 august 2014 (2014-08-11))
Scris în C[1]
Sistem de operare Cross-platform
Platformă Cross-platform
Tip 3D graphics API
Licență Various[2]
Site web www.opengl.org

OpenGL (Open Graphics Library)[3][4][5] este o specificație a unui standard care definește un API (Application Programming Interface) multiplatformă foarte utilizat pentru programarea componentelor grafice 2D și 3D ale programelor de calculator. Interfața constă în peste 250 de apeluri diferite care folosesc la a desena pe ecranul calculatorului scene 3D complexe din primitive (din primitives, elemente simple). OpenGL a fost inițial dezvoltat de compania Silicon Graphics, Inc. (SGI) în 1992 și este foarte utilizat în grafică asistată de calculator, realitate virtuală, vizualizare științifică, simulări de zboruri sau jocuri pe calculator. Acest ultim domeniu este în strânsă competiție cu tehnologia DirectX de la Microsoft (compară OpenGL cu Direct3D). Proiectul OpenGL este condus de compania Khronos Group, un consorțiu tehnologic non-profit.

Implementări[modificare | modificare sursă]

Design[modificare | modificare sursă]

A Graphics Pipeline Process

OpenGL are două scopuri principale:

  • să mascheze (ascundă) complexitatea interfețelor cu diferite acceleratoare 3D, prin confruntarea programatorului cu un singur API uniform.
  • să mascheze capabilitățile diferitelor platforme hardware, prin cerința ca toate implementările să accepte OpenGL ca un set complet (cu ajutorul emulării de software, dacă este necesar).

Funcțiia de bază a OpenGL este de a accepta primitive, cum ar fi puncte, linii și poligoane, și de a le converti în pixeli. Acest lucru se face printr-o conductă grafică (graphics pipeline), cunoscută sub numele de mașină de stare OpenGL. Cele mai multe comenzi OpenGL primitive, sunt fie probleme la conducta grafică, sau configurarea felului în care aceste procese de conducte de primitive. Înainte de introducerea OpenGL 2.0, fiecare etapă din conductă efectua o funcție fixă și a fost configurabilă numai în limite restrânse. OpenGL 2.0 oferă mai multe etape, care sunt pe deplin programabile folosind GLSL.

OpenGL este un API procedural de nivel mic, care necesită ca un programator să impună măsurile exacte necesare pentru a face o scenă. Acest lucru contrastează cu alte API-uri, în care un programator are nevoie doar pentru a descrie o scenă și poate lăsa biblioteca să gestioneze detalile redând finalul scenei. OpenGL's de nivel mic, impune programatorilor să aibă o bună cunoaștere a conductei grafice, dar, de asemenea, oferă o anumită libertatea de a pune în aplicare algoritmi noi de redare.

OpenGL are un istoric de influențe de la dezvoltarea acceleratoarelor 3D, promovând un nivel de bază de funcționalitate, care este acum în comun cu nivelul hardware-ului de consum:

Exemple[modificare | modificare sursă]

Acest exemplu va elabora un pătrat verde de pe ecran. OpenGL are mai multe moduri de a realiza această sarcină, dar acest lucru este cel mai ușor de înțeles. Cu toate acestea, cititorul ar trebui să fie conștient de faptul că cea mai mare parte din API-urile folosite în codul de mai jos au fost scoase din uz în și după specificațiile OpenGL 3.0.

glClear( GL_COLOR_BUFFER_BIT );
Această declarație golește tamponul de culoare, astfel încât ecranul va începe gol.
glMatrixMode( GL_PROJECTION ); /* Subsequent matrix commands will affect the projection matrix */
glLoadIdentity(); /* Initialise the projection matrix to identity */
glFrustum( -1, 1, -1, 1, 1, 1000 ); /* Apply a perspective-projection matrix */
Aceste declarații vor inițializa matricea de proiecție, stabilind o matrice 3D care reprezintă zona de vizualizat. Această matrice transformă obiecte de la aparatul de fotografiat din spațiu relativ la spațiul de proiecție al OpenGL.
glMatrixMode( GL_MODELVIEW ); /* Subsequent matrix commands will affect the modelview matrix */
glLoadIdentity(); /* Initialise the modelview to identity */
glTranslatef( 0, 0, -3 ); /* Translate the modelview 3 units along the Z axis */
Aceste declarații inițializează matricea modelview. Această matrice definește o transformare de la model de-relativă coordonate în spațiu la aparat de fotografiat. Combinația matricei modelview și matricea de proiecție transformă obiectele de la modelul spațiu de proiecție comparativ cu spațiul ecranului.
glBegin( GL_POLYGON ); /* Begin issuing a polygon */
glColor3f( 0, 1, 0 ); /* Set the current color to green */
glVertex3f( -1, -1, 0 ); /* Issue a vertex */
glVertex3f( -1, 1, 0 ); /* Issue a vertex */
glVertex3f( 1, 1, 0 ); /* Issue a vertex */
glVertex3f( 1, -1, 0 ); /* Issue a vertex */
glEnd(); /* Finish issuing the polygon */
Aceste comenzi vor desena un pătrat verde în planul XY.

Referințe[modificare | modificare sursă]

Legături externe[modificare | modificare sursă]

Commons
Wikimedia Commons conține materiale multimedia legate de OpenGL