OpenGL - Wikipedia
文章推薦指數: 80 %
Hardware support: AMD Radeon HD 5000 Series and newer (FP64 shaders implemented by emulation on some TeraScale GPUs), Intel HD Graphics in Intel Broadwell ... OpenGL FromWikipedia,thefreeencyclopedia Jumptonavigation Jumptosearch Cross-platformgraphicsAPI NottobeconfusedwithOpenCL. OpenGLVideogamesoutsourcereal-timerenderingcalculationstotheGPUoverOpenGL.Therenderedresultsarenotsentbacktomainmemory,buttotheframebufferofvideomemoryinstead.Thedisplaycontrollerwillthensendthisdatatothedisplaydevice.Originalauthor(s)SiliconGraphicsDeveloper(s)KhronosGroup(formerlyARB)InitialreleaseJune 30,1992;29yearsago (1992-06-30)Stablerelease4.6 /July 31,2017;4yearsago (2017-07-31) WritteninC[1]Type3DgraphicsAPILicense OpensourcelicenseforuseoftheS.I.[clarificationneeded]:ThisisaFreeSoftwareLicenseBcloselymodeledonBSD,X,andMozillalicenses. TrademarklicensefornewlicenseeswhowanttousetheOpenGLtrademarkandlogoandclaimconformance.[2] Websitewww.opengl.org OpenGL(OpenGraphicsLibrary[3])isacross-language,cross-platformapplicationprogramminginterface(API)forrendering2Dand3Dvectorgraphics.TheAPIistypicallyusedtointeractwithagraphicsprocessingunit(GPU),toachievehardware-acceleratedrendering. SiliconGraphics,Inc.(SGI)begandevelopingOpenGLin1991andreleaseditonJune30,1992;[4][5]applicationsuseitextensivelyinthefieldsofcomputer-aideddesign(CAD),virtualreality,scientificvisualization,informationvisualization,flightsimulation,andvideogames.Since2006,OpenGLhasbeenmanagedbythenon-profittechnologyconsortiumKhronosGroup.[6] Contents 1Design 1.1Development 2Documentation 3Associatedlibraries 3.1Contextandwindowtoolkits 3.2Extensionloadinglibraries 3.3Implementations 4History 5Versionhistory 5.1OpenGL2.0 5.2LongsPeakandOpenGL3.0 5.3OpenGL3.0 5.4OpenGL3.1 5.5OpenGL3.2 5.6OpenGL3.3 5.7OpenGL4.0 5.8OpenGL4.1 5.9OpenGL4.2 5.10OpenGL4.3 5.11OpenGL4.4 5.12OpenGL4.5 5.13OpenGL4.6 6Alternativeimplementations 7ThefutureofOpenGL 8Vulkan 9Seealso 10References 11Furtherreading 12Externallinks Design[edit] Anillustrationofthegraphicspipelineprocess TheOpenGLspecificationdescribesanabstractAPIfordrawing2Dand3Dgraphics.AlthoughitispossiblefortheAPItobeimplementedentirelyinsoftware,itisdesignedtobeimplementedmostlyorentirelyinhardware. TheAPIisdefinedasasetoffunctionswhichmaybecalledbytheclientprogram,alongsideasetofnamedintegerconstants(forexample,theconstantGL_TEXTURE_2D,whichcorrespondstothedecimalnumber3553).AlthoughthefunctiondefinitionsaresuperficiallysimilartothoseoftheprogramminglanguageC,theyarelanguage-independent.Assuch,OpenGLhasmanylanguagebindings,someofthemostnoteworthybeingtheJavaScriptbindingWebGL(API,basedonOpenGLES2.0,for3Drenderingfromwithinawebbrowser);theCbindingsWGL,GLXandCGL;theCbindingprovidedbyiOS;andtheJavaandCbindingsprovidedbyAndroid. Inadditiontobeinglanguage-independent,OpenGLisalsocross-platform.ThespecificationsaysnothingonthesubjectofobtainingandmanaginganOpenGLcontext,leavingthisasadetailoftheunderlyingwindowingsystem.Forthesamereason,OpenGLispurelyconcernedwithrendering,providingnoAPIsrelatedtoinput,audio,orwindowing. Development[edit] OpenGLisanactivelydevelopedAPI.NewversionsoftheOpenGLspecificationsareregularlyreleasedbytheKhronosGroup,eachofwhichextendstheAPItosupportvariousnewfeatures.ThedetailsofeachversionaredecidedbyconsensusbetweentheGroup'smembers,includinggraphicscardmanufacturers,operatingsystemdesigners,andgeneraltechnologycompaniessuchasMozillaandGoogle.[7] InadditiontothefeaturesrequiredbythecoreAPI,graphicsprocessingunit(GPU)vendorsmayprovideadditionalfunctionalityintheformofextensions.Extensionsmayintroducenewfunctionsandnewconstants,andmayrelaxorremoverestrictionsonexistingOpenGLfunctions.VendorscanuseextensionstoexposecustomAPIswithoutneedingsupportfromothervendorsortheKhronosGroupasawhole,whichgreatlyincreasestheflexibilityofOpenGL.Allextensionsarecollectedin,anddefinedby,theOpenGLRegistry.[8] Eachextensionisassociatedwithashortidentifier,basedonthenameofthecompanywhichdevelopedit.Forexample,Nvidia'sidentifierisNV,whichispartoftheextensionnameGL_NV_half_float,theconstantGL_HALF_FLOAT_NV,andthefunctionglVertex2hNV().[9]IfmultiplevendorsagreetoimplementthesamefunctionalityusingthesameAPI,asharedextensionmaybereleased,usingtheidentifierEXT.Insuchcases,itcouldalsohappenthattheKhronosGroup'sArchitectureReviewBoardgivestheextensiontheirexplicitapproval,inwhichcasetheidentifierARBisused.[10] ThefeaturesintroducedbyeachnewversionofOpenGLaretypicallyformedfromthecombinedfeaturesofseveralwidelyimplementedextensions,especiallyextensionsoftypeARBorEXT. Documentation[edit] TheOpenGLArchitectureReviewBoardreleasedaseriesofmanualsalongwiththespecificationwhichhavebeenupdatedtotrackchangesintheAPI.Thesearecommonlyreferredtobythecolorsoftheircovers: TheRedBook OpenGLProgrammingGuide,9thEdition.ISBN 978-0-134-49549-1 TheOfficialGuidetoLearningOpenGL,Version4.5withSPIR-V TheOrangeBook OpenGLShadingLanguage,3rdedition.ISBN 0-321-63763-1 AtutorialandreferencebookforGLSL. Historicbooks(pre-OpenGL2.0): TheGreenBook OpenGLProgrammingfortheXWindowSystem.ISBN 978-0-201-48359-8 AbookaboutX11interfacingandOpenGLUtilityToolkit(GLUT). TheBlueBook OpenGLReferencemanual,4thedition.ISBN 0-321-17383-X Essentiallyahard-copyprintoutoftheUnixmanual(man)pagesforOpenGL. Includesaposter-sizedfold-outdiagramshowingthestructureofanidealisedOpenGLimplementation. TheAlphaBook(whitecover) OpenGLProgrammingforWindows95andWindowsNT.ISBN 0-201-40709-4 AbookaboutinterfacingOpenGLwithMicrosoftWindows. OpenGL'sdocumentationisalsoaccessibleviaitsofficialwebpage.[11] Associatedlibraries[edit] TheearliestversionsofOpenGLwerereleasedwithacompanionlibrarycalledtheOpenGLUtilityLibrary(GLU).Itprovidedsimple,usefulfeatureswhichwereunlikelytobesupportedincontemporaryhardware,suchastessellating,andgeneratingmipmapsandprimitiveshapes.TheGLUspecificationwaslastupdatedin1998anddependsonOpenGLfeatureswhicharenowdeprecated. Contextandwindowtoolkits[edit] GiventhatcreatinganOpenGLcontextisquiteacomplexprocess,andgiventhatitvariesbetweenoperatingsystems,automaticOpenGLcontextcreationhasbecomeacommonfeatureofseveralgame-developmentanduser-interfacelibraries,includingSDL,Allegro,SFML,FLTK,andQt.AfewlibrarieshavebeendesignedsolelytoproduceanOpenGL-capablewindow.ThefirstsuchlibrarywasOpenGLUtilityToolkit(GLUT),latersupersededbyfreeglut.GLFWisaneweralternative.[12] ThesetoolkitsaredesignedtocreateandmanageOpenGLwindows,andmanageinput,butlittlebeyondthat.[13] GLFW–Across-platformwindowingandkeyboard-mouse-joystickhandler;ismoregame-oriented freeglut–Across-platformwindowingandkeyboard-mousehandler;itsAPIisasupersetoftheGLUTAPI,anditismorestableanduptodatethanGLUT OpenGLUtilityToolkit(GLUT)–Anoldwindowinghandler,nolongermaintained. Several"multimedialibraries"cancreateOpenGLwindows,inadditiontoinput,soundandothertasksusefulforgame-likeapplications Allegro5–Across-platformmultimedialibrarywithaCAPIfocusedongamedevelopment SimpleDirectMediaLayer(SDL)–Across-platformmultimedialibrarywithaCAPI SFML–Across-platformmultimedialibrarywithaC++APIandmultipleotherbindingstolanguagessuchasC#,Java,Haskell,andGo Widgettoolkits FLTK–Asmallcross-platformC++widgetlibrary Qt–Across-platformC++widgettoolkit.ItprovidesmanyOpenGLhelperobjects,whichevenabstractawaythedifferencebetweendesktopGLandOpenGLES wxWidgets–Across-platformC++widgettoolkit Extensionloadinglibraries[edit] GiventhehighworkloadinvolvedinidentifyingandloadingOpenGLextensions,afewlibrarieshavebeendesignedwhichloadallavailableextensionsandfunctionsautomatically.ExamplesincludeOpenGLEasyExtensionlibrary(GLEE),OpenGLExtensionWranglerLibrary(GLEW)andglbinding.Extensionsarealsoloadedautomaticallybymostlanguagebindings,suchasJOGLandPyOpenGL. Implementations[edit] Screenshotofglxinfo,showinginformationofMesaimplementationofOpenGLonasystem Mesa3Disanopen-sourceimplementationofOpenGL.Itcandopuresoftwarerendering,anditmayalsousehardwareaccelerationonBSD,Linux,andotherplatformsbytakingadvantageoftheDirectRenderingInfrastructure.Asofversion20.0,itimplementsversion4.6oftheOpenGLstandard. History[edit] Inthe1980s,developingsoftwarethatcouldfunctionwithawiderangeofgraphicshardwarewasarealchallenge.Softwaredeveloperswrotecustominterfacesanddriversforeachpieceofhardware.Thiswasexpensiveandresultedinmultiplicationofeffort. Bytheearly1990s,SiliconGraphics(SGI)wasaleaderin3Dgraphicsforworkstations.TheirIRISGLAPI[14]becametheindustrystandard,usedmorewidelythantheopenstandards-basedPHIGS.[citationneeded]ThiswasbecauseIRISGLwasconsideredeasiertouse,[bywhom?]andbecauseitsupportedimmediatemoderendering.Bycontrast,PHIGSwasconsidereddifficulttouseandoutdatedinfunctionality. SGI'scompetitors(includingSunMicrosystems,Hewlett-PackardandIBM)werealsoabletobringtomarket3DhardwaresupportedbyextensionsmadetothePHIGSstandard,whichpressuredSGItoopensourceaversionofIrisGLasapublicstandardcalledOpenGL. However,SGIhadmanycustomersforwhomthechangefromIrisGLtoOpenGLwoulddemandsignificantinvestment.Moreover,IrisGLhadAPIfunctionsthatwereirrelevantto3Dgraphics.Forexample,itincludedawindowing,keyboardandmouseAPI,inpartbecauseitwasdevelopedbeforetheXWindowSystemandSun'sNeWS.And,IrisGLlibrarieswereunsuitableforopeningduetolicensingandpatentissues[furtherexplanationneeded].ThesefactorsrequiredSGItocontinuetosupporttheadvancedandproprietaryIrisInventorandIrisPerformerprogrammingAPIswhilemarketsupportforOpenGLmatured. OneoftherestrictionsofIrisGLwasthatitonlyprovidedaccesstofeaturessupportedbytheunderlyinghardware.Ifthegraphicshardwaredidnotsupportafeaturenatively,thentheapplicationcouldnotuseit.OpenGLovercamethisproblembyprovidingsoftwareimplementationsoffeaturesunsupportedbyhardware,allowingapplicationstouseadvancedgraphicsonrelativelylow-poweredsystems.OpenGLstandardizedaccesstohardware,pushedthedevelopmentresponsibilityofhardwareinterfaceprograms(devicedrivers)tohardwaremanufacturers,anddelegatedwindowingfunctionstotheunderlyingoperatingsystem.Withsomanydifferentkindsofgraphicshardware,gettingthemalltospeakthesamelanguageinthiswayhadaremarkableimpactbygivingsoftwaredevelopersahigher-levelplatformfor3D-softwaredevelopment. In1992,[15]SGIledthecreationoftheOpenGLArchitectureReviewBoard(OpenGLARB),thegroupofcompaniesthatwouldmaintainandexpandtheOpenGLspecificationinthefuture. In1994,SGIplayedwiththeideaofreleasingsomethingcalled"OpenGL++"whichincludedelementssuchasascene-graphAPI(presumablybasedontheirPerformertechnology).Thespecificationwascirculatedamongafewinterestedparties–butneverturnedintoaproduct.[16] MicrosoftreleasedDirect3Din1995,whicheventuallybecamethemaincompetitorofOpenGL.Over50gamedeveloperssignedanopenlettertoMicrosoft,releasedonJune12,1997,callingonthecompanytoactivelysupportOpenGL.[17]OnDecember17,1997,[18]MicrosoftandSGIinitiatedtheFahrenheitproject,whichwasajointeffortwiththegoalofunifyingtheOpenGLandDirect3Dinterfaces(andaddingascene-graphAPItoo).In1998,Hewlett-Packardjoinedtheproject.[19]Itinitiallyshowedsomepromiseofbringingordertotheworldofinteractive3DcomputergraphicsAPIs,butonaccountoffinancialconstraintsatSGI,strategicreasonsatMicrosoft,andagenerallackofindustrysupport,itwasabandonedin1999.[20] InJuly2006,theOpenGLArchitectureReviewBoardvotedtotransfercontroloftheOpenGLAPIstandardtotheKhronosGroup.[21][22] Versionhistory[edit] ThefirstversionofOpenGL,version1.0,wasreleasedonJune30,1992,byMarkSegalandKurtAkeley.Sincethen,OpenGLhasoccasionallybeenextendedbyreleasinganewversionofthespecification.Suchreleasesdefineabaselinesetoffeatureswhichallconforminggraphicscardsmustsupport,andagainstwhichnewextensionscanmoreeasilybewritten.EachnewversionofOpenGLtendstoincorporateseveralextensionswhichhavewidespreadsupportamonggraphics-cardvendors,althoughthedetailsofthoseextensionsmaybechanged. OpenGLversionhistory Version ReleaseDate Features 1.1 March4,1997 Textureobjects,VertexArrays 1.2 March16,1998 3Dtextures,BGRAandpackedpixelformats,[23]introductionoftheimagingsubsetusefultoimage-processingapplications 1.2.1 October14,1998 AconceptofARBextensions 1.3 August14,2001 Multitexturing,multisampling,texturecompression 1.4 July24,2002 Depthtextures,GLSlang[24] 1.5 July29,2003 VertexBufferObject(VBO),OcclusionQueries[25] 2.0 September7,2004 GLSL1.1,MRT,NonPowerofTwotextures,PointSprites,[26]Two-sidedstencil[25] 2.1 July2,2006 GLSL1.2,PixelBufferObject(PBO),sRGBTextures[25] 3.0 August11,2008 GLSL1.3,TextureArrays,Conditionalrendering,FrameBufferObject(FBO)[27] 3.1 March24,2009 GLSL1.4,Instancing,TextureBufferObject,UniformBufferObject,Primitiverestart[28] 3.2 August3,2009 GLSL1.5,GeometryShader,Multi-sampledtextures[29] 3.3 March11,2010 GLSL3.30,BackportsasmuchfunctionaspossiblefromtheOpenGL4.0specification 4.0 March11,2010 GLSL4.00,TessellationonGPU,shaderswith64-bitprecision[30] 4.1 July26,2010 GLSL4.10,Developer-friendlydebugoutputs,compatibilitywithOpenGLES2.0[31] 4.2 August8,2011[32] GLSL4.20,Shaderswithatomiccounters,drawtransformfeedbackinstanced,shaderpacking,performanceimprovements 4.3 August6,2012[33] GLSL4.30,ComputeshadersleveragingGPUparallelism,shaderstoragebufferobjects,high-qualityETC2/EACtexturecompression,increasedmemorysecurity,amulti-applicationrobustnessextension,compatibilitywithOpenGLES3.0[34] 4.4 July22,2013[35] GLSL4.40,BufferPlacementControl,EfficientAsynchronousQueries,ShaderVariableLayout,EfficientMultipleObjectBinding,StreamlinedPortingofDirect3Dapplications,BindlessTextureExtension,SparseTextureExtension[35] 4.5 August11,2014[8][36] GLSL4.50,DirectStateAccess(DSA),FlushControl,Robustness,OpenGLES3.1APIandshadercompatibility,DX11emulationfeatures 4.6 July31,2017[37][38] GLSL4.60,Moreefficientgeometryprocessingandshaderexecution,moreinformation,noerrorcontext,polygonoffsetclamp,SPIR-V,anisotropicfiltering OpenGL2.0[edit] Releasedate:September7,2004 OpenGL2.0wasoriginallyconceivedby3DlabstoaddressconcernsthatOpenGLwasstagnatingandlackedastrongdirection.[39]3Dlabsproposedanumberofmajoradditionstothestandard.Mostofthesewere,atthetime,rejectedbytheARBorotherwisenevercametofruitionintheformthat3Dlabsproposed.However,theirproposalforaC-styleshadinglanguagewaseventuallycompleted,resultinginthecurrentformulationoftheOpenGLShadingLanguage(GLSLorGLslang).Liketheassembly-likeshadinglanguagesitwasreplacing,itallowedreplacingthefixed-functionvertexandfragmentpipewithshaders,thoughthistimewritteninaC-likehigh-levellanguage. ThedesignofGLSLwasnotableformakingrelativelyfewconcessionstothelimitsofthehardwarethenavailable.ThisharkedbacktotheearliertraditionofOpenGLsettinganambitious,forward-lookingtargetfor3Dacceleratorsratherthanmerelytrackingthestateofcurrentlyavailablehardware.ThefinalOpenGL2.0specification[40]includessupportforGLSL. LongsPeakandOpenGL3.0[edit] BeforethereleaseofOpenGL3.0,thenewrevisionhadthecodenameLongsPeak.Atthetimeofitsoriginalannouncement,LongsPeakwaspresentedasthefirstmajorAPIrevisioninOpenGL'slifetime.ItconsistedofanoverhaultothewaythatOpenGLworks,callingforfundamentalchangestotheAPI. Thedraftintroducedachangetoobjectmanagement.TheGL2.1objectmodelwasbuiltuponthestate-baseddesignofOpenGL.Thatis,tomodifyanobjectortouseit,oneneedstobindtheobjecttothestatesystem,thenmakemodificationstothestateorperformfunctioncallsthatusetheboundobject. BecauseofOpenGL'suseofastatesystem,objectsmustbemutable.Thatis,thebasicstructureofanobjectcanchangeatanytime,eveniftherenderingpipelineisasynchronouslyusingthatobject.Atextureobjectcanberedefinedfrom2Dto3D.ThisrequiresanyOpenGLimplementationstoaddadegreeofcomplexitytointernalobjectmanagement. UndertheLongsPeakAPI,objectcreationwouldbecomeatomic,usingtemplatestodefinethepropertiesofanobjectwhichwouldbecreatedwithonefunctioncall.Theobjectcouldthenbeusedimmediatelyacrossmultiplethreads.Objectswouldalsobeimmutable;however,theycouldhavetheircontentschangedandupdated.Forexample,atexturecouldchangeitsimage,butitssizeandformatcouldnotbechanged. Tosupportbackwardscompatibility,theoldstatebasedAPIwouldstillbeavailable,butnonewfunctionalitywouldbeexposedviatheoldAPIinlaterversionsofOpenGL.Thiswouldhaveallowedlegacycodebases,suchasthemajorityofCADproducts,tocontinuetorunwhileothersoftwarecouldbewrittenagainstorportedtothenewAPI. LongsPeakwasinitiallyduetobefinalizedinSeptember2007underthenameOpenGL3.0,buttheKhronosGroupannouncedonOctober30thatithadrunintoseveralissuesthatitwishedtoaddressbeforereleasingthespecification.[41]Asaresult,thespecwasdelayed,andtheKhronosGroupwentintoamediablackoutuntilthereleaseofthefinalOpenGL3.0spec. ThefinalspecificationprovedfarlessrevolutionarythantheLongsPeakproposal.Insteadofremovingallimmediatemodeandfixedfunctionality(non-shadermode),thespecincludedthemasdeprecatedfeatures.Theproposedobjectmodelwasnotincluded,andnoplanshavebeenannouncedtoincludeitinanyfuturerevisions.Asaresult,theAPIremainedlargelythesamewithafewexistingextensionsbeingpromotedtocorefunctionality. Amongsomedevelopergroupsthisdecisioncausedsomethingofanuproar,[42]withmanydevelopersprofessingthattheywouldswitchtoDirectXinprotest.MostcomplaintsrevolvedaroundthelackofcommunicationbyKhronostothedevelopmentcommunityandmultiplefeaturesbeingdiscardedthatwereviewedfavorablybymany.OtherfrustrationsincludedtherequirementofDirectX10levelhardwaretouseOpenGL3.0andtheabsenceofgeometryshadersandinstancedrenderingascorefeatures. Othersourcesreportedthatthecommunityreactionwasnotquiteassevereasoriginallypresented,[43]withmanyvendorsshowingsupportfortheupdate.[44][45] OpenGL3.0[edit] Releasedate:August11,2008 OpenGL3.0introducedadeprecationmechanismtosimplifyfuturerevisionsoftheAPI.Certainfeatures,markedasdeprecated,couldbecompletelydisabledbyrequestingaforward-compatiblecontextfromthewindowingsystem.OpenGL3.0featurescouldstillbeaccessedalongsidethesedeprecatedfeatures,however,byrequestingafullcontext. Deprecatedfeaturesinclude: Allfixed-functionvertexandfragmentprocessing Direct-moderendering,usingglBeginandglEnd Displaylists Indexed-colorrenderingtargets OpenGLShadingLanguageversions1.10and1.20 OpenGL3.1[edit] Releasedate:March24,2009 OpenGL3.1fullyremovedallofthefeatureswhichweredeprecatedinversion3.0,withtheexceptionofwidelines.Fromthisversiononwards,it'snotpossibletoaccessnewfeaturesusingafullcontext,ortoaccessdeprecatedfeaturesusingaforward-compatiblecontext.AnexceptiontotheformerruleismadeiftheimplementationsupportstheARB_compatibilityextension,butthisisnotguaranteed. Hardware:MesasupportsARMPanfrostwithVersion21.0. OpenGL3.2[edit] Releasedate:August3,2009 OpenGL3.2furtherbuiltonthedeprecationmechanismsintroducedbyOpenGL3.0,bydividingthespecificationintoacoreprofileandcompatibilityprofile.Compatibilitycontextsincludethepreviously-removedfixed-functionAPIs,equivalenttotheARB_compatibilityextensionreleasedalongsideOpenGL3.1,whilecorecontextsdonot.OpenGL3.2alsoincludedanupgradetoGLSLversion1.50. OpenGL3.3[edit] Releasedate:March11,2010 MesasupportssoftwareDriverSWR,softpipeandforolderNvidiacardswithNV50. OpenGL4.0[edit] Releasedate:March11,2010 OpenGL4.0wasreleasedalongsideversion3.3.ItwasdesignedforhardwareabletosupportDirect3D11. AsinOpenGL3.0,thisversionofOpenGLcontainsahighnumberoffairlyinconsequentialextensions,designedtothoroughlyexposetheabilitiesofDirect3D11-classhardware.Onlythemostinfluentialextensionsarelistedbelow. Hardwaresupport:NvidiaGeForce400seriesandnewer,AMDRadeonHD5000Seriesandnewer(FP64shadersimplementedbyemulationonsomeTeraScaleGPUs),IntelHDGraphicsinIntelIvyBridgeprocessorsandnewer.[46] OpenGL4.1[edit] Releasedate:July26,2010 Hardwaresupport:NvidiaGeForce400seriesandnewer,AMDRadeonHD5000Seriesandnewer(FP64shadersimplementedbyemulationonsomeTeraScaleGPUs),IntelHDGraphicsinIntelIvyBridgeprocessorsandnewer.[46] Minimum"maximumtexturesize"is16,384×16,384forGPU'simplementingthisspecification.[47] OpenGL4.2[edit] Releasedate:August8,2011[32] Supportforshaderswithatomiccountersandload-store-atomicread-modify-writeoperationstoonelevelofatexture DrawingmultipleinstancesofdatacapturedfromGPUvertexprocessing(includingtessellation),toenablecomplexobjectstobeefficientlyrepositionedandreplicated Supportformodifyinganarbitrarysubsetofacompressedtexture,withouthavingtore-downloadthewholetexturetotheGPUforsignificantperformanceimprovements Hardwaresupport:NvidiaGeForce400seriesandnewer,AMDRadeonHD5000Seriesandnewer(FP64shadersimplementedbyemulationonsomeTeraScaleGPUs),andIntelHDGraphicsinIntelHaswellprocessorsandnewer.[46](LinuxMesa:IvyBridgeandnewer) OpenGL4.3[edit] Releasedate:August6,2012[33] ComputeshadersleveragingGPUparallelismwithinthecontextofthegraphicspipeline Shaderstoragebufferobjects,allowingshaderstoreadandwritebufferobjectslikeimageload/storefrom4.2,butthroughthelanguageratherthanfunctioncalls. Imageformatparameterqueries ETC2/EACtexturecompressionasastandardfeature FullcompatibilitywithOpenGLES3.0APIs Debugabilitiestoreceivedebuggingmessagesduringapplicationdevelopment Textureviewstointerprettexturesindifferentwayswithoutdatareplication Increasedmemorysecurityandmulti-applicationrobustness Hardwaresupport:AMDRadeonHD5000Seriesandnewer(FP64shadersimplementedbyemulationonsomeTeraScaleGPUs),IntelHDGraphicsinIntelHaswellprocessorsandnewer.[46](LinuxMesa:IvyBridgewithoutstenciltexturing,Haswellandnewer),NvidiaGeForce400seriesandnewer.VIRGLEmulationforvirtualmachinessupports4.3+withMesa20. OpenGL4.4[edit] Releasedate:July22,2013[35] Enforcedbufferobjectusagecontrols Asynchronousqueriesintobufferobjects Expressionofmorelayoutcontrolsofinterfacevariablesinshaders Efficientbindingofmultipleobjectssimultaneously Hardwaresupport:AMDRadeonHD5000Seriesandnewer(FP64shadersimplementedbyemulationonsomeTeraScaleGPUs),IntelHDGraphicsinIntelBroadwellprocessorsandnewer(LinuxMesa:Haswellandnewer),[48]NvidiaGeForce400seriesandnewer,[49]TegraK1. OpenGL4.5[edit] Releasedate:August11,2014[8][36] DirectStateAccess(DSA)–objectaccessorsenablestatetobequeriedandmodifiedwithoutbindingobjectstocontexts,forincreasedapplicationandmiddlewareefficiencyandflexibility.[50] FlushControl–applicationscancontrolflushingofpendingcommandsbeforecontextswitching–enablinghigh-performancemultithreadedapplications; Robustness–providingasecureplatformforapplicationssuchasWebGLbrowsers,includingpreventingaGPUresetaffectinganyotherrunningapplications; OpenGLES3.1APIandshadercompatibility–toenabletheeasydevelopmentandexecutionofthelatestOpenGLESapplicationsondesktopsystems. Hardwaresupport:AMDRadeonHD5000Seriesandnewer(FP64shadersimplementedbyemulationonsomeTeraScaleGPUs),IntelHDGraphicsinIntelBroadwellprocessorsandnewer(LinuxMesa:Haswellandnewer),NvidiaGeForce400seriesandnewer,[49]TegraK1,andTegraX1.[51][52] OpenGL4.6[edit] Releasedate:July31,2017[8][37][38] moreefficient,GPU-sided,geometryprocessing moreefficientshaderexecution(AZDO) moreinformationthroughstatistics,overflowqueryandcounters higherperformancethroughnoerrorhandlingcontexts clampingofpolygonoffsetfunction,solvesashadowrenderingproblem SPIR-Vshaders Improvedanisotropicfiltering Hardwaresupport:AMDRadeonHD7000Seriesandnewer(FP64shadersimplementedbyemulationonsomeTeraScaleGPUs),IntelHaswellandnewer,NvidiaGeForce400seriesandnewer.[49] Driversupport: Mesa19.2onLinuxsupportsOpenGL4.6forIntelBroadwellandnewer.[53]Mesa20.0supportsAMDRadeonGPUs,[54]whilesupportforNvidiaKepler+isinprogress.ZinkasEmulationDriverwith21.1andsoftwaredriverLLVMpipealsosupportwithMesa21.0. AMDAdrenalin18.4.1GraphicsDriveronWindows7SP1,10version1803(April2018update)forAMDRadeon™HD7700+,HD8500+andnewer.ReleasedApril2018.[55][56] Intel26.20.100.6861graphicsdriveronWindows10.ReleasedMay2019.[57][58] NVIDIAGeForce397.31GraphicsDriveronWindows7,8,10x86-64bitonly,no32-bitsupport.ReleasedApril2018[59] Alternativeimplementations[edit] AppledeprecatedOpenGLiniOS12andmacOS10.14MojaveinfavorofMetal,butitisstillavailableasofmacOS11BigSur(includingApplesilicondevices).[60]ThelatestversionsupportedforOpenGLis4.1from2011.[61][62]AproprietarylibraryfromMolten–authorsofMoltenVK–calledMoltenGL,cantranslateOpenGLcallstoMetal.[63] ThereareseveralprojectswhichattempttoimplementOpenGLontopofVulkan.TheVulkanbackendforGoogle'sANGLEachievedOpenGLES3.1conformanceinJuly2020.[64]TheMesa3Dprojectalsoincludessuchadriver,calledZink.[65] ThefutureofOpenGL[edit] Theneutralityofthissectionisdisputed.Relevantdiscussionmaybefoundonthetalkpage.Pleasedonotremovethismessageuntilconditionstodosoaremet.(October2021)(Learnhowandwhentoremovethistemplatemessage) InJune2018,AppledeprecatedOpenGLAPIsonalloftheirplatforms(iOS,macOSandtvOS),stronglyencouragingdeveloperstousetheirproprietaryMetalAPI,whichwasintroducedin2014.[66] StadiaandtheGoogleoperatingsystemFuchsiaonlysupportVulkan. In2016,idSoftwarereleasedanupdatefortheidTech6gameenginethataddedsupportforVulkan,whileretainingsupportforOpenGL.IDTech7eliminatedsupportforOpenGL.[67] OnSeptember17,2021ValveannouncedthatitwouldberemovingOpenGLfromDota2inafutureupdate.[68] [69] AtypicalGames,withsupportfromSamsung,updatedtheirgameenginetouseVulkan,ratherthanOpenGL,acrossallnon-Appleplatforms. [70] OpenGLdoesn'tsupportRayTracing,APIforvideodecodingonGPUincomparisonofVulkan MeshShaderssupportsonlyfornVidia [71] Vulkan[edit] Mainarticle:Vulkan(API) Vulkan,formerlynamedthe"NextGenerationOpenGLInitiative"(glNext),[72][73]isagrounds-upredesignefforttounifyOpenGLandOpenGLESintoonecommonAPIthatwillnotbebackwardscompatiblewithexistingOpenGLversions.[74][75][76] TheinitialversionofVulkanAPIwasreleasedonFebruary16,2016. Seealso[edit] Freeandopen-sourcesoftwareportal ARBassemblylanguage–OpenGL'slegacylow-levelshadinglanguage ComparisonofOpenGLandDirect3D Direct3D–maincompetitorofOpenGL GlideAPI–agraphicsAPIonceusedon3dfxVoodoocards ListofOpenGLapplications Metal(API)–agraphicsAPIforiOS,macOS,tvOS,watchOS OpenAL–cross-platformaudiolibrary,designedtoresembleOpenGL OpenGLES–OpenGLforembeddedsystems OpenSLES–APIforaudioonembeddedsystems,developedbytheKhronosGroup OpenVG–APIforaccelerated2Dgraphics,developedbytheKhronosGroup RenderManInterfaceSpecification(RISpec)–Pixar'sopenAPIforphotorealisticoff-linerendering VOGL–adebuggerforOpenGL Vulkan–low-overhead,cross-platform2Dand3DgraphicsAPI,the"nextgenerationOpenGLinitiative" Graphicspipeline WebGPU References[edit] ^Lextrait,Vincent(January2010)."TheProgrammingLanguagesBeacon,v10.0".ArchivedfromtheoriginalonMay30,2012.RetrievedMarch14,2010. ^"Products:Software:OpenGL:LicensingandLogos".SGI.ArchivedfromtheoriginalonNovember1,2012.RetrievedNovember7,2012. ^"TheOpenGLGraphicsSystem:ASpecification"(PDF).4.0(CoreProfile).March11,2010. ^"SGI–OpenGLOverview".ArchivedfromtheoriginalonOctober31,2004.RetrievedFebruary16,2007. ^Peddie,Jon(July2012)."Who'stheFairestofThemAll?".ComputerGraphicsWorld.RetrievedMay30,2018. ^"OpenGLARBtoPassControlofOpenGLSpecificationtoKhronosGroup".TheKhronosGroup.July31,2006.RetrievedMarch18,2021. ^"KhronosMembershipOverviewandFAQ".Khronos.org.RetrievedNovember7,2012. ^abcd"KhronosOpenGLRegistry".KhronosGroup.RetrievedJuly31,2017. ^"NV_half_float".OpenGLRegistry.KhronosGroup. ^"HowtoCreateKhronosAPIExtensions".KhronosGroup.RetrievedJuly31,2017. ^"OpenGL-TheIndustry'sFoundationforHighPerformanceGraphics".TheKhronosGroup.July19,2011.RetrievedMarch18,2021. ^"AlistofGLUTalternatives,maintainedby".KhronosGroup.RetrievedMay2,2013. ^"RelatedtoolkitsandAPIs".www.opengl.org.OpenGL.RetrievedOctober8,2014. ^"IRISGL,SGI'sproperty". ^"CreationoftheOpenGLARB".ArchivedfromtheoriginalonFebruary22,2007.RetrievedFebruary16,2007. ^"EndofOpenGL++".KhronosGroup. ^"TopGameDevelopersCallonMicrosofttoActivelySupportOpenGL".NextGeneration.No. 32.ImagineMedia.August1997.p. 17. ^"AnnouncementofFahrenheit".ArchivedfromtheoriginalonSeptember27,2007. ^"MembersofFahrenheit.1998".ComputergramInternational.1998.ArchivedfromtheoriginalonOctober5,2007. ^"EndofFahrenheit".TheRegister. ^"OpenGLARBtopasscontrolofOpenGLspecificationtoKhronosGroup".Khronospressrelease.July31,2006. ^"OpenGLARBtoPassControlofOpenGLSpecificationtoKhronosGroup".AccessMyLibraryArchive. ^Astle,Dave(April1,2003)."MovingBeyondOpenGL1.1forWindows".gamedev.net.RetrievedNovember15,2007. ^Isorna,J.M.(2015).Simulaciónvisualdemateriales :teoría,técnicas,análisisdecasos.UPCGrau.Arquitectura,urbanismeiedificació(inSpanish).UniversitatPolitècnicadeCatalunya.p. 191.ISBN 978-84-9880-564-2.RetrievedAugust21,2019. ^abc"TheOpenGLGraphicsSystem:ASpecification"(PDF).2.1.December1,2006. ^"PointPrimitive". ^"TheOpenGLGraphicsSystem:ASpecification"(PDF).3.0.September23,2008. ^"TheOpenGLGraphicsSystem:ASpecification"(PDF).3.1.May28,2009. ^"TheOpenGLGraphicsSystem:ASpecification"(PDF).3.2(CoreProfile).December7,2009. ^"KhronosUnleashesCutting-Edge,Cross-PlatformGraphicsAccelerationwithOpenGL4.0".March11,2010. ^"KhronosDrivesEvolutionofCross-Platform3DGraphicswithReleaseofOpenGL4.1Specification".July26,2010. ^ab"KhronosEnrichesCross-Platform3DGraphicswithReleaseofOpenGL4.2Specification".August8,2011. ^ab"KhronosReleasesOpenGL4.3SpecificationwithMajorEnhancements".August6,2012. ^"KhronosReleasesOpenGL4.3SpecificationwithMajorEnhancements".August6,2012. ^abc"KhronosReleasesOpenGL4.4Specification".July22,2013. ^ab"KhronosGroupAnnouncesKeyAdvancesinOpenGLEcosystem–KhronosGroupPressRelease".TheKhronosGroupInc.August10,2014.RetrievedApril17,2015. ^ab"KhronosReleasesOpenGL4.6withSPIR-VSupport".TheKhronosGroupInc.July31,2017.RetrievedJuly31,2017. ^abKessenich,John;Baldwin,Dave."TheOpenGL®ShadingLanguage,Version4.60.7".TheKhronosGroupInc.RetrievedAugust21,2019. ^Abi-Chahla,Fedy(September16,2008)."OpenGL3(3DLabsAndTheEvolutionOfOpenGL)".Tom'sHardware.RetrievedOctober24,2010. ^"TheOpenGLGraphicsSystem:ASpecification"(PDF).2.0.October22,2004. ^"OpenGLARBannouncesanupdateonOpenGL3.0".October30,2007.RetrievedOctober31,2007. ^"OpenGL3.0Released,DevelopersFurious–Slashdot".Tech.slashdot.org.RetrievedNovember7,2012. ^"OpenGLBOFwentoverwell,nopitchforksseen". ^"TheIndustryStandardforHighPerformanceGraphics".OpenGL.August18,2008.RetrievedJuly31,2017. ^"NVIDIAprovidesearlyOpenGL3.0drivernow". ^abcd"IntelIrisandHDGraphicsDriverforWindows7/8/8.164bit".IntelDownloadCenter.ArchivedfromtheoriginalonApril2,2015. ^"Expectedmaximumtexturesize-GraphicsandGPUProgramming".GameDev.net. ^"IntelSkylake-SCPUsand100-seriesChipsetsDetailedinApparentLeak".NDTVGadgets.April17,2015. ^abcLarabel,Michael(July31,2017)."NVIDIAReleases381.26.11LinuxDriverWithOpenGL4.6Support".Phoronix. ^"OpenGL4.5released—withoneofDirect3D'sbestfeatures".ArsTechnica.August11,2014.RetrievedApril17,2015. ^"SG4121:OpenGLUpdateforNVIDIAGPUs".Ustream.ArchivedfromtheoriginalonMay17,2015.RetrievedApril17,2015. ^Kilgard,Mark(August12,2014)."OpenGL4.5UpdateforNVIDIAGPUs".RetrievedApril17,2015. ^Larabel,Michael(August21,2019)."Intel'sOpenGLLinuxDriverNowHasOpenGL4.6SupportForMesa19.2".Phoronix. ^Larabel,Michael(November27,2019)."AMD'sRadeonSIDriverFinallyEnablesOpenGL4.6".Phoronix. ^"AMDAdrenalin18.4.1GraphicsDriverReleased(OpenGL4.6,Vulkan1.1.70)–Geeks3D".www.geeks3d.com.RetrievedMay10,2018. ^"Radeon™SoftwareAdrenalinEdition18.4.1ReleaseNotes".support.amd.com.RetrievedMay10,2018. ^"IntelGraphicsDriver25.20.100.6861Released(OpenGL4.6+Vulkan1.1.103)|Geeks3D".RetrievedMay16,2019. ^"Windows®10DCHDrivers".IntelDownloadCenter.RetrievedAugust21,2019. ^"NVIDIAGeForce397.31GraphicsDriverReleased(OpenGL4.6,Vulkan1.1,RTX,CUDA9.2)–Geeks3D".www.geeks3d.com.RetrievedMay10,2018. ^"AppleDeveloperDocumentation".developer.apple.com. ^Cunningham,Andrew(October7,2019)."macOS10.15Catalina:TheArsTechnicareview".ArsTechnica. ^Axon,Samuel(June6,2018)."TheendofOpenGLsupport,plusotherupdatesAppledidn'tshareatthekeynote".ArsTechnica.RetrievedOctober19,2020. ^"Vulkan,andfasterOpenGLES,oniOSandmacOS".Molten.RetrievedOctober19,2020. ^TheANGLEProjectAuthors(October14,2020)."google/angle:AconformantOpenGLESimplementationforWindows,Mac,Linux,iOSandAndroid".GitHub.RetrievedDecember17,2020. ^"Zink".TheMesa3DGraphicsLibrarylatestdocumentation. ^Smith,Ryan(June5,2018)."AppleDeprecatesOpenGLAcrossAllOSes;UrgesDeveloperstouseMetal".www.anandtech.com.Purch.RetrievedJune5,2018. ^"DoomWiki:idTech7".RetrievedOctober26,2021. ^"Inthecomingmonths,Dota2willremovesupportfor32-bitsystems,OpenGL,andDirectX9". ^"Valve'sDota2todropsupportfor32-bitsystems,DirectX9,andOpenGL". ^ "JetSetVulkan :ReflectingonthemovetoVulkan". ^"MeshShaders". ^Dingman,Hayden(March3,2015)."MeetVulkan,thepowerful,platform-agnosticgamingtechtakingaimatDirectX12".PCWorld.RetrievedMarch3,2015. ^Bright,Peter(March3,2015)."KhronosunveilsVulkan:OpenGLbuiltformodernsystems".ArsTechnica.RetrievedMarch3,2015. ^"KhronosAnnouncesNextGenerationOpenGLInitiative".AnandTech.RetrievedAugust20,2014. ^"OpenGL4.5released,next-genOpenGLunveiled:Cross-platformMantlekiller,DX12competitor".RetrievedAugust20,2014. ^"KhronosPublishesItsSlidesAboutOpenGL-Next".Phoronix.RetrievedAugust22,2014. Furtherreading[edit] Shreiner,Dave;Sellers,Graham;et al.(March30,2013).OpenGLProgrammingGuide:TheOfficialGuidetoLearningOpenGL.Version4.3(8th ed.).Addison-Wesley.ISBN 978-0-321-77303-6. Sellers,Graham;Wright,RichardS.;Haemel,Nicholas(July31,2013).OpenGLSuperBible:ComprehensiveTutorialandReference(6th ed.).Addison-Wesley.ISBN 978-0-321-90294-8. Rost,RandiJ.(July30,2009).OpenGLShadingLanguage(3rd ed.).Addison-Wesley.ISBN 978-0-321-63763-5. Lengyel,Eric(2003).TheOpenGLExtensionsGuide.CharlesRiverMedia.ISBN 1-58450-294-0. OpenGLArchitectureReviewBoard;Shreiner,Dave(2004).OpenGLReferenceManual:TheOfficialReferenceDocumenttoOpenGL.Version1.4.Addison-Wesley.ISBN 0-321-17383-X. OpenGLArchitectureReviewBoard;Shreiner,Dave;et al.(2006).OpenGLProgrammingGuide:TheOfficialGuidetoLearningOpenGL.Version2(5th ed.).Addison-Wesley.ISBN 0-321-33573-2. Externallinks[edit] WikimediaCommonshasmediarelatedtoOpenGL. Wikibookshasabookonthetopicof:OpenGLProgramming Officialwebsite OpenGLOverviewandOpenGL.org'sWikiwithmoreinformationonOpenGLLanguagebindings SGI'sOpenGLwebsite OpenGLatCurlie KhronosGroup,Inc. Angel,Edward&Shreiner,Dave(2013)."AnIntroductiontoOpenGLProgramming".YouTube.SIGGRAPHUniversity.ArchivedfromtheoriginalonDecember11,2021. vteKhronosGroupStandardsActive EGL glTF NNEF OpenCL OpenVG OpenVX OpenXR SPIR SYCL Vulkan Inactive COLLADA OpenGL ES SC WebGL OpenKODE OpenMAX OpenSLES OpenWF WebCL Retrievedfrom"https://en.wikipedia.org/w/index.php?title=OpenGL&oldid=1071814303" Categories:OpenGL1992software3DgraphicsAPIsApplicationprogramminginterfacesCross-platformsoftwareGraphicslibrariesGraphicsstandardsVideogamedevelopmentVideogamedevelopmentsoftwareVirtualrealityHiddencategories:CS1Spanish-languagesources(es)ArticleswithshortdescriptionShortdescriptionmatchesWikidataUsemdydatesfromNovember2021WikipediaarticlesneedingclarificationfromJanuary2020AllarticleswithunsourcedstatementsArticleswithunsourcedstatementsfromMarch2021Articleswithspecificallymarkedweasel-wordedphrasesfromMarch2021WikipediaarticlesneedingclarificationfromSeptember2016WikipedianeutralpointofviewdisputesfromOctober2021AllWikipedianeutralpointofviewdisputesCommonscategorylinkisonWikidataArticleswithCurlielinks Navigationmenu Personaltools NotloggedinTalkContributionsCreateaccountLogin Namespaces ArticleTalk English expanded collapsed Views ReadEditViewhistory More expanded collapsed Search Navigation MainpageContentsCurrenteventsRandomarticleAboutWikipediaContactusDonate Contribute HelpLearntoeditCommunityportalRecentchangesUploadfile Tools WhatlinkshereRelatedchangesUploadfileSpecialpagesPermanentlinkPageinformationCitethispageWikidataitem Print/export DownloadasPDFPrintableversion Inotherprojects WikimediaCommonsWikibooks Languages العربيةবাংলাБългарскиBosanskiCatalàČeštinaDanskDeutschEestiΕλληνικάEspañolEsperantoفارسیFrançaisGalego한국어हिन्दीBahasaIndonesiaÍslenskaItalianoעבריתქართულიҚазақшаLatviešuMagyarМакедонскиമലയാളംमराठीBahasaMelayuNederlands日本語NorskbokmålPolskiPortuguêsRomânăРусскийසිංහලSimpleEnglishSlovenčinaSlovenščinaСрпски/srpskiSrpskohrvatski/српскохрватскиSuomiSvenskaไทยTürkçeУкраїнськаTiếngViệt吴语粵語中文 Editlinks