OpenGL

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
OpenGL
software
Siglă
Exemplu de captură de ecran
Schema de arhitectură OpenGL
Tip Bibliotecă software (nu este listată )
Grafică pe computer
Dezvoltator Silicon Graphics
apoi Khronos Group din 2000
Data primei versiuni Ianuarie 1992
Ultima versiune 4.6 (31 iulie 2017)
Sistem de operare Multiplatform
Limba C.
Licență Licență multiplă
( licență gratuită )
Site-ul web www.opengl.org

OpenGL ( Open G raphics L ibrary) este o specificație care definește un API multi-limbă, multi-platformă pentru scrierea aplicațiilor care produc grafică computerizată 3D. Interfața constă din aproximativ 250 de apeluri de funcții diferite care pot fi folosite pentru a desena scene tridimensionale complexe din primitive simple. Dezvoltat în 1992 de Silicon Graphics Inc. , este utilizat pe scară largă în industria jocurilor video (în care concurează cu DirectX pe Microsoft Windows ), pentru aplicații CAD , realitate virtuală și CAE . Este standardul de facto pentru grafica computerizată 3D în mediul Unix .

Specific

La cel mai scăzut nivel, OpenGL este o specificație, adică este pur și simplu un document care descrie un set de funcții și comportamentul precis pe care trebuie să îl aibă. Din această specificație, producătorii de hardware creează implementări, adică biblioteci de funcții create în conformitate cu specificația OpenGL, folosind accelerarea hardware acolo unde este posibil. Cu toate acestea, producătorii trebuie să treacă teste specifice pentru a-și califica produsele drept implementări OpenGL.

Există implementări eficiente ale OpenGL (care utilizează mai mult sau mai puțin pe deplin GPU-urile ) pentru Microsoft Windows , Linux , multe platforme Unix , PlayStation 3 și Mac OS . Aceste implementări sunt furnizate în mod normal de producătorii de dispozitive video și se bazează în mare măsură pe hardware-ul furnizat. Există implementări software care aduc OpenGL pe platforme care nu au sprijinul producătorilor de hardware. Cea mai cunoscută este biblioteca open source Mesa , un API grafic bazat exclusiv pe biblioteci software care este compatibil cu OpenGL. Cu toate acestea, datorită licenței, poate pretinde doar că este un API „foarte similar”.

Specificația OpenGL a fost inițial supravegheată de OpenGL Architecture Review Board (ARB), format în 1992 . ARB era alcătuit dintr-un grup de companii interesate să creeze un API consistent și disponibil pe scară largă. Membrii fondatori ai ARB includeau 3Dlabs , Apple , ATI Technologies , Dell , IBM , Intel , NVIDIA , SGI , Sun Microsystems și Microsoft , dar a părăsit grupul în martie 2003. Implicarea a atât de multe companii cu foarte diverse interesele, a determinat OpenGL să devină de-a lungul timpului un API de uz general cu o gamă largă de capabilități.

Controlul OpenGL a trecut, la începutul anului 2007, consorțiului Khronos Group, în încercarea de a-și îmbunătăți marketingul și de a elimina barierele dintre dezvoltarea OpenGL și OpenGL ES [1]

Structura

Un proces de conducte grafice

OpenGL îndeplinește două sarcini fundamentale:

  • ascunde complexitatea interfeței cu diferite acceleratoare 3D, oferind programatorului un API unic și uniform;
  • ascundeți capabilitățile oferite de diferiți acceleratori 3D, necesitând toate implementările pentru a sprijini pe deplin setul de caracteristici OpenGL, recurgând la emulare de software, dacă este necesar.

Sarcina OpenGL este de a primi primitive precum puncte, linii și poligoane și de a le converti în pixeli ( rasterizare sau rasterizare ). Acest lucru se realizează printr-o conductă grafică cunoscută sub numele de mașină de stat OpenGL [2] . Majoritatea comenzilor OpenGL fie furnizează primitive pentru conducta grafică, fie instruiesc conducta despre cum să le proceseze. Înainte de introducerea OpenGL 2.0, fiecare etapă a conductei avea o funcție fixă ​​și era configurabilă numai în anumite limite, dar de la versiunea 2.0 multe etape sunt complet programabile prin limbajul GLSL .

OpenGL este un API procedural de nivel scăzut, care necesită programatorului pașii precisi pentru a desena o scenă. Această abordare este în contrast cu API-ul descriptiv la nivel înalt care, operând pe o structură de date în arbore ( graficul scenei ), necesită programatorului doar o descriere generică a scenei, care se ocupă de detaliile mai complexe ale redării . Prin urmare, natura OpenGL obligă programatorii să aibă o bună înțelegere a conductei grafice în sine, dar în același timp lasă o oarecare libertate pentru a implementa algoritmi de redare complexi.

Din punct de vedere istoric, OpenGL a exercitat o influență semnificativă asupra dezvoltării acceleratoarelor 3D, promovând un nivel de bază al funcționalității care este acum obișnuit în plăcile video destinate publicului larg:

Una dintre cele mai apreciate caracteristici din domeniul profesional este compatibilitatea inversă între diferitele versiuni de OpenGL: programele scrise pentru versiunea 1.0 a bibliotecii trebuie să funcționeze fără modificări la implementările care urmează versiunii 2.1.

Versiuni

Revizuiri 1

OpenGL 1 este o evoluție a (și are un stil foarte similar cu) IRIS GL , interfața 3D a SGI. Una dintre restricțiile IRIS GL a fost aceea că oferea acces doar la caracteristicile acceptate de hardware-ul de bază. Dacă hardware-ul grafic nu a acceptat o caracteristică, atunci aplicația nu a putut să o folosească. OpenGL a depășit această problemă oferind suport software pentru caracteristici neacceptate de hardware, permițând aplicațiilor să utilizeze grafică avansată pe sisteme de putere relativ redusă. Proiectul Fahrenheit a fost un efort comun între Microsoft, SGI și Hewlett-Packard, cu scopul de a unifica interfețele OpenGL și Direct3D. Inițial a arătat o promisiune de a aduce ordine în lumea API-urilor interactive de grafică 3D, dar din cauza constrângerilor financiare la SGI și a lipsei generale de sprijin din industrie, a fost în cele din urmă abandonată.

OpenGL 1.0

Lansat în 1992 .

Prima specificație OpenGL a fost publicată de Mark Segal și Kurt Akeley.

OpenGL 1.1

Lansat în ianuarie 1997 .

OpenGL 1.1 își propune să susțină funcțiile de textură și formatele de textură pe GPU-uri hardware.

  • Carduri: toate

OpenGL 1.2

Publicat pe 16 martie 1998 .

OpenGL 1.2 își propune să accepte texturi de volum , pixeli împachetați , redimensionare normală , eșantionare a texturii fixate / de margine și funcții de procesare a imaginilor .

  • Carduri: Rage 128, Rage 128 GL, Rage XL / XC, Rage 128 Pro, Rage Fury MAXX și mai târziu.
OpenGL 1.2.1

Publicat pe 14 octombrie 1998 .

OpenGL 1.2.1 este o publicație intermediară care adaugă caracteristici multi-textură, sau chiar unități de textură, la conducta de redare. Acest lucru vă permite să amestecați mai multe texturi bazate pe pixeli în timpul rasterizării.

  • Carduri: Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9800, GeForce 3, GeForce 4Ti, GeForce FX și ulterior.

OpenGL 1.3

Publicat pe 14 august 2001 .

OpenGL 1.3 adaugă suport pentru funcții de textură cubemap, multi-texturare, multi-eșantionare și funcții de operații de combinare a unității de textură (cum ar fi: adăugare, combinare, dot3 și clemă de margine).

  • Carduri: Radeon 32/36, Radeon 64/7200, Radeon 7000, Radeo AIW, Radeon 7500, Radeon IGP 320M, Radeon IGP 345M, ES1000, Radeon 8500, Radeon 9000 / Pro, Radeon 9100/9200/9250 (Pro & IGP) , GeForce 3, GeForce 4Ti, GeForce FX și versiunile ulterioare.

OpenGL 1.4

Publicat pe 24 iulie 2002 .

OpenGL 1.4 introduce suport hardware pentru funcții de umbrire, coordonate de ceață, generare automată de mipmap și funcții suplimentare de textură.

  • Plăci: Quadro DCC, Quadro4 380 XGL, Quadro4 500XGL, 550XGL, Quadro4 700XGL, 750XGL, 900XGL, 980XGL și mai târziu.

OpenGL 1.5

Publicat pe 29 iulie 2003 .

OpenGL 1.5 adaugă suport pentru: obiecte tampon vertex (VBO), interogări de ocluzie și umbrire extinsă.

  • Carduri: Radeon X800, Radeon 9600, Radeon 9700, Radeon 9800, GeForce FX și mai târziu.

Revizuiri 2

Cardurile lansate cu OpenGL 2.0 sunt primele care oferă umbrere programabile.

OpenGL 2 a fost conceput de 3Dlabs pentru a răspunde îngrijorărilor legate de faptul că OpenGL stagnează și nu are o direcție puternică. 3Dlabs a propus câteva adăugiri majore la standard, dintre care cel mai semnificativ a fost GLSL (de la Open GL S având L anguage , adică limbajul de umbrire al OpenGL). Acest lucru ar permite programatorilor să înlocuiască pre-set cod OpenGL pentru vertex și prelucrare fragment de conducte cu shader scrise într - un C- ca limbă. GLSL s-a remarcat prin faptul că nu se potrivește cu hardware-ul disponibil atunci; aceasta a fost o revenire la tradiția OpenGL de stabilire a unor obiective ambițioase, orientate spre viitor, pentru noile acceleratoare 3D, mai degrabă decât urmărirea stării hardware-ului disponibil în prezent. Specificația finală OpenGL 2.0 [3] a inclus suport pentru GLSL, dar a omis multe dintre celelalte caracteristici propuse inițial - acestea au fost amânate la versiunile viitoare ale OpenGL, deși unele sunt deja disponibile ca extensii.

OpenGL 2.0

Publicat pe 7 septembrie 2004 .

OpenGL 2.0 adaugă suport pentru un adevărat limbaj de asamblare bazat pe GPU numit ARB (de la Architecture Review Board ), care își propune să devină standardul pentru toate funcțiile umbrelor de vârf și fragmente .

  • Carduri: Radeon 9650, Radeon 9500, Radeon 9500/9550/9600/9700/9800 (Pro, SE, XT), Radeon X1050, Radeon Xpress 200/1100, Radeon X300, Radeon X550, Radeon X600 / Pro, Radeon X700, Radeon X800 (VE, SE, GT, Pro), Radeon X850, Radeon Xpress 1250, Radeon X1200, Radeon X1250, Radeon 2100, Radeon X1300, X1550, X1600, X1650, X1800, X1900, X1950 (Pro, XT, GT), GeForce 6800, Quadro 600, Quadro FX 500, Quadro FX 700, Quadro FX 1000, FX 2000, FX 3000, Quadro FX 1400, Quadro FX 1500, Quadro FX 3450, Quadro FX 3500, Quadro FX 4500X2, Quadro FX4500 SDI și ulterior.

OpenGL 2.1

Publicat la 2 iulie 2006 .

OpenGL 2.1 introduce suport pentru obiecte tampon pixel (PBO), texturi sRGB (texturi corectate gamma) și matrice non-pătrate , precum și revizuirea 1.20 a GLSL Shading Language [4] .

  • Carduri: Radeon GD 2350, GeForce FX (cu driver 175.19), seria GeForce 6000, seria GeForce 7000, seria GeForce Go 7000, Quadro FX 4000, Quadro FX 350, Quadro FX 550, Quadro FX 560, Quadro FX 1400, Quadro FX 1500 , Quadro FX 5500 și versiunile ulterioare.

Revizuiri 3

OpenGL 3.0 adaugă un mecanism de simplificare pentru API-ul viitoarelor revizuiri.

OpenGL 3.0

Publicat pe 11 iulie 2008 .

OpenGL 3.0 introduce suport pentru umbrele de geometrie, obiecte tampon cadru, instanțarea hardware, obiecte verticale (VAO) și funcții sRGB framebuffers (gamma 2.2) [5] .

  • Carduri: seria Radeon HD; Seriile GeForce 8000, 9000, GTX 100, GTX 200 și GTX 300.

OpenGL 3.1

Publicat pe 28 mai 2009 .

OpenGL 3.1 adaugă o serie de caracteristici pentru a face API-ul mai convenabil de utilizat, precum și un spectru de caracteristici orientate spre performanță [6] ; introduce, de asemenea, o revizuire 1.40 a limbajului de umbrire OpenGL .

Odată cu lansarea OpenGL 3.1, a fost introdusă o extensie de compatibilitate care permite dezvoltatorilor să acceseze caracteristicile depreciate ale OpenGL 1.X / 2.X și eliminate în OpenGL 3.1.

Funcțiile depreciate și eliminate din profilul de bază includ:

  • toate funcțiile conductei fixe
  • modul imediat
  • modul index culoare
  • toate capacitățile de imagine

OpenGL 3.2

Publicat la 3 august 2009 și actualizat la 7 decembrie 2009 .

  • Carduri: seria Radeon HD; Seriile GeForce 8000, 9000, GTX 100, GTX 200 și GTX 300.

OpenGL 3.3

Publicat pe 11 martie 2010 .

Această versiune este destinată să permită GPU-urilor din generația anterioară să profite de unele dintre caracteristicile OpenGL 4.0. De asemenea, proiectat în vederea dezvoltării OpenGL ES (API dedicat dispozitivelor mobile precum cele bazate pe Android , webOS și iPhone OS ). [7]

Prezintă revizuirea 3.30 a OpenGL Shading Language.

Revizuiri 4

OpenGL 4.0

Publicat pe 11 martie 2010 .

Această versiune include suport pentru teselare ( teselare ) și virgula mobilă pe 64 de biți cu precizie dublă (pentru a îmbunătăți calitatea) pentru shader . De asemenea, îmbunătățește suportul pentru standardul OpenCL , dedicat GPGPU , adică posibilitatea exploatării GPU pentru un tip mai mare de utilizare. [7]

OpenGL 4.1

Publicat pe 26 iulie 2010 .

Această versiune îmbunătățește interoperabilitatea cu OpenCL și introduce compatibilitatea cu OpenGL ES 2.0.

OpenGL 4.2

Publicat pe 8 august 2011 . [8]

OpenGL 4.3

Publicat pe 6 august 2012 . [9]

Această versiune introduce, printre altele, versiunea 4.30 a limbajului de umbrire GLSL, noua metodă de compresie a texturii ETC2 / EAC, vizualizările texturii și compatibilitatea deplină cu OpenGL ES 3.0 .

  • Carduri: NVIDIA GeForce 400 series, NVIDIA GeForce 500 series, NVIDIA GeForce 600 series

OpenGL 4.4

Publicat pe 22 iulie 2013 .

OpenGL 4.5

Publicat la 11 august 2014 , Flush Control este introdus, ceea ce permite performanțe mai mari în aplicații multithread, DSA (Direct State Access) permite controlul independent al diferitelor obiecte, iar motorul de redare WebGL [10] este, de asemenea, optimizat.

OpenGL 4.6

Lansat pe 31 iulie 2017, pe lângă multe extensii și optimizări, introduce suport pentru SPIR-V .

Extensii

Standardul OpenGL permite producătorilor individuali să ofere funcționalități suplimentare prin extensii pe măsură ce sunt create noi tehnologii. O extensie este apoi distribuită în două părți: ca fișier antet care conține prototipurile funcției de extensie și ca driver de producător. Fiecare producător are o abreviere alfabetică care este utilizată la numirea noilor funcții și constante. De exemplu, abrevierea NVIDIA ( NV ) este utilizată în definirea funcției lor proprietare glCombinerParameterfvNV() și a constantei lor GL_NORMAL_MAP_NV . Se poate întâmpla ca mai mulți producători să fie de acord să implementeze aceeași funcționalitate extinsă.

În acest caz, se utilizează abrevierea EXT . De asemenea, se poate întâmpla ca ARB să aprobe extensia. Apoi devine cunoscută ca o extensie standard și se utilizează abrevierea ARB . Prima extensie ARB a fost GL_ARB_multitexture . După ce a urmat calea de promovare pentru extensiile oficiale, multitextura nu mai este o extensie ARB implementată opțional, ci a fost integrată în API-ul OpenGL de bază de la versiunea 1.4. Specificațiile pentru aproape toate extensiile pot fi găsite în depozitul oficial de extensii [11] .

Diferite biblioteci au fost construite deasupra OpenGL pentru a oferi funcționalități care nu sunt disponibile în OpenGL în sine:

În special, biblioteca OpenGL Performer, dezvoltată de SGI și disponibilă pentru IRIX , Linux și diverse versiuni de Microsoft Windows , se bazează pe OpenGL pentru a permite crearea de aplicații de simulare vizuală în sisteme în timp real .

Legare

Pentru a-și impune caracteristicile multi-limbă și multi-platformă, au fost dezvoltate diverse legături și porturi pentru OpenGL în multe limbi. Printre cele mai notabile, biblioteca Java 3D se poate baza pe OpenGL pentru a profita de accelerarea hardware. Cel mai recent, Sun a lansat versiuni beta ale sistemului JOGL, care oferă legare la comenzile OpenGL în C , spre deosebire de Java 3D care nu oferă un suport atât de scăzut. Pagina oficială OpenGL listează diverse legături pentru limbile Java , Fortran 90 , Perl , Pike , Python , Ada și Visual Basic . Legăturile sunt disponibile și pentru C ++ și C # .

Funcționalitate la nivel înalt

Exemplu OpenGL
Exemplu OpenGL

OpenGL a fost conceput pentru a fi redat doar: oferă doar funcții de redare . API-ul de bază nu acoperă gestionarea ferestrelor, sunetul, tipărirea, tastatura, mouse-ul sau alte dispozitive de intrare. Oricât de restrictiv ar părea, permite redarea codului să fie complet independentă de sistemul de operare pe care rulează , permițând dezvoltarea codului independent de platformă. Cu toate acestea, pentru a permite interacțiunea cu sistemul gazdă, este necesar să se integreze software-ul cu sistemul de ferestre nativ. Acest lucru se face prin următoarele API-uri suplimentare:

În plus, bibliotecile GLUT și SDL oferă funcționalitate pentru gestionarea elementară a ferestrelor cu OpenGL, într-un mod portabil. macOS are trei API-uri pentru a obține suport OpenGL: AGL pentru Carbon , NSOpenGL pentru Cocoa și Core OpenGL (CGL) pentru acces direct.

Exemplu de cod sursă

Iată un program simplu C care desenează un triunghi folosind primitive OpenGL. Rețineți că acest program folosește caracteristici depreciate începând cu OpenGL 3.0.

 / ************************************************** ************
* Pentru a compila cu gcc pe Linux: *
* gcc file.c -lglut *
* sau: *
* gcc file.c -L / usr / X11R6 / lib -lglut -lXmu -lGL -lGLU -lXi *
*************************************************** *********** /

#include <GL / gl.h> // Fișier antet pentru biblioteca OpenGL
#include <GL / glut.h> // Fișier antet pentru biblioteca GLUT
#include <stdlib.h> // Antetul fișierului pentru a utiliza „exit ()”

/ * Funcție invocată când fereastra este redimensionată (chiar și atunci când este creată) * /
nul
resize (int latime, inaltime int)
{
  glViewport ( 0 , 0 , lățime , înălțime ); // Folosim fereastra completă
  glMatrixMode ( GL_PROJECTION ); // Selectați pentru a utiliza matricea „PROIECȚIE”
  glLoadIdentity (); // Resetați matricea „PROIECȚIE”
  glMatrixMode ( GL_MODELVIEW ); // Selectați pentru a utiliza matricea „MODELVIEW”
  glLoadIdentity (); // Resetați matricea „MODELVIEW”
}

/ * Funcția de desen * /
nul
draw ()
{
  glClearColor (0.0f, 0.0f, 0.0f, 0.0f); // Fundal negru
  glClear ( GL_COLOR_BUFFER_BIT ); // Șterge scena

  glBegin ( GL_TRIANGLES ); // Desenați un triunghi
  glColor3f (1.0f, 0.0f, 0.0f); // Să setăm culoarea roșie
  glVertex3f (0.0f, 0.5f, 0.0f); // Colțul de sus
  glColor3f (0.0f, 1.0f, 0.0f); // Setați culoarea verde
  glVertex3f ( -0.5f , -0.5f , 0.0f ); // Colțul din stânga jos
  glColor3f (0.0f, 0.0f, 1.0f); // Setați culoarea albastră
  glVertex3f (0.5f, -0.5f, 0.0f); // Colțul din dreapta jos
  glEnd (); // Sfârșitul triunghiului
  
  glutSwapBuffers (); // A desena!
}

/ * Funcție invocată de fiecare dată când este apăsată o tastă * /
nul
tastă Apăsat ( cheie de caracter nesemnată , int x , int y ) 
{
  if ( tasta == 'q' ) // Dacă tasta apăsată este q,
    ieșire ( 0 ); // iese afara
}

/ * Principal * /
int
principal ( int argc , char ** argv ) 
{ 
  glutInit ( & argc , argv ); // Inițializați biblioteca GLUT
  glutInitDisplayMode ( GLUT_RGB | GLUT_DOUBLE ); // Selectați modul de afișare: utilizați RGB și buffer dublu
  glutInitWindowSize ( 640 , 480 ); // Setați dimensiunea ferestrei la 640x480
  glutInitWindowPosition ( 0 , 0 ); // Setați poziția din colțul din stânga sus al ferestrei
  glutCreateWindow ( "Exemplu folosind OpenGL" ); // Creați fereastra
  glutDisplayFunc ( draw ); // Setați funcția de desen
  glutReshapeFunc ( redimensionare ); // Setați funcția de scalare
  glutKeyboardFunc ( keyPressed ); // Setați funcția evenimentului de la tastatură
  glutMainLoop (); // Start
  returnare ( 1 );
}

Viitorul în Microsoft Windows

La 6 august 2005 , intențiile inițiale ale Microsoft cu privire la suportul OpenGL în Windows Vista au fost dezvăluite într-un anunț de știri pe Opengl.org [12] .

Planurile actuale ale Microsoft pentru OpenGL pe Windows Vista sunt de a sprijini OpenGL pe Direct3D pentru a utiliza OpenGL pe un desktop compozit pentru a realiza experiența Aeroglass. Dacă rulați un ICD OpenGL - compozitorul desktop se va închide - degradând semnificativ experiența utilizatorului.

În practică, pentru OpenGL sub Aeroglass, aceasta înseamnă:

Performanța OpenGL va fi redusă semnificativ - poate până la 50%.

OpenGL pe Windows va fi portat la o versiune de bază a OpenGL 1.4.

Nicio extensie nu va fi posibilă pentru a prezenta inovații hardware viitoare. Ar fi tehnic simplu să se furnizeze un OpenGL ICD ( driver de client instalabil , adică un driver specific OpenGL) în întreaga experiență Aeroglass fără a compromite stabilitatea sau securitatea sistemului de operare. Punerea OpenGL pe Direct3D este o decizie mai strategică decât una tehnică. "

Pe atunci, viitorul OpenGL ca bibliotecă principală de jocuri video părea precar. Microsoft a luat decizia de a nu publica informațiile necesare pentru a permite terților (cum ar fi NVIDIA , ATI sau ceilalți mari producători de carduri) să dezvolte drivere de înlocuire, fără a lăsa nicio modalitate de a evita scăderea vitezei de 50%.

Poate din cauza presiunilor venite din lumea industriei de software și de la producătorii de hardware înșiși, Microsoft a revizuit ulterior această politică și sunt acum disponibile ICD-uri care pot funcționa fără probleme împreună cu subsistemul Aeroglass, fără pierderi de performanță. În acest sens, a se vedea prezentarea despre OpenGL pe Windows Vista publicată de NVIDIA la SIGGRAPH 2006 [13] .

Ca și în cazul predecesorului Windows XP , CD-ul de instalare Windows Vista nu include niciun ICD (Driver client instalabil), care trebuie instalat de utilizator. În absența unui ICD, Vista oferă în continuare funcționalitatea OpenGL 1.4 fără extensii, printr-un strat de emulare bazat pe Direct3D.

Viitorul OpenGL în domeniul jocurilor video este, prin urmare, acum în mâinile producătorilor de jocuri video, care nu par a fi foarte înclinați să folosească oricum acest API, așa cum ar demonstra și o decizie a unuia dintre cei mai ilustri susținători ai acestuia în acest domeniu, John Carmack . prin ID Software . Acesta din urmă a declarat [14] la QuakeCon 2005 că principala sa platformă de dezvoltare va fi Xbox 360 , care se bazează de fapt pe DirectX .

Notă

Bibliografie

  • OpenGL Architecture Review Board; Dave Shreiner. Manual de referință OpenGL: Documentul oficial de referință la OpenGL, versiunea 1.4 (ediția a IV-a) , Addison-Wesley Professional, 2004. ISBN 0-321-17383-X
  • OpenGL Architecture Review Board; Dave Shreiner; Mason Woo; Jackie Neider; Tom Davis. Ghid de programare OpenGL: Ghidul oficial de învățare OpenGL, versiunea 2 (ediția a 5-a) . Addison-Wesley Professional, 2005. ISBN 0-321-33573-2
  • Randi J. Rost. OpenGL Shading Language , Addison-Wesley Professional, 2004. ISBN 0-321-19789-5

Elemente conexe

Alte proiecte

linkuri externe

Resurse pentru programatori

  • ( EN ) OpenGL Wiki - OpenGL Wiki oficial
  • ( EN ) NeHe Productions - Tutorial pentru programare cu OpenGL
  • (RO) CodeSampler.com - Exemple de coduri și tutoriale pentru programarea jocurilor în OpenGL 1.2-2.0
  • (RO) Iluminare de bază cu OpenGL - O explicație standard de iluminare a OpenGL-1.X 2.X
  • ( RO ) OpenGL Tutorial - Tutorial pentru programare cu OpenGL
  • ( RO ) OpenGL SuperBible , pe starstonesoftware.com . Adus la 8 februarie 2008 (arhivat din original la 10 ianuarie 2008) .
Software gratuit Free Software Portal : accesați intrările Wikipedia care se ocupă de software gratuit