Anar al contingut

OpenGL

De L'Enciclopèdia, la wikipedia en valencià
OpenGL


OpenGL (Open Graphics Library) és una especificació estàndar que definix una API multilenguaje i multiplataforma per a escriure aplicacions que produïxquen gràfics 2D i 3D. L'interfaç consistix en més de 250 funcions diferents que poden usar-se per a dibuixar escenes tridimensionals complexes a partir de primitives geomètriques simples, tals com a punts, llínees i triànguls. Va ser desenrollada originalment per Silicon Graphics Inc. (SGI) en 1992[1] i s'usa àmpliament en CAD, realitat virtual, representació científica, visualisació d'informació i simulació de vol. També s'usa en desenroll de videojocs, a on competix en Direct3D en plataformes Microsoft Windows.

Especificació

[editar | editar còdic]

Fonamentalment OpenGL és una especificació, és dir, un document que descriu un conjunt de funcions i el comportament exacte que deuen tindre. Partint d'ella, els fabricants d'hardware creen implementacions, que són biblioteques de funcions que s'ajusten als requisits de l'especificació, utilisant acceleració hardware quan és possible. Dites implementacions deuen superar uns tests de conformitat per a que els seus fabricants puguen calificar la seua implementació com conforme a OpenGL i per a poder usar elogotip oficial d'OpenGL. Hi ha implementacions eficients d'OpenGL per a Mac VOS, Microsoft Windows, GNU/Linux, vàries plataformes Unix i PlayStation 4. Existixen també vàries implementacions en software que permeten eixecutar aplicacions que depenen d'OpenGL sense soport d'acceleració hardware. És destacable la biblioteca de software lliure / còdic obert Taula 3D, una API de gràfics sense acceleració hardware i completament compatible en OpenGL. No obstant, per a evitar els costs de la llicència requerida per a ser denominada formalment com una implementació d'OpenGL, afirma ser simplement una API molt similar. L'especificació OpenGL era revisada pel OpenGL Architecture Review Board (ARB), fundat en 1992. El ARB estava format per un conjunt d'empreses interessades en la creació d'una API consistent i àmpliament disponible. Microsoft, un dels membres fundadors, va abandonar el proyecte en 2003. El 21 de setembre de 2006 es va anunciar que el control d'OpenGL passaria del ARB al Grup Khronos. En això s'intentava millorar el màrqueting d'OpenGL i eliminar les barreres entre el desenroll d'OpenGL i OpenGL ÉS. ARB es va convertir dins de Khronos en el OpenGL ARB Working Group. El subgrup de Khronos que gestiona l'especificació d'OpenGL es denomina OpenGL ARB Working Group.[2] Per a una relació dels membres que componen el OpenGL ARB Working Group, vejau l'apartat Membres del Grup Khronos. El gran número d'empreses en variats interessos que han passat tant per l'antic ARB com pel grup actual han fet d'OpenGL una API de propòsit general en un ampli ranc de possibilitats. Mark Segal i Kurt Akeley varen ser els autors de l'especificació original d'OpenGL. Chris Frazier va ser l'editor de la versió 1.1. Jon Leech ha editat les versions des d'1.2 fins a la present 3.0.[3]

Les noves versions de les especificacions d'OpenGL són llançades pel Khronos Group, cada una de les quals estén la API per a soportar vàries noves característiques. Els detalls de cada versió es decidixen per consens entre els membres del Grup, inclosos els fabricants de targetes gràfiques, dissenyadors de sistemes operatius i empreses de tecnologia en general com Mozilla i Google.[4]

Ademés de les característiques requerides per la API principal, els proveïdors d'unitats de processament gràfic (GPU) poden proporcionar funcionalitat adicional en forma d'extensions. Les extensions poden introduir noves funcions i nous constants, i poden relaixar o eliminar restriccions en les funcions existents d'OpenGL. Els proveïdors poden usar extensions per a expondre APIs personalisades sense necessitat de soport d'atres proveïdors o del Khronos Group en el seu conjunt, lo que aumenta considerablement la flexibilitat d'OpenGL. Totes les extensions es recopilen i es definixen en el Registre d'OpenGL.[5]

  • OpenGL té dos propòsits essencials:
  • Ocultar la complexitat de l'interfaç en les diferents targetes gràfiques, presentant al programador una API única i uniforme.
  • Ocultar les diferents capacitats de les diverses plataformes hardware, requerint que totes les implementacions soporten la funcionalitat completa d'OpenGL (utilisant emulació software si fora necessari). El funcionament bàsic d'OpenGL consistix en acceptar primitives tals com a punts, llínees i polígons, i convertir-les en píxels. Este procés és realisat per una pipeline gràfica coneguda com a Màquina d'estats d'OpenGL.[6] La major part dels comandos d'OpenGL be emeten primitives a la pipeline gràfica o be configuren cóm la pipeline processa dites primitives. Fins a l'aparició de la versió 2.0 cada etapa de la pipeline eixecutava una funció prefixada, resultant poc configurable. A partir de la versió 2.0 algunes etapes són programables usant un llenguage de programació cridat Gl.
  • OpenGL és una API basada en procediments de baix nivell que requerix que el programador dicte els passos exactes necessaris per a renderizar una escena. Açò contrasta en les API descriptives, a on un programador només deu descriure l'escena i pot deixar que la biblioteca controle els detalls per a representar-la. El disseny de baix nivell d'OpenGL requerix que els programadors coneguen en profunditat la pipeline gràfica, a canvi de donar-els llibertat per a implementar algoritmes gràfics nous.
  • OpenGL ha influït en el desenroll de les targetes gràfiques, promocionant un nivell bàsic de funcionalitat que actualment és comuna en l'hardware comercial; algunes d'eixes contribucions són:
  • Primitives bàsiques de punts, llínees i polígons rasterizados.
Erro al crear miniatura:
Procés en la pipeline de gràfics.
  1. Evaluació, si procede, de les funcions polinomials que definixen certes entrades, com les superfícies NURBS, aproximant curves i la geometria de la superfície.
  2. Operacions per vèrtiços, transformant-els, allumenant-els segons el seu material i retallant parts no visibles de l'escena per a produir un volum de visió.
  3. Rasterización, o conversió de l'informació prèvia en píxels. Els polígons són representats en el color adequat per mig d'algoritmes d'interpolació.
  4. Operacions per fragments o segments, com a actualisacions segons valors venidors o ya almagasenats de profunditat i de combinacions de colors, entre uns atres.
  5. Per últim, els fragments són bolcats en el Frame buffer. Moltes targetes gràfiques actuals proporcionen una funcionalitat superior a la bàsica ací exposta, pero les noves característiques generalment són millores d'esta pipeline bàsica més que canvis revolucionaris d'ella.

Eixemple

[editar | editar còdic]

Nota: Conte, este eixemple és únicament vàlit en OpenGL 2.1 i versions anteriors. Fa us intensiu de funcions actualment antiquades.

Primer, netegem el buffer de color per a escomençar en un canvas negre:

* glear( GL_COLOR_BUFFER_BIT );

S'establix la matriu modelview, que controla la posició de la cambra respecte a les primitives que renderizamos. La retardem 3 unitats en l'eix Z, deixant-la apuntant cap a l'orige:

* glMatrixMode( GL_MODELVIEW ); /* Els comandos per a matriu modificaran ''modelview'' */
* glLoadIdentity(); /* Inicializar ''modelview'' */
* glTranslatef( 0, 0, -3 ); /* Desplaçar 3 unitats en l'eix Z */

La matriu projection controla la perspectiva aplicada a les primitives; s'utilisa de forma similar a l'anterior:

* glMatrixMode( GL_PROJECTION ); /* Els comandos per a matriu modificaran ''projection'' */
* glLoadIdentity(); /* Inicializar ''projection'' */
* glFrustum( -1, 1, -1, 1, 1, 1000 ); /* Aplicar una proyecció en perspectiva */

Per últim, es dibuixa un polígon (un quadrat vert orientat en el pla XY):

* glBegin( GL_POLYGON ); /* Inici de polígon */
* glColor3f( 0, 1, 0 ); /* Establir color actual a vert */
* glVertex3f( -1, -1, 0 ); /* Establir un vèrtiç */
* glVertex3f( -1, 1, 0 ); /* Establir un vèrtiç */
* glVertex3f( 1, 1, 0 ); /* Establir un vèrtiç */
* glVertex3f( 1, -1, 0 ); /* Establir un vèrtiç */
* glEnd(); /* Fi de polígon */

Història

[editar | editar còdic]

En els anys 1980 el desenroll de software que fora compatible en un ampli ranc d'hardware gràfic era un verdader repte per als desenrolladors. Calia tractar en interfaços molt diferents i escriure drivers específics per a cada tipo d'hardware, resultant molt costós; per això, se subcontractaven equips de programadors per a agilitar el desenroll. Ya que cada equip treballava per separat en els seus interfaços, es produïa molt còdic redundante. Ademés, era un procés car, per lo que varis grups innovadors varen acceptar el repte de trobar un método millor. Al principi dels anys 1990 SGI era un grup de referència en gràfics 3D per a estacions de treball. Seua era la API IRIS GL, considerada puntera en el camp i estàndart de facto, aplegant a eclipsar a PHIGS, basada en estàndarts oberts. IRIS GL es considerava més fàcil d'usar i, lo més important, soportava renderizado en modo immediat. Ademés, PHIGS, a banda de la seua major dificultat, va ser considerada inferior a IRIS GL respecte a funcionalitat i capacitat. La competència de SGI (Sun Microsystems, Hewlett-Packard i IBM, entre uns atres) va ser capaç d'introduir en el mercat hardware 3D compatible en l'estàndart PHIGS per mig d'extensions. Açò va ser reduint la quota de mercat de SGI conforme anaven entrant diferents proveïdors en el mercat. Per tot això, en un intent d'enfortir la seua influència en el mercat, SGI va decidir convertir l'estàndart IRIS GL en un estàndart obert.

  • SGI va observar que la API IRIS GL no podia ser oberta per conflictes de llicències i paleses; també contenia funcions no rellevants per als gràfics 3D com API per a finestres, teclat o rata (en part, perque va ser desenrollada abans de l'aparició del X Window System o dels sistemes NeWS de Sun). Ademés, mentres anava madurant el soport del mercat per al nou estàndart, es pretenia mantindre els antics clients per mig de biblioteques afegides com Iris Inventor o Iris Performer. El resultat de tot lo anterior va ser ellançament de l'estàndart OpenGL. Alguns dels guanys que es varen conseguir varen ser:
  • Estandardisar l'accés a l'hardware.
  • Traslladar als fabricants la responsabilitat del desenroll dels interfaços en l'hardware.
  • Delegar les funcions per a finestres al sistema operatiu. En la varietat d'hardware gràfic existent, conseguir que tots parlaren el mateix llenguage va obtindre un efecte important, oferint als desenrolladors de software una plataforma d'alt nivell sobre la que treballar. En 1992, SGI va liderar la creació del OpenGL Architecture Review Board (OpenGL ARB), grup d'empreses que mantindria i estendria l'especificació OpenGL en els anys següents. OpenGL va evolucionar des d'IRIS GL, superant el seu problema de dependència de l'hardware en oferir emulació software per a aquelles característiques no soportades per l'hardware del que es disponguera. Aixina, les aplicacions podien utilisar gràfics alvançats en sistemes relativament poc potents. En 1994 SGI va barallar la possibilitat de llançar un producte denominat OpenGL++, el qual incloïa elements com una API de scene-graph (basada presumiblement en la tecnologia de Performer). Dita especificació va ser divulgada entre uns pocs grups interessats, pero mai va aparéixer finalment com a producte.

En 1995 Microsoft va llançar Direct3D, que es convertiria en el principal competidor d'OpenGL. El 17 de decembre de 1997 Microsoft i SGI varen iniciar el proyecte Fahrenheit, esforç cooperatiu en l'objectiu d'unificar els interfaços d'OpenGL i Direct3D (i afegir també una API scene-graph). En 1998 s'uniria al proyecte Hewlett-Packard. Pese a tindre un principi prometedor en estandardisar les API de gràfics 3D, per restriccions financeres en SGI i la falta general de respal per part de l'indústria, va anar finalment abandonat en 1999.

En la GDC de 2015, Khronos Group va anunciar la API successora d'OpenGL, cridada Vulkan.[7][8][9] Inicialment, va ser presentada per Khronos com "l'iniciativa OpenGL de pròxima generació", pero després el nom va ser descartat, quedant Vulkan com a definitiu.[10] Vulkan està basat en Mantle, una atra API de l'empresa AMD, el còdic del qual va ser cedit a Khronos en l'intenció de generar un estàndart obert similar a OpenGL, pero de baix nivell.[7][11][12][13][14][15]

Versions

[editar | editar còdic]

OpenGL 1.0

[editar | editar còdic]

Publicada en giner de 1992.
La primera especificació d'OpenGL va ser publicada per Mark Segal i Kurt Akeley.

OpenGL 1.1

[editar | editar còdic]

Publicada en giner de 1997.

  • OpenGL 1.1 es va enfocar en el soport de textures i formats de textura sobre hardware de GPU.


Targetes gràfiques soportades: totes

Extensió Aneu d'extensió Funcions
Vertex Arrays EXT_vertex_array glVertexPointer, glColorPointer, glNormalPointer
Polygon Offsets (depth biasing) EXT_polygon_offset glPolygonOffset
RGBA logical blending EXT_blend_logic_op glendFunc
Texture Copy and Sub-copy EXT_subtexture, EXT_copy_texture glTexSubImage1D/2D/3D
Texture Formats EXT_texture RGB "color", LUMINANCIA, ALPHA "transparència", INTENCIDAD. (en glTexImage2D)
Texture Objects EXT_texture_object glGenTextures, glBindTextures

OpenGL 1.2

[editar | editar còdic]

Publicada el 16 de març de 1998.

  • OpenGL 1.2 es va enfocar en el soport de textures de volum, píxels empaquetats, reescalado normal, mostreig de textures clamped/edge i processament d'imàgens.


Targetes gràfiques soportades: Rage 128, Rage 128 GL, Rage XL/XC, Rage 128 Pro, Rage Fury MAXX, i totes les targetes posteriors.

Extensió Aneu d'extensió Funcions
3D Volume Textures GL_EXT_texture3D glTexImage3DEXT
BGRA Texture Format GL_EXT_bgra BGR_EXT, BGRA_EXT (en glTexImage2D)
Packed Pixels GL_EXT_packed_pixels
Normal Rescaling GL_EXT_rescale_normal
Separate Specular Color GL_EXT_separate_specular_color
Texture Coord Edge Clamping SGIS_texture_edge_clamp
Texture LOD Control SGIS_texture_lod
Draw Range Elements EXT_draw_range_elements glDrawRangeElements
Image Processing Subset EXT_color_table, EXT_convolution, SGI_color_matrix, EXT_histogram, EXT_blend_color, EXT_blend_minmax

OpenGL 1.2.1

[editar | editar còdic]

Publicada el 14 d'octubre de 1998

  • OpenGL 1.2.1 va ser un llançament menor publicat despuix d'OpenGL 1.2 (16 de març de 1998) el qual va afegir multi-textura, o unitats de textura, al canal de renderizado. Açò va permetre textures múltiples que són combinades per píxel durant la rasterización.


Targetes gràfiques soportades: Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9800, GeForce 3, GeForce 4Tu, GeForce FX, i totes les targetes posteriors

Extensió Aneu d'extensió Funcions
Multi-Texturing SGIS_multitexture glActiveTextureARB, glientActiveTextureARB

OpenGL 1.3

[editar | editar còdic]

Publicada el 14 d'agost de 2001.

  • OpenGL 1.3 va afegir soport per a textura cubemap, múltiples textures, multi-mostreig i operacions de combinació d'unitats de textura (afegir, combinar, dot3, border clamp).


Targetes gràfiques soportades: Radeon 32/36, Radeon 64/7200, Radeon 7000, Radeo AIW, Radeon 7500, Radeon IGP 320M, Radeon IGP 345M, ÉS1000, Radeon 8500, Radeon 9000/Pro, Radeon 9100/9200/9250 (Pro & IGP), GeForce 3, GeForce 4Tu, GeForce FX, i totes les targetes posteriors.

Extensió Aneu d'extensió Funcions
Compressed Textures GL_ARB_texture_compression
Cubemaps GL_EXT_texture_cube_map TEXTURE_CUBE_MAP_EXT
Multi-Sampling GL_ARB_multisample
Texture Add GL_ARB_texture_env_add
Texture Combine GL_ARB_texture_env_combine
Texture Dot3 GL_ARB_texture_env_dot3
Texture Border Clamping GL_ARB_texture_border_clamp
Matrix Transpose GL_ARB_transpose_matrix

OpenGL 1.4

[editar | editar còdic]

Publicada el 24 de juliol de 2002.

  • OpenGL 1.4 va afegir soport de sombreado per hardware, coordenades boira, generació automàtica de mipmaps, i modos de textura adicionals.


Targetes gràfiques soportades: Quadro DCC, Quadro4 380 XGL, Quadro4 500XGL, 550XGL, Quadro4 700XGL, 750XGL, 900XGL, 980XGL, i totes les targetes posteriors.

Extensió Aneu d'extensió Funcions
Automatic Mipmaps SGIS_generate_mipmap
Blend Squaring Functions GL_NV_blend_square
Depth Textures GL_ARB_depth_texture DEPTH_COMPONENT16/24/32_ARB
Hardware Shadowing Z-depth GL_ARB_shadow COMPARE_R_TO_TEXTURE
Fog Coordinates GL_EXT_fog_coord
Multiple Draw Arrays GL_EXT_multi_draw_arrays
Point Parameters GL_ARB_point_parameter
Secondary Color GL_EXT_secondary_color
Separate Blend Functions GL_EXT_blend_func_separate
Stencil Wrapping GL_EXT_stencil_wrap
Texture Crossbar Environment Mode GL_ARB_texture_env_crossbar
Texture LOD Bias GL_EXT_texture_lod_bias
Texture Mirrored Repeat GL_ARB_texture_mirrored_repeat
Window Raster Position GL_ARB_window_pos

OpenGL 1.5

[editar | editar còdic]

Publicada el 29 de juliol de 2003.

  • OpenGL 1.5 va afegir soport per a objectes de búfer de vèrtiç (VBOs), consultes d'oclusió, i va ampliar les funcions de sombreado.


Targetes gràfiques soportades: Radeon X800, Radeon 9600, Radeon 9700, Radeon 9800, GeForce FX, i totes les targetes posteriors.

Extensió Aneu d'extensió Funcions Més Informació
VBOs Vertex Buffer Objects GL_ARB_vertex_buffer_object glBindBufferARB, glBufferDataARB, glGenBuffersARB [1]
Occlusion Queries GL_ARB_occlusion_query
Estendre Shadow Functions GL_EXT_shadow_funcs

OpenGL 2.0

[editar | editar còdic]

Publicada el 7 de setembre de 2004.

  • OpenGL 2.0 va afegir soport per a un llenguage ensamblador basat en GPU verdader, cridat ARB (dissenyat pel Architecture Review Board), que es convertiria en l'estàndart per a vertex i fragment shaders. Les targetes publicades en OpenGL 2.0 varen ser les primeres en oferir shaders programables per l'usuari.


Targetes soportades: Radeon 9650, Radeon 9500, Radeon 9500/9550/9600/9700/9800 (Pro, ES, XT), Radeon X1050, Radeon Xpress 200 / 1100, Radeon X300, Radeon X550, Radeon X600/Pro, Radeon X700, Radeon X800 (VEU, ES, 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 totes les targetes posteriors.

  • OpenGL 2.0 va ser concebut per 3Dlabs per a abordar les preocupacions de que OpenGL estava estancat i caria d'una direcció forta. 3Dlabs va propondre una série d'importants adició a la norma. La majoria d'estes varen ser, en eixe moment, rebujades pel ARB o d'una atra manera mai varen aplegar a realisar-se en la forma que 3Dlabs va propondre. No obstant, la seua proposta d'un llenguage de sombreado d'estil C es va completar en el temps, resultant en la formulació actual del Gl (OpenGL Shading Language, també slang). De la mateixa manera que els llenguages de sombreado estil-ensamblador que tractava de substituir, permet al programador substituir els fixed-function vertex i el fragment pipe en shaders, encara que esta volta escrits en un llenguage tipo C d'alt nivell. El disseny de Gl es va destacar per fer relativament poques concessions a les llimitacions de l'hardware llavors disponible, lo que recordava a la tradició anterior d'OpenGL establint un objectiu ambiciós, en visió de futur per als acceleradors 3D en lloc de simplement seguir l'estat d'hardware disponible actualment. L'última especificació OpenGL 2.0[16] inclou soport per a Gl.
Extensió ANEU d'extensió Funcions
Shader Objects GL_ARB_shader_objects
Vertex Programs GL_ARB_vertex_program glBindProgramARB, glGenProgramsARB
Vertex Shaders (VS) GL_ARB_vertex_shader
Fragment Shaders (FS) GL_ARB_fragment_shader
Multiple Render Targets GL_ARB_draw_buffers glDrawBuffers
Rectangular Texture GL_ARB_texture_rectangle GL_TEXTURE_RECTANGLE_ARB
Point Sprites GL_ARB_point_sprite
Separate Blend Equation GL_EXT_blend_equation_separate
Separate Stencil GL_EXT_stencil_two_side

OpenGL 2.1

[editar | editar còdic]

El 2 d'agost de 2006 es va publicar OpenGL 2.1. Sent completament compatible en les versions anteriors, aporta ademés noves característiques com:

  • Revisió 1.20 del OpenGL Shading Language (Gl).
  • Comandos que soporten l'especificació de matrius no quadrades.
  • Objectes Pixel buffer per a accelerar el tràfic d'imàgens en els buffers en comandos com glTexImage2D i glReadPixels.
Esta funcionalitat correspon a l'extensió ARB_pixel_buffer_object.
Esta funcionalitat correspon a l'extensió GL_EXT_texture_sRGB.

OpenGL 3.0

[editar | editar còdic]

La versió OpenGL 3.0[17] va ser publicada l'11 d'agost de 2008.

Targetes compatibles: Séries Radeon 2000 Séries. (És dir, només el hardware compatible en Direct3D 10.0 és capaç d'eixecutar OpenGL 3.0.)

És compatible cap a arrere en totes les versions anteriors d'OpenGL, encara que introduïx un nou mecanisme per a despreciar (deprecate en anglés) funcionalitat obsoleta i aixina poder simplificar la API en versions futures.

Les principals novetats són:

  • OpenGL Shading Language versió 1.30 (Gl)
  • Vertex Array Objects.
  • Framebuffer Objects més flexibles.
  • Textures i render buffers en menge flotant de 32-bits.
  • Soport per a format en menge flotant de 16-bits per a vèrtiços i píxels.
  • Capacitat d'almagasenar vèrtiços en un buffer despuix d'haver segut transformats.
  • Texture arrays
  • Z-buffer en menge flotant de 32-bits.

OpenGL 3.1

[editar | editar còdic]

La versió 3.1 (Longs Peak Reloaded) va ser publicada el 24 de març de 2009, i presenta una série de característiques per a fer la API més convenient d'utilisar, ademés de les característiques orientades al rendiment:

  • Llenguage de Sombreado OpenGL revisió 1.40 (Gl)
  • Texture Buffer Objects - un tipo de nova textura que conté una matriu unidimensional de texels
  • Uniform Buffer Objects per a compartir o actualisar senyes de forma ràpida
  • Textures normalisades firmades (ranc ± 1,0)
  • Un mínim de 16 unitats de textura accessibles pel Vertex Shader
  • Reinicie de primitiva
  • Instàncies - dibuixe d'objectes en múltiples ocasions a través de la reutilisació dels vertex data
  • CopyBuffer API per a còpia ràpida de senyes, utilisada en conjunt en OpenCL

En la lliberació de l'especificació OpenGL 3.1, també va ser publicada una extensió de compatibilitat que permet als desenrolladors accedir a la funcionalitat d'OpenGL 1. X/2. X eliminada en OpenGL 3.1. En particular, es manté funcionalitat legacy per a una àmplia llínea de soport. Funcionalitat heretada eliminada inclou:

  • Totes les opcions de funció fixa
  • Modo directe
  • Color index mode, per eixemple, formats de pixel en paleta de colors

OpenGL 3.2

[editar | editar còdic]

La versió 3.2 va ser publicada el 3 d'agost de 2009. Inclou les següents característiques:

  • OpenGL Shading Language versió 1.50 (Gl)
  • Soport de Geometria ai
  • BGRA vèrtiç component de demanats
  • Fragment Shader coordinar el control de convenció
  • Perfecta mapa gaveta filtrada
  • Fragment de profunditat de subjecció
  • Multisampled textures i textura de les mostres per a llocs específics de la mostra
  • Objectes de sincronisació i prop

OpenGL 3.3

[editar | editar còdic]

Publicada l'11 de març de 2010

  • OpenGL 3.3, simultàneament llançat en OpenGL 4.0 i complementada per un conjunt de noves extensions ARB, porta tanta funcionalitat com és possible des de l'especificació OpenGL 4.0 per al seu us en la generació anterior d'hardware GPU. Inclou Gl 3.30.

OpenGL 4.0

[editar | editar còdic]

Publicada l'11 de març de 2010
Targetes compatibles: Radeon HD serie 5000, nVidia GCH série 400;

Característiques:[18]

  • OpenGL Shading Language versió 4.00 (Gl)
  • Dos fases de sombreado que permeten a la GPU descarregar el teselado geomètric de la CPU.
  • Per-shaders fragmente de la mostra i de sombreado programable posicions fragmente d'entrada per a major calitat de representació i anti-aliasing de flexibilitat.
  • Subrutina Shader per a una flexibilitat de programació aumentada significativament.
  • Separació de l'estat de textura i de les senyes de textura per mig de l'adició d'un nou tipo d'objecte cridat sampler objectes.
  • Dibuix de les senyes generades pel API d'OpenGL o API externs, tals com OpenCL, sense intervenció de la CPU.
  • Operacions de 64-bit de menge flotant de doble precisió de sombreado i entrades / eixides per a prestar major precisió i calitat.
  • Millores de rendiment, tals com shaders de geometria en instàncies, instàncies matrius i una consulta de nou temporisador.

OpenGL 4.1

[editar | editar còdic]

Anunciat el 26 de juliol de 2010[19]
Targetes soportades: Nvidia GeForce 400 séries, Nvidia GeForce 500 séries, ATI Radeon HD 5000 séries, AMD Radeon HD 6000 Séries

Esta nova versió afig estes característiques adicionals a l'especificació, moltes de les quals ajuden a posar-la en consonancia con les de Direct3D 11:

  • Llenguage de sombreado OpenGL (Gl) 4.1
  • Compatibilitat completa en OpenGL per a sistemes integrats (OpenGL ÉS) 2.0
  • Reducció de temps de recompilación
  • La capacitat de vincular els programes de forma individual a les cinc etapes programables (Vertex, Control de mosaic, Evaluació del Teselado, la Geometria, i Fragment)
  • Millores a la menge flotant general de 64 bits compatible en agregat en OpenGL 4.0

OpenGL 4.2

[editar | editar còdic]

Publicat el 8 d'agost de 2011[20]
Targetes soportades: Nvidia GeForce 400 séries, Nvidia GeForce 500 séries, ATI Radeon HD 5000 séries, AMD Radeon HD 6000 Séries, ATI Radeon HD 7000 séries

  • Soport per a shaders en contadors atòmics i lloeu/store/atomic read-modify-write operations en un únic nivell d'una textura.
  • Capacitat de capturar geometria de la GPU en mosaic i dibuixar vàries instàncies d'una "transform feedback " per a que els objectes complexos siguen fàcilment replicats o canviats de posició.
  • OpenGL pot modificar ara un subconjunt arbitrari d'una textura comprimida sense necessitat de tornar a descarregar tota la textura a la GPU duent açò a un major rendiment.
  • Soport per a empaquetar varis valors de 8 bits i 16 bits en un únic valor de 32 bits, duent a un processament més eficient del shader i pressió reduïda en la memòria i l'ample de banda.

OpenGL 4.3

[editar | editar còdic]

Publicat el 6 d'agost de 2012[21] Targetes Soportades: Nvidia GeForce 400 séries, Nvidia GeForce 500 séries, Nvidia GeForce 600 séries, ATI Radeon HD 8000 séries

  • Inclou la versió més actualisada de Gl en la seua versió 4.30 (OpenGL Shading Language).
  • Càlcul de shaders que aprofiten el paralisme de la GPU per a tot lo relacionat en geometria o gràfics.
  • Almagasenament en búfer d'objectes Shader.
  • Consultes de paràmetros de textures per a trobar els llímits que les plataformes poden tindre per a processar les mateixes.
  • Alta calitat de comprensió en textures ETC2/EAC com a característica estàndar.
  • Compatibilitat total en les API d'OpenGL ÉS 3.0.
  • Capacitats de depuració que permeten rebre mensages de depuració mentres es desenrolla l'aplicació.
  • Vistes de textures per a anàlisis de les mateixes en diferents formes sense replicació de senyes.
  • Incrementa la seguritat de la memòria.
  • Una extensió multi-aplicació que afig robustea al sistema, i impedix que les aplicacions que provoquen un fallo i tinguen que resetearse afecten a unes atres que estiguen en eixecució.

OpenGL 4.4

[editar | editar còdic]

Publicat el 22 de juliol de 2013[22]

  • Control de colocació de tampons
  • Consultes asincrónicas eficients
  • Disseny de variables de sombreado
  • Encuadernación eficient de múltiples objectes
  • Portabilitat optimisada d'aplicacions Direct3D
  • Extensió de textura sense encuadernación
  • Extensió de textura escassa

OpenGL 4.5

[editar | editar còdic]

Publicat l'11 d'agost de 2014[23][24]

Targetes Soportades: Nvidia GeForce 400 séries i noves, també Tegra K1 i Tegra X1.[25][26]

  • Direct State Access (DSA)- Accés d'estat directe[27]
  • Flush Control - Millorat el sistema de multiproceso.
  • Robustness - Millores en el WebGL.
  • OpenGL ÉS 3.1 API i compatibilitat de shaders.

OpenGL 4.6

[editar | editar còdic]

Publicat el 17 de juliol del 2017[28][29]

  • Processament de geometria del costat de la GPU més eficient
  • Eixecució de sombreado més eficient (AZDO)
  • Més informació a través d'estadístiques, consulta de desbordament i contadors
  • Major rendiment sense contexts de maneig d'errors
  • Subjecció de la funció de desplaçament de polígon, resol un problema de representació d'ombres
  • Sombreadores SPIR-V
  • Filtrat anisotrópico millorat

Soport d'hardware: AMD Radeon HD 7000 Séries i posteriors (sombreadores FP64 implementats per emulació en algunes GPU TeraScale), Intel Haswell i posteriors, Nvidia GeForce 400 séries i posteriors[30]

Documentació

[editar | editar còdic]

La popularitat d'OpenGL es deu en part a la seua detallada documentació oficial. El OpenGL ARB ha publicat una série de manuals actualisats conforme la API anava evolucionant. Són fàcilment reconeixibles (i coneguts) pel color dels seus tapes:

  • Ellibre Rojo - The Ret Book: The OpenGL Programmer's guide. ISBN 0-321-33573-2
Llibre de referència i tutorial. Considerat llibre de capçalera per a programadors d'OpenGL.
  • Ellibre Blau - The Blue Book: The OpenGL Referència manual. ISBN 0-321-17383-X
En essència, una còpia de la pàgines del man d'OpenGL.
Inclou un pòster desplegable en el diagrama de l'estructura d'una implementació ideal d'OpenGL.
  • Ellibre Vert - The Green Book: Programming OpenGL for the X Window System. ISBN 0-201-48359-9
Llibre sobre l'interfaç X11 i GLUT.
  • Ellibre Alpha (de tapa blanca) - The Alpha Book: OpenGL Programming for Windows 95 and Windows NT. ISBN 0-201-40709-4
Llibre sobre l'interfaç d'OpenGL en plataformes de Microsoft Windows. Per a OpenGL 2.0 i posteriors:
  • Ellibre Taronja - The Orange Book: The OpenGL Shading Language. ISBN 0-321-33489-2
Llibre de referència i tutorial per a Gl.

Extensions

[editar | editar còdic]

L'estàndart OpenGL permet als fabricants afegir noves funcionalitats adicionals per mig de extensions conforme apareixen noves tecnologies. Dites extensions poden introduir noves funcions i constants, i suavisar o inclús eliminar restriccions en funcions ya existents. Cada fabricant dispon d'una abreviatura que li identifica en el nom de les seues noves funcions o constants. Per eixemple, l'abreviatura de NVIDIA (NV) apareix en la definició de la seua funció glCombinerParameterfvNV() i el seu constant GL_NORMAL_MAP_NV. És possible que varis fabricants es posen d'acort en implementar la mateixa funcionalitat estesa. En eixe cas, s'usa l'abreviatura EXT. Inclús pot ocórrer que el ARB adopte l'extensió, convertint-se aixina en estàndart i utilisant l'abreviatura ARB en els seus noms. La primera extensió ARB va ser GL_ARB_multitexture, presentada en la versió 1.2.1. Seguint el camí marcat per l'extensió, el multitexturing no és ya una extensió opcional, sino que va entrar a formar part del núcleu d'OpenGL des de la versió 1.3. Abans d'usar una extensió, els programes deuen comprovar la seua disponibilitat i, despuix, accedir a les noves funcionalitats oferides. Este procés és depenent de la plataforma, pero biblioteques com GLEW i GLEE ho simplifiquen. Les especificacions per a la major part de les extensions poden trobar-se en el registre oficial d'extensions.

  • Vulkan, anteriorment denominada "Iniciativa OpenGL de pròxima generació" (glNext),[31][32] és un esforç de redisseny bàsic per a unificar OpenGL i OpenGL ÉS en una API comuna que no serà compatible en les versions anteriors d'OpenGL. La versió inicial de Vulkan API es va llançar el 16 de febrer de 2016.

Biblioteques d'utilitats

[editar | editar còdic]

S'han programat vàries biblioteques externes que afigen característiques no disponibles en el propi OpenGL. Algunes d'elles són:

  • GLU: Oferix funcions de dibuix d'alt nivell basades en primitives d'OpenGL. Les funcions de GLU es reconeixen fàcilment puix totes escomencen en el prefix glu.
  • GLUT: API multiplataforma que facilita una rudimentària funcionalitat per al maneig de finestres i interacció per mig de teclat i rata.
  • GLUI: Interfaç d'usuari basada en GLUT; proporciona elements de control tals com a botons, caixes de selecció i spinners. És independent del sistema operatiu, sustentant-se en GLUT per a manejar els elements depenents del sistema.

Referències per a llenguages de programació (bindings)

[editar | editar còdic]

Per a emfatisar les característiques multilenguaje i multiplataforma d'OpenGL, s'han desenrollat varis bindings en molts llenguages. Alguns dels llenguages per als que estan disponibles dits bindings són:

  • Ada: Ada OpenGL 1.1 soporta GL, GLU i GLUT.
  • C#: Tao és un framework per a . NET que inclou OpenGL entre atres biblioteques multimèdia.
  • D: vejau i.
  • Embarcadero Delphi: Dot.[33]
  • Fortran: f90gl soporta OpenGL 1.2, GLU 1.2, GLUT 3.7.
  • Gambes: gb. opengl[34]

Membres del Grup Khronos

[editar | editar còdic]

En 2008, alguns dels membres del Grup Khronos són:

Per a una llista completa i actualisada dels membres del proyecte, vegen-se les llistes de membres, contribuents i acadèmics del Grup Khronos.

Vore també

[editar | editar còdic]

Biblioteques adicionals per a OpenGL

[editar | editar còdic]
  • GLU - Funcions adicionals (NURBS, esferes, discs, etc)
  • GLUT - API per a facilitar desenroll en OpenGL i gestionar finestres i events
  • GLUI - Biblioteca d'interfaç basat en GLUT
  • GLX - Interfaç d'OpenGL en el sistema X Window System

Atres interfaços de gràfics

[editar | editar còdic]
  • Vulkan - Successor d'OpenGL
  • Taula 3D - Implementació de còdic obert d'OpenGL
  • LWJGL (Lightweight Java Game Library) - Accés a OpenGL, OpenAL i varis dispositius d'entrada
  • Virtual - Comandos 3D entre servidor dedicat i client

Aplicacions OpenGL

[editar | editar còdic]

Referències

[editar | editar còdic]
  1. «SGI - OpenGL Overview».
  2. «OpenGL Architecture Review Board Working Group». Archivat des d'el original, el 24 de novembre de 2011. Consultat el 14 de giner de 2007.
  3. «Especificació d'OpenGL, versió 3.0».
  4. «Khronos Membership Overview and FAQ».
  5. «Khronos Registry».
  6. «Copia archivada». Archivat des d'el original, el 16 de maig de 2008. Consultat el 14 de giner de 2007.
  7. 7,0 7,1 «More on Vulkan and SPIR - V: The future of high-performance graphics». Khronos Group. Consultat el 27 de juny de 2015. «Thanks AMD!»
  8. «Vulkan : Graphics and compute Belong Together» (PDF). Khronos. org. Consultat el 5 de març de 2015.
  9. «Vulkan - Graphics and compute belong together». Khronos. org. Consultat el 5 de març de 2015.
  10. Batchelor, James (Plantilla:Dona't). «glNext revealed as Vulkan graphics API». develop-online. net.
  11. «Mantle is a Vulkan: AMD's dead graphics API rises from the ashes in OpenGL's successor». PCWorld (Plantilla:Dona't).
  12. «AMD Gaming: One of Mantle's Futures: Vulkan | AMD Blogs». Community. amd. com. Archivat des d'el original, el 6 de març de 2015. Consultat el 5 de març de 2015.
  13. Hruska, Joel (Plantilla:Dona't). «Not dead yet: AMD’s Mantle powers new Vulkan API, VR efforts». ExtremeTech. Consultat el 5 de març de 2015.
  14. «AMD's Mantle Lives On In Vulkan - Lays The Foundation For The Next OpenGL». Wccftech. com. Consultat el 5 de març de 2015.
  15. Kirsch, Nathan. «Is AMD Mantle Dead As We Have Known It? Vulcan API Uses Mantle Technology for OpenGL». Legit Reviews. Consultat el 5 de març de 2015.
  16. «Copia archivada». Archivat des d'el original, el 2 d'abril de 2007. Consultat el 28 de març de 2010.
  17. http://www.opengl.org/registry/doc/glspec30.20080811.pdf
  18. Khronos webmaster. «Khronos Unleashes Cutting-Edge, Cross-Platform Graphics Acceleration with OpenGL 4.0». Khronos Press Releases. Archivat des d'el original, el 25 d'agost de 2011. Consultat el 11 de març de 2010.
  19. «OpenGL 4.1 Specification Released».
  20. «Khronos Enriches Cross-Platform 3D Graphics with Release of OpenGL 4.2 Specification».
  21. «Khronos Releases OpenGL 4.3 Specification with Major Enhancements».
  22. «Khronos Releases OpenGL 4.4 Specification».
  23. «Khronos Group Announces Key Advances in OpenGL Ecosystem - Khronos Group Press Release». Consultat el 17 d'abril de 2015.
  24. Khronos Group. «OpenGL® Registry». Consultat el 17 d'abril de 2015.
  25. «SG4121: OpenGL Update for NVIDIA GPUs». Ustream. Archivat des d'el original, el 17 de maig de 2015. Consultat el 17 d'abril de 2015.
  26. Mark Kilgard. «OpenGL 4.5 Update for NVIDIA GPUs». Consultat el 17 d'abril de 2015.
  27. «OpenGL 4.5 released—with one of Direct3D’s best features». Ars Technica. Consultat el 17 d'abril de 2015.
  28. «Khronos OpenGL® Registry - The Khronos Group Inc». registry. khronos. org. Consultat el 2022-12-16.
  29. «Khronos Releases OpenGL 4.6 with SPIR-V Support» (en en). The Khronos Group. Consultat el 2022-12-16.
  30. «NVIDIA Releases 381.26.11 Linux Driver With OpenGL 4.6 Support» (en en). www. phoronix. com. Consultat el 2022-12-16.
  31. «Meet Vulkan, the powerful, platform-agnostic gaming tech taking aim at DirectX 12» (en en). PCWorld. Consultat el 2022-12-16.
  32. «Khronos unveils Vulkan: OpenGL built for modern systems» (en en-us). Ars Technica. Consultat el 2022-12-16.
  33. «Nikita is no more! Elena is here! :)». Archivat des d'el original, el 19 d'abril de 2012. Consultat el 2009.
  34. «Documentació de Gambes - gb. opengl». Archivat des d'el original, el 12 de març de 2012. Consultat el 2009.
  35. Tens que especificar títul = i url = al usar {{cita web}}.. Archivat des d'el original, el 11 d'octubre de 2017. Consultat el 2011.
  36. «pike. anada. liu. es: Modules». Archivat des d'el original, el 2 d'octubre de 2012. Consultat el 2009.
  37. https://web.archive.org/web/20071012184537/http://haskell.org/HOpenGL/index.html

Enllaços externs

[editar | editar còdic]