Vous êtes sur la page 1sur 27

OpenGL

FromWikipedia,thefreeencyclopedia

OpenGL(OpenGraphicsLibrary)[3][4][5]isacross
language,multiplatformapplicationprogramming
interface(API)forrendering2Dand3Dvectorgraphics.
TheAPIistypicallyusedtointeractwithagraphics
processingunit(GPU),toachievehardwareaccelerated
rendering.
SiliconGraphicsInc.(SGI)starteddevelopingOpenGLin
1991andreleaseditinJanuary1992[6]applicationsuseit
extensivelyinthefieldsofCAD,virtualreality,scientific
visualization,informationvisualization,flightsimulation,
andvideogames.OpenGLismanagedbythenonprofit
technologyconsortiumKhronosGroup.

OpenGL

Originalauthor(s) SiliconGraphics
Developer(s)

formerly:ARB
now:KhronosGroup

Initialrelease

January1992

Stablerelease

4.5/August11,2014

Writtenin

C[1]

Operatingsystem Crossplatform
Platform

Crossplatform

Type

API

License

Various[2]

Website

www.opengl.org
(https://www.opengl.org/)

Contents
1Design
1.1Development
2Documentation
3Associatedlibraries
3.1Contextandwindowtoolkits
3.2Extensionloadinglibraries
3.3Implementations
4History
5Versionhistory
5.1OpenGL1.1
5.2OpenGL1.2
5.3OpenGL1.2.1

Videogamesoutsourcerealtimerendering
calculationstotheGPUoverOpenGL.The
renderedresultsarenotsentback,andareinstead
storedinaframebufferwhosecontentissenttothe
displaycontroller.

5.4OpenGL1.3
5.5OpenGL1.4
5.6OpenGL1.5
5.7OpenGL2.0
5.8OpenGL2.1
5.9LongsPeakandOpenGL3.0
controversy
5.10OpenGL3.0
5.11OpenGL3.1
5.12OpenGL3.2
5.13OpenGL3.3
5.14OpenGL4.0
5.15OpenGL4.1
5.16OpenGL4.2
5.17OpenGL4.3
5.18OpenGL4.4
5.19OpenGL4.5
6Samplerenderings
7Successor
8Seealso
9Furtherreading
10References
11Externallinks

Design
TheOpenGLspecificationdescribesanabstractAPIfordrawing2Dand3Dgraphics.Althoughitis
possiblefortheAPItobeimplementedentirelyinsoftware,itisdesignedtobeimplementedmostlyor
entirelyinhardware.
TheAPIisdefinedasanumberoffunctionswhichmaybecalledbytheclientprogram,alongsideanumber
ofnamedintegerconstants(forexample,theconstantGL_TEXTURE_2D,whichcorrespondstothe
decimalnumber3553).AlthoughthefunctiondefinitionsaresuperficiallysimilartothoseoftheC
programminglanguage,theyarelanguageindependent.Assuch,OpenGLhasmanylanguagebindings,
someofthemostnoteworthybeingtheJavaScriptbindingWebGL(API,basedonOpenGLES2.0,for3D
renderingfromwithinawebbrowser)theCbindingsWGL,GLXandCGLtheCbindingprovidedby
iOSandtheJavaandCbindingsprovidedbyAndroid.

Inadditiontobeinglanguageindependent,OpenGLisalsoplatformindependent.Thespecificationsays
nothingonthesubjectofobtaining,andmanaging,anOpenGLcontext,leavingthisasadetailofthe
underlyingwindowingsystem.Forthesamereason,OpenGLispurelyconcernedwithrendering,providing
noAPIsrelatedtoinput,audio,orwindowing.

Development
OpenGLisanevolvingAPI.NewversionsoftheOpenGLspecificationsareregularlyreleasedbythe
KhronosGroup,eachofwhichextendstheAPItosupportvariousnewfeatures.Thedetailsofeachversion
aredecidedbyconsensusbetweentheGroup'smembers,includinggraphicscardmanufacturers,operating
systemdesigners,andgeneraltechnologycompaniessuchasMozillaandGoogle.[7]
InadditiontothefeaturesrequiredbythecoreAPI,GPUvendorsmayprovideadditionalfunctionalityin
theformofextensions.
Extensionsmayintroduce
newfunctionsandnew
constants,andmayrelax
orremoverestrictionson
existingOpenGL
functions.Vendorscan
useextensionstoexpose
customAPIswithout
needingsupportfrom
othervendorsorthe
KhronosGroupasa
whole,whichgreatly
increasestheflexibilityof
OpenGL.Allextensions
arecollectedin,and
Anillustrationofthegraphicspipelineprocess
definedby,theOpenGL
Registry
(http://www.opengl.org/registry/).
Eachextensionisassociatedwithashortidentifier,basedonthenameofthecompanywhichdevelopedit.
Forexample,Nvidia'sidentifierisNV,whichispartoftheextensionnameGL_NV_half_float,theconstant
GL_HALF_FLOAT_NV,andthefunctionglVertex2hNV().[8]Ifmultiplevendorsagreetoimplementthesame
functionalityusingthesameAPI,asharedextensionmaybereleased,usingtheidentifierEXT.Insuch
cases,itcouldalsohappenthattheKhronosGroup'sArchitectureReviewBoardgivestheextensiontheir
explicitapproval,inwhichcasetheidentifierARBisused.[9]
ThefeaturesintroducedbyeachnewversionofOpenGLaretypicallyformedfromthecombinedfeaturesof
severalwidelyimplementedextensions,especiallyextensionsoftypeARBorEXT.

Documentation

OpenGL'spopularityispartiallyduetothequalityofitsofficialdocumentation.TheOpenGLArchitecture
ReviewBoardreleasedaseriesofmanualsalongwiththespecificationwhichhavebeenupdatedtotrack
changesintheAPI.Thesearealmostuniversallyknownbythecolorsoftheircovers:
TheRedBook
OpenGLProgrammingGuide,8thEdition.ISBN0321773039
Atutorialandreferencebook.
TheOrangeBook
OpenGLShadingLanguage,3rdedition.ISBN0321637631
AtutorialandreferencebookforGLSL.
Historicbooks(preOpenGL2.0):
TheGreenBook
OpenGLProgrammingfortheXWindowSystem.ISBN0201473345
AbookaboutX11interfacingandGLUT.
TheBlueBook
OpenGLReferencemanual,4thedition.ISBN032117383X
EssentiallyahardcopyprintoutofthemanpagesforOpenGL.
IncludesapostersizedfoldoutdiagramshowingthestructureofanidealisedOpenGL
implementation.
TheAlphaBook(whitecover)
OpenGLProgrammingforWindows95andWindowsNT.ISBN0201407094
AbookaboutinterfacingOpenGLwithMicrosoftWindows.

Associatedlibraries
TheearliestversionsofOpenGLwerereleasedwithacompanionlibrarycalledGLU,theOpenGLUtility
Library.Itprovidedsimple,usefulfeatureswhichwereunlikelytobesupportedincontemporaryhardware,
suchasmipmapgeneration,tessellation,andgenerationofprimitiveshapes.TheGLUspecificationwaslast
updatedin1998,andthelatestversiondependsonfeatureswhichweredeprecatedwiththereleaseof
OpenGL3.1in2009.[10]

Contextandwindowtoolkits
GiventhatcreatinganOpenGLcontextisquiteacomplexprocess,andgiventhatitvariesbetween
operatingsystems,automaticOpenGLcontextcreationhasbecomeacommonfeatureofseveralgame
developmentanduserinterfacelibraries,includingSDL,Allegro,SFML,FLTK,andQt.Afewlibraries
havebeendesignedsolelytoproduceanOpenGLcapablewindow.ThefirstsuchlibrarywasGLUT(later
supersededbyfreeglut).GLFWisaneweralternative.[11]
ThesetoolkitsaredesignedspecificallyaroundcreatingandmanagingOpenGLwindows.Theyalso
manageinput,butlittlebeyondthat.[12]

GLFWAcrossplatformwindowingandkeyboard/mouse/joystickhandler.Ismoreaimedfor
creatinggames.
freeglutAcrossplatformwindowingandkeyboard/mousehandler.ItsAPIisasupersetofthe
GLUTAPI,anditismorestableanduptodatethanGLUT.
GLUTAnoldwindowinghandler,nolongermaintained.
Several"multimedialibraries"cancreateOpenGLwindows,inadditiontoinput,soundandother
tasksusefulforgamelikeapplications.
Allegro5AcrossplatformmultimedialibrarywithaCAPIfocusedongamedevelopment.
SDLAcrossplatformmultimedialibrarywithaCAPI.
SFMLAcrossplatformmultimedialibrarywithaC++API.
Widgettoolkits
FLTKAsmallcrossplatformC++widgetlibrary.
QtAcrossplatformC++widgettoolkit.ItprovidesanumberofOpenGLhelperobjects,
whichevenabstractawaythedifferencebetweendesktopGLandOpenGLES.
wxWidgetsAcrossplatformC++widgettoolkit.

Extensionloadinglibraries
GiventhehighworkloadinvolvedinidentifyingandloadingOpenGLextensions,afewlibrarieshavebeen
designedwhichloadallavailableextensionsandfunctionsautomatically.ExamplesincludeGLEE,GLEW
andglbinding.Extensionsarealsoloadedautomaticallybymostlanguagebindings,suchasJOGLand
PyOpenGL.

Implementations
Mesa3DisanopensourceimplementationofOpenGL.Itcandopuresoftwarerendering,anditmayalso
usehardwareaccelerationontheLinuxplatformbytakingadvantageoftheDirectRenderingInfrastructure.
Asofversion10.0,itimplementsversion3.3oftheOpenGLstandard.[13]

History
Inthe1980s,developingsoftwarethatcouldfunctionwithawiderangeofgraphicshardwarewasareal
challenge.Softwaredeveloperswrotecustominterfacesanddriversforeachpieceofhardware.Thiswas
expensiveandresultedinmultiplicationofeffort.
Bytheearly1990s,SGIwasaleaderin3Dgraphicsforworkstations.TheirIRISGLAPI[14]wasconsidered
stateoftheartandbecamethedefactoindustrystandard,overshadowingtheopenstandardsbasedPHIGS.
ThiswasbecauseIRISGLwasconsideredeasiertouse,andbecauseitsupportedimmediatemode
rendering.Bycontrast,PHIGSwasconsidereddifficulttouseandoutdatedintermsoffunctionality.

SGI'scompetitors(includingSunMicrosystems,HewlettPackardandIBM)werealsoabletobringto
market3Dhardware,supportedbyextensionsmadetothePHIGSstandard.ThisinturncausedSGImarket
sharetoweakenasmore3Dgraphicshardwaresuppliersenteredthemarket.Inanefforttoinfluencethe
market,SGIdecidedtoturntheIrisGLAPIintoanopenstandardOpenGL.
However,SGIhadalargenumberofsoftwarecustomersforwhomthechangefromIrisGLtoOpenGL
wouldrequiresignificantinvestment.Moreover,IrisGLhadAPIfunctionsthatwerenotrelevantto3D
graphics.Forexample,itincludedawindowing,keyboardandmouseAPI,inpartbecauseitwasdeveloped
beforetheXWindowSystemandSun'sNeWSsystemsweredeveloped.And,IrisGLlibrarieswere
unsuitableforopeningduetolicensingandpatentissues.ThesefactorsrequiredSGItocontinuetosupport
theadvancedandproprietaryIrisInventorandIrisPerformerprogrammingAPIswhilemarketsupportfor
OpenGLmatured.
OneoftherestrictionsofIrisGLwasthatitonlyprovidedaccesstofeaturessupportedbytheunderlying
hardware.Ifthegraphicshardwaredidnotsupportafeature,thentheapplicationcouldnotuseit.OpenGL
overcamethisproblembyprovidingsupportinsoftwareforfeaturesunsupportedbyhardware,allowing
applicationstouseadvancedgraphicsonrelativelylowpoweredsystems.OpenGLstandardizedaccessto
hardware,pushedthedevelopmentresponsibilityofhardwareinterfaceprograms(sometimescalleddevice
drivers)tohardwaremanufacturers,anddelegatedwindowingfunctionstotheunderlyingoperatingsystem.
Withsomanydifferentkindsofgraphicshardware,gettingthemalltospeakthesamelanguageinthisway
hadaremarkableimpactbygivingsoftwaredevelopersahigherlevelplatformfor3Dsoftware
development.
In1992,[15]SGIledthecreationoftheOpenGLArchitectureReviewBoard(OpenGLARB),thegroupof
companiesthatwouldmaintainandexpandtheOpenGLspecificationinthefuture.
In1994,SGIplayedwiththeideaofreleasingsomethingcalled"OpenGL++"whichincludedelementssuch
asascenegraphAPI(presumablybasedontheirPerformertechnology).Thespecificationwascirculated
amongafewinterestedpartiesbutneverturnedintoaproduct.[16]
MicrosoftreleasedDirect3Din1995,whicheventuallybecamethemaincompetitorofOpenGL.On
December17,1997,[17]MicrosoftandSGIinitiatedtheFahrenheitproject,whichwasajointeffortwiththe
goalofunifyingtheOpenGLandDirect3Dinterfaces(andaddingascenegraphAPItoo).In1998,Hewlett
Packardjoinedtheproject.[18]Itinitiallyshowedsomepromiseofbringingordertotheworldofinteractive
3DcomputergraphicsAPIs,butonaccountoffinancialconstraintsatSGI,strategicreasonsatMicrosoft,
andgenerallackofindustrysupport,itwasabandonedin1999.[19]
InJuly2006theOpenGLArchitectureReviewBoardvotedtotransfercontroloftheOpenGLAPIstandard
totheKhronosGroup.[20][21]

Versionhistory
ThefirstversionofOpenGL,version1.0,wasreleasedinJanuary1992byMarkSegalandKurtAkeley.
Sincethen,OpenGLhasoccasionallybeenextendedbyreleasinganewversionofthespecification.Such
releasesdefineabaselinesetoffeatureswhichallconforminggraphicscardsmustsupport,andagainst

whichnewextensionscanmoreeasilybewritten.EachnewversionofOpenGLtendstoincorporatea
numberofextensionswhichhavewidespreadsupportamonggraphicscardvendors,althoughthedetailsof
thoseextensionsmaybechanged.

OpenGL1.1
ReleaseDate:March4,1997
Extension

Details

EXT_vertex_array
(https://www.opengl.org/registry/specs/EXT/vertex_array.txt)

Multipleverticesmaybepassedtothe
GLwithasinglefunctioncall.

EXT_polygon_offset
(https://www.opengl.org/registry/specs/EXT/polygon_offset.txt)

Depthvaluesmaybeoffsetonaper
primitivebasis.

Fragmentcolorsmaybeblendedinto
EXT_blend_logic_op
theframebufferusingbitwise
(https://www.opengl.org/registry/specs/EXT/blend_logic_op.txt)
operations.
EXT_texture
(https://www.opengl.org/registry/specs/EXT/texture.txt)

Varioustexturingimprovements,
includingproxytexturesandsized
internalformats.

EXT_copy_texture
(https://www.opengl.org/registry/specs/EXT/copy_texture.txt)
EXT_subtexture
(https://www.opengl.org/registry/specs/EXT/subtexture.txt)

Variousmethodstoaltertexture
images,includingimagecopyingand
subimagereplacement.

EXT_texture_object
(https://www.opengl.org/registry/specs/EXT/texture_object.txt)

TexturestatemaybestoredinaGL
object,forgreaterefficiency.

OpenGL1.2
ReleaseDate:March16,1998
OnenotablefeatureofOpenGL1.2wastheintroductionoftheimagingsubset.Thisisasetoffeatures
whichareveryusefultoimageprocessingapplications,butwhichhavelimitedusefulnesselsewhere.
Implementationofthissubsethasalwaysbeenoptionalsupportisindicatedbyadvertisingtheextension
stringARB_imaging.

Extension

Details

EXT_texture3D
(https://www.opengl.org/registry/specs/EXT/texture3D.txt)

Threedimensionaltexturing.

EXT_bgra(https://www.opengl.org/registry/specs/EXT/bgra.txt)

Pixeldatamaybespecifiedin
BGRorBGRAorder,tomatch
thepixelformatofWindows
bitmaps.

EXT_packed_pixels
(https://www.opengl.org/registry/specs/EXT/packed_pixels.txt)

Pixeldatamaybe"packed"
intoalargerprimitivetype.
Forexample,allfour
componentsofanRGBApixel
maybespecifiedasasingle
32bitinteger.

EXT_rescale_normal
(https://www.opengl.org/registry/specs/EXT/rescale_normal.txt)

Normalsmaybeautomatically
rescaledbytheGL,whichin
somecasesremovestheneed
foranexpensive
normalization.

TheGL'slightingcapabilities
EXT_separate_specular_color
areextendedtosupport
(https://www.opengl.org/registry/specs/EXT/separate_specular_color.txt) textureindependentspecular
highlighting.
SGIS_texture_edge_clamp
(https://www.opengl.org/registry/specs/SGIS/texture_edge_clamp.txt)

Anewtexturecoordinate
clampingmodewhich,unlike
GL_CLAMP,willnever
samplefromthetexture's
border.

SGIS_texture_lod
(https://www.opengl.org/registry/specs/SGIS/texture_lod.txt)

Theprogrammerisgiven
greatercontroloverthelevel
ofdetailcalculationusedto
selectatexture'smipmap.

EXT_draw_range_elements
(https://www.opengl.org/registry/specs/EXT/draw_range_elements.txt)

TheDrawRangeElements
functionaslightlymore
performantalternativeto
DrawElements.

OpenGL1.2.1
ReleaseDate:October14,1998
OpenGL1.2.1wasaminorrelease,appearingonlysevenmonthsafterthereleaseofversion1.2.It
introducedtheconceptofARBextensions,anddefinedtheextensionARB_multitexture
(https://www.opengl.org/registry/specs/ARB/multitexture.txt),withoutyetincorporatingitintotheOpenGL
corespecification.

OpenGL1.3

ReleaseDate:August14,2001
Extension

Details

ARB_texture_compression
(https://www.opengl.org/registry/specs/ARB/texture_compression.txt)

Astandardframeworkupon
whichcompressedtexture
formatsmaybesupported,
withoutrequiringanyactual
compressionsupport.

ARB_texture_cube_map
(https://www.opengl.org/registry/specs/ARB/texture_cube_map.txt)

Cubemappedtexturing.

ARB_multisample
(https://www.opengl.org/registry/specs/ARB/multisample.txt)

Astandardframeworkupon
whichmultisampleantialiasing
maybesupported,without
requiringanyactualMSAA
support.

ARB_multitexture
(https://www.opengl.org/registry/specs/ARB/multitexture.txt)

Colorvaluesfromseveral
texturesatoncemaybeblended
ontoasinglefragment.

ARB_texture_env_add
(https://www.opengl.org/registry/specs/ARB/texture_env_add.txt)
ARB_texture_env_combine
(https://www.opengl.org/registry/specs/ARB/texture_env_combine.txt)
ARB_texture_env_dot3
(https://www.opengl.org/registry/specs/ARB/texture_env_dot3.txt)

Severalnew"texture
environmentfunctions":
mechanismsforblendingtexture
colorsontofragmentcolors.

Anewtexturecoordinate
clampingmodewhichforces
ARB_texture_border_clamp
outofboundstexture
(https://www.opengl.org/registry/specs/ARB/texture_border_clamp.txt)
coordinatestosamplefromthe
texture'sborder.
ARB_transpose_matrix
(https://www.opengl.org/registry/specs/ARB/transpose_matrix.txt)

Transformationmatricesmaybe
specifiedineitherrowmajor
orderorcolumnmajororder.

OpenGL1.4
Releasedate:July24,2002
Extension

Details

SGIS_generate_mipmap
(https://www.opengl.org/registry/specs/SGIS/generate_mipmap.txt)

Texturemipmapsmaybe
generatedautomaticallybythe
GL.

NV_blend_square
(https://www.opengl.org/registry/specs/NV/blend_square.txt)

RGBandAlphavaluesmay
besquaredduringalpha
blending.

EXT_blend_color
(https://www.opengl.org/registry/specs/EXT/blend_color.txt)

Variouswaystocustomizethe

EXT_blend_minmax
(https://www.opengl.org/registry/specs/EXT/blend_minmax.txt)
EXT_blend_subtract
(https://www.opengl.org/registry/specs/EXT/blend_subtract.txt)

blendequation,promoted
fromtheoptionalimaging
subset(introducedinversion
1.2)tothecorespecification.

ARB_depth_texture
(https://www.opengl.org/registry/specs/ARB/depth_texture.txt)
ARB_shadow(https://www.opengl.org/registry/specs/ARB/shadow.txt)

Textureswhichstoredepth
values,ratherthancolor
values.Suchtexturesare
usefulforshadowcastingand
displacementmaps.

EXT_fog_coord
(https://www.opengl.org/registry/specs/EXT/fog_coord.txt)

Awaytocustomizethefog
intensityonapervertexbasis.

EXT_multi_draw_arrays
(https://www.opengl.org/registry/specs/EXT/multi_draw_arrays.txt)

AsetofAPIswhichemulate
multiplecallstoDrawArrays
orDrawElements,inasingle
functioncall.Insomecases,
thismaybemoreefficient.

ARB_point_parameters
(https://www.opengl.org/registry/specs/ARB/point_parameters.txt)

Greatercontroloverthe
rasterizationofpoint
primitives.

EXT_secondary_color
(https://www.opengl.org/registry/specs/EXT/secondary_color.txt)

The"secondarycolor"
mechanismdefinedby
EXT_separate_specular_color
maybeusedinall
circumstances,evenwhen
lightingisdisabled.

EXT_blend_func_separate
(https://www.opengl.org/registry/specs/EXT/blend_func_separate.txt)

Separateblendingfunctions
maybespecifiedfortheRGB
andAlphacomponentsofthe
blendedpixels.

EXT_stencil_wrap
(https://www.opengl.org/registry/specs/EXT/stencil_wrap.txt)

Astencilmodewhichcauses
stencilvaluestoincrement
withwrapping.

ARB_texture_env_crossbar
(https://www.opengl.org/registry/specs/ARB/texture_env_crossbar.txt)

Textureenvironment
functionsmayaccessallother
texturestages,ratherthan
beingrestrictedtothetexture
boundtotheirowntexture
unit.

EXT_texture_lod_bias
(https://www.opengl.org/registry/specs/EXT/texture_lod_bias.txt)

Ameanstobiasthe
computationofmipmap
weightsinordertoaddbluror
sharpeningeffectstotexture
filtering.

ARB_texture_mirrored_repeat
(https://www.opengl.org/registry/specs/ARB/texture_mirrored_repeat.txt)

Anewtexturecoording
wrappingmodewhichcauses
thetextureimagetobe

horizontallyorvertically
mirrored.
ARB_window_pos
(https://www.opengl.org/registry/specs/ARB/window_pos.txt)

TheWindowPosAPI,an
alternativetoRasterPoswhich
setstherasteroutputposition
inscreenspaceratherthan
worldspace.

OpenGL1.5
ReleaseDate:July29,2003
AlongsidethereleaseofOpenGL1.5,theARBreleasedtheOpenGLShadingLanguagespecification,and
theextensionsARB_shader_objects(https://www.opengl.org/registry/specs/ARB/shader_objects.txt),
ARB_vertex_shader(https://www.opengl.org/registry/specs/ARB/vertex_shader.txt),and
ARB_fragment_shader(https://www.opengl.org/registry/specs/ARB/fragment_shader.txt).However,these
wouldnotbeincorporatedintothecorespecificationuntilthenextrelease.
Extension

Details

AnewtypeofGLobject,the
"buffer",whichstoresvarious
ARB_vertex_buffer_object
typesofdata(especiallyvertex
(https://www.opengl.org/registry/specs/ARB/vertex_buffer_object.txt)
data)inhighperformancevideo
memory.
ARB_occlusion_query
(https://www.opengl.org/registry/specs/ARB/occlusion_query.txt)

Theprogrammermayquery
whetherornotaprimitivewas
occludedduringrendering.

EXT_shadow_funcs
(https://www.opengl.org/registry/specs/EXT/shadow_funcs.txt)

Thecapabilitiesofthe
ARB_shadowextensionare
slightlyextended.

OpenGL2.0
ReleaseDate:September7,2004
OpenGL2.0wasoriginallyconceivedby3DlabstoaddressconcernsthatOpenGLwasstagnatingand
lackedastrongdirection.[22]3Dlabsproposedanumberofmajoradditionstothestandard.Mostofthese
were,atthetime,rejectedbytheARBorotherwisenevercametofruitionintheformthat3Dlabsproposed.
However,theirproposalforaCstyleshadinglanguagewaseventuallycompleted,resultinginthecurrent
formulationofGLSL(theOpenGLShadingLanguageorGLslang).Liketheassemblylikeshading
languagesthatitwasreplacing,itallowedtheprogrammertoreplacethefixedfunctionvertexandfragment
pipewithshaders,thoughthistimewritteninaClikehighlevellanguage.
ThedesignofGLSLwasnotableformakingrelativelyfewconcessionstothelimitationsofthehardware
thenavailablethishearkenedbacktotheearliertraditionofOpenGLsettinganambitious,forwardlooking
targetfor3Dacceleratorsratherthanmerelytrackingthestateofcurrentlyavailablehardware.Thefinal
OpenGL2.0specification[23]includessupportforGLSL.

Extension

Details

ARB_shading_language_100
(https://www.opengl.org/registry/specs/ARB/shading_language_100.txt)
(heavilymodified)
ARB_shader_objects
(https://www.opengl.org/registry/specs/ARB/shader_objects.txt)(heavily
modified)
ARB_vertex_shader
(https://www.opengl.org/registry/specs/ARB/vertex_shader.txt)(heavily
modified)
ARB_fragment_shader
(https://www.opengl.org/registry/specs/ARB/fragment_shader.txt)(heavily
modified)

ThehighlevelOpenGL
ShadingLanguage,which
providesdirectaccessto
programmablevertexand
fragmentprocessors.

ARB_draw_buffers
(https://www.opengl.org/registry/specs/ARB/draw_buffers.txt)

Fragmentshadersmay
outputdifferentcolorsto
multiplerendertargetsina
singlepass.(Notethat
actualsupportformultiple
rendertargetswouldnot
beguaranteeduntil
OpenGL3.0.)

Textureimagesmayhave
ARB_texture_non_power_of_two
nonpoweroftwo
(https://www.opengl.org/registry/specs/ARB/texture_non_power_of_two.txt)
dimensions.
ARB_point_sprite
(https://www.opengl.org/registry/specs/ARB/point_sprite.txt)

Pointsmayberenderedas
small,screenoriented
texturequads.Thisis
usefulwhendeveloping
particlesystems.

EXT_blend_equation_separate
(https://www.opengl.org/registry/specs/EXT/blend_equation_separate.txt)

Separateblending
equationsmaybespecified
fortheRGBandAlpha
componentsoftheblended
pixels.Similarto
EXT_blend_func_separate.

ATI_separate_stencil
(https://www.opengl.org/registry/specs/ATI/separate_stencil.txt)
EXT_stencil_two_side
(https://www.opengl.org/registry/specs/EXT/stencil_two_side.txt)

Separatestencilalgorithms
maybeusedwhen
renderingthefrontand
backfacesofprimitives.

OpenGL2.1
ReleaseDate:July2,2006
OpenGL2.1requiredimplementationstosupportversion1.20oftheOpenGLShadingLanguage.

Extension

Details

Bufferobjectsmaybeusedfor
ARB_pixel_buffer_object
asynchronoustransfersofimage
(https://www.opengl.org/registry/specs/ARB/pixel_buffer_object.txt)
data.
EXT_texture_sRGB
(https://www.opengl.org/registry/specs/EXT/texture_sRGB.txt)

Texturepixelvaluesmaybe
specifiedinthegammacorrected
sRGBcolorspace.

LongsPeakandOpenGL3.0controversy
PriortothereleaseofOpenGL3.0,thenewrevisionwasknownasthecodenameLongsPeak.Atthetimeof
itsoriginalannouncement,LongsPeakwaspresentedasthefirstmajorAPIrevisioninOpenGL'slifetime.It
consistedofanoverhaultothewaythatOpenGLworks,callingforfundamentalchangestotheAPI.
Thedraftintroducedachangetoobjectmanagement.TheGL2.1objectmodelwasbuiltuponthestate
baseddesignofOpenGL.Thatis,inordertomodifyanobjectortouseit,oneneedstobindtheobjecttothe
statesystem,thenmakemodificationstothestateorperformfunctioncallsthatusetheboundobject.
BecauseofOpenGL'suseofastatesystem,objectsmustbemutable.Thatis,thebasicstructureofanobject
canchangeatanytime,eveniftherenderingpipelineisasynchronouslyusingthatobject.Atextureobject
canberedefinedfrom2Dto3D.ThisrequiresanyOpenGLimplementationstoaddadegreeofcomplexity
tointernalobjectmanagement.
UndertheLongsPeakAPI,objectcreationwouldbecomeatomic,usingtemplatestodefinethepropertiesof
anobjectwhichwouldbecreatedwithasinglefunctioncall.Theobjectcouldthenbeusedimmediately
acrossmultiplethreads.Objectswouldalsobeimmutablehowever,theycouldhavetheircontentschanged
andupdated.Forexample,atexturecouldchangeitsimage,butitssizeandformatcouldnotbechanged.
Tosupportbackwardscompatibility,theoldstatebasedAPIwouldstillbeavailable,butnonew
functionalitywouldbeexposedviatheoldAPIinlaterversionsofOpenGL.Thiswouldhaveallowed
legacycodebases,suchasthemajorityofCADproducts,tocontinuetorunwhileothersoftwarecouldbe
writtenagainstorportedtothenewAPI.
LongsPeakwasinitiallyduetobefinalizedinSeptember2007underthenameOpenGL3.0,butthe
KhronosGroupannouncedonOctober30thatithadrunintoseveralissuesthatitwishedtoaddressbefore
releasingthespecification.[24]Asaresult,thespecwasdelayed,andtheKhronosGroupwentintoamedia
blackoutuntilthereleaseofthefinalOpenGL3.0spec.
ThefinalspecificationprovedfarlessrevolutionarythantheLongsPeakproposal.Insteadofremovingall
immediatemodeandfixedfunctionality(nonshadermode),thespecincludedthemasdeprecatedfeatures.
Theproposedobjectmodelwasnotincluded,andnoplanshavebeenannouncedtoincludeitinanyfuture
revisions.Asaresult,theAPIremainedlargelythesamewithafewexistingextensionsbeingpromotedto
corefunctionality.
Amongsomedevelopergroupsthisdecisioncausedsomethingofanuproar,[25]withmanydevelopers
professingthattheywouldswitchtoDirectXinprotest.Mostcomplaintsrevolvedaroundthelackof
communicationbyKhronostothedevelopmentcommunityandmultiplefeaturesbeingdiscardedthatwere

viewedfavorablybymany.OtherfrustrationsincludedtherequirementofDirectX10levelhardwarein
ordertouseOpenGL3.0andtheabsenceofgeometryshadersandinstancedrenderingascorefeatures.
Othersourcesreportedthatthecommunityreactionwasnotquiteassevereasoriginallypresented,[26]with
manyvendorsshowingsupportfortheupdate.[27][28]

OpenGL3.0
ReleaseDate:August11,2008
OpenGL3.0introducedadeprecationmechanismtosimplifyfuturerevisionsoftheAPI.Certainfeatures,
markedasdeprecated,couldbecompletelydisabledbyrequestingaforwardcompatiblecontextfromthe
windowingsystem.OpenGL3.0featurescouldstillbeaccessedalongsidethesedeprecatedfeatures,
however,byrequestingafullcontext.
Deprecatedfeaturesinclude:
Allfixedfunctionvertexandfragmentprocessing.
Directmoderendering,usingglBeginandglEnd.
Displaylists.
Indexedcolorrenderingtargets.
OpenGLShadingLanguageversions1.10and1.20.
Extension

Details

EXT_gpu_shader4
(https://www.opengl.org/registry/specs/EXT/gpu_shader4.txt)

APIfunctionsrequiredby
version1.30oftheOpenGL
ShadingLanguage.

ARB_map_buffer_range
(https://www.opengl.org/registry/specs/ARB/map_buffer_range.txt)

Mappingofbuffersubranges
intoclientspaceandflushing
modifieddata.

ARB_color_buffer_float
(https://www.opengl.org/registry/specs/ARB/color_buffer_float.txt)
NV_depth_buffer_float
(https://www.opengl.org/registry/specs/NV/depth_buffer_float.txt)
ARB_texture_float
(https://www.opengl.org/registry/specs/ARB/texture_float.txt)
EXT_packed_float
(https://www.opengl.org/registry/specs/EXT/packed_float.txt)
EXT_texture_shared_exponent
(https://www.opengl.org/registry/specs/EXT/texture_shared_exponent.txt)

Floatingpointcolorand
depthinternalformatsfor
texturesandrenderbuffers.

ARB_half_float_pixel
(https://www.opengl.org/registry/specs/ARB/half_float_pixel.txt)
NV_half_float(https://www.opengl.org/registry/specs/NV/half_float.txt)

Halffloat(16bit)vertex
arrayandpixeldataformats.

EXT_framebuffer_object
(https://www.opengl.org/registry/specs/EXT/framebuffer_object.txt)

AnewtypeofGLobject,the
"framebuffer".Framebuffers
enableoffscreenrendering

andrenderingtotextures.
EXT_framebuffer_sRGB
(https://www.opengl.org/registry/specs/EXT/framebuffer_sRGB.txt)

UseofthesRGBgamma
correctedimagedatain
framebuffers.

EXT_framebuffer_blit
(https://www.opengl.org/registry/specs/EXT/framebuffer_blit.txt)
EXT_framebuffer_multisample
(https://www.opengl.org/registry/specs/EXT/framebuffer_multisample.txt)

Functionstoperformafast
blitfromonerendertargetto
another.

ARB_texture_float
(https://www.opengl.org/registry/specs/ARB/texture_float.txt)
EXT_texture_integer
(https://www.opengl.org/registry/specs/EXT/texture_integer.txt)

Supportforfloatingpoint
andnonnormalizedinteger
texturestorage.

EXT_packed_depth_stencil
(https://www.opengl.org/registry/specs/EXT/packed_depth_stencil.txt)

Packeddepth/stencilinternal
formatsforcombined
depth+stenciltexturesand
renderbuffers.

EXT_draw_buffers2
(https://www.opengl.org/registry/specs/EXT/draw_buffers2.txt)

Percolorattachmentblend
enablesandcolor
writemasks.

GL_EXT_texture_array
(https://www.opengl.org/registry/specs/EXT/texture_array.txt)

Oneandtwodimensional
layeredtexturetargets.

TheRGTCtexture
EXT_texture_compression_rgtc
compressionformat,for
(https://www.opengl.org/registry/specs/EXT/texture_compression_rgtc.txt) compressingoneortwo
channelsofimagedata.
EXT_transform_feedback
(https://www.opengl.org/registry/specs/EXT/transform_feedback.txt)

Theresultsofvertex
processingcanbecaptured
intobuffers,ratherthan(or
inadditionto)beingpassed
totherestofthepipeline.

ARB_vertex_array_object
(https://www.opengl.org/registry/specs/ARB/vertex_array_object.txt)

AnewtypeofGLobject,the
"vertexarrayobject",which
storesasetofbindingsto
vertexarrays.Thisallows
vertexarraystoberebound
withasinglefunctioncall
ratherthanseveralcallsto
EnableVertexAttribArray,
VertexAttribPointer,etc.

NV_conditional_render
(https://www.opengl.org/registry/specs/NV/conditional_render.txt)

Conditionalrendering,based
ontheresultsofanocclusion
query.

OpenGL3.1
ReleaseDate:March24,2009

OpenGL3.1fullyremovedallofthefeatureswhichweredeprecatedinversion3.0,withtheexceptionof
widelines.Fromthisversiononwards,it'snotpossibletoaccessnewfeaturesusingafullcontext,orto
accessdeprecatedfeaturesusingaforwardcompatiblecontext.Anexceptiontotheformerruleismadeif
theimplementationsupportstheARB_compatibility
(https://www.opengl.org/registry/specs/ARB/compatibility.txt)extension,butthisisnotguaranteed.
Extension

Details

ARB_draw_instanced
(https://www.opengl.org/registry/specs/ARB/draw_instanced.txt)

Instancedrendering:theability
toquicklyrenderthesame
geometrydatamultipletimes,
withthevertexshaderbeing
giveninformationspecifying
whichinstanceitisoperating
on.

EXT_copy_buffer(See:ARB_copy_buffer
(https://www.opengl.org/registry/specs/ARB/copy_buffer.txt))

Amechanismtocopydata
directlyfromonebufferobject
toanother.

ARB_texture_buffer_object
(https://www.opengl.org/registry/specs/ARB/texture_buffer_object.txt)

Buffertextures:one
dimensionaltextures,wherethe
pixeldatastorecomesfroma
bufferobject.

ARB_texture_rectangle
(https://www.opengl.org/registry/specs/ARB/texture_rectangle.txt)

Rectangulartextures.

Theabilitytostoreasetof
ARB_uniform_buffer_object
shaderparametersinabuffer
(https://www.opengl.org/registry/specs/ARB/uniform_buffer_object.txt)
object.
NV_primitive_restart
(https://www.opengl.org/registry/specs/NV/primitive_restart.txt)

Theabilitytospecifythatan
indexrestartsaprimitive,so
thatobjectscanbecalledwith
fewercallstoDrawElements.

OpenGL3.2
ReleaseDate:August3,2009
OpenGL3.2furtherbuiltonthedeprecationmechanismsintroducedbyOpenGL3.0,bydividingthe
specificationintoacoreprofileandcompatibilityprofile.Compatibilitycontextsincludethepreviously
removedfixedfunctionAPIs,equivalenttotheARB_compatibilityextensionreleasedalongsideOpenGL
3.1,whilecorecontextsdonot.OpenGL3.2alsoincludedanupgradetoGLSLversion1.50.

Extension

Details

ARB_geometry_shader4
(https://www.opengl.org/registry/specs/ARB/geometry_shader4.txt)(heavily
modified)

Geometryshaders.

ARB_sync(https://www.opengl.org/registry/specs/ARB/sync.txt)

AsetofGLobjects
representing
synchronization
primitives,whichallow
theclienttodetectwhen
aspecificsetoftaskshas
completed.

ARB_vertex_array_bgra
(https://www.opengl.org/registry/specs/ARB/vertex_array_bgra.txt)

Pervertexcolordatamay
bespecifiedinBGRA
order,matchingthe
conventionusedby
Direct3D.

ARB_draw_elements_base_vertex
(https://www.opengl.org/registry/specs/ARB/draw_elements_base_vertex.txt)

TheDrawElementsAPI
isextendedto
automaticallyadda
numericaloffset(the
"basevertex")toeach
arrayindex.

ARB_seamless_cube_map
(https://www.opengl.org/registry/specs/ARB/seamless_cube_map.txt)

Forcesblendingbetween
differentfaceswhen
samplingfromacube
map.

ARB_texture_multisample
(https://www.opengl.org/registry/specs/ARB/texture_multisample.txt)

Anewtypeoftexture,
whichcanbeusedasa
multisampledrender
target.

Allowfragmentshaders
toreadfragment
ARB_fragment_coord_conventions
coordinatelocationsin
(https://www.opengl.org/registry/specs/ARB/fragment_coord_conventions.txt)
thesameconventionsas
Direct3D.
ARB_provoking_vertex
(https://www.opengl.org/registry/specs/ARB/provoking_vertex.txt)

Thedevelopermay
configurewhichvertex
determinestheproperties
forflatshadedvertex
components.

ARB_depth_clamp
(https://www.opengl.org/registry/specs/ARB/depth_clamp.txt)

Thedevelopermay
configurewhetherornot
trianglesareclipped
againstthenear/farZ
range.

OpenGL3.3

ReleaseDate:March11,2010
OpenGL3.3wasreleasedalongsideversion4.0.Itwasdesignedtotargethardwarecapableofsupporting
Direct3D10.
Extension

Details

ARB_shader_bit_encoding
(https://www.opengl.org/registry/specs/ARB/shader_bit_encoding.txt)

Addsshadinglanguage
functionstoperform
conversionsfrom/to
floatingpointand
integers.Thisextension
onlyaffectstheshading
language.

ARB_blend_func_extended
(https://www.opengl.org/registry/specs/ARB/blend_func_extended.txt)

Fragmentshaderscan
outputmultiplecolors
thatcanbeusedina
singleblending
operation.

ARB_explicit_attrib_location
(https://www.opengl.org/registry/specs/ARB/explicit_attrib_location.txt)

Shaderinputsand
outputsmaybeassigned
resourcelocationsinthe
shader.

ARB_occlusion_query2
(https://www.opengl.org/registry/specs/ARB/occlusion_query2.txt)

Theocclusionquery
systemisextendedto
supportquerying
whetherentireobjects
wereoccluded,rather
thanqueryingtheexact
numberofoccluded
pixels.Insomecases,
thismaybemore
efficient.

ARB_sampler_objects
(https://www.opengl.org/registry/specs/ARB/sampler_objects.txt)

AnewGLobjectwhich
wrapssometexture
objectstate,suchas
interpolationand
clamping.Thisallowsa
singletexturetobe
simultaneouslyaccessed
inmultipleways.

ARB_texture_swizzle
(https://www.opengl.org/registry/specs/ARB/texture_swizzle.txt)

Thedevelopermay
configuretheorderthat
thecomponentsina
texturearepresentedtoa
shaderwhenitsamples
them.
Functionstoaccurately
measurethetimetaken

ARB_timer_query
(https://www.opengl.org/registry/specs/ARB/timer_query.txt)

byanoperation.This
informationisusefulfor
profilingpurposes.

ARB_instanced_arrays
(https://www.opengl.org/registry/specs/ARB/instanced_arrays.txt)

Whenperforming
instancedrendering,
instancesmaybe
configuredusingper
instancevertexattributes
ratherthanusinga
vertexshaderparameter
toaccessanarray.

ARB_texture_rgb10_a2ui
(https://www.opengl.org/registry/specs/ARB/texture_rgb10_a2ui.txt)
ARB_vertex_type_2_10_10_10_rev
(https://www.opengl.org/registry/specs/ARB/vertex_type_2_10_10_10_rev.txt)

Imageandvertexdata
maybespecifiedby
packingthree10bit
normalizedinteger
valuesintoasingle32
bitinteger.

OpenGL4.0
ReleaseDate:March11,2010
OpenGL4.0wasreleasedalongsideversion3.3.Itwasdesignedtotargethardwarecapableofsupporting
Direct3D11.
AsinOpenGL3.0,thisversionofOpenGLcontainsahighnumberoffairlyinconsequentialextensions,
designedtothoroughlyexposethecapabilitiesofDirect3D11classhardware.Onlythemostinfluential
extensionsarelistedbelow.

Extension

Details

ARB_tessellation_shader
(https://www.opengl.org/registry/specs/ARB/tessellation_shader.txt)

Twonewshaderstages
(tessellationcontroland
tessellationevaluation)tosupport
efficientgenerationofgeometry
ontheGPU.

ARB_shader_subroutine
(https://www.opengl.org/registry/specs/ARB/shader_subroutine.txt)

Theabilitytocalldifferent
subroutineswithinashader
dynamically,withoutrecompiling
thesource.

ARB_sample_shading
(https://www.opengl.org/registry/specs/ARB/sample_shading.txt)

Theprogrammermayrequestthat
afragmentprogramisevaluated
foreachsamplewithina
fragment,whichincreasesthe
fidelityofmultisampledanti
aliasing.

ARB_draw_buffers_blend
(https://www.opengl.org/registry/specs/ARB/draw_buffers_blend.txt)

Theabilitytosetindividualblend
equationsandblendfunctionsfor
eachcoloroutput.

ARB_draw_indirect
(https://www.opengl.org/registry/specs/ARB/draw_indirect.txt)

Amechanismtosupplythe
argumentstocertainDraw
functionsfrombufferobject
memory.Combinedwith
transformfeedbackorOpenCL,
thisallowstheGPUtorender
withoutsynchronisingwiththe
CPU.

ARB_transform_feedback2
(https://www.opengl.org/registry/specs/ARB/transform_feedback2.txt) Asetofimprovementsto
ARB_transform_feedback3
EXT_transform_feedback.
(https://www.opengl.org/registry/specs/ARB/transform_feedback3.txt)

OpenGL4.1
ReleaseDate:July26,2010

Extension

Details

ARB_ES2_compatibility
(https://www.opengl.org/registry/specs/ARB/ES2_compatibility.txt)

FullAPIcompatibilitywith
OpenGLES2.0.

ARB_get_program_binary
(https://www.opengl.org/registry/specs/ARB/get_program_binary.txt)

Theabilitytoretrievethe
contentofprogramobjectsin
abinary,vendorspecific
format.Thiseliminatesthe
needtorecompileshaders
whenevertheprogramisrun,
buttheresultingbinariesare
nottransferablefromone
GPUtoanother.

Programobjectsmaybe
separatelyassociatedwith
eachofthefiveshading
stages,insteadofusing
separateshaderstageslinked
ARB_separate_shader_objects
intoamonolithicprogram
(https://www.opengl.org/registry/specs/ARB/separate_shader_objects.txt) object.Theextensionalso
introducesglProgramUniform,
whichacceptsaprogram
objectasparameter,thus
enablingdirectaccessto
program'suniforms.
ARB_viewport_array
(https://www.opengl.org/registry/specs/ARB/viewport_array.txt)

Theabilitytodefinemultiple
viewportsandscissor
rectangles,tobeusedwhen
generatingseveralscenesat
oncefromageometryshader.

ARB_vertex_attrib_64bit
(https://www.opengl.org/registry/specs/ARB/vertex_attrib_64bit.txt)

Vertexattributescanbe
doubleprecisionvalues.

ARB_shader_precision
(https://www.opengl.org/registry/specs/ARB/shader_precision.txt)

Theabilitytospecifythe
precisionofcertainoperations
intheshadinglanguage.

OpenGL4.2
ReleaseDate:August8,2011[29]
Supportedvideocards:NvidiaGeForce400seriesandnewer,ATIRadeonHD5000Seriesandnewer.
SupportedbyIntel'sWindowsdriversfortheHaswell'sintegratedGPU.[30]
Supportforshaderswithatomiccountersandload/store/atomicreadmodifywriteoperationstoa
singlelevelofatexture.
DrawingmultipleinstancesofdatacapturedfromGPUvertexprocessing(includingtessellation),to
enablecomplexobjectstobeefficientlyrepositionedandreplicated.

Supportformodifyinganarbitrarysubsetofacompressedtexture,withouthavingtoredownloadthe
wholetexturetotheGPUforsignificantperformanceimprovements.

OpenGL4.3
ReleaseDate:August6,2012[31]
Supportedvideocards:NvidiaGeForce400seriesandnewer,ATIRadeonHD5000Seriesandnewer.
ComputeshadersleveragingGPUparallelismwithinthecontextofthegraphicspipeline
Shaderstoragebufferobjects,allowingshaderstoreadandwritebufferobjectslikeimageload/store
from4.2,butthroughthelanguageratherthanfunctioncalls.
Imageformatparameterqueries
ETC2/EACtexturecompressionasastandardfeature
FullcompatibilitywithOpenGLES3.0APIs
Debugcapabilitiestoreceivedebuggingmessagesduringapplicationdevelopment
Textureviewsforinterpretingtexturesindifferentwayswithoutdatareplication
Increasedmemorysecurityandmultiapplicationrobustness

OpenGL4.4
ReleaseDate:July22,2013[32]
Supportedvideocards:NvidiaGeForce400seriesandnewer,AMDRadeonHD5000Seriesandnewer.
SupportedSoC:TegraK1
Enforcedbufferobjectusagecontrols
Asynchronousqueriesintobufferobjects
Expressionofmorelayoutcontrolsofinterfacevariablesinshaders
Efficientbindingofmultipleobjectssimultaneously

OpenGL4.5
ReleaseDate:August11,2014[33][34]
Supportedvideocards:NvidiaGeForce400seriesandnewer,aswellastheTegraK1andTegraX1.[35][36]
DirectStateAccess(DSA)objectaccessorsenablestatetobequeriedandmodifiedwithoutbinding
objectstocontexts,forincreasedapplicationandmiddlewareefficiencyandflexibility.[37]
FlushControlapplicationscancontrolflushingofpendingcommandsbeforecontextswitching
enablinghighperformancemultithreadedapplications

RobustnessprovidingasecureplatformforapplicationssuchasWebGLbrowsers,including
preventingaGPUresetaffectinganyotherrunningapplications
OpenGLES3.1APIandshadercompatibilitytoenabletheeasydevelopmentandexecutionofthe
latestOpenGLESapplicationsondesktopsystems.

Samplerenderings

Refractionusing
programmablevertex
shaders

Animatedtextures
usingframebuffer
objectsand
vertex/fragment
programextensions

Proceduralartwork
usingdisplaylists

Successor
Vulkan,previouslyknownasglNextorthe"NextGenerationOpenGLInitiative",[38][39]isagroundsup
redesignefforttounifyOpenGLandOpenGLESintoonecommonAPIthatwillnotbebackwards
compatiblewithexistingOpenGLversions.[40][41][42]AMDhasoffereditsMantleAPIwithoutany
conditionsandforfreeasthebaseofthenextgenerationofOpenGL.[43]
Early2015,anupcomingGDCconferencesessionbyValveCorporation,withparticipationfromElectronic
Arts,EpicGamesandUnityTechnologiesisscheduledfortheunveilingofVulkan.[44]
On3March,2015,ValveannouncedSource2whichwillbecompatiblewithVulkan.[45]

Seealso
ARBassemblylanguageOpenGL'slegacylowlevelshadinglanguage
ComparisonofOpenGLandDirect3D
GlideAPIagraphicsAPIonceusedon3dfxVoodoocards
ListofOpenGLprograms
OpenALCrossplatformaudiolibrary,designedtoresembleOpenGL
OpenGLESOpenGLforembeddedsystems

OpenSLESAPIforaudioonembeddedsystems,developedbytheKhronosGroup
OpenVGAPIforaccelerated2Dgraphics,developedbytheKhronosGroup
RenderManInterfaceSpecification(RISpec)Pixar'sopenAPIforphotorealisticofflinerendering
VOGLadebuggerforOpenGL

Furtherreading
DaveShreiner,TheKhronosOpenGLARBWorkingGroup:OpenGLProgrammingGuide:The
OfficialGuidetoLearningOpenGL,Version4.3(8thEdition),AddisonWesley,March30,2013,
ISBN9780321773036
GrahamSellers,RichardS.Wright,NicholasHaemel:OpenGLSuperBible:ComprehensiveTutorial
andReference(6thEdition),AddisonWesley,July31,2013,ISBN9780321902948
Rost,RandiJ.:OpenGLShadingLanguage(3rdEdition),AddisonWesley,July30,2009,ISBN978
0321637635
Lengyel,Eric:TheOpenGLExtensionsGuide,CharlesRiverMedia,ISBN1584502940
OpenGLArchitectureReviewBoard,etal.:OpenGLReferenceManual:TheOfficialReference
DocumenttoOpenGL,Version1.4,AddisonWesley,ISBN032117383X
OpenGLArchitectureReviewBoard,etal.:OpenGLProgrammingGuide:TheOfficialGuideto
LearningOpenGL,Version2,FifthEdition,AddisonWesley,ISBN0321335732

References
1. Lextrait,Vincent(January2010)."TheProgrammingLanguagesBeacon,v10.0"
(http://www.lextrait.com/Vincent/implementations.html).Retrieved14March2010.
2. "Products:Software:OpenGL:LicensingandLogos"(http://www.sgi.com/products/software/opengl/license.html).
SGI.RetrievedNovember7,2012.
3. https://www.opengl.org/wiki/Main_Page
4. "OpenGL4.0Specification"(http://www.opengl.org/registry/doc/glspec40.core.20100311.pdf)(PDF).Retrieved
20130502.
5. http://faculty.ycp.edu/~dbabcock/PastCourses/cs370/labs/index.html
6. "SGIOpenGLOverview"(http://www.sgi.com/products/software/opengl/overview.html).
7. "KhronosMembershipOverviewandFAQ"(http://www.khronos.org/members/).Khronos.org.Retrieved
November7,2012.
8. http://www.opengl.org/registry/specs/NV/half_float.txt
9. "HowtoCreateKhronosAPIExtensions"(http://www.opengl.org/registry/doc/rules.html).Opengl.org.August
13,2006.RetrievedNovember7,2012.
10. "TheOpenGLRegistry"(http://www.opengl.org/registry/).Opengl.org.Retrieved20130502.
11. "AlistofGLUTalternatives,maintainedby"(http://www.opengl.org/resources/libraries/windowtoolkits/).
Opengl.org.Retrieved20130502.
12. "RelatedtoolkitsandAPIs"

12. "RelatedtoolkitsandAPIs"
(https://www.opengl.org/wiki/Related_toolkits_and_APIs#Context.2FWindow_Toolkits).www.opengl.org.
OpenGL.Retrieved8October2014.
13. "Mesa10.0ReleaseNotes"(http://mesa3d.org/relnotes/10.0.html).mesa3d.org.20131130.Retrieved
20131205.
14. "IRISGL,SGI'sproperty"(http://www.cg.tuwien.ac.at/~wimmer/apis/API_Summary.html).
15. "CreationoftheOpenGLARB"
(http://www.sgi.com/company_info/newsroom/press_releases/2004/august/opengl.html).
16. "EndofOpenGL++"(http://www.opengl.org/about/arb/meeting_notes/notes/Meeting1.2/meeting_note_1003
98.html).opengl.org.
17. "AnnouncementofFahrenheit"(http://www.windowsitpro.com/Article/ArticleID/17533/17533.html).
18. "MembersofFahrenheit.1998."(http://www.findarticles.com/p/articles/mi_m0CGN/is_n3341/ai_20211297).
ComputergramInternational.1998.
19. "EndofFahrenheit"(http://www.theregister.co.uk/1999/11/29/ms_quietly_dumps_windows_opengl/).
20. OpenGLARBtopasscontrolofOpenGLspecificationtoKhronosGroup
(https://www.khronos.org/news/press/opengl_arb_to_pass_control_of_opengl_specification_to_khronos_group),
Khronospressrelease
21. OpenGLARBtoPassControlofOpenGLSpecificationtoKhronosGroup
(http://www.accessmylibrary.com/coms2/summary_028616157838_ITM),AccessMyLibraryArchive
22. FedyAbiChahla(September16,2008)."OpenGL3(3DLabsAndTheEvolutionOfOpenGL)"
(http://www.tomshardware.com/reviews/opengldirectx,20192.html).Tom'sHardware.RetrievedOctober24,
2010.
23. http://www.opengl.org/documentation/specs/version2.0/glspec20.pdf
24. "OpenGLARBannouncesanupdateonOpenGL3.0"(http://www.opengl.org/discussion_boards/ubbthreads.php?
ubb=showflat&Number=229374#Post229374).October30,2007.RetrievedOctober31,2007.
25. "OpenGL3.0Released,DevelopersFuriousSlashdot"(http://tech.slashdot.org/article.pl?sid=08/08/11/2135259).
Tech.slashdot.org.RetrievedNovember7,2012.
26. "OpenGLBOFwentoverwell,nopitchforksseen"
(http://www.opengl.org/news/opengl_bof_went_over_well_no_pitch_forks_seen).
27. "TheIndustryStandardforHighPerformanceGraphics"
(http://www.opengl.org/news/nick_haemel_amd_blog_post_opengl_30_a_big_step_in_the_right_direction/).
OpenGL.August18,2008.RetrievedNovember7,2012.
28. "NVIDIAprovidesearlyOpenGL3.0drivernow"
(http://www.opengl.org/news/nvidia_provides_early_opengl_30_driver_now).
29. "KhronosEnrichesCrossPlatform3DGraphicswithReleaseofOpenGL4.2Specification"
(http://www.khronos.org/news/press/khronosenrichescrossplatform3dgraphicswithreleaseofopengl4.2
spec).
30. "IntelReleasesOpenGL4.2driversforHaswell"(http://www.legitreviews.com/intelreleasesnewgraphics
driverivybridgehaswellsandybridgeprocessors_129577).
31. "KhronosReleasesOpenGL4.3SpecificationwithMajorEnhancements"
(http://www.khronos.org/news/press/khronosreleasesopengl4.3specificationwithmajorenhancements).
32. "KhronosReleasesOpenGL4.4Specification"(https://www.khronos.org/news/press/khronosreleasesopengl4.4
specification).

specification).
33. https://www.khronos.org/news/press/khronosgroupannounceskeyadvancesinopenglecosystem
34. OpenGL4.5APISpecification(updatedAugust8,2014)(http://www.opengl.org/registry/)
35. http://www.ustream.tv/recorded/51255959
36. http://www.slideshare.net/Mark_Kilgard/opengl45updatefornvidiagpus
37. http://arstechnica.com/informationtechnology/2014/08/opengl45releasedwithoneofdirect3dsbestfeatures/
38. Dingman,Hayden(3March2015)."MeetVulkan,thepowerful,platformagnosticgamingtechtakingaimat
DirectX12"(http://www.pcworld.com/article/2891613/meetvulkanthepowerfulplatformagnosticgamingtech
takingaimatdirectx12.html).PCWorld.Retrieved3March2015.
39. Bright,Peter(3March2015)."KhronosunveilsVulkan:OpenGLbuiltformodernsystems"
(http://arstechnica.com/gadgets/2015/03/khronosunveilsvulkanopenglbuiltformodernsystems/).ArsTechnica.
Retrieved3March2015.
40. "KhronosAnnouncesNextGenerationOpenGLInitiative"(http://www.anandtech.com/show/8363/khronos
announcesnextgenerationopenglinitiative).AnandTech.Retrieved20August2014.
41. "OpenGL4.5released,nextgenOpenGLunveiled:CrossplatformMantlekiller,DX12competitor"
(http://www.extremetech.com/gaming/187796opengl45releasednextgenopenglunveiledcrossplatform
mantlekillerdx12competitor).Retrieved20August2014.
42. "KhronosPublishesItsSlidesAboutOpenGLNext"(http://www.phoronix.com/scan.php?
page=news_item&px=MTc2ODQ).Phoronix.Retrieved22August2014.
43. "AMDhopestoputalittleMantleinOpenGLNext"(http://techreport.com/news/26922/amdhopestoputalittle
mantleinopenglnext).techreport.
44. "ValvetopresentglNext:HighPerformanceGraphicsatGDC"(http://hexus.net/tech/news/software/80414valve
presentglnexthighperformancegraphicsgdc/).Hexus.20140205.Retrieved20140207.
45. "ValveAnnouncesSource2,SteamLink,andSteamVR"(http://www.gamespot.com/articles/valveannounces
source2steamlinkandsteamvr/11006425674/).ValveAnnouncesSource2,SteamLink,andSteamVR
GameSpot.GameSpot.March3,2015.

Externallinks
Officialwebsite(https://www.opengl.org)
OpenGL.org'sWiki(https://www.opengl.org/wiki/Main_Page)
moreinformationonOpenGLLanguagebindings

Wikibookshasabookon
thetopicof:
Programming:OpenGL

SGI'sOpenGLwebsite(http://www.sgi.com/products/software/opengl/)
OpenGL(https://www.dmoz.org/Computers/Programming/Graphics/Libraries/OpenGL)atDMOZ
KhronosGroup,Inc.(https://www.khronos.org/)
EdwardAngelandDaveShreiner(2013)SIGGRAPHUniversity:"AnIntroductiontoOpenGL
Programming"(https://www.youtube.com/watch?v=69XFm7XAT8)freecourse
TutorialformodernOpenGL(3.3+)(https://open.gl)
OpenGL3.x/4.xexamples(http://nopper.tv/norbert/opengl.html)
OpenGL(version3andhigher)examples(http://oglplus.org/oglplus/html/examples.html)

Retrievedfrom"http://en.wikipedia.org/w/index.php?title=OpenGL&oldid=654673251"
Categories: OpenGL 1992software Applicationprogramminginterfaces Crossplatformsoftware
Graphicslibraries Graphicsstandards Videogamedevelopment Virtualreality 3DgraphicsAPIs
Thispagewaslastmodifiedon2April2015,at19:19.
TextisavailableundertheCreativeCommonsAttributionShareAlikeLicenseadditionaltermsmay
apply.Byusingthissite,youagreetotheTermsofUseandPrivacyPolicy.Wikipediaisa
registeredtrademarkoftheWikimediaFoundation,Inc.,anonprofitorganization.

Vous aimerez peut-être aussi