OpenGLAdapter.pas 268 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672
  1. //
  2. // This unit is part of the GLScene Engine, http://glscene.org
  3. //
  4. {
  5. OpenGL adapter
  6. }
  7. unit OpenGLAdapter;
  8. interface
  9. {$I GLScene.inc}
  10. {$IFDEF DARWIN}
  11. {$LINKFRAMEWORK OpenGL}
  12. {$LINKFRAMEWORK AGL}
  13. {$ENDIF}
  14. uses
  15. Winapi.Windows,
  16. System.SysUtils,
  17. GLStrings,
  18. GLSLog,
  19. OpenGLTokens,
  20. GLVectorGeometry,
  21. GLVectorTypes;
  22. const
  23. opengl32 = 'OpenGL32.dll';
  24. glu32 = 'GLU32.dll';
  25. libEGL = 'libEGL.dll';
  26. libGLES2 = 'libGLESv2.dll';
  27. type
  28. EOpenGLError = class(Exception);
  29. TGLExtensionsAndEntryPoints = class
  30. private
  31. FBuffer: string;
  32. FInitialized: boolean;
  33. FDebug: boolean;
  34. FDebugIds: Cardinal;
  35. function CheckExtension(const Extension: string): boolean;
  36. {$IFDEF SUPPORT_WGL}
  37. procedure ReadWGLExtensions;
  38. procedure ReadWGLImplementationProperties;
  39. {$ENDIF}
  40. {$IFDEF SUPPORT_GLX}
  41. procedure ReadGLXExtensions;
  42. procedure ReadGLXImplementationProperties;
  43. {$ENDIF}
  44. {$IFDEF EGL_SUPPORT}
  45. procedure ReadEGLExtensions;
  46. procedure ReadEGLImplementationProperties;
  47. {$ENDIF}
  48. function GetAddress(const ProcName: string): Pointer;
  49. function GetAddressNoSuffixes(const ProcName: string): Pointer;
  50. function GetAddressAlt(const ProcName1, ProcName2: string): Pointer;
  51. function GetCapAddress: Pointer;
  52. public
  53. VERSION_1_0, VERSION_1_1, VERSION_1_2, VERSION_1_3, VERSION_1_4,
  54. VERSION_1_5, VERSION_2_0, VERSION_2_1, VERSION_3_0, VERSION_3_1,
  55. VERSION_3_2, VERSION_3_3, VERSION_4_0, VERSION_4_1, VERSION_4_2,
  56. ARB_blend_func_extended, ARB_color_buffer_float, ARB_compatibility,
  57. ARB_copy_buffer, ARB_depth_buffer_float, ARB_depth_clamp,
  58. ARB_depth_texture, ARB_draw_buffers, ARB_draw_buffers_blend,
  59. ARB_draw_elements_base_vertex, ARB_draw_indirect, ARB_draw_instanced,
  60. ARB_explicit_attrib_location, ARB_fragment_coord_conventions,
  61. ARB_fragment_program, ARB_fragment_program_shadow, ARB_fragment_shader,
  62. ARB_framebuffer_object, ARB_framebuffer_sRGB, ARB_geometry_shader4,
  63. ARB_gpu_shader_fp64, ARB_gpu_shader5, ARB_half_float_pixel,
  64. ARB_half_float_vertex, ARB_imaging, ARB_instanced_arrays,
  65. ARB_map_buffer_range, ARB_matrix_palette, ARB_multisample,
  66. ARB_multitexture, ARB_occlusion_query, ARB_occlusion_query2,
  67. ARB_pixel_buffer_object, ARB_point_parameters, ARB_point_sprite,
  68. ARB_provoking_vertex, ARB_sample_shading, ARB_sampler_objects,
  69. ARB_seamless_cube_map, ARB_shader_bit_encoding, ARB_shader_subroutine,
  70. ARB_shader_texture_lod, ARB_shading_language_100, ARB_shadow,
  71. ARB_shadow_ambient, ARB_shader_objects, ARB_sync, ARB_tessellation_shader,
  72. ARB_texture_border_clamp, ARB_texture_buffer_object,
  73. ARB_texture_buffer_object_rgb32, ARB_texture_compression,
  74. ARB_texture_compression_rgtc, ARB_texture_cube_map,
  75. ARB_texture_cube_map_array, ARB_texture_env_add, ARB_texture_env_combine,
  76. ARB_texture_env_crossbar, ARB_texture_env_dot3, ARB_texture_float,
  77. ARB_texture_gather, ARB_texture_mirrored_repeat, ARB_texture_multisample,
  78. ARB_texture_non_power_of_two, ARB_texture_query_lod,
  79. ARB_texture_rectangle, ARB_texture_rg, ARB_texture_rgb10_a2ui,
  80. ARB_texture_swizzle, ARB_timer_query, ARB_transform_feedback2,
  81. ARB_transform_feedback3, ARB_transpose_matrix, ARB_uniform_buffer_object,
  82. ARB_vertex_array_bgra, ARB_vertex_array_object, ARB_vertex_blend,
  83. ARB_vertex_buffer_object, ARB_vertex_program, ARB_vertex_shader,
  84. ARB_vertex_type_2_10_10_10_rev, ARB_window_pos,
  85. ARB_texture_compression_bptc, ARB_get_program_binary,
  86. ARB_separate_shader_objects, ARB_shader_stencil_export, KHR_debug,
  87. ARB_clear_buffer_object, ARB_compute_shader, ARB_copy_image,
  88. ARB_debug_group, ARB_debug_label, ARB_debug_output2,
  89. ARB_ES3_compatibility, ARB_explicit_uniform_location,
  90. ARB_fragment_layer_viewport, ARB_framebuffer_no_attachments,
  91. ARB_internalformat_query2, ARB_invalidate_subdata,
  92. ARB_multi_draw_indirect, ARB_program_interface_query,
  93. ARB_shader_image_size, ARB_shader_storage_buffer_object,
  94. ARB_stencil_texturing, ARB_texture_buffer_range, ARB_texture_query_levels,
  95. ARB_texture_storage_multisample, ARB_texture_view,
  96. ARB_vertex_attrib_binding, ARB_robustness_isolation, ARB_cl_event,
  97. _3DFX_multisample, _3DFX_tbuffer, _3DFX_texture_compression_FXT1,
  98. ATI_draw_buffers, ATI_texture_compression_3dc, ATI_texture_float,
  99. ATI_texture_mirror_once, S3_s3tc, EXT_abgr, EXT_bgra,
  100. EXT_bindable_uniform, EXT_blend_color, EXT_blend_equation_separate,
  101. EXT_blend_func_separate, EXT_blend_logic_op, EXT_blend_minmax,
  102. EXT_blend_subtract, EXT_Cg_shader, EXT_clip_volume_hint,
  103. EXT_compiled_vertex_array, EXT_copy_texture, EXT_depth_bounds_test,
  104. EXT_draw_buffers2, EXT_draw_instanced, EXT_draw_range_elements,
  105. EXT_fog_coord, EXT_framebuffer_blit, EXT_framebuffer_multisample,
  106. EXT_framebuffer_object, EXT_framebuffer_sRGB, EXT_geometry_shader4,
  107. EXT_gpu_program_parameters, EXT_gpu_shader4, EXT_multi_draw_arrays,
  108. EXT_multisample, EXT_packed_depth_stencil, EXT_packed_float,
  109. EXT_packed_pixels, EXT_paletted_texture, EXT_pixel_buffer_object,
  110. EXT_polygon_offset, EXT_rescale_normal, EXT_secondary_color,
  111. EXT_separate_specular_color, EXT_shadow_funcs, EXT_shared_texture_palette,
  112. EXT_stencil_clear_tag, EXT_stencil_two_side, EXT_stencil_wrap,
  113. EXT_texture3D, EXT_texture_array, EXT_texture_buffer_object,
  114. EXT_texture_compression_latc, EXT_texture_compression_rgtc,
  115. EXT_texture_compression_s3tc, EXT_texture_cube_map,
  116. EXT_texture_edge_clamp, EXT_texture_env_add, EXT_texture_env_combine,
  117. EXT_texture_env_dot3, EXT_texture_filter_anisotropic, EXT_texture_integer,
  118. EXT_texture_lod, EXT_texture_lod_bias, EXT_texture_mirror_clamp,
  119. EXT_texture_object, EXT_texture_rectangle, EXT_texture_sRGB,
  120. EXT_texture_shared_exponent, EXT_timer_query, EXT_transform_feedback,
  121. EXT_vertex_array, EXT_texture_sRGB_decode, EXT_direct_state_access,
  122. EXT_texture_swizzle, HP_occlusion_test, IBM_rasterpos_clip,
  123. KTX_buffer_region, MESA_resize_buffers, NV_blend_square,
  124. NV_conditional_render, NV_copy_image, NV_depth_buffer_float, NV_fence,
  125. NV_float_buffer, NV_fog_distance, NV_geometry_program4,
  126. NV_light_max_exponent, NV_multisample_filter_hint, NV_occlusion_query,
  127. NV_point_sprite, NV_primitive_restart, NV_register_combiners,
  128. NV_shader_buffer_load, NV_texgen_reflection, NV_texture_compression_vtc,
  129. NV_texture_env_combine4, NV_texture_rectangle, NV_texture_shader,
  130. NV_texture_shader2, NV_texture_shader3, NV_transform_feedback,
  131. NV_vertex_array_range, NV_vertex_array_range2,
  132. NV_vertex_buffer_unified_memory, NV_vertex_program, SGI_color_matrix,
  133. SGIS_generate_mipmap, SGIS_multisample, SGIS_texture_border_clamp,
  134. SGIS_texture_color_mask, SGIS_texture_edge_clamp, SGIS_texture_lod,
  135. SGIX_depth_texture, SGIX_shadow, SGIX_shadow_ambient,
  136. AMD_vertex_shader_tessellator, WIN_swap_hint, ATI_meminfo,
  137. NVX_gpu_memory_info, NV_vdpau_interop, NV_path_rendering,
  138. GREMEDY_frame_terminator, GREMEDY_string_marker, AMDX_debug_output,
  139. ARB_debug_output: boolean;
  140. // OpenGL 1.1 core functions and procedures
  141. BindTexture: procedure(target: Cardinal; texture: Cardinal);
  142. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  143. BlendFunc: procedure(sfactor: Cardinal; dfactor: Cardinal);
  144. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  145. Clear: procedure(mask: TGLbitfield);
  146. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  147. ClearColor: procedure(red, green, blue, alpha: Single);
  148. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  149. ClearDepth: procedure(depth: TGLclampd);
  150. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  151. ClearStencil: procedure(s: TGLint);
  152. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  153. ColorMask: procedure(red, green, blue, alpha: TGLboolean);
  154. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  155. CopyTexImage1D: procedure(target: Cardinal; level: TGLint;
  156. internalFormat: Cardinal; X, y: TGLint; Width: TGLsizei; border: TGLint);
  157. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  158. CopyTexImage2D: procedure(target: Cardinal; level: TGLint;
  159. internalFormat: Cardinal; X, y: TGLint; Width, Height: TGLsizei;
  160. border: TGLint);
  161. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  162. CopyTexSubImage1D: procedure(target: Cardinal; level, xoffset, X, y: TGLint;
  163. Width: TGLsizei);
  164. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  165. CopyTexSubImage2D: procedure(target: Cardinal;
  166. level, xoffset, yoffset, X, y: TGLint; Width, Height: TGLsizei);
  167. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  168. CullFace: procedure(mode: Cardinal);
  169. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  170. DeleteTextures: procedure(n: TGLsizei; textures: PGLuint);
  171. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  172. DepthFunc: procedure(func: Cardinal);
  173. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  174. DepthMask: procedure(flag: TGLboolean);
  175. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  176. DepthRange: procedure(zNear, zFar: TGLclampd);
  177. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  178. Disable: procedure(cap: Cardinal);
  179. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  180. DrawArrays: procedure(mode: Cardinal; First: TGLint; Count: TGLsizei);
  181. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  182. DrawBuffer: procedure(mode: Cardinal);
  183. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  184. DrawElements: procedure(mode: Cardinal; Count: TGLsizei; atype: Cardinal;
  185. indices: Pointer);
  186. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  187. Enable: procedure(cap: Cardinal);
  188. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  189. Finish: procedure();
  190. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  191. Flush: procedure();
  192. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  193. FrontFace: procedure(mode: Cardinal);
  194. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  195. GenTextures: procedure(n: TGLsizei; textures: PGLuint);
  196. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  197. GetBooleanv: procedure(pname: Cardinal; params: PGLboolean);
  198. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  199. GetDoublev: procedure(pname: Cardinal; params: PGLdouble);
  200. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  201. GetError: function: Cardinal;
  202. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  203. GetFloatv: procedure(pname: Cardinal; params: PGLfloat);
  204. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  205. GetIntegerv: procedure(pname: Cardinal; params: PGLint);
  206. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  207. GetPointerv: procedure(pname: Cardinal; var params);
  208. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  209. GetString: function(Name: Cardinal): PAnsiChar;
  210. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  211. GetTexImage: procedure(target: Cardinal; level: TGLint;
  212. format, atype: Cardinal; pixels: Pointer);
  213. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  214. GetTexLevelParameterfv: procedure(target: Cardinal; level: TGLint;
  215. pname: Cardinal; params: PGLfloat);
  216. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  217. GetTexLevelParameteriv: procedure(target: Cardinal; level: TGLint;
  218. pname: Cardinal; params: PGLint);
  219. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  220. GetTexParameterfv: procedure(target, pname: Cardinal; params: PGLfloat);
  221. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  222. GetTexParameteriv: procedure(target, pname: Cardinal; params: PGLint);
  223. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  224. Hint: procedure(target, mode: Cardinal);
  225. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  226. IsEnabled: function(cap: Cardinal): TGLboolean;
  227. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  228. IsTexture: function(texture: Cardinal): TGLboolean;
  229. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  230. LineWidth: procedure(Width: TGLfloat);
  231. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  232. LogicOp: procedure(opcode: Cardinal);
  233. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  234. PixelStoref: procedure(pname: Cardinal; param: TGLfloat);
  235. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  236. PixelStorei: procedure(pname: Cardinal; param: TGLint);
  237. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  238. PointSize: procedure(size: TGLfloat);
  239. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  240. PolygonMode: procedure(face, mode: Cardinal);
  241. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  242. PolygonOffset: procedure(factor, units: TGLfloat);
  243. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  244. ReadBuffer: procedure(mode: Cardinal);
  245. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  246. ReadPixels: procedure(X, y: TGLint; Width, Height: TGLsizei;
  247. format, atype: Cardinal; pixels: Pointer);
  248. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  249. Scissor: procedure(X, y: TGLint; Width, Height: TGLsizei);
  250. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  251. StencilFunc: procedure(func: Cardinal; ref: TGLint; mask: Cardinal);
  252. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  253. StencilMask: procedure(mask: Cardinal);
  254. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  255. StencilOp: procedure(fail, zfail, zpass: Cardinal);
  256. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  257. TexImage1D: procedure(target: Cardinal; level, internalFormat: TGLint;
  258. Width: TGLsizei; border: TGLint; format, atype: Cardinal; pixels: Pointer);
  259. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  260. TexImage2D: procedure(target: Cardinal; level, internalFormat: TGLint;
  261. Width, Height: TGLsizei; border: TGLint; format, atype: Cardinal;
  262. pixels: Pointer);
  263. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  264. TexParameterf: procedure(target, pname: Cardinal; param: TGLfloat);
  265. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  266. TexParameterfv: procedure(target, pname: Cardinal; params: PGLfloat);
  267. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  268. TexParameteri: procedure(target, pname: Cardinal; param: TGLint);
  269. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  270. TexParameteriv: procedure(target, pname: Cardinal; params: PGLint);
  271. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  272. TexSubImage1D: procedure(target: Cardinal; level, xoffset: TGLint;
  273. Width: TGLsizei; format, atype: Cardinal; pixels: Pointer);
  274. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  275. TexSubImage2D: procedure(target: Cardinal; level, xoffset, yoffset: TGLint;
  276. Width, Height: TGLsizei; format, atype: Cardinal; pixels: Pointer);
  277. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  278. Viewport: procedure(X, y: TGLint; Width, Height: TGLsizei);
  279. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  280. // ------------------------------ OpenGL 1.1 deprecated
  281. Accum: procedure(op: Cardinal; Value: TGLfloat); {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  282. AlphaFunc: procedure(func: Cardinal; ref: Single);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  283. AreTexturesResident: function(n: TGLsizei; textures: PGLuint; residences: PGLboolean): TGLboolean;
  284. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  285. ArrayElement: procedure(i: TGLint);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  286. Begin_: procedure(mode: Cardinal);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  287. Bitmap: procedure(Width: TGLsizei; Height: TGLsizei; xorig, yorig: TGLfloat;
  288. xmove: TGLfloat; ymove: TGLfloat; Bitmap: Pointer);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  289. CallList: procedure(list: Cardinal);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  290. CallLists: procedure(n: TGLsizei; atype: Cardinal; lists: Pointer);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  291. ClearAccum: procedure(red, green, blue, alpha: TGLfloat);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  292. ClearIndex: procedure(c: TGLfloat);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  293. ClipPlane: procedure(plane: Cardinal; equation: PGLdouble);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  294. Color3b: procedure(red, green, blue: TGLbyte);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  295. Color3bv: procedure(v: PGLbyte);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  296. Color3d: procedure(red, green, blue: TGLdouble);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  297. Color3dv: procedure(v: PGLdouble);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  298. Color3f: procedure(red, green, blue: TGLfloat);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  299. Color3fv: procedure(v: PGLfloat);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  300. Color3i: procedure(red, green, blue: TGLint);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  301. Color3iv: procedure(v: PGLint);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  302. Color3s: procedure(red, green, blue: TGLshort);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  303. Color3sv: procedure(v: PGLshort);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  304. Color3ub: procedure(red, green, blue: TGLubyte);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  305. Color3ubv: procedure(v: PGLubyte);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  306. Color3ui: procedure(red, green, blue: Cardinal);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  307. Color3uiv: procedure(v: PGLuint);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  308. Color3us: procedure(red, green, blue: TGLushort);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  309. Color3usv: procedure(v: PGLushort);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  310. Color4b: procedure(red, green, blue, alpha: TGLbyte);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  311. Color4bv: procedure(v: PGLbyte);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  312. Color4d: procedure(red, green, blue, alpha: TGLdouble);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  313. Color4dv: procedure(v: PGLdouble);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  314. Color4f: procedure(red, green, blue, alpha: TGLfloat);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  315. Color4fv: procedure(v: PGLfloat);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  316. Color4i: procedure(red, green, blue, alpha: TGLint);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  317. Color4iv: procedure(v: PGLint);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  318. Color4s: procedure(red, green, blue, alpha: TGLshort);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  319. Color4sv: procedure(v: TGLshort);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  320. Color4ub: procedure(red, green, blue, alpha: TGLubyte);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  321. Color4ubv: procedure(v: PGLubyte);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  322. Color4ui: procedure(red, green, blue, alpha: Cardinal);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  323. Color4uiv: procedure(v: PGLuint);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  324. Color4us: procedure(red, green, blue, alpha: TGLushort);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  325. Color4usv: procedure(v: PGLushort);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  326. ColorMaterial: procedure(face: Cardinal; mode: Cardinal);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  327. ColorPointer: procedure(size: TGLint; atype: Cardinal; stride: TGLsizei; Data: Pointer);
  328. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  329. CopyPixels: procedure(X, y: TGLint; Width, Height: TGLsizei; atype: Cardinal);
  330. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  331. DeleteLists: procedure(list: Cardinal; range: TGLsizei);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  332. DisableClientState: procedure(aarray: Cardinal);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  333. DrawPixels: procedure(Width, Height: TGLsizei; format, atype: Cardinal; pixels: Pointer);
  334. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  335. EdgeFlag: procedure(flag: TGLboolean);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  336. EdgeFlagPointer: procedure(stride: TGLsizei; Data: Pointer);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  337. EdgeFlagv: procedure(flag: PGLboolean);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  338. EnableClientState: procedure(aarray: Cardinal);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  339. End_: procedure();{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  340. EndList: procedure();{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  341. EvalCoord1d: procedure(u: TGLdouble);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  342. EvalCoord1dv: procedure(u: PGLdouble);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  343. EvalCoord1f: procedure(u: TGLfloat);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  344. EvalCoord1fv: procedure(u: PGLfloat);{$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  345. EvalCoord2d: procedure(u: TGLdouble; v: TGLdouble);
  346. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  347. EvalCoord2dv: procedure(u: PGLdouble);
  348. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  349. EvalCoord2f: procedure(u, v: TGLfloat);
  350. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  351. EvalCoord2fv: procedure(u: PGLfloat);
  352. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  353. EvalMesh1: procedure(mode: Cardinal; i1, i2: TGLint);
  354. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  355. EvalMesh2: procedure(mode: Cardinal; i1, i2, j1, j2: TGLint);
  356. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  357. EvalPoint1: procedure(i: TGLint);
  358. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  359. EvalPoint2: procedure(i, j: TGLint);
  360. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  361. FeedbackBuffer: procedure(size: TGLsizei; atype: Cardinal; buffer: PGLfloat);
  362. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  363. Fogf: procedure(pname: Cardinal; param: TGLfloat);
  364. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  365. Fogfv: procedure(pname: Cardinal; params: PGLfloat);
  366. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  367. Fogi: procedure(pname: Cardinal; param: TGLint);
  368. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  369. Fogiv: procedure(pname: Cardinal; params: PGLint);
  370. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  371. Frustum: procedure(left, right, bottom, top, zNear, zFar: TGLdouble);
  372. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  373. GenLists: function(range: TGLsizei): Cardinal;
  374. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  375. GetClipPlane: procedure(plane: Cardinal; equation: PGLdouble);
  376. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  377. GetLightfv: procedure(light, pname: Cardinal; params: PGLfloat);
  378. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  379. GetLightiv: procedure(light, pname: Cardinal; params: PGLint);
  380. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  381. GetMapdv: procedure(target, query: Cardinal; v: PGLdouble);
  382. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  383. GetMapfv: procedure(target, query: Cardinal; v: PGLfloat);
  384. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  385. GetMapiv: procedure(target, query: Cardinal; v: PGLint);
  386. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  387. GetMaterialfv: procedure(face, pname: Cardinal; params: PGLfloat);
  388. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  389. GetMaterialiv: procedure(face, pname: Cardinal; params: PGLint);
  390. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  391. GetPixelMapfv: procedure(map: Cardinal; values: PGLfloat);
  392. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  393. GetPixelMapuiv: procedure(map: Cardinal; values: PGLuint);
  394. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  395. GetPixelMapusv: procedure(map: Cardinal; values: PGLushort);
  396. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  397. GetPolygonStipple: procedure(mask: PGLubyte);
  398. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  399. GetTexEnvfv: procedure(target, pname: Cardinal; params: PGLfloat);
  400. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  401. GetTexEnviv: procedure(target, pname: Cardinal; params: PGLint);
  402. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  403. GetTexGendv: procedure(coord, pname: Cardinal; params: PGLdouble);
  404. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  405. GetTexGenfv: procedure(coord, pname: Cardinal; params: PGLfloat);
  406. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  407. GetTexGeniv: procedure(coord, pname: Cardinal; params: PGLint);
  408. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  409. IndexMask: procedure(mask: Cardinal);
  410. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  411. IndexPointer: procedure(atype: Cardinal; stride: TGLsizei; Data: Pointer);
  412. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  413. Indexd: procedure(c: TGLdouble);
  414. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  415. Indexdv: procedure(c: PGLdouble);
  416. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  417. Indexf: procedure(c: TGLfloat);
  418. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  419. Indexfv: procedure(c: PGLfloat);
  420. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  421. Indexi: procedure(c: TGLint);
  422. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  423. Indexiv: procedure(c: PGLint);
  424. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  425. Indexs: procedure(c: TGLshort);
  426. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  427. Indexsv: procedure(c: PGLshort);
  428. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  429. Indexub: procedure(c: TGLubyte);
  430. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  431. Indexubv: procedure(c: PGLubyte);
  432. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  433. InitNames: procedure();
  434. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  435. InterleavedArrays: procedure(format: Cardinal; stride: TGLsizei;
  436. Data: Pointer);
  437. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  438. IsList: function(list: Cardinal): TGLboolean;
  439. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  440. LightModelf: procedure(pname: Cardinal; param: TGLfloat);
  441. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  442. LightModelfv: procedure(pname: Cardinal; params: PGLfloat);
  443. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  444. LightModeli: procedure(pname: Cardinal; param: TGLint);
  445. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  446. LightModeliv: procedure(pname: Cardinal; params: PGLint);
  447. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  448. Lightf: procedure(light, pname: Cardinal; param: TGLfloat);
  449. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  450. Lightfv: procedure(light, pname: Cardinal; params: PGLfloat);
  451. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  452. Lighti: procedure(light, pname: Cardinal; param: TGLint);
  453. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  454. Lightiv: procedure(light, pname: Cardinal; params: PGLint);
  455. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  456. LineStipple: procedure(factor: TGLint; pattern: TGLushort);
  457. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  458. ListBase: procedure(base: Cardinal);
  459. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  460. LoadIdentity: procedure();
  461. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  462. LoadMatrixd: procedure(m: PGLdouble);
  463. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  464. LoadMatrixf: procedure(m: PGLfloat);
  465. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  466. LoadName: procedure(Name: Cardinal);
  467. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  468. Map1d: procedure(target: Cardinal; u1, u2: TGLdouble; stride, order: TGLint;
  469. points: PGLdouble);
  470. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  471. Map1f: procedure(target: Cardinal; u1, u2: TGLfloat; stride, order: TGLint;
  472. points: PGLfloat);
  473. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  474. Map2d: procedure(target: Cardinal; u1, u2: TGLdouble;
  475. ustride, uorder: TGLint; v1, v2: TGLdouble; vstride, vorder: TGLint;
  476. points: PGLdouble);
  477. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  478. Map2f: procedure(target: Cardinal; u1, u2: TGLfloat; ustride, uorder: TGLint;
  479. v1, v2: TGLfloat; vstride, vorder: TGLint; points: PGLfloat);
  480. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  481. MapGrid1d: procedure(un: TGLint; u1, u2: TGLdouble);
  482. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  483. MapGrid1f: procedure(un: TGLint; u1, u2: TGLfloat);
  484. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  485. MapGrid2d: procedure(un: TGLint; u1, u2: TGLdouble; vn: TGLint;
  486. v1, v2: TGLdouble);
  487. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  488. MapGrid2f: procedure(un: TGLint; u1, u2: TGLfloat; vn: TGLint;
  489. v1, v2: TGLfloat);
  490. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  491. Materialf: procedure(face, pname: Cardinal; param: TGLfloat);
  492. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  493. Materialfv: procedure(face, pname: Cardinal; params: PGLfloat);
  494. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  495. Materiali: procedure(face, pname: Cardinal; param: TGLint);
  496. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  497. Materialiv: procedure(face, pname: Cardinal; params: PGLint);
  498. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  499. MatrixMode: procedure(mode: Cardinal);
  500. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  501. MultMatrixd: procedure(m: PGLdouble);
  502. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  503. MultMatrixf: procedure(m: PGLfloat);
  504. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  505. NewList: procedure(list: Cardinal; mode: Cardinal);
  506. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  507. Normal3b: procedure(nx, ny, nz: TGLbyte);
  508. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  509. Normal3bv: procedure(v: PGLbyte);
  510. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  511. Normal3d: procedure(nx, ny, nz: TGLdouble);
  512. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  513. Normal3dv: procedure(v: PGLdouble);
  514. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  515. Normal3f: procedure(nx, ny, nz: TGLfloat);
  516. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  517. Normal3fv: procedure(v: PGLfloat);
  518. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  519. Normal3i: procedure(nx, ny, nz: TGLint);
  520. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  521. Normal3iv: procedure(v: PGLint);
  522. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  523. Normal3s: procedure(nx, ny, nz: TGLshort);
  524. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  525. Normal3sv: procedure(v: PGLshort);
  526. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  527. NormalPointer: procedure(atype: Cardinal; stride: TGLsizei; Data: Pointer);
  528. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  529. Ortho: procedure(left, right, bottom, top, zNear, zFar: TGLdouble);
  530. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  531. PassThrough: procedure(token: TGLfloat);
  532. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  533. PixelMapfv: procedure(map: Cardinal; mapsize: TGLsizei; values: PGLfloat);
  534. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  535. PixelMapuiv: procedure(map: Cardinal; mapsize: TGLsizei; values: PGLuint);
  536. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  537. PixelMapusv: procedure(map: Cardinal; mapsize: TGLsizei; values: PGLushort);
  538. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  539. PixelTransferf: procedure(pname: Cardinal; param: TGLfloat);
  540. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  541. PixelTransferi: procedure(pname: Cardinal; param: TGLint);
  542. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  543. PixelZoom: procedure(xfactor, yfactor: TGLfloat);
  544. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  545. PolygonStipple: procedure(mask: PGLubyte);
  546. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  547. PopAttrib: procedure();
  548. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  549. PopClientAttrib: procedure();
  550. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  551. PopMatrix: procedure();
  552. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  553. PopName: procedure();
  554. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  555. PrioritizeTextures: procedure(n: TGLsizei; textures: PGLuint;
  556. priorities: PSingle);
  557. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  558. PushAttrib: procedure(mask: TGLbitfield);
  559. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  560. PushClientAttrib: procedure(mask: TGLbitfield);
  561. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  562. PushMatrix: procedure();
  563. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  564. PushName: procedure(Name: Cardinal);
  565. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  566. RasterPos2d: procedure(X, y: TGLdouble);
  567. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  568. RasterPos2dv: procedure(v: PGLdouble);
  569. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  570. RasterPos2f: procedure(X, y: TGLfloat);
  571. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  572. RasterPos2fv: procedure(v: PGLfloat);
  573. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  574. RasterPos2i: procedure(X, y: TGLint);
  575. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  576. RasterPos2iv: procedure(v: PGLint);
  577. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  578. RasterPos2s: procedure(X, y: PGLshort);
  579. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  580. RasterPos2sv: procedure(v: PGLshort);
  581. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  582. RasterPos3d: procedure(X, y, z: TGLdouble);
  583. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  584. RasterPos3dv: procedure(v: PGLdouble);
  585. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  586. RasterPos3f: procedure(X, y, z: TGLfloat);
  587. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  588. RasterPos3fv: procedure(v: PGLfloat);
  589. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  590. RasterPos3i: procedure(X, y, z: TGLint);
  591. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  592. RasterPos3iv: procedure(v: PGLint);
  593. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  594. RasterPos3s: procedure(X, y, z: TGLshort);
  595. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  596. RasterPos3sv: procedure(v: PGLshort);
  597. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  598. RasterPos4d: procedure(X, y, z, w: TGLdouble);
  599. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  600. RasterPos4dv: procedure(v: PGLdouble);
  601. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  602. RasterPos4f: procedure(X, y, z, w: TGLfloat);
  603. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  604. RasterPos4fv: procedure(v: PGLfloat);
  605. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  606. RasterPos4i: procedure(X, y, z, w: TGLint);
  607. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  608. RasterPos4iv: procedure(v: PGLint);
  609. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  610. RasterPos4s: procedure(X, y, z, w: TGLshort);
  611. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  612. RasterPos4sv: procedure(v: PGLshort);
  613. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  614. Rectd: procedure(x1, y1, x2, y2: TGLdouble);
  615. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  616. Rectdv: procedure(v1, v2: PGLdouble);
  617. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  618. Rectf: procedure(x1, y1, x2, y2: TGLfloat);
  619. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  620. Rectfv: procedure(v1, v2: PGLfloat);
  621. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  622. Recti: procedure(x1, y1, x2, y2: TGLint);
  623. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  624. Rectiv: procedure(v1, v2: PGLint);
  625. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  626. Rects: procedure(x1, y1, x2, y2: TGLshort);
  627. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  628. Rectsv: procedure(v1, v2: PGLshort);
  629. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  630. RenderMode: function(mode: Cardinal): TGLint;
  631. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  632. Rotated: procedure(ane, X, y, z: TGLdouble);
  633. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  634. Rotatef: procedure(ane, X, y, z: TGLfloat);
  635. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  636. Scaled: procedure(X, y, z: TGLdouble);
  637. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  638. Scalef: procedure(X, y, z: TGLfloat);
  639. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  640. SelectBuffer: procedure(size: TGLsizei; buffer: PGLuint);
  641. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  642. ShadeModel: procedure(mode: Cardinal);
  643. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  644. TexCoord1d: procedure(s: TGLdouble);
  645. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  646. TexCoord1dv: procedure(v: PGLdouble);
  647. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  648. TexCoord1f: procedure(s: TGLfloat);
  649. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  650. TexCoord1fv: procedure(v: PGLfloat);
  651. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  652. TexCoord1i: procedure(s: TGLint);
  653. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  654. TexCoord1iv: procedure(v: PGLint);
  655. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  656. TexCoord1s: procedure(s: TGLshort);
  657. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  658. TexCoord1sv: procedure(v: PGLshort);
  659. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  660. TexCoord2d: procedure(s, t: TGLdouble);
  661. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  662. TexCoord2dv: procedure(v: PGLdouble);
  663. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  664. TexCoord2f: procedure(s, t: TGLfloat);
  665. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  666. TexCoord2fv: procedure(v: PGLfloat);
  667. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  668. TexCoord2i: procedure(s, t: TGLint);
  669. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  670. TexCoord2iv: procedure(v: PGLint);
  671. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  672. TexCoord2s: procedure(s, t: TGLshort);
  673. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  674. TexCoord2sv: procedure(v: PGLshort);
  675. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  676. TexCoord3d: procedure(s, t, r: TGLdouble);
  677. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  678. TexCoord3dv: procedure(v: PGLdouble);
  679. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  680. TexCoord3f: procedure(s, t, r: TGLfloat);
  681. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  682. TexCoord3fv: procedure(v: PGLfloat);
  683. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  684. TexCoord3i: procedure(s, t, r: TGLint);
  685. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  686. TexCoord3iv: procedure(v: PGLint);
  687. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  688. TexCoord3s: procedure(s, t, r: TGLshort);
  689. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  690. TexCoord3sv: procedure(v: PGLshort);
  691. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  692. TexCoord4d: procedure(s, t, r, q: TGLdouble);
  693. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  694. TexCoord4dv: procedure(v: PGLdouble);
  695. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  696. TexCoord4f: procedure(s, t, r, q: TGLfloat);
  697. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  698. TexCoord4fv: procedure(v: PGLfloat);
  699. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  700. TexCoord4i: procedure(s, t, r, q: TGLint);
  701. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  702. TexCoord4iv: procedure(v: PGLint);
  703. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  704. TexCoord4s: procedure(s, t, r, q: TGLshort);
  705. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  706. TexCoord4sv: procedure(v: PGLshort);
  707. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  708. TexCoordPointer: procedure(size: TGLint; atype: Cardinal; stride: TGLsizei;
  709. Data: Pointer);
  710. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  711. TexEnvf: procedure(target, pname: Cardinal; param: TGLfloat);
  712. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  713. TexEnvfv: procedure(target, pname: Cardinal; params: PGLfloat);
  714. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  715. TexEnvi: procedure(target, pname: Cardinal; param: TGLint);
  716. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  717. TexEnviv: procedure(target, pname: Cardinal; params: PGLint);
  718. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  719. TexGend: procedure(coord, pname: Cardinal; param: TGLdouble);
  720. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  721. TexGendv: procedure(coord, pname: Cardinal; params: PGLdouble);
  722. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  723. TexGenf: procedure(coord, pname: Cardinal; param: TGLfloat);
  724. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  725. TexGenfv: procedure(coord, pname: Cardinal; params: PGLfloat);
  726. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  727. TexGeni: procedure(coord, pname: Cardinal; param: TGLint);
  728. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  729. TexGeniv: procedure(coord, pname: Cardinal; params: PGLint);
  730. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  731. Translated: procedure(X, y, z: TGLdouble);
  732. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  733. Translatef: procedure(X, y, z: TGLfloat);
  734. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  735. Vertex2d: procedure(X, y: TGLdouble);
  736. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  737. Vertex2dv: procedure(v: PGLdouble);
  738. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  739. Vertex2f: procedure(X, y: TGLfloat);
  740. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  741. Vertex2fv: procedure(v: PGLfloat);
  742. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  743. Vertex2i: procedure(X, y: TGLint);
  744. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  745. Vertex2iv: procedure(v: PGLint);
  746. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  747. Vertex2s: procedure(X, y: TGLshort);
  748. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  749. Vertex2sv: procedure(v: PGLshort);
  750. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  751. Vertex3d: procedure(X, y, z: TGLdouble);
  752. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  753. Vertex3dv: procedure(v: PGLdouble);
  754. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  755. Vertex3f: procedure(X, y, z: TGLfloat);
  756. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  757. Vertex3fv: procedure(v: PGLfloat);
  758. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  759. Vertex3i: procedure(X, y, z: TGLint);
  760. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  761. Vertex3iv: procedure(v: PGLint);
  762. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  763. Vertex3s: procedure(X, y, z: TGLshort);
  764. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  765. Vertex3sv: procedure(v: PGLshort);
  766. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  767. Vertex4d: procedure(X, y, z, w: TGLdouble);
  768. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  769. Vertex4dv: procedure(v: PGLdouble);
  770. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  771. Vertex4f: procedure(X, y, z, w: TGLfloat);
  772. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  773. Vertex4fv: procedure(v: PGLfloat);
  774. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  775. Vertex4i: procedure(X, y, z, w: TGLint);
  776. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  777. Vertex4iv: procedure(v: PGLint);
  778. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  779. Vertex4s: procedure(X, y, z, w: TGLshort);
  780. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  781. Vertex4sv: procedure(v: PGLshort);
  782. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  783. VertexPointer: procedure(size: TGLint; atype: Cardinal; stride: TGLsizei;
  784. Data: Pointer);
  785. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  786. // --------- New core function/procedure definitions in OpenGL 1.2'}
  787. BlendColor: PFNGLBLENDCOLORPROC;
  788. BlendEquation: PFNGLBLENDEQUATIONPROC;
  789. DrawRangeElements: PFNGLDRAWRANGEELEMENTSPROC;
  790. TexImage3D: PFNGLTEXIMAGE3DPROC;
  791. TexSubImage3D: PFNGLTEXSUBIMAGE3DPROC;
  792. CopyTexSubImage3D: PFNGLCOPYTEXSUBIMAGE3DPROC;
  793. // -------- New core function/procedure definitions in OpenGL 1.4'}
  794. BlendFuncSeparate: PFNGLBLENDFUNCSEPARATEPROC;
  795. MultiDrawArrays: PFNGLMULTIDRAWARRAYSPROC;
  796. MultiDrawElements: PFNGLMULTIDRAWELEMENTSPROC;
  797. PointParameterf: PFNGLPOINTPARAMETERFPROC;
  798. PointParameterfv: PFNGLPOINTPARAMETERFVPROC;
  799. PointParameteri: PFNGLPOINTPARAMETERIPROC;
  800. PointParameteriv: PFNGLPOINTPARAMETERIVPROC;
  801. // ------------- New core function/procedure definitions in OpenGL 2.0'}
  802. BlendEquationSeparate: PFNGLBLENDEQUATIONSEPARATEPROC;
  803. DrawBuffers: PFNGLDRAWBUFFERSPROC;
  804. StencilOpSeparate: PFNGLSTENCILOPSEPARATEPROC;
  805. StencilFuncSeparate: PFNGLSTENCILFUNCSEPARATEPROC;
  806. StencilMaskSeparate: PFNGLSTENCILMASKSEPARATEPROC;
  807. // ---------------- Buffer objects
  808. LockArrays: PFNGLLOCKARRAYSEXTPROC; // EXT only
  809. UnlockArrays: PFNGLUNLOCKARRAYSEXTPROC; // EXT only
  810. BindBuffer: PFNGLBINDBUFFERPROC;
  811. DeleteBuffers: PFNGLDELETEBUFFERSPROC;
  812. GenBuffers: PFNGLGENBUFFERSPROC;
  813. IsBuffer: PFNGLISBUFFERPROC;
  814. BufferData: PFNGLBUFFERDATAPROC;
  815. BufferSubData: PFNGLBUFFERSUBDATAPROC;
  816. GetBufferSubData: PFNGLGETBUFFERSUBDATAPROC;
  817. MapBuffer: PFNGLMAPBUFFERPROC;
  818. UnmapBuffer: PFNGLUNMAPBUFFERPROC;
  819. GetBufferParameteriv: PFNGLGETBUFFERPARAMETERIVPROC;
  820. GetBufferPointerv: PFNGLGETBUFFERPOINTERVPROC;
  821. MapBufferRange: PFNGLMAPBUFFERRANGEPROC;
  822. FlushMappedBufferRange: PFNGLFLUSHMAPPEDBUFFERRANGEPROC;
  823. BindBufferRange: PFNGLBINDBUFFERRANGEPROC;
  824. BindBufferOffset: PFNGLBINDBUFFEROFFSETEXTPROC; // EXT + NV only
  825. BindBufferBase: PFNGLBINDBUFFERBASEPROC;
  826. TransformFeedbackAttribs: PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC; // NV only
  827. TransformFeedbackVaryingsNV: PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC; // NV only
  828. TransformFeedbackVaryings: PFNGLTRANSFORMFEEDBACKVARYINGSPROC;
  829. GetTransformFeedbackVarying: PFNGLGETTRANSFORMFEEDBACKVARYINGPROC;
  830. BeginTransformFeedback: PFNGLBEGINTRANSFORMFEEDBACKPROC;
  831. EndTransformFeedback: PFNGLENDTRANSFORMFEEDBACKPROC;
  832. TexBuffer: PFNGLTEXBUFFERPROC;
  833. ClearBufferiv: PFNGLCLEARBUFFERIVPROC;
  834. ClearBufferuiv: PFNGLCLEARBUFFERUIVPROC;
  835. ClearBufferfv: PFNGLCLEARBUFFERFVPROC;
  836. ClearBufferfi: PFNGLCLEARBUFFERFIPROC;
  837. GetStringi: PFNGLGETSTRINGIPROC;
  838. BindVertexArray: PFNGLBINDVERTEXARRAYPROC;
  839. DeleteVertexArrays: PFNGLDELETEVERTEXARRAYSPROC;
  840. GenVertexArrays: PFNGLGENVERTEXARRAYSPROC;
  841. IsVertexArray: PFNGLISVERTEXARRAYPROC;
  842. FlushVertexArrayRangeNV: PFNGLFLUSHVERTEXARRAYRANGENVPROC;
  843. VertexArrayRangeNV: PFNGLVERTEXARRAYRANGENVPROC;
  844. GetUniformIndices: PFNGLGETUNIFORMINDICESPROC;
  845. GetActiveUniformsiv: PFNGLGETACTIVEUNIFORMSIVPROC;
  846. GetActiveUniformName: PFNGLGETACTIVEUNIFORMNAMEPROC;
  847. GetUniformBlockIndex: PFNGLGETUNIFORMBLOCKINDEXPROC;
  848. GetActiveUniformBlockiv: PFNGLGETACTIVEUNIFORMBLOCKIVPROC;
  849. GetActiveUniformBlockName: PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC;
  850. UniformBlockBinding: PFNGLUNIFORMBLOCKBINDINGPROC;
  851. CopyBufferSubData: PFNGLCOPYBUFFERSUBDATAPROC;
  852. UniformBuffer: PFNGLUNIFORMBUFFEREXTPROC;
  853. GetUniformBufferSize: PFNGLGETUNIFORMBUFFERSIZEEXTPROC; // EXT only
  854. GetUniformOffset: PFNGLGETUNIFORMOFFSETEXTPROC; // EXT only
  855. PrimitiveRestartIndex: PFNGLPRIMITIVERESTARTINDEXPROC;
  856. DrawElementsBaseVertex: PFNGLDRAWELEMENTSBASEVERTEXPROC;
  857. DrawRangeElementsBaseVertex: PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC;
  858. DrawElementsInstancedBaseVertex: PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC;
  859. MultiDrawElementsBaseVertex: PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC;
  860. DrawArraysInstanced: PFNGLDRAWARRAYSINSTANCEDPROC;
  861. DrawElementsInstanced: PFNGLDRAWELEMENTSINSTANCEDPROC;
  862. VertexAttrib1d: PFNGLVERTEXATTRIB1DPROC;
  863. VertexAttrib1dv: PFNGLVERTEXATTRIB1DVPROC;
  864. VertexAttrib1f: PFNGLVERTEXATTRIB1FPROC;
  865. VertexAttrib1fv: PFNGLVERTEXATTRIB1FVPROC;
  866. VertexAttrib1s: PFNGLVERTEXATTRIB1SPROC;
  867. VertexAttrib1sv: PFNGLVERTEXATTRIB1SVPROC;
  868. VertexAttrib2d: PFNGLVERTEXATTRIB2DPROC;
  869. VertexAttrib2dv: PFNGLVERTEXATTRIB2DVPROC;
  870. VertexAttrib2f: PFNGLVERTEXATTRIB2FPROC;
  871. VertexAttrib2fv: PFNGLVERTEXATTRIB2FVPROC;
  872. VertexAttrib2s: PFNGLVERTEXATTRIB2SPROC;
  873. VertexAttrib2sv: PFNGLVERTEXATTRIB2SVPROC;
  874. VertexAttrib3d: PFNGLVERTEXATTRIB3DPROC;
  875. VertexAttrib3dv: PFNGLVERTEXATTRIB3DVPROC;
  876. VertexAttrib3f: PFNGLVERTEXATTRIB3FPROC;
  877. VertexAttrib3fv: PFNGLVERTEXATTRIB3FVPROC;
  878. VertexAttrib3s: PFNGLVERTEXATTRIB3SPROC;
  879. VertexAttrib3sv: PFNGLVERTEXATTRIB3SVPROC;
  880. VertexAttrib4Nbv: PFNGLVERTEXATTRIB4NBVPROC;
  881. VertexAttrib4Niv: PFNGLVERTEXATTRIB4NIVPROC;
  882. VertexAttrib4Nsv: PFNGLVERTEXATTRIB4NSVPROC;
  883. VertexAttrib4Nub: PFNGLVERTEXATTRIB4NUBPROC;
  884. VertexAttrib4Nubv: PFNGLVERTEXATTRIB4NUBVPROC;
  885. VertexAttrib4Nuiv: PFNGLVERTEXATTRIB4NUIVPROC;
  886. VertexAttrib4Nusv: PFNGLVERTEXATTRIB4NUSVPROC;
  887. VertexAttrib4bv: PFNGLVERTEXATTRIB4BVPROC;
  888. VertexAttrib4d: PFNGLVERTEXATTRIB4DPROC;
  889. VertexAttrib4dv: PFNGLVERTEXATTRIB4DVPROC;
  890. VertexAttrib4f: PFNGLVERTEXATTRIB4FPROC;
  891. VertexAttrib4fv: PFNGLVERTEXATTRIB4FVPROC;
  892. VertexAttrib4iv: PFNGLVERTEXATTRIB4IVPROC;
  893. VertexAttrib4s: PFNGLVERTEXATTRIB4SPROC;
  894. VertexAttrib4sv: PFNGLVERTEXATTRIB4SVPROC;
  895. VertexAttrib4ubv: PFNGLVERTEXATTRIB4UBVPROC;
  896. VertexAttrib4uiv: PFNGLVERTEXATTRIB4UIVPROC;
  897. VertexAttrib4usv: PFNGLVERTEXATTRIB4USVPROC;
  898. VertexAttribPointer: PFNGLVERTEXATTRIBPOINTERPROC;
  899. VertexAttribI1i: PFNGLVERTEXATTRIBI1IPROC;
  900. VertexAttribI2i: PFNGLVERTEXATTRIBI2IPROC;
  901. VertexAttribI3i: PFNGLVERTEXATTRIBI3IPROC;
  902. VertexAttribI4i: PFNGLVERTEXATTRIBI4IPROC;
  903. VertexAttribI1ui: PFNGLVERTEXATTRIBI1UIPROC;
  904. VertexAttribI2ui: PFNGLVERTEXATTRIBI2UIPROC;
  905. VertexAttribI3ui: PFNGLVERTEXATTRIBI3UIPROC;
  906. VertexAttribI4ui: PFNGLVERTEXATTRIBI4UIPROC;
  907. VertexAttribI1iv: PFNGLVERTEXATTRIBI1IVPROC;
  908. VertexAttribI2iv: PFNGLVERTEXATTRIBI2IVPROC;
  909. VertexAttribI3iv: PFNGLVERTEXATTRIBI3IVPROC;
  910. VertexAttribI4iv: PFNGLVERTEXATTRIBI4IVPROC;
  911. VertexAttribI1uiv: PFNGLVERTEXATTRIBI1UIVPROC;
  912. VertexAttribI2uiv: PFNGLVERTEXATTRIBI2UIVPROC;
  913. VertexAttribI3uiv: PFNGLVERTEXATTRIBI3UIVPROC;
  914. VertexAttribI4uiv: PFNGLVERTEXATTRIBI4UIVPROC;
  915. VertexAttribI4bv: PFNGLVERTEXATTRIBI4BVPROC;
  916. VertexAttribI4sv: PFNGLVERTEXATTRIBI4SVPROC;
  917. VertexAttribI4ubv: PFNGLVERTEXATTRIBI4UBVPROC;
  918. VertexAttribI4usv: PFNGLVERTEXATTRIBI4USVPROC;
  919. VertexAttribIPointer: PFNGLVERTEXATTRIBIPOINTERPROC;
  920. GetVertexAttribIiv: PFNGLGETVERTEXATTRIBIIVPROC;
  921. GetVertexAttribIuiv: PFNGLGETVERTEXATTRIBIUIVPROC;
  922. Uniform1ui: PFNGLUNIFORM1UIPROC;
  923. Uniform2ui: PFNGLUNIFORM2UIPROC;
  924. Uniform3ui: PFNGLUNIFORM3UIPROC;
  925. Uniform4ui: PFNGLUNIFORM4UIPROC;
  926. Uniform1uiv: PFNGLUNIFORM1UIVPROC;
  927. Uniform2uiv: PFNGLUNIFORM2UIVPROC;
  928. Uniform3uiv: PFNGLUNIFORM3UIVPROC;
  929. Uniform4uiv: PFNGLUNIFORM4UIVPROC;
  930. GetUniformuiv: PFNGLGETUNIFORMUIVPROC;
  931. BindFragDataLocation: PFNGLBINDFRAGDATALOCATIONPROC;
  932. GetFragDataLocation: PFNGLGETFRAGDATALOCATIONPROC;
  933. ClampColor: PFNGLCLAMPCOLORPROC;
  934. ColorMaski: PFNGLCOLORMASKIPROC;
  935. GetBooleani_v: PFNGLGETBOOLEANI_VPROC;
  936. GetIntegeri_v: PFNGLGETINTEGERI_VPROC;
  937. Enablei: PFNGLENABLEIPROC;
  938. Disablei: PFNGLDISABLEIPROC;
  939. IsEnabledi: PFNGLISENABLEDIPROC;
  940. EnableVertexAttribArray: PFNGLENABLEVERTEXATTRIBARRAYPROC;
  941. DisableVertexAttribArray: PFNGLDISABLEVERTEXATTRIBARRAYPROC;
  942. VertexAttribDivisor: PFNGLVERTEXATTRIBDIVISORPROC;
  943. ClearColorIi: PFNGLCLEARCOLORIIEXTPROC; // EXT only
  944. ClearColorIui: PFNGLCLEARCOLORIUIEXTPROC; // EXT only
  945. TexParameterIiv: PFNGLTEXPARAMETERIIVPROC;
  946. TexParameterIuiv: PFNGLTEXPARAMETERIUIVPROC;
  947. GetTexParameterIiv: PFNGLGETTEXPARAMETERIIVPROC;
  948. GetTexParameterIuiv: PFNGLGETTEXPARAMETERIUIVPROC;
  949. PatchParameteri: PFNGLPATCHPARAMETERIPROC;
  950. PatchParameterfv: PFNGLPATCHPARAMETERFVPROC;
  951. BufferAddressRangeNV: PFNGLBUFFERADDRESSRANGENVPROC;
  952. VertexFormatNV: PFNGLVERTEXFORMATNVPROC;
  953. NormalFormatNV: PFNGLNORMALFORMATNVPROC;
  954. ColorFormatNV: PFNGLCOLORFORMATNVPROC;
  955. IndexFormatNV: PFNGLINDEXFORMATNVPROC;
  956. TexCoordFormatNV: PFNGLTEXCOORDFORMATNVPROC;
  957. EdgeFlagFormatNV: PFNGLEDGEFLAGFORMATNVPROC;
  958. SecondaryColorFormatNV: PFNGLSECONDARYCOLORFORMATNVPROC;
  959. FogCoordFormatNV: PFNGLFOGCOORDFORMATNVPROC;
  960. VertexAttribFormatNV: PFNGLVERTEXATTRIBFORMATNVPROC;
  961. VertexAttribIFormatNV: PFNGLVERTEXATTRIBIFORMATNVPROC;
  962. GetIntegerui64i_vNV: PFNGLGETINTEGERUI64I_VNVPROC;
  963. GetBufferParameterui64vNV: PGNGLGETBUFFERPARAMETERUI64VNV;
  964. MakeBufferResidentNV: PFNGLMAKEBUFFERRESIDENTNVPROC;
  965. MakeBufferNonResidentNV: PFNGLMAKEBUFFERNONRESIDENTNVPROC;
  966. IsBufferResidentNV: PFNGLISBUFFERRESIDENTNVPROC;
  967. MakeNamedBufferResidentNV: PFNGLMAKENAMEDBUFFERRESIDENTNVPROC;
  968. MakeNamedBufferNonResidentNV: PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC;
  969. IsNamedBufferResidentNV: PFNGLISNAMEDBUFFERRESIDENTNVPROC;
  970. GetNamedBufferParameterui64vNV: PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC;
  971. GetIntegerui64vNV: PFNGLGETINTEGERUI64VNVPROC;
  972. Uniformui64NV: PFNGLUNIFORMUI64NVPROC;
  973. Uniformui64vNV: PFNGLUNIFORMUI64VNVPROC;
  974. GetUniformui64vNV: PFNGLGETUNIFORMUI64VNVPROC;
  975. ProgramUniformui64NV: PFNGLPROGRAMUNIFORMUI64NVPROC;
  976. ProgramUniformui64vNV: PFNGLPROGRAMUNIFORMUI64VNVPROC;
  977. ClearBufferData: PFNGLClearBufferData;
  978. ClearBufferSubData: PFNGLClearBufferSubData;
  979. ClearNamedBufferData: PFNGLClearNamedBufferData;
  980. ClearNamedBufferSubData: PFNGLClearNamedBufferSubData;
  981. InvalidateTexSubImage: PFNGLInvalidateTexSubImage;
  982. InvalidateTexImage: PFNGLInvalidateTexImage;
  983. InvalidateBufferSubData: PFNGLInvalidateBufferSubData;
  984. InvalidateBufferData: PFNGLInvalidateBufferData;
  985. InvalidateFramebuffer: PFNGLInvalidateFramebuffer;
  986. InvalidateSubFramebuffer: PFNGLInvalidateSubFramebuffer;
  987. MultiDrawArraysIndirect: PFNGLMultiDrawArraysIndirect;
  988. MultiDrawElementsIndirect: PFNGLMultiDrawElementsIndirect;
  989. BindVertexBuffer: PFNGLBindVertexBuffer;
  990. VertexAttribFormat: PFNGLVertexAttribFormat;
  991. VertexAttribIFormat: PFNGLVertexAttribIFormat;
  992. VertexAttribLFormat: PFNGLVertexAttribLFormat;
  993. VertexAttribBinding: PFNGLVertexAttribBinding;
  994. VertexBindingDivisor: PFNGLVertexBindingDivisor;
  995. VertexArrayBindVertexBuffer: PFNGLVertexArrayBindVertexBuffer;
  996. VertexArrayVertexAttribFormat: PFNGLVertexArrayVertexAttribFormat;
  997. VertexArrayVertexAttribIFormat: PFNGLVertexArrayVertexAttribIFormat;
  998. VertexArrayVertexAttribLFormat: PFNGLVertexArrayVertexAttribLFormat;
  999. VertexArrayVertexAttribBinding: PFNGLVertexArrayVertexAttribBinding;
  1000. VertexArrayVertexBindingDivisor: PFNGLVertexArrayVertexBindingDivisor;
  1001. // ------------------------------ Shader object
  1002. DeleteObject: PFNGLDELETEOBJECTARBPROC; // ARB only
  1003. GetHandle: PFNGLGETHANDLEARBPROC; // ARB only
  1004. DetachShader: PFNGLDETACHSHADERPROC;
  1005. CreateShader: PFNGLCREATESHADERPROC;
  1006. ShaderSource: PFNGLSHADERSOURCEPROC;
  1007. CompileShader: PFNGLCOMPILESHADERPROC;
  1008. CreateProgram: PFNGLCREATEPROGRAMPROC;
  1009. AttachShader: PFNGLATTACHSHADERPROC;
  1010. LinkProgram: PFNGLLINKPROGRAMPROC;
  1011. UseProgram: PFNGLUSEPROGRAMPROC;
  1012. ValidateProgram: PFNGLVALIDATEPROGRAMPROC;
  1013. Uniform1f: PFNGLUNIFORM1FPROC;
  1014. Uniform2f: PFNGLUNIFORM2FPROC;
  1015. Uniform3f: PFNGLUNIFORM3FPROC;
  1016. Uniform4f: PFNGLUNIFORM4FPROC;
  1017. Uniform1i: PFNGLUNIFORM1IPROC;
  1018. Uniform2i: PFNGLUNIFORM2IPROC;
  1019. Uniform3i: PFNGLUNIFORM3IPROC;
  1020. Uniform4i: PFNGLUNIFORM4IPROC;
  1021. Uniform1fv: PFNGLUNIFORM1FVPROC;
  1022. Uniform2fv: PFNGLUNIFORM2FVPROC;
  1023. Uniform3fv: PFNGLUNIFORM3FVPROC;
  1024. Uniform4fv: PFNGLUNIFORM4FVPROC;
  1025. Uniform1iv: PFNGLUNIFORM1IVPROC;
  1026. Uniform2iv: PFNGLUNIFORM2IVPROC;
  1027. Uniform3iv: PFNGLUNIFORM3IVPROC;
  1028. Uniform4iv: PFNGLUNIFORM4IVPROC;
  1029. UniformMatrix2fv: PFNGLUNIFORMMATRIX2FVPROC;
  1030. UniformMatrix3fv: PFNGLUNIFORMMATRIX3FVPROC;
  1031. UniformMatrix4fv: PFNGLUNIFORMMATRIX4FVPROC;
  1032. GetObjectParameterfv: PFNGLGETOBJECTPARAMETERFVARBPROC; // ARB only
  1033. GetObjectParameteriv: PFNGLGETOBJECTPARAMETERIVARBPROC; // ARB only
  1034. GetInfoLog: PFNGLGETINFOLOGARBPROC; // ARB only
  1035. GetAttachedObjects: PFNGLGETATTACHEDOBJECTSARBPROC; // ARB only
  1036. GetActiveAttrib: PFNGLGETACTIVEATTRIBPROC;
  1037. GetActiveUniform: PFNGLGETACTIVEUNIFORMPROC;
  1038. GetAttachedShaders: PFNGLGETATTACHEDSHADERSPROC;
  1039. GetAttribLocation: PFNGLGETATTRIBLOCATIONPROC;
  1040. GetProgramiv: PFNGLGETPROGRAMIVPROC;
  1041. GetProgramInfoLog: PFNGLGETPROGRAMINFOLOGPROC;
  1042. GetShaderiv: PFNGLGETSHADERIVPROC;
  1043. GetShaderInfoLog: PFNGLGETSHADERINFOLOGPROC;
  1044. GetShaderSource: PFNGLGETSHADERSOURCEPROC;
  1045. GetUniformLocation: PFNGLGETUNIFORMLOCATIONPROC;
  1046. GetUniformfv: PFNGLGETUNIFORMFVPROC;
  1047. GetUniformiv: PFNGLGETUNIFORMIVPROC;
  1048. GetVertexAttribdv: PFNGLGETVERTEXATTRIBDVPROC;
  1049. GetVertexAttribfv: PFNGLGETVERTEXATTRIBFVPROC;
  1050. GetVertexAttribiv: PFNGLGETVERTEXATTRIBIVPROC;
  1051. GetVertexAttribPointerv: PFNGLGETVERTEXATTRIBPOINTERVPROC;
  1052. IsProgram: PFNGLISPROGRAMPROC;
  1053. IsShader: PFNGLISSHADERPROC;
  1054. BindAttribLocation: PFNGLBINDATTRIBLOCATIONPROC;
  1055. BindFragDataLocationIndexed: PFNGLBINDFRAGDATALOCATIONINDEXEDPROC;
  1056. GetFragDataIndex: PFNGLGETFRAGDATAINDEXPROC;
  1057. GetVaryingLocation: PFNGLGETVARYINGLOCATIONNVPROC; // NV only
  1058. GetActiveVarying: PFNGLGETACTIVEVARYINGNVPROC; // NV only
  1059. ActiveVarying: PFNGLACTIVEVARYINGNVPROC; // NV only
  1060. GetProgramBinary: PFNGLGETPROGRAMBINARYPROC;
  1061. ProgramBinary: PFNGLPROGRAMBINARYPROC;
  1062. UseProgramStages: PFNGLUSEPROGRAMSTAGESPROC;
  1063. ActiveShaderProgram: PFNGLACTIVESHADERPROGRAMPROC;
  1064. CreateShaderProgramv: PFNGLCREATESHADERPROGRAMVPROC;
  1065. BindProgramPipeline: PFNGLBINDPROGRAMPIPELINEPROC;
  1066. DeleteProgramPipelines: PFNGLDELETEPROGRAMPIPELINESPROC;
  1067. GenProgramPipelines: PFNGLGENPROGRAMPIPELINESPROC;
  1068. IsProgramPipeline: PFNGLISPROGRAMPIPELINEPROC;
  1069. GetProgramPipelineiv: PFNGLGETPROGRAMPIPELINEIVPROC;
  1070. ProgramUniform1i: PFNGLPROGRAMUNIFORM1IPROC;
  1071. ProgramUniform1iv: PFNGLPROGRAMUNIFORM1IVPROC;
  1072. ProgramUniform1f: PFNGLPROGRAMUNIFORM1FPROC;
  1073. ProgramUniform1fv: PFNGLPROGRAMUNIFORM1FVPROC;
  1074. ProgramUniform1d: PFNGLPROGRAMUNIFORM1DPROC;
  1075. ProgramUniform1dv: PFNGLPROGRAMUNIFORM1DVPROC;
  1076. ProgramUniform1ui: PFNGLPROGRAMUNIFORM1UIPROC;
  1077. ProgramUniform1uiv: PFNGLPROGRAMUNIFORM1UIVPROC;
  1078. ProgramUniform2i: PFNGLPROGRAMUNIFORM2IPROC;
  1079. ProgramUniform2iv: PFNGLPROGRAMUNIFORM2IVPROC;
  1080. ProgramUniform2f: PFNGLPROGRAMUNIFORM2FPROC;
  1081. ProgramUniform2fv: PFNGLPROGRAMUNIFORM2FVPROC;
  1082. ProgramUniform2d: PFNGLPROGRAMUNIFORM2DPROC;
  1083. ProgramUniform2dv: PFNGLPROGRAMUNIFORM2DVPROC;
  1084. ProgramUniform2ui: PFNGLPROGRAMUNIFORM2UIPROC;
  1085. ProgramUniform2uiv: PFNGLPROGRAMUNIFORM2UIVPROC;
  1086. ProgramUniform3i: PFNGLPROGRAMUNIFORM3IPROC;
  1087. ProgramUniform3iv: PFNGLPROGRAMUNIFORM3IVPROC;
  1088. ProgramUniform3f: PFNGLPROGRAMUNIFORM3FPROC;
  1089. ProgramUniform3fv: PFNGLPROGRAMUNIFORM3FVPROC;
  1090. ProgramUniform3d: PFNGLPROGRAMUNIFORM3DPROC;
  1091. ProgramUniform3dv: PFNGLPROGRAMUNIFORM3DVPROC;
  1092. ProgramUniform3ui: PFNGLPROGRAMUNIFORM3UIPROC;
  1093. ProgramUniform3uiv: PFNGLPROGRAMUNIFORM3UIVPROC;
  1094. ProgramUniform4i: PFNGLPROGRAMUNIFORM4IPROC;
  1095. ProgramUniform4iv: PFNGLPROGRAMUNIFORM4IVPROC;
  1096. ProgramUniform4f: PFNGLPROGRAMUNIFORM4FPROC;
  1097. ProgramUniform4fv: PFNGLPROGRAMUNIFORM4FVPROC;
  1098. ProgramUniform4d: PFNGLPROGRAMUNIFORM4DPROC;
  1099. ProgramUniform4dv: PFNGLPROGRAMUNIFORM4DVPROC;
  1100. ProgramUniform4ui: PFNGLPROGRAMUNIFORM4UIPROC;
  1101. ProgramUniform4uiv: PFNGLPROGRAMUNIFORM4UIVPROC;
  1102. ProgramUniformMatrix2fv: PFNGLPROGRAMUNIFORMMATRIX2FVPROC;
  1103. ProgramUniformMatrix3fv: PFNGLPROGRAMUNIFORMMATRIX3FVPROC;
  1104. ProgramUniformMatrix4fv: PFNGLPROGRAMUNIFORMMATRIX4FVPROC;
  1105. ProgramUniformMatrix2dv: PFNGLPROGRAMUNIFORMMATRIX2DVPROC;
  1106. ProgramUniformMatrix3dv: PFNGLPROGRAMUNIFORMMATRIX3DVPROC;
  1107. ProgramUniformMatrix4dv: PFNGLPROGRAMUNIFORMMATRIX4DVPROC;
  1108. ProgramUniformMatrix2x3fv: PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC;
  1109. ProgramUniformMatrix3x2fv: PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC;
  1110. ProgramUniformMatrix2x4fv: PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC;
  1111. ProgramUniformMatrix4x2fv: PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC;
  1112. ProgramUniformMatrix3x4fv: PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC;
  1113. ProgramUniformMatrix4x3fv: PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC;
  1114. ProgramUniformMatrix2x3dv: PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC;
  1115. ProgramUniformMatrix3x2dv: PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC;
  1116. ProgramUniformMatrix2x4dv: PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC;
  1117. ProgramUniformMatrix4x2dv: PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC;
  1118. ProgramUniformMatrix3x4dv: PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC;
  1119. ProgramUniformMatrix4x3dv: PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC;
  1120. ValidateProgramPipeline: PFNGLVALIDATEPROGRAMPIPELINEPROC;
  1121. GetProgramPipelineInfoLog: PFNGLGETPROGRAMPIPELINEINFOLOGPROC;
  1122. DispatchCompute: PFNGLDispatchCompute;
  1123. DispatchComputeIndirect: PFNGLDispatchComputeIndirect;
  1124. ShaderStorageBlockBinding: PFNGLShaderStorageBlockBinding;
  1125. // ------------------------------ Framebuffer object
  1126. IsRenderbuffer: PFNGLISRENDERBUFFERPROC;
  1127. BindRenderbuffer: PFNGLBINDRENDERBUFFERPROC;
  1128. DeleteRenderbuffers: PFNGLDELETERENDERBUFFERSPROC;
  1129. GenRenderbuffers: PFNGLGENRENDERBUFFERSPROC;
  1130. RenderbufferStorage: PFNGLRENDERBUFFERSTORAGEPROC;
  1131. RenderbufferStorageMultisample: PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC;
  1132. GetRenderbufferParameteriv: PFNGLGETRENDERBUFFERPARAMETERIVPROC;
  1133. IsFramebuffer: PFNGLISFRAMEBUFFERPROC;
  1134. BindFramebuffer: PFNGLBINDFRAMEBUFFERPROC;
  1135. DeleteFramebuffers: PFNGLDELETEFRAMEBUFFERSPROC;
  1136. GenFramebuffers: PFNGLGENFRAMEBUFFERSPROC;
  1137. CheckFramebufferStatus: PFNGLCHECKFRAMEBUFFERSTATUSPROC;
  1138. FramebufferTexture: PFNGLFRAMEBUFFERTEXTUREPROC;
  1139. FramebufferTexture1D: PFNGLFRAMEBUFFERTEXTURE1DPROC;
  1140. FramebufferTexture2D: PFNGLFRAMEBUFFERTEXTURE2DPROC;
  1141. FramebufferTexture3D: PFNGLFRAMEBUFFERTEXTURE3DPROC;
  1142. FramebufferTextureLayer: PFNGLFRAMEBUFFERTEXTURELAYERPROC;
  1143. FramebufferTextureFace: PFNGLFRAMEBUFFERTEXTUREFACEARBPROC; // ARB only
  1144. FramebufferRenderbuffer: PFNGLFRAMEBUFFERRENDERBUFFERPROC;
  1145. GetFramebufferAttachmentParameteriv
  1146. : PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC;
  1147. BlitFramebuffer: PFNGLBLITFRAMEBUFFERPROC;
  1148. GenerateMipmap: PFNGLGENERATEMIPMAPPROC;
  1149. FramebufferParameteri: PFNGLFramebufferParameteri;
  1150. NamedFramebufferParameteri: PFNGLNamedFramebufferParameteri;
  1151. GetNamedFramebufferParameteriv: PFNGLGetNamedFramebufferParameteriv;
  1152. // ------------------------------ Queries object
  1153. GenQueries: PFNGLGENQUERIESPROC;
  1154. DeleteQueries: PFNGLDELETEQUERIESPROC;
  1155. IsQuery: PFNGLISQUERYPROC;
  1156. BeginQuery: PFNGLBEGINQUERYPROC;
  1157. EndQuery: PFNGLENDQUERYPROC;
  1158. GetQueryiv: PFNGLGETQUERYIVPROC;
  1159. GetQueryObjectiv: PFNGLGETQUERYOBJECTIVPROC;
  1160. GetQueryObjectuiv: PFNGLGETQUERYOBJECTUIVPROC;
  1161. QueryCounter: PFNGLQUERYCOUNTERPROC;
  1162. GetQueryObjecti64v: PFNGLGETQUERYOBJECTI64VPROC;
  1163. GetQueryObjectui64v: PFNGLGETQUERYOBJECTUI64VPROC;
  1164. GetInternalformati64v: PFNGLGetInternalformati64v;
  1165. GetProgramInterfaceiv: PFNGLGetProgramInterfaceiv;
  1166. GetProgramResourceIndex: PFNGLGetProgramResourceIndex;
  1167. GetProgramResourceName: PFNGLGetProgramResourceName;
  1168. GetProgramResourceiv: PFNGLGetProgramResourceiv;
  1169. GetProgramResourceLocation: PFNGLGetProgramResourceLocation;
  1170. GetProgramResourceLocationIndex: PFNGLGetProgramResourceLocationIndex;
  1171. // ------------------------------ Texture & Sampler object
  1172. // promoted to core v1.3 from GL_ARB_multitexture (#1)
  1173. ActiveTexture: PFNGLACTIVETEXTUREPROC;
  1174. SampleCoverage: PFNGLSAMPLECOVERAGEPROC;
  1175. // promoted to core v1.3 from GL_ARB_texture_compression (#12)
  1176. CompressedTexImage3D: PFNGLCOMPRESSEDTEXIMAGE3DPROC;
  1177. CompressedTexImage2D: PFNGLCOMPRESSEDTEXIMAGE2DPROC;
  1178. CompressedTexImage1D: PFNGLCOMPRESSEDTEXIMAGE1DPROC;
  1179. CompressedTexSubImage3D: PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC;
  1180. CompressedTexSubImage2D: PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC;
  1181. CompressedTexSubImage1D: PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC;
  1182. GetCompressedTexImage: PFNGLGETCOMPRESSEDTEXIMAGEPROC;
  1183. ClientActiveTexture: PFNGLCLIENTACTIVETEXTUREPROC;
  1184. MultiTexCoord1d: PFNGLMULTITEXCOORD1DPROC;
  1185. MultiTexCoord1dV: PFNGLMULTITEXCOORD1DVPROC;
  1186. MultiTexCoord1f: PFNGLMULTITEXCOORD1FPROC;
  1187. MultiTexCoord1fv: PFNGLMULTITEXCOORD1FVPROC;
  1188. MultiTexCoord1i: PFNGLMULTITEXCOORD1IPROC;
  1189. MultiTexCoord1iv: PFNGLMULTITEXCOORD1IVPROC;
  1190. MultiTexCoord1s: PFNGLMULTITEXCOORD1SPROC;
  1191. MultiTexCoord1sv: PFNGLMULTITEXCOORD1SVPROC;
  1192. MultiTexCoord2d: PFNGLMULTITEXCOORD2DPROC;
  1193. MultiTexCoord2dv: PFNGLMULTITEXCOORD2DVPROC;
  1194. MultiTexCoord2f: PFNGLMULTITEXCOORD2FPROC;
  1195. MultiTexCoord2fv: PFNGLMULTITEXCOORD2FVPROC;
  1196. MultiTexCoord2i: PFNGLMULTITEXCOORD2IPROC;
  1197. MultiTexCoord2iv: PFNGLMULTITEXCOORD2IVPROC;
  1198. MultiTexCoord2s: PFNGLMULTITEXCOORD2SPROC;
  1199. MultiTexCoord2sv: PFNGLMULTITEXCOORD2SVPROC;
  1200. MultiTexCoord3d: PFNGLMULTITEXCOORD3DPROC;
  1201. MultiTexCoord3dv: PFNGLMULTITEXCOORD3DVPROC;
  1202. MultiTexCoord3f: PFNGLMULTITEXCOORD3FPROC;
  1203. MultiTexCoord3fv: PFNGLMULTITEXCOORD3FVPROC;
  1204. MultiTexCoord3i: PFNGLMULTITEXCOORD3IPROC;
  1205. MultiTexCoord3iv: PFNGLMULTITEXCOORD3IVPROC;
  1206. MultiTexCoord3s: PFNGLMULTITEXCOORD3SPROC;
  1207. MultiTexCoord3sv: PFNGLMULTITEXCOORD3SVPROC;
  1208. MultiTexCoord4d: PFNGLMULTITEXCOORD4DPROC;
  1209. MultiTexCoord4dv: PFNGLMULTITEXCOORD4DVPROC;
  1210. MultiTexCoord4f: PFNGLMULTITEXCOORD4FPROC;
  1211. MultiTexCoord4fv: PFNGLMULTITEXCOORD4FVPROC;
  1212. MultiTexCoord4i: PFNGLMULTITEXCOORD4IPROC;
  1213. MultiTexCoord4iv: PFNGLMULTITEXCOORD4IVPROC;
  1214. MultiTexCoord4s: PFNGLMULTITEXCOORD4SPROC;
  1215. MultiTexCoord4sv: PFNGLMULTITEXCOORD4SVPROC;
  1216. GetInteger64i_v: PFNGLGETINTEGER64I_VPROC;
  1217. GetBufferParameteri64v: PFNGLGETBUFFERPARAMETERI64VPROC;
  1218. ProgramParameteri: PFNGLPROGRAMPARAMETERIPROC;
  1219. ProgramString: PFNGLPROGRAMSTRINGARBPROC; // ARB only
  1220. BindProgram: PFNGLBINDPROGRAMARBPROC; // ARB + NV only
  1221. DeletePrograms: PFNGLDELETEPROGRAMSARBPROC; // ARB + NV only
  1222. GenPrograms: PFNGLGENPROGRAMSARBPROC; // ARB + NV only
  1223. ProgramEnvParameter4d: PFNGLPROGRAMENVPARAMETER4DARBPROC; // ARB only
  1224. ProgramEnvParameter4dv: PFNGLPROGRAMENVPARAMETER4DVARBPROC; // ARB only
  1225. ProgramEnvParameter4f: PFNGLPROGRAMENVPARAMETER4FARBPROC; // ARB only
  1226. ProgramEnvParameter4fv: PFNGLPROGRAMENVPARAMETER4FVARBPROC; // ARB only
  1227. ProgramLocalParameter4d: PFNGLPROGRAMLOCALPARAMETER4DARBPROC; // ARB only
  1228. ProgramLocalParameter4dv: PFNGLPROGRAMLOCALPARAMETER4DVARBPROC; // ARB only
  1229. ProgramLocalParameter4f: PFNGLPROGRAMLOCALPARAMETER4FARBPROC; // ARB only
  1230. ProgramLocalParameter4fv: PFNGLPROGRAMLOCALPARAMETER4FVARBPROC; // ARB only
  1231. GetProgramEnvParameterdv: PFNGLGETPROGRAMENVPARAMETERDVARBPROC; // ARB only
  1232. GetProgramEnvParameterfv: PFNGLGETPROGRAMENVPARAMETERFVARBPROC; // ARB only
  1233. GetProgramLocalParameterdv: PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC;
  1234. // ARB only
  1235. GetProgramLocalParameterfv: PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC;
  1236. // ARB only
  1237. TexImage2DMultisample: PFNGLTEXIMAGE2DMULTISAMPLEPROC;
  1238. TexImage3DMultisample: PFNGLTEXIMAGE3DMULTISAMPLEPROC;
  1239. GetMultisamplefv: PFNGLGETMULTISAMPLEFVPROC;
  1240. SampleMaski: PFNGLSAMPLEMASKIPROC;
  1241. ProvokingVertex: PFNGLPROVOKINGVERTEXPROC;
  1242. FenceSync: PFNGLFENCESYNCPROC;
  1243. IsSync: PFNGLISSYNCPROC;
  1244. DeleteSync: PFNGLDELETESYNCPROC;
  1245. ClientWaitSync: PFNGLCLIENTWAITSYNCPROC;
  1246. WaitSync: PFNGLWAITSYNCPROC;
  1247. GetInteger64v: PFNGLGETINTEGER64VPROC;
  1248. GetSynciv: PFNGLGETSYNCIVPROC;
  1249. BlendEquationi: PFNGLBLENDEQUATIONIPROC;
  1250. BlendEquationSeparatei: PFNGLBLENDEQUATIONSEPARATEIPROC;
  1251. BlendFunci: PFNGLBLENDFUNCIPROC;
  1252. BlendFuncSeparatei: PFNGLBLENDFUNCSEPARATEIPROC;
  1253. MinSampleShading: PFNGLMINSAMPLESHADINGPROC;
  1254. GenSamplers: PFNGLGENSAMPLERSPROC;
  1255. DeleteSamplers: PFNGLDELETESAMPLERSPROC;
  1256. IsSampler: PFNGLISSAMPLERPROC;
  1257. BindSampler: PFNGLBINDSAMPLERPROC;
  1258. SamplerParameteri: PFNGLSAMPLERPARAMETERIPROC;
  1259. SamplerParameteriv: PFNGLSAMPLERPARAMETERIVPROC;
  1260. SamplerParameterf: PFNGLSAMPLERPARAMETERFPROC;
  1261. SamplerParameterfv: PFNGLSAMPLERPARAMETERFVPROC;
  1262. SamplerParameterIiv: PFNGLSAMPLERPARAMETERIIVPROC;
  1263. SamplerParameterIuiv: PFNGLSAMPLERPARAMETERIUIVPROC;
  1264. GetSamplerParameteriv: PFNGLGETSAMPLERPARAMETERIVPROC;
  1265. GetSamplerParameterIiv: PFNGLGETSAMPLERPARAMETERIIVPROC;
  1266. GetSamplerParameterfv: PFNGLGETSAMPLERPARAMETERFVPROC;
  1267. GetSamplerParameterIfv: PFNGLGETSAMPLERPARAMETERIFVPROC;
  1268. CopyImageSubData: PFNGLCopyImageSubData;
  1269. TexBufferRange: PFNGLTexBufferRange;
  1270. TextureBufferRange: PFNGLTextureBufferRange;
  1271. TexStorage2DMultisample: PFNGLTexStorage2DMultisample;
  1272. TexStorage3DMultisample: PFNGLTexStorage3DMultisample;
  1273. TextureStorage2DMultisample: PFNGLTextureStorage2DMultisample;
  1274. TextureStorage3DMultisample: PFNGLTextureStorage3DMultisample;
  1275. BufferStorage: PFNGLBufferStorage;
  1276. ClearTexImage: PFNGLClearTexImage;
  1277. ClearTexSubImage: PFNGLClearTexSubImage;
  1278. BindBuffersBase: PFNGLBindBuffersBase;
  1279. BindBuffersRange: PFNGLBindBuffersRange;
  1280. BindTextures: PFNGLBindTextures;
  1281. BindSamplers: PFNGLBindSamplers;
  1282. BindImageTextures: PFNGLBindImageTextures;
  1283. BindVertexBuffers: PFNGLBindVertexBuffers;
  1284. TextureView: PFNGLTextureView;
  1285. // ------------------------------ Direct access
  1286. ClientAttribDefault: PFNGLCLIENTATTRIBDEFAULTEXTPROC;
  1287. PushClientAttribDefault: PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC;
  1288. MatrixLoadf: PFNGLMATRIXLOADFEXTPROC;
  1289. MatrixLoadd: PFNGLMATRIXLOADDEXTPROC;
  1290. MatrixMultf: PFNGLMATRIXMULTFEXTPROC;
  1291. MatrixMultd: PFNGLMATRIXMULTDEXTPROC;
  1292. MatrixLoadIdentity: PFNGLMATRIXLOADIDENTITYEXTPROC;
  1293. MatrixRotatef: PFNGLMATRIXROTATEFEXTPROC;
  1294. MatrixRotated: PFNGLMATRIXROTATEDEXTPROC;
  1295. MatrixScalef: PFNGLMATRIXSCALEFEXTPROC;
  1296. MatrixScaled: PFNGLMATRIXSCALEDEXTPROC;
  1297. MatrixTranslatef: PFNGLMATRIXTRANSLATEFEXTPROC;
  1298. MatrixTranslated: PFNGLMATRIXTRANSLATEDEXTPROC;
  1299. MatrixFrustum: PFNGLMATRIXFRUSTUMEXTPROC;
  1300. MatrixOrtho: PFNGLMATRIXORTHOEXTPROC;
  1301. MatrixPop: PFNGLMATRIXPOPEXTPROC;
  1302. MatrixPush: PFNGLMATRIXPUSHEXTPROC;
  1303. MatrixLoadTransposef: PFNGLMATRIXLOADTRANSPOSEFEXTPROC;
  1304. MatrixLoadTransposed: PFNGLMATRIXLOADTRANSPOSEDEXTPROC;
  1305. MatrixMultTransposef: PFNGLMATRIXMULTTRANSPOSEFEXTPROC;
  1306. MatrixMultTransposed: PFNGLMATRIXMULTTRANSPOSEDEXTPROC;
  1307. TextureParameterfv: PFNGLTEXTUREPARAMETERFVEXTPROC;
  1308. TextureParameteri: PFNGLTEXTUREPARAMETERIEXTPROC;
  1309. TextureParameteriv: PFNGLTEXTUREPARAMETERIVEXTPROC;
  1310. TextureImage1D: PFNGLTEXTUREIMAGE1DEXTPROC;
  1311. TextureImage2D: PFNGLTEXTUREIMAGE2DEXTPROC;
  1312. TextureSubImage1D: PFNGLTEXTURESUBIMAGE1DEXTPROC;
  1313. TextureSubImage2D: PFNGLTEXTURESUBIMAGE2DEXTPROC;
  1314. CopyTextureImage1D: PFNGLCOPYTEXTUREIMAGE1DEXTPROC;
  1315. CopyTextureImage2D: PFNGLCOPYTEXTUREIMAGE2DEXTPROC;
  1316. CopyTextureSubImage1D: PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC;
  1317. CopyTextureSubImage2D: PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC;
  1318. GetTextureImage: PFNGLGETTEXTUREIMAGEEXTPROC;
  1319. GetTextureParameterfv: PFNGLGETTEXTUREPARAMETERFVEXTPROC;
  1320. GetTextureParameteriv: PFNGLGETTEXTUREPARAMETERIVEXTPROC;
  1321. GetTextureLevelParameterfv: PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC;
  1322. GetTextureLevelParameteriv: PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC;
  1323. TextureImage3D: PFNGLTEXTUREIMAGE3DEXTPROC;
  1324. TextureSubImage3D: PFNGLTEXTURESUBIMAGE3DEXTPROC;
  1325. CopyTextureSubImage3D: PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC;
  1326. MultiTexParameterf: PFNGLMULTITEXPARAMETERFEXTPROC;
  1327. MultiTexParameterfv: PFNGLMULTITEXPARAMETERFVEXTPROC;
  1328. MultiTexParameteri: PFNGLMULTITEXPARAMETERIEXTPROC;
  1329. MultiTexParameteriv: PFNGLMULTITEXPARAMETERIVEXTPROC;
  1330. MultiTexImage1D: PFNGLMULTITEXIMAGE1DEXTPROC;
  1331. MultiTexImage2D: PFNGLMULTITEXIMAGE2DEXTPROC;
  1332. MultiTexSubImage1D: PFNGLMULTITEXSUBIMAGE1DEXTPROC;
  1333. MultiTexSubImage2D: PFNGLMULTITEXSUBIMAGE2DEXTPROC;
  1334. CopyMultiTexImage1D: PFNGLCOPYMULTITEXIMAGE1DEXTPROC;
  1335. CopyMultiTexImage2D: PFNGLCOPYMULTITEXIMAGE2DEXTPROC;
  1336. CopyMultiTexSubImage1D: PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC;
  1337. CopyMultiTexSubImage2D: PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC;
  1338. GetMultiTexImage: PFNGLGETMULTITEXIMAGEEXTPROC;
  1339. GetMultiTexParameterfv: PFNGLGETMULTITEXPARAMETERFVEXTPROC;
  1340. GetMultiTexParameteriv: PFNGLGETMULTITEXPARAMETERIVEXTPROC;
  1341. GetMultiTexLevelParameterfv: PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC;
  1342. GetMultiTexLevelParameteriv: PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC;
  1343. MultiTexImage3D: PFNGLMULTITEXIMAGE3DEXTPROC;
  1344. MultiTexSubImage3D: PFNGLMULTITEXSUBIMAGE3DEXTPROC;
  1345. CopyMultiTexSubImage3D: PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC;
  1346. BindMultiTexture: PFNGLBINDMULTITEXTUREEXTPROC;
  1347. EnableClientStateIndexed: PFNGLENABLECLIENTSTATEINDEXEDEXTPROC;
  1348. DisableClientStateIndexed: PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC;
  1349. MultiTexCoordPointer: PFNGLMULTITEXCOORDPOINTEREXTPROC;
  1350. MultiTexEnvf: PFNGLMULTITEXENVFEXTPROC;
  1351. MultiTexEnvfv: PFNGLMULTITEXENVFVEXTPROC;
  1352. MultiTexEnvi: PFNGLMULTITEXENVIEXTPROC;
  1353. MultiTexEnviv: PFNGLMULTITEXENVIVEXTPROC;
  1354. MultiTexGend: PFNGLMULTITEXGENDEXTPROC;
  1355. MultiTexGendv: PFNGLMULTITEXGENDVEXTPROC;
  1356. MultiTexGenf: PFNGLMULTITEXGENFEXTPROC;
  1357. MultiTexGenfv: PFNGLMULTITEXGENFVEXTPROC;
  1358. MultiTexGeni: PFNGLMULTITEXGENIEXTPROC;
  1359. MultiTexGeniv: PFNGLMULTITEXGENIVEXTPROC;
  1360. GetMultiTexEnvfv: PFNGLGETMULTITEXENVFVEXTPROC;
  1361. GetMultiTexEnviv: PFNGLGETMULTITEXENVIVEXTPROC;
  1362. GetMultiTexGendv: PFNGLGETMULTITEXGENDVEXTPROC;
  1363. GetMultiTexGenfv: PFNGLGETMULTITEXGENFVEXTPROC;
  1364. GetMultiTexGeniv: PFNGLGETMULTITEXGENIVEXTPROC;
  1365. GetFloatIndexedv: PFNGLGETFLOATINDEXEDVEXTPROC;
  1366. GetDoubleIndexedv: PFNGLGETDOUBLEINDEXEDVEXTPROC;
  1367. GetPointerIndexedv: PFNGLGETPOINTERINDEXEDVEXTPROC;
  1368. CompressedTextureImage3D: PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC;
  1369. CompressedTextureImage2D: PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC;
  1370. CompressedTextureImage1D: PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC;
  1371. CompressedTextureSubImage3D: PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC;
  1372. CompressedTextureSubImage2D: PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC;
  1373. CompressedTextureSubImage1D: PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC;
  1374. GetCompressedTextureImage: PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC;
  1375. CompressedMultiTexImage3D: PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC;
  1376. CompressedMultiTexImage2D: PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC;
  1377. CompressedMultiTexImage1D: PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC;
  1378. CompressedMultiTexSubImage3D: PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC;
  1379. CompressedMultiTexSubImage2D: PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC;
  1380. CompressedMultiTexSubImage1D: PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC;
  1381. GetCompressedMultiTexImage: PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC;
  1382. NamedProgramString: PFNGLNAMEDPROGRAMSTRINGEXTPROC;
  1383. NamedProgramLocalParameter4d: PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC;
  1384. NamedProgramLocalParameter4dv: PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC;
  1385. NamedProgramLocalParameter4f: PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC;
  1386. NamedProgramLocalParameter4fv: PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC;
  1387. GetNamedProgramLocalParameterdv : PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC;
  1388. GetNamedProgramLocalParameterfv : PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC;
  1389. GetNamedProgramiv: PFNGLGETNAMEDPROGRAMIVEXTPROC;
  1390. GetNamedProgramString: PFNGLGETNAMEDPROGRAMSTRINGEXTPROC;
  1391. NamedProgramLocalParameters4fv: PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC;
  1392. NamedProgramLocalParameterI4i: PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC;
  1393. NamedProgramLocalParameterI4iv: PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC;
  1394. NamedProgramLocalParametersI4iv : PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC;
  1395. NamedProgramLocalParameterI4ui: PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC;
  1396. NamedProgramLocalParameterI4uiv: PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC;
  1397. NamedProgramLocalParametersI4uiv: PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC;
  1398. GetNamedProgramLocalParameterIiv: PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC;
  1399. GetNamedProgramLocalParameterIuiv: PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC;
  1400. TextureParameterIiv: PFNGLTEXTUREPARAMETERIIVEXTPROC;
  1401. TextureParameterIuiv: PFNGLTEXTUREPARAMETERIUIVEXTPROC;
  1402. GetTextureParameterIiv: PFNGLGETTEXTUREPARAMETERIIVEXTPROC;
  1403. GetTextureParameterIuiv: PFNGLGETTEXTUREPARAMETERIUIVEXTPROC;
  1404. MultiTexParameterIiv: PFNGLMULTITEXPARAMETERIIVEXTPROC;
  1405. MultiTexParameterIuiv: PFNGLMULTITEXPARAMETERIUIVEXTPROC;
  1406. GetMultiTexParameterIiv: PFNGLGETMULTITEXPARAMETERIIVEXTPROC;
  1407. GetMultiTexParameterIuiv: PFNGLGETMULTITEXPARAMETERIUIVEXTPROC;
  1408. NamedBufferData: PFNGLNAMEDBUFFERDATAEXTPROC;
  1409. NamedBufferSubData: PFNGLNAMEDBUFFERSUBDATAEXTPROC;
  1410. MapNamedBuffer: PFNGLMAPNAMEDBUFFEREXTPROC;
  1411. UnmapNamedBuffer: PFNGLUNMAPNAMEDBUFFEREXTPROC;
  1412. MapNamedBufferRange: PFNGLMAPNAMEDBUFFERRANGEEXTPROC;
  1413. FlushMappedNamedBufferRange: PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC;
  1414. NamedCopyBufferSubData: PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC;
  1415. GetNamedBufferParameteriv: PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC;
  1416. GetNamedBufferPointerv: PFNGLGETNAMEDBUFFERPOINTERVEXTPROC;
  1417. GetNamedBufferSubData: PFNGLGETNAMEDBUFFERSUBDATAEXTPROC;
  1418. TextureBuffer: PFNGLTEXTUREBUFFEREXTPROC;
  1419. MultiTexBuffer: PFNGLMULTITEXBUFFEREXTPROC;
  1420. NamedRenderbufferStorage: PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC;
  1421. GetNamedRenderbufferParameteriv
  1422. : PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC;
  1423. CheckNamedFramebufferStatus: PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC;
  1424. NamedFramebufferTexture1D: PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC;
  1425. NamedFramebufferTexture2D: PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC;
  1426. NamedFramebufferTexture3D: PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC;
  1427. NamedFramebufferRenderbuffer: PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC;
  1428. GetNamedFramebufferAttachmentParameteriv
  1429. : PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC;
  1430. GenerateTextureMipmap: PFNGLGENERATETEXTUREMIPMAPEXTPROC;
  1431. GenerateMultiTexMipmap: PFNGLGENERATEMULTITEXMIPMAPEXTPROC;
  1432. FramebufferDrawBuffer: PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC;
  1433. FramebufferDrawBuffers: PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC;
  1434. FramebufferReadBuffer: PFNGLFRAMEBUFFERREADBUFFEREXTPROC;
  1435. GetFramebufferParameteriv: PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC;
  1436. NamedRenderbufferStorageMultisample
  1437. : PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC;
  1438. NamedRenderbufferStorageMultisampleCoverage
  1439. : PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC;
  1440. NamedFramebufferTexture: PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC;
  1441. NamedFramebufferTextureLayer: PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC;
  1442. NamedFramebufferTextureFace: PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC;
  1443. TextureRenderbuffer: PFNGLTEXTURERENDERBUFFEREXTPROC;
  1444. MultiTexRenderbuffer: PFNGLMULTITEXRENDERBUFFEREXTPROC;
  1445. // ------------------------------ Debugging
  1446. // Special Gremedy debugger extension
  1447. FrameTerminatorGREMEDY: PFNGLFRAMETERMINATORGREMEDYPROC;
  1448. StringMarkerGREMEDY: PFNGLSTRINGMARKERGREMEDYPROC;
  1449. DebugMessageEnableAMDX: procedure(category: Cardinal; severity: Cardinal;
  1450. Count: TGLsizei; var ids: Cardinal; Enabled: boolean);
  1451. PushDebugGroup: PFNGLPushDebugGroup;
  1452. PopDebugGroup: PFNGLPopDebugGroup;
  1453. ObjectLabel: PFNGLObjectLabel;
  1454. GetObjectLabel: PFNGLGetObjectLabel;
  1455. ObjectPtrLabel: PFNGLObjectPtrLabel;
  1456. GetObjectPtrLabel: PFNGLGetObjectPtrLabel;
  1457. DebugMessageCallbackAMDX: procedure(callback: TDebugProcAMD; userParam: Pointer);
  1458. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF}
  1459. DebugMessageControl: procedure(type_: Cardinal; Source: Cardinal;
  1460. severity: Cardinal; Count: TGLsizei; var ids: Cardinal; Enabled: boolean);
  1461. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF}
  1462. DebugMessageInsert: procedure(Source: Cardinal; severity: Cardinal; id: Cardinal;
  1463. length: TGLsizei; const buf: PAnsiChar);
  1464. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF}
  1465. DebugMessageCallback: procedure(callback: TDebugProc; userParam: Pointer);
  1466. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF}
  1467. GetDebugMessageLog: function(Count: Cardinal; bufSize: TGLsizei;
  1468. var severity: Cardinal; var severities: Cardinal; var ids: Cardinal;
  1469. var lengths: TGLsizei; messageLog: PAnsiChar): Cardinal;
  1470. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF}
  1471. // ------------------------------ Interrop
  1472. CreateSyncFromCLevent: PFNGLCreateSyncFromCLevent;
  1473. VDPAUInitNV: procedure(const vdpDevice: Pointer; const getProcAddress: Pointer); {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1474. VDPAUFiniNV: procedure(); {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1475. VDPAURegisterVideoSurfaceNV: function(const vdpSurface: Pointer;
  1476. target: Cardinal; numTextureNames: TGLsizei; const textureNames: PGLuint)
  1477. : TGLvdpauSurfaceNV;
  1478. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1479. VDPAURegisterOutputSurfaceNV: function(const vdpSurface: Pointer;
  1480. target: Cardinal; numTextureNames: TGLsizei; const textureNames: PGLuint)
  1481. : TGLvdpauSurfaceNV;
  1482. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1483. VDPAUIsSurfaceNV: procedure(surface: TGLvdpauSurfaceNV);
  1484. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1485. VDPAUUnregisterSurfaceNV: procedure(surface: TGLvdpauSurfaceNV);
  1486. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1487. VDPAUGetSurfaceivNV: procedure(surface: TGLvdpauSurfaceNV; pname: Cardinal;
  1488. bufSize: TGLsizei; length: PGLsizei; values: PGLint);
  1489. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1490. VDPAUSurfaceAccessNV: procedure(surface: TGLvdpauSurfaceNV;
  1491. access: Cardinal);
  1492. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1493. VDPAUMapSurfacesNV: procedure(numSurfaces: TGLsizei;
  1494. const surfaces: PGLvdpauSurfaceNV);
  1495. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1496. VDPAUUnmapSurfacesNV: procedure(numSurface: TGLsizei;
  1497. const surfaces: PGLvdpauSurfaceNV);
  1498. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1499. // ------------------------------ Path rendering
  1500. GenPathsNV: PFNGLGENPATHSNVPROC;
  1501. DeletePathsNV: PFNGLDELETEPATHSNVPROC;
  1502. IsPathNV: PFNGLISPATHNVPROC;
  1503. PathCommandsNV: PFNGLPATHCOMMANDSNVPROC;
  1504. PathCoordsNV: PFNGLPATHCOORDSNVPROC;
  1505. PathSubCommandsNV: PFNGLPATHSUBCOMMANDSNVPROC;
  1506. PathSubCoordsNV: PFNGLPATHSUBCOORDSNVPROC;
  1507. PathStringNV: PFNGLPATHSTRINGNVPROC;
  1508. PathGlyphsNV: PFNGLPATHGLYPHSNVPROC;
  1509. PathGlyphRangeNV: PFNGLPATHGLYPHRANGENVPROC;
  1510. WeightPathsNV: PFNGLWEIGHTPATHSNVPROC;
  1511. CopyPathNV: PFNGLCOPYPATHNVPROC;
  1512. InterpolatePathsNV: PFNGLINTERPOLATEPATHSNVPROC;
  1513. PathParameterivNV: PFNGLPATHPARAMETERIVNVPROC;
  1514. PathParameteriNV: PFNGLPATHPARAMETERINVPROC;
  1515. PathParameterfvNV: PFNGLPATHPARAMETERFVNVPROC;
  1516. PathParameterfNV: PFNGLPATHPARAMETERFNVPROC;
  1517. PathDashArrayNV: PFNGLPATHDASHARRAYNVPROC;
  1518. PathStencilFuncNV: PFNGLPATHSTENCILFUNCNVPROC;
  1519. StencilFillPathNV: PFNGLSTENCILFILLPATHNVPROC;
  1520. StencilStrokePathNV: PFNGLSTENCILSTROKEPATHNVPROC;
  1521. StencilFillPathInstancedNV: PFNGLSTENCILFILLPATHINSTANCEDNVPROC;
  1522. StencilStrokePathInstancedNV: PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC;
  1523. PathColorGenNV: PFNGLPATHCOLORGENNVPROC;
  1524. PathTexGenNV: PFNGLPATHTEXGENNVPROC;
  1525. PathFogGenNV: PFNGLPATHFOGGENNVPROC;
  1526. CoverFillPathNV: PFNGLCOVERFILLPATHNVPROC;
  1527. CoverStrokePathNV: PFNGLCOVERSTROKEPATHNVPROC;
  1528. CoverFillPathInstancedNV: PFNGLCOVERFILLPATHINSTANCEDNVPROC;
  1529. CoverStrokePathInstancedNV: PFNGLCOVERSTROKEPATHINSTANCEDNVPROC;
  1530. GetPathParameterivNV: PFNGLGETPATHPARAMETERIVNVPROC;
  1531. GetPathParameterfvNV: PFNGLGETPATHPARAMETERFVNVPROC;
  1532. GetPathCommandsNV: PFNGLGETPATHCOMMANDSNVPROC;
  1533. GetPathCoordsNV: PFNGLGETPATHCOORDSNVPROC;
  1534. GetPathDashArrayNV: PFNGLGETPATHDASHARRAYNVPROC;
  1535. GetPathMetricsNV: PFNGLGETPATHMETRICSNVPROC;
  1536. GetPathMetricRangeNV: PFNGLGETPATHMETRICRANGENVPROC;
  1537. GetPathSpacingNV: PFNGLGETPATHSPACINGNVPROC;
  1538. GetPathColorGenivNV: PFNGLGETPATHCOLORGENIVNVPROC;
  1539. GetPathColorGenfvNV: PFNGLGETPATHCOLORGENFVNVPROC;
  1540. GetPathTexGenivNV: PFNGLGETPATHTEXGENIVNVPROC;
  1541. GetPathTexGenfvNV: PFNGLGETPATHTEXGENFVNVPROC;
  1542. IsPointInFillPathNV: PFNGLISPOINTINFILLPATHNVPROC;
  1543. IsPointInStrokePathNV: PFNGLISPOINTINSTROKEPATHNVPROC;
  1544. GetPathLengthNV: PFNGLGETPATHLENGTHNVPROC;
  1545. PointAlongPathNV: PFNGLPOINTALONGPATHNVPROC;
  1546. PathStencilDepthOffsetNV: PFNGLPATHSTENCILDEPTHOFFSETNVPROC;
  1547. PathCoverDepthFuncNV: PFNGLPATHCOVERDEPTHFUNCNVPROC;
  1548. {$IFDEF SUPPORT_WGL}
  1549. // ###########################################################
  1550. // function and procedure definitions for
  1551. // ARB approved WGL extensions
  1552. // ###########################################################
  1553. // ARB approved WGL extension checks
  1554. W_ARB_buffer_region, W_ARB_create_context, W_ARB_create_context_profile,
  1555. W_ARB_extensions_string, W_ARB_framebuffer_sRGB, W_ARB_make_current_read,
  1556. W_ARB_multisample, W_ARB_pbuffer, W_ARB_pixel_format,
  1557. W_ARB_pixel_format_float, W_ARB_render_texture,
  1558. // Vendor/EXT WGL extension checks
  1559. W_ATI_pixel_format_float, W_EXT_framebuffer_sRGB,
  1560. W_EXT_pixel_format_packed_float, W_EXT_swap_control, W_NV_gpu_affinity,
  1561. W_EXT_create_context_es2_profile, W_NV_DX_interop,
  1562. W_NV_DX_interop2: boolean;
  1563. // WGL_buffer_region (ARB #4)
  1564. WCreateBufferRegionARB: PFNWGLCREATEBUFFERREGIONARBPROC;
  1565. WDeleteBufferRegionARB: PFNWGLDELETEBUFFERREGIONARBPROC;
  1566. WSaveBufferRegionARB: PFNWGLSAVEBUFFERREGIONARBPROC;
  1567. WRestoreBufferRegionARB: PFNWGLRESTOREBUFFERREGIONARBPROC;
  1568. // WGL_ARB_extensions_string (ARB #8)
  1569. WGetExtensionsStringARB: PFNWGLGETEXTENSIONSSTRINGARBPROC;
  1570. // WGL_ARB_pixel_format (ARB #9)
  1571. WGetPixelFormatAttribivARB: PFNWGLGETPIXELFORMATATTRIBIVARBPROC;
  1572. WGetPixelFormatAttribfvARB: PFNWGLGETPIXELFORMATATTRIBFVARBPROC;
  1573. WChoosePixelFormatARB: PFNWGLCHOOSEPIXELFORMATARBPROC;
  1574. // WGL_make_current_read (ARB #10)
  1575. WMakeContextCurrentARB: PFNWGLMAKECONTEXTCURRENTARBPROC;
  1576. WGetCurrentReadDCARB: PFNWGLGETCURRENTREADDCARBPROC;
  1577. // WGL_ARB_pbuffer (ARB #11)
  1578. WCreatePbufferARB: PFNWGLCREATEPBUFFERARBPROC;
  1579. WGetPbufferDCARB: PFNWGLGETPBUFFERDCARBPROC;
  1580. WReleasePbufferDCARB: PFNWGLRELEASEPBUFFERDCARBPROC;
  1581. WDestroyPbufferARB: PFNWGLDESTROYPBUFFERARBPROC;
  1582. WQueryPbufferARB: PFNWGLQUERYPBUFFERARBPROC;
  1583. // WGL_ARB_render_texture (ARB #20)
  1584. WBindTexImageARB: PFNWGLBINDTEXIMAGEARBPROC;
  1585. WReleaseTexImageARB: PFNWGLRELEASETEXIMAGEARBPROC;
  1586. WSetPbufferAttribARB: PFNWGLSETPBUFFERATTRIBARBPROC;
  1587. // WGL_ARB_create_context (ARB #55)
  1588. WCreateContextAttribsARB: PFNWGLCREATECONTEXTATTRIBSARBPROC;
  1589. // WGL_NV_gpu_affinity
  1590. WEnumGpusNV: PFNWGLENUMGPUSNVPROC;
  1591. WEnumGpuDevicesNV: PFNWGLENUMGPUDEVICESNVPROC;
  1592. WCreateAffinityDCNV: PFNWGLCREATEAFFINITYDCNVPROC;
  1593. WEnumGpusFromAffinityDCNV: PFNWGLENUMGPUSFROMAFFINITYDCNVPROC;
  1594. WDeleteDCNV: PFNWGLDELETEDCNVPROC;
  1595. // WGL_NV_DX_interop (EXT #407)
  1596. WDXSetResourceShareHandleNV: PFNWGLDXSETRESOURCESHAREHANDLEPROC;
  1597. WDXOpenDeviceNV: PFNWGLDXOPENDEVICEPROC;
  1598. WDXCloseDeviceNV: PFNWGLDXCLOSEDEVICEPROC;
  1599. WDXRegisterObjectNV: PFNWGLDXREGISTEROBJECTPROC;
  1600. WDXUnregisterObjectNV: PFNWGLDXUNREGISTEROBJECTPROC;
  1601. WDXObjectAccessNV: PFNWGLDXOBJECTACCESSPROC;
  1602. WDXLockObjectsNV: PFNWGLDXLOCKOBJECTSPROC;
  1603. WDXUnlockObjectsNV: PFNWGLDXUNLOCKOBJECTSNVPROC;
  1604. {$ENDIF}
  1605. {$IFDEF SUPPORT_WGL}
  1606. // ###########################################################
  1607. // function and procedure definitions for
  1608. // Vendor/EXT WGL extensions
  1609. // ###########################################################
  1610. // WGL_EXT_swap_control (EXT #172)
  1611. WSwapIntervalEXT: PFNWGLSWAPINTERVALEXTPROC;
  1612. WGetSwapIntervalEXT: PFNWGLGETSWAPINTERVALEXTPROC;
  1613. // GL_NV_vertex_array_range (EXT #190)
  1614. WAllocateMemoryNV: PFNWGLALLOCATEMEMORYNVPROC;
  1615. WFreeMemoryNV: PFNWGLFREEMEMORYNVPROC;
  1616. {$ENDIF}
  1617. // ------- GLX function/procedure definitions for ARB approved extensions'}
  1618. {$IFDEF SUPPORT_GLX}
  1619. // ###########################################################
  1620. // function and procedure definitions for
  1621. // ARB approved GLX extensions
  1622. // ###########################################################
  1623. // GLX extension checks
  1624. X_VERSION_1_1, X_VERSION_1_2, X_VERSION_1_3, X_VERSION_1_4,
  1625. X_ARB_create_context, X_ARB_create_context_profile,
  1626. X_ARB_framebuffer_sRGB, X_ARB_multisample, X_EXT_framebuffer_sRGB,
  1627. X_EXT_fbconfig_packed_float, X_SGIS_multisample, X_EXT_visual_info,
  1628. X_SGI_swap_control, X_SGI_video_sync, X_SGI_make_current_read,
  1629. X_SGIX_video_source, X_EXT_visual_rating, X_EXT_import_context,
  1630. X_SGIX_fbconfig, X_SGIX_pbuffer, X_SGI_cushion, X_SGIX_video_resize,
  1631. X_SGIX_dmbuffer, X_SGIX_swap_group, X_SGIX_swap_barrier,
  1632. X_SGIS_blended_overlay, X_SGIS_shared_multisample,
  1633. X_SUN_get_transparent_index, X_3DFX_multisample, X_MESA_copy_sub_buffer,
  1634. X_MESA_pixmap_colormap, X_MESA_release_buffers, X_MESA_set_3dfx_mode,
  1635. X_SGIX_visual_select_group, X_SGIX_hyperpipe,
  1636. X_NV_multisample_coverage: boolean;
  1637. // GLX 1.3 and later
  1638. XChooseFBConfig: PFNGLXCHOOSEFBCONFIGPROC;
  1639. XGetFBConfigAttrib: PFNGLXGETFBCONFIGATTRIBPROC;
  1640. XGetFBConfigs: PFNGLXGETFBCONFIGSPROC;
  1641. XGetVisualFromFBConfig: PFNGLXGETVISUALFROMFBCONFIGPROC;
  1642. XCreateWindow: PFNGLXCREATEWINDOWPROC;
  1643. XDestroyWindow: PFNGLXDESTROYWINDOWPROC;
  1644. XCreatePixmap: PFNGLXCREATEPIXMAPPROC;
  1645. XDestroyPixmap: PFNGLXDESTROYPIXMAPPROC;
  1646. XCreatePbuffer: PFNGLXCREATEPBUFFERPROC;
  1647. XDestroyPbuffer: PFNGLXDESTROYPBUFFERPROC;
  1648. XQueryDrawable: PFNGLXQUERYDRAWABLEPROC;
  1649. XCreateNewContext: PFNGLXCREATENEWCONTEXTPROC;
  1650. XMakeContextCurrent: PFNGLXMAKECONTEXTCURRENTPROC;
  1651. XGetCurrentReadDrawable: PFNGLXGETCURRENTREADDRAWABLEPROC;
  1652. XQueryContext: PFNGLXQUERYCONTEXTPROC;
  1653. XSelectEvent: PFNGLXSELECTEVENTPROC;
  1654. XGetSelectedEvent: PFNGLXGETSELECTEDEVENTPROC;
  1655. XBindTexImageARB: PFNGLXBINDTEXIMAGEARBPROC;
  1656. XReleaseTexImageARB: PFNGLXRELEASETEXIMAGEARBPROC;
  1657. XDrawableAttribARB: PFNGLXDRAWABLEATTRIBARBPROC;
  1658. // GLX 1.4
  1659. // X_ARB_create_context (EXT #56)
  1660. XCreateContextAttribsARB: PFNGLXCREATECONTEXTATTRIBSARBPROC;
  1661. {$ENDIF}
  1662. // ------------- GLX function/procedure definitions for Vendor/EXT extensions'}
  1663. {$IFDEF SUPPORT_GLX}
  1664. // ###########################################################
  1665. // function and procedure definitions for
  1666. // Vendor/EXT GLX extensions
  1667. // ###########################################################
  1668. // X_SGI_swap_control (EXT #40)
  1669. XSwapIntervalSGI: PFNGLXSWAPINTERVALSGIPROC;
  1670. XGetVideoSyncSGI: PFNGLXGETVIDEOSYNCSGIPROC;
  1671. XWaitVideoSyncSGI: PFNGLXWAITVIDEOSYNCSGIPROC;
  1672. XFreeContextEXT: PFNGLXFREECONTEXTEXTPROC;
  1673. XGetContextIDEXT: PFNGLXGETCONTEXTIDEXTPROC;
  1674. XGetCurrentDisplayEXT: PFNGLXGETCURRENTDISPLAYEXTPROC;
  1675. XImportContextEXT: PFNGLXIMPORTCONTEXTEXTPROC;
  1676. XQueryContextInfoEXT: PFNGLXQUERYCONTEXTINFOEXTPROC;
  1677. XCopySubBufferMESA: PFNGLXCOPYSUBBUFFERMESAPROC;
  1678. XCreateGLXPixmapMESA: PFNGLXCREATEGLXPIXMAPMESAPROC;
  1679. XReleaseBuffersMESA: PFNGLXRELEASEBUFFERSMESAPROC;
  1680. XSet3DfxModeMESA: PFNGLXSET3DFXMODEMESAPROC;
  1681. XBindTexImageEXT: PFNGLXBINDTEXIMAGEEXTPROC;
  1682. XReleaseTexImageEXT: PFNGLXRELEASETEXIMAGEEXTPROC;
  1683. // GLX 1.4
  1684. XMakeCurrentReadSGI: PFNGLXMAKECURRENTREADSGIPROC;
  1685. XGetCurrentReadDrawableSGI: PFNGLXGETCURRENTREADDRAWABLESGIPROC;
  1686. XGetFBConfigAttribSGIX: PFNGLXGETFBCONFIGATTRIBSGIXPROC;
  1687. XChooseFBConfigSGIX: PFNGLXCHOOSEFBCONFIGSGIXPROC;
  1688. XCreateGLXPixmapWithConfigSGIX: PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC;
  1689. XCreateContextWithConfigSGIX: PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC;
  1690. XGetVisualFromFBConfigSGIX: PFNGLXGETVISUALFROMFBCONFIGSGIXPROC;
  1691. XGetFBConfigFromVisualSGIX: PFNGLXGETFBCONFIGFROMVISUALSGIXPROC;
  1692. XCreateGLXPbufferSGIX: PFNGLXCREATEGLXPBUFFERSGIXPROC;
  1693. XDestroyGLXPbufferSGIX: PFNGLXDESTROYGLXPBUFFERSGIXPROC;
  1694. XQueryGLXPbufferSGIX: PFNGLXQUERYGLXPBUFFERSGIXPROC;
  1695. XSelectEventSGIX: PFNGLXSELECTEVENTSGIXPROC;
  1696. XGetSelectedEventSGIX: PFNGLXGETSELECTEDEVENTSGIXPROC;
  1697. XCushionSGI: PFNGLXCUSHIONSGIPROC;
  1698. XBindChannelToWindowSGIX: PFNGLXBINDCHANNELTOWINDOWSGIXPROC;
  1699. XChannelRectSGIX: PFNGLXCHANNELRECTSGIXPROC;
  1700. XQueryChannelRectSGIX: PFNGLXQUERYCHANNELRECTSGIXPROC;
  1701. XQueryChannelDeltasSGIX: PFNGLXQUERYCHANNELDELTASSGIXPROC;
  1702. XChannelRectSyncSGIX: PFNGLXCHANNELRECTSYNCSGIXPROC;
  1703. XJoinSwapGroupSGIX: PFNGLXJOINSWAPGROUPSGIXPROC;
  1704. XBindSwapBarrierSGIX: PFNGLXBINDSWAPBARRIERSGIXPROC;
  1705. XQueryMaxSwapBarriersSGIX: PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC;
  1706. XQueryHyperpipeNetworkSGIX: PFNGLXQUERYHYPERPIPENETWORKSGIXPROC;
  1707. XHyperpipeConfigSGIX: PFNGLXHYPERPIPECONFIGSGIXPROC;
  1708. XQueryHyperpipeConfigSGIX: PFNGLXQUERYHYPERPIPECONFIGSGIXPROC;
  1709. XDestroyHyperpipeConfigSGIX: PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC;
  1710. XBindHyperpipeSGIX: PFNGLXBINDHYPERPIPESGIXPROC;
  1711. XQueryHyperpipeBestAttribSGIX: PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC;
  1712. XHyperpipeAttribSGIX: PFNGLXHYPERPIPEATTRIBSGIXPROC;
  1713. XQueryHyperpipeAttribSGIX: PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC;
  1714. XGetAGPOffsetMESA: PFNGLXGETAGPOFFSETMESAPROC;
  1715. XEnumerateVideoDevicesNV: PFNGLXENUMERATEVIDEODEVICESNVPROC;
  1716. XBindVideoDeviceNV: PFNGLXBINDVIDEODEVICENVPROC;
  1717. XGetVideoDeviceNV: PFNGLXGETVIDEODEVICENVPROC;
  1718. XAllocateMemoryNV: PFNGLXALLOCATEMEMORYNVPROC;
  1719. XFreeMemoryNV: PFNGLXFREEMEMORYNVPROC;
  1720. XReleaseVideoDeviceNV: PFNGLXRELEASEVIDEODEVICENVPROC;
  1721. XBindVideoImageNV: PFNGLXBINDVIDEOIMAGENVPROC;
  1722. XReleaseVideoImageNV: PFNGLXRELEASEVIDEOIMAGENVPROC;
  1723. XSendPbufferToVideoNV: PFNGLXSENDPBUFFERTOVIDEONVPROC;
  1724. XGetVideoInfoNV: PFNGLXGETVIDEOINFONVPROC;
  1725. XJoinSwapGroupNV: PFNGLXJOINSWAPGROUPNVPROC;
  1726. XBindSwapBarrierNV: PFNGLXBINDSWAPBARRIERNVPROC;
  1727. XQuerySwapGroupNV: PFNGLXQUERYSWAPGROUPNVPROC;
  1728. XQueryMaxSwapGroupsNV: PFNGLXQUERYMAXSWAPGROUPSNVPROC;
  1729. XQueryFrameCountNV: PFNGLXQUERYFRAMECOUNTNVPROC;
  1730. XResetFrameCountNV: PFNGLXRESETFRAMECOUNTNVPROC;
  1731. XBindVideoCaptureDeviceNV: PFNGLXBINDVIDEOCAPTUREDEVICENVPROC;
  1732. XEnumerateVideoCaptureDevicesNV: PFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC;
  1733. XLockVideoCaptureDeviceNV: PFNGLXLOCKVIDEOCAPTUREDEVICENVPROC;
  1734. XQueryVideoCaptureDeviceNV: PFNGLXQUERYVIDEOCAPTUREDEVICENVPROC;
  1735. XReleaseVideoCaptureDeviceNV: PFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC;
  1736. XSwapIntervalEXT: PFNGLXSWAPINTERVALEXTPROC;
  1737. XCopyImageSubDataNV: PFNGLXCOPYIMAGESUBDATANVPROC;
  1738. {$ENDIF}
  1739. // ------------------------------ AGL function/procedure
  1740. {$IFDEF DARWIN}
  1741. // AGL extension checks
  1742. A_aux_depth_stencil, A_client_storage, A_element_array, A_fence,
  1743. A_float_pixels, A_flush_buffer_range, A_flush_render, A_object_purgeable,
  1744. A_packed_pixels, A_pixel_buffer, A_rgb_422, A_specular_vector,
  1745. A_texture_range, A_transform_hint, A_vertex_array_object,
  1746. A_vertex_array_range, A_vertex_program_evaluators, A_ycbcr_422: boolean;
  1747. ACreatePixelFormat: function(gdevs: PAGLDevice; ndev: GLint; attribs: PGLint): TAGLPixelFormat; cdecl;
  1748. AChoosePixelFormat: function(gdevs: PAGLDevice; ndev: GLint; attribs: PGLint): TAGLPixelFormat; cdecl;
  1749. ADestroyPixelFormat: procedure(pix: TAGLPixelFormat); cdecl;
  1750. ADescribePixelFormat: function(pix: TAGLPixelFormat; attrib: TGLint; Value: PGLint): TGLboolean; cdecl;
  1751. AGetCGLPixelFormat: function(pix: TAGLPixelFormat; cgl_pix: Pointer): TGLboolean; cdecl;
  1752. ADisplaysOfPixelFormat: function(pix: TAGLPixelFormat; ndevs: PGLint): CGDirectDisplayID; cdecl;
  1753. ANextPixelFormat: function(pix: TAGLPixelFormat): TAGLPixelFormat; cdecl;
  1754. // Managing context
  1755. ACreateContext: function(pix: TAGLPixelFormat; share: TAGLContext): TAGLContext; cdecl;
  1756. ACopyContext: function(src: TAGLContext; dst: TAGLContext; mask: Cardinal): TGLboolean; cdecl;
  1757. ADestroyContext: function(ctx: TAGLContext): GLboolean; cdecl;
  1758. AUpdateContext: function(ctx: TAGLContext): GLboolean; cdecl;
  1759. ASetCurrentContext: function(ctx: TAGLContext): GLboolean; cdecl;
  1760. AGetCGLContext: function(ctx: TAGLContext; cgl_ctx: Pointer): GLboolean; cdecl;
  1761. AGetCurrentContext: function(): TAGLContext; cdecl;
  1762. ASwapBuffers: procedure(ctx: TAGLContext); cdecl;
  1763. // Managing Pixel Buffers
  1764. ACreatePBuffer: function(Width: GLint; Height: GLint; target: GLenum;
  1765. internalFormat: GLenum; max_level: longint; pbuffer: PAGLPbuffer): GLboolean; cdecl;
  1766. ADestroyPBuffer: function(pbuffer: TAGLPbuffer): GLboolean; cdecl;
  1767. ADescribePBuffer: function(pbuffer: TAGLPbuffer; Width, Height: PGLint;
  1768. target: PGLenum; internalFormat: PGLenum; max_level: PGLint): TGLboolean; cdecl;
  1769. AGetPBuffer: function(ctx: TAGLContext; out pbuffer: TAGLPbuffer;
  1770. face, level, screen: PGLint): GLboolean; cdecl;
  1771. ASetPBuffer: function(ctx: TAGLContext; pbuffer: TAGLPbuffer; face: GLint;
  1772. level: GLint; screen: GLint): GLboolean; cdecl;
  1773. ATexImagePBuffer: function(ctx: TAGLContext; pbuffer: TAGLPbuffer;
  1774. Source: GLint): TGLboolean; cdecl;
  1775. // Managing Drawable Objects
  1776. ASetDrawable: function(ctx: TAGLContext; draw: TAGLDrawable): GLboolean; cdecl; // deprecated
  1777. AGetDrawable: function(ctx: TAGLContext): TAGLDrawable; cdecl; // deprecated
  1778. ASetFullScreen: function(ctx: TAGLContext; Width: TGLsizei; Height: TGLsizei;
  1779. freq: TGLsizei; device: GLint): GLboolean; cdecl;
  1780. ASetOffScreen: function(ctx: TAGLContext; Width, Height, rowbytes: TGLsizei;
  1781. out baseaddr: Pointer): GLboolean; cdecl;
  1782. // Getting and Setting Context Options
  1783. AEnable: function(ctx: TAGLContext; pname: Cardinal): GLboolean; cdecl;
  1784. ADisable: function(ctx: TAGLContext; pname: Cardinal): GLboolean; cdecl;
  1785. AIsEnabled: function(ctx: TAGLContext; pname: Cardinal): GLboolean; cdecl;
  1786. ASetInteger: function(ctx: TAGLContext; pname: GLenum; params: PGLint): GLboolean; cdecl;
  1787. AGetInteger: function(ctx: TAGLContext; pname: GLenum; params: PGLint): GLboolean; cdecl;
  1788. // Getting and Setting Global Information
  1789. AConfigure: function(pname: Cardinal; param: Cardinal): TGLboolean; cdecl;
  1790. AGetVersion: procedure(major: PGLint; minor: PGLint); cdecl;
  1791. AResetLibrary: procedure(); cdecl;
  1792. // Getting Renderer Information
  1793. ADescribeRenderer: function(rend: TAGLRendererInfo; prop: GLint; Value: PGLint): GLboolean; cdecl;
  1794. ADestroyRendererInfo: procedure(rend: TAGLRendererInfo); cdecl;
  1795. ANextRendererInfo: function(rend: TAGLRendererInfo): TAGLRendererInfo; cdecl;
  1796. AQueryRendererInfoForCGDirectDisplayIDs: function(dspIDs: CGDirectDisplayID;
  1797. ndev: TGLint): TAGLRendererInfo; cdecl;
  1798. // Managing Virtual Screens
  1799. AGetVirtualScreen: function(ctx: TAGLContext): GLint; cdecl;
  1800. ASetVirtualScreen: function(ctx: TAGLContext; screen: TGLint): TGLboolean; cdecl;
  1801. // Getting and Setting Windows
  1802. ASetWindowRef: function(ctx: TAGLContext; window: WindowRef): TGLboolean; cdecl;
  1803. AGetWindowRef: function(ctx: TAGLContext): TGLint; cdecl;
  1804. // Getting and Setting HIView Objects
  1805. ASetHIViewRef: function(ctx: TAGLContext; hiview: HIViewRef): TGLboolean; cdecl;
  1806. AGetHIViewRef: function(ctx: TAGLContext): HIViewRef; cdecl;
  1807. // Getting Error Information
  1808. AGetError: function(): Cardinal; cdecl;
  1809. AErrorString: function(code: Cardinal): PAnsiChar; cdecl;
  1810. {$ENDIF}
  1811. // ------------------------------ EGL function/procedure
  1812. {$IFDEF EGL_SUPPORT}
  1813. OES_depth24, OES_depth32, OES_depth_texture, OES_element_index_uint,
  1814. OES_fbo_render_mipmap, OES_get_program_binary, OES_mapbuffer,
  1815. OES_packed_depth_stencil, OES_rgb8_rgba8, OES_standard_derivatives,
  1816. OES_texture_3D, OES_texture_float, OES_texture_float_linear,
  1817. OES_texture_half_float, OES_texture_half_float_linear, OES_texture_npot,
  1818. OES_vertex_array_object, OES_vertex_half_float: boolean;
  1819. EGetError: function: EGLint;
  1820. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1821. EGetDisplay: function(display_id: EGLNativeDisplayType): EGLDisplay;
  1822. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1823. EInitialize: function(dpy: EGLDisplay; major: pEGLint; minor: pEGLint): EGLBoolean;
  1824. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1825. ETerminate: function(dpy: EGLDisplay): EGLBoolean;
  1826. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1827. EQueryString: function(dpy: EGLDisplay; name: EGLint): pchar;
  1828. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1829. EGetConfigs: function(dpy: EGLDisplay; configs: pEGLConfig;
  1830. config_size: EGLint; num_config: pEGLint): EGLBoolean;
  1831. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1832. EChooseConfig: function(dpy: EGLDisplay; attrib_list: pEGLint;
  1833. configs: pEGLConfig; config_size: EGLint; num_config: pEGLint): EGLBoolean;
  1834. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1835. EGetConfigAttrib: function(dpy: EGLDisplay; config: EGLConfig;
  1836. attribute: EGLint; Value: pEGLint): EGLBoolean;
  1837. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1838. ECreateWindowSurface: function(dpy: EGLDisplay; config: EGLConfig;
  1839. win: EGLNativeWindowType; attrib_list: pEGLint): EGLSurface;
  1840. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1841. ECreatePbufferSurface: function(dpy: EGLDisplay; config: EGLConfig;
  1842. attrib_list: pEGLint): EGLSurface;
  1843. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1844. ECreatePixmapSurface: function(dpy: EGLDisplay; config: EGLConfig;
  1845. pixmap: EGLNativePixmapType; attrib_list: pEGLint): EGLSurface;
  1846. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1847. EDestroySurface: function(dpy: EGLDisplay; surface: EGLSurface): EGLBoolean;
  1848. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1849. EQuerySurface: function(dpy: EGLDisplay; surface: EGLSurface;
  1850. attribute: EGLint; Value: pEGLint): EGLBoolean;
  1851. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1852. EBindAPI: function(api: EGLenum): EGLBoolean;
  1853. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1854. EQueryAPI: function: EGLenum;
  1855. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1856. EWaitClient: function: EGLBoolean;
  1857. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1858. EReleaseThread: function: EGLBoolean;
  1859. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1860. ECreatePbufferFromClientBuffer: function(dpy: EGLDisplay; buftype: EGLenum;
  1861. buffer: EGLClientBuffer; config: EGLConfig; attrib_list: pEGLint): EGLSurface;
  1862. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1863. ESurfaceAttrib: function(dpy: EGLDisplay; surface: EGLSurface;
  1864. attribute: EGLint; Value: EGLint): EGLBoolean;
  1865. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1866. EBindTexImage: function(dpy: EGLDisplay; surface: EGLSurface;
  1867. buffer: EGLint): EGLBoolean;
  1868. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1869. EReleaseTexImage: function(dpy: EGLDisplay; surface: EGLSurface;
  1870. buffer: EGLint): EGLBoolean;
  1871. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1872. ESwapInterval: function(dpy: EGLDisplay; interval: EGLint): EGLBoolean;
  1873. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1874. ECreateContext: function(dpy: EGLDisplay; config: EGLConfig;
  1875. share_context: EGLContext; attrib_list: pEGLint): EGLContext;
  1876. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1877. EDestroyContext: function(dpy: EGLDisplay; ctx: EGLContext): EGLBoolean;
  1878. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1879. EMakeCurrent: function(dpy: EGLDisplay; draw: EGLSurface; read: EGLSurface;
  1880. ctx: EGLContext): EGLBoolean;
  1881. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1882. EGetCurrentContext: function: EGLContext;
  1883. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1884. EGetCurrentSurface: function(readdraw: EGLint): EGLSurface;
  1885. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1886. EGetCurrentDisplay: function: EGLDisplay;
  1887. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1888. EQueryContext: function(dpy: EGLDisplay; ctx: EGLContext; attribute: EGLint;
  1889. Value: pEGLint): EGLBoolean;
  1890. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1891. EWaitGL: function: EGLBoolean;
  1892. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1893. EWaitNative: function(engine: EGLint): EGLBoolean;
  1894. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1895. ESwapBuffers: function(dpy: EGLDisplay; surface: EGLSurface): EGLBoolean;
  1896. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1897. ECopyBuffers: function(dpy: EGLDisplay; surface: EGLSurface;
  1898. target: EGLNativePixmapType): EGLBoolean;
  1899. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1900. {$ENDIF EGL_SUPPORT}
  1901. // ------------------------------ locate functions/procedures for OpenGL Utility (GLU) extensions'} {$ENDIF}
  1902. // ###########################################################
  1903. // locate functions and procedures for
  1904. // GLU extensions
  1905. // ###########################################################
  1906. UNurbsCallbackDataEXT: procedure(nurb: PGLUnurbs; userData: Pointer);
  1907. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1908. UNewNurbsTessellatorEXT: function: PGLUnurbs;
  1909. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1910. UDeleteNurbsTessellatorEXT: procedure(nurb: PGLUnurbs);
  1911. {$IFDEF MSWINDOWS}stdcall{$ELSE} cdecl{$ENDIF};
  1912. constructor Create;
  1913. procedure Initialize(ATemporary: boolean = False);
  1914. procedure Close;
  1915. procedure CheckError;
  1916. procedure ClearError;
  1917. property IsInitialized: boolean read FInitialized;
  1918. property DebugMode: boolean read FDebug write FDebug;
  1919. end;
  1920. // ------------------------------ Windows OpenGL (WGL) support functions
  1921. {$IFDEF SUPPORT_WGL}
  1922. function wglGetProcAddress(ProcName: PAnsiChar): Pointer; stdcall; external opengl32;
  1923. function wglCopyContext(p1: HGLRC; p2: HGLRC; p3: cardinal): BOOL; stdcall; external opengl32;
  1924. function wglCreateContext(DC: HDC): HGLRC; stdcall; external opengl32;
  1925. function wglCreateLayerContext(p1: HDC; p2: integer): HGLRC; stdcall; external opengl32;
  1926. function wglDeleteContext(p1: HGLRC): BOOL; stdcall; external opengl32;
  1927. function wglDescribeLayerPlane(p1: HDC; p2, p3: integer; p4: cardinal; var p5: TLayerPlaneDescriptor): BOOL; stdcall; external opengl32;
  1928. function wglGetCurrentContext: HGLRC; stdcall; external opengl32;
  1929. function wglGetCurrentDC: HDC; stdcall; external opengl32;
  1930. function wglGetLayerPaletteEntries(p1: HDC; p2, p3, p4: integer; var pcr): integer; stdcall; external opengl32;
  1931. function wglMakeCurrent(DC: HDC; p2: HGLRC): BOOL; stdcall; external opengl32;
  1932. function wglRealizeLayerPalette(p1: HDC; p2: integer; p3: BOOL): BOOL; stdcall; external opengl32;
  1933. function wglSetLayerPaletteEntries(p1: HDC; p2, p3, p4: integer; var pcr): integer; stdcall; external opengl32;
  1934. function wglShareLists(p1, p2: HGLRC): BOOL; stdcall; external opengl32;
  1935. function wglSwapLayerBuffers(p1: HDC; p2: cardinal): BOOL; stdcall; external opengl32;
  1936. function wglSwapMultipleBuffers(p1: UINT; const p2: PWGLSwap): DWORD; stdcall; external opengl32;
  1937. function wglUseFontBitmapsA(DC: HDC; p2, p3, p4: DWORD): BOOL; stdcall; external opengl32;
  1938. function wglUseFontOutlinesA(p1: HDC; p2, p3, p4: DWORD; p5, p6: single;
  1939. p7: integer; p8: PGlyphMetricsFloat): BOOL; stdcall; external opengl32;
  1940. function wglUseFontBitmapsW(DC: HDC; p2, p3, p4: DWORD): BOOL; stdcall; external opengl32;
  1941. function wglUseFontOutlinesW(p1: HDC; p2, p3, p4: DWORD; p5, p6: single;
  1942. p7: integer; p8: PGlyphMetricsFloat): BOOL; stdcall; external opengl32;
  1943. function wglUseFontBitmaps(DC: HDC; p2, p3, p4: DWORD): BOOL; stdcall; external opengl32 Name 'wglUseFontBitmapsA';
  1944. function wglUseFontOutlines(p1: HDC; p2, p3, p4: DWORD; p5, p6: single;
  1945. p7: integer; p8: PGlyphMetricsFloat): BOOL; stdcall; external opengl32 Name 'wglUseFontOutlinesA';
  1946. {$ENDIF}
  1947. // ------------- OpenGL Extension to the X Window System (GLX) support functions'}
  1948. {$IFDEF SUPPORT_GLX}
  1949. // GLX 1.0
  1950. function glXGetProcAddress(const Name: PAnsiChar): Pointer; cdecl; external opengl32;
  1951. function glXGetProcAddressARB(const Name: PAnsiChar): Pointer; cdecl; external opengl32;
  1952. function glXChooseVisual(dpy: PDisplay; screen: TGLint; attribList: PGLint)
  1953. : PXVisualInfo; cdecl; external opengl32;
  1954. function glXCreateContext(dpy: PDisplay; vis: PXVisualInfo;
  1955. shareList: GLXContext; direct: TGLboolean): GLXContext; cdecl; external opengl32;
  1956. procedure glXDestroyContext(dpy: PDisplay; ctx: GLXContext); cdecl; external opengl32;
  1957. function glXMakeCurrent(dpy: PDisplay; drawable: GLXDrawable; ctx: GLXContext)
  1958. : TGLboolean; cdecl; external opengl32;
  1959. procedure glXCopyContext(dpy: PDisplay; src: GLXContext; dst: GLXContext;
  1960. mask: Cardinal); cdecl; external opengl32;
  1961. procedure glXSwapBuffers(dpy: PDisplay; drawable: GLXDrawable); cdecl; external opengl32;
  1962. function glXCreateGLXPixmap(dpy: PDisplay; visual: PXVisualInfo;
  1963. pixmap: GLXPixmap): GLXPixmap; cdecl; external opengl32;
  1964. procedure glXDestroyGLXPixmap(dpy: PDisplay; pixmap: GLXPixmap); cdecl; external opengl32;
  1965. function glXQueryExtension(dpy: PDisplay; errorb: PGLint; event: PGLint): TGLboolean; cdecl; external opengl32;
  1966. function glXQueryVersion(dpy: PDisplay; maj: PGLint; min: PGLint): TGLboolean; cdecl; external opengl32;
  1967. function glXIsDirect(dpy: PDisplay; ctx: GLXContext): TGLboolean; cdecl; external opengl32;
  1968. function glXGetConfig(dpy: PDisplay; visual: PXVisualInfo; attrib: TGLint;
  1969. Value: PGLint): TGLint; cdecl; external opengl32;
  1970. function glXGetCurrentContext: GLXContext; cdecl; external opengl32;
  1971. function glXGetCurrentDrawable: GLXDrawable; cdecl; external opengl32;
  1972. procedure glXWaitGL; cdecl; external opengl32;
  1973. procedure glXWaitX; cdecl; external opengl32;
  1974. procedure glXUseXFont(font: XFont; First: TGLint; Count: TGLint; list: TGLint); cdecl; external opengl32;
  1975. // GLX 1.1 and later
  1976. function glXQueryExtensionsString(dpy: PDisplay; screen: TGLint): PAnsiChar;
  1977. cdecl; external opengl32;
  1978. function glXQueryServerString(dpy: PDisplay; screen: TGLint; Name: TGLint)
  1979. : PAnsiChar; cdecl; external opengl32;
  1980. function glXGetClientString(dpy: PDisplay; Name: TGLint): PAnsiChar; cdecl;
  1981. external opengl32;
  1982. // GLX 1.2 and later
  1983. function glXGetCurrentDisplay: PDisplay; cdecl; external opengl32;
  1984. {$ENDIF}
  1985. // ------------- OpenGL Extension to the Apple System (AGL) support functions'}
  1986. {$IFDEF DARWIN}
  1987. function aglChoosePixelFormat(gdevs: PAGLDevice; ndev: GLint; attribs: PGLint): TAGLPixelFormat; cdecl; external libAGL;
  1988. procedure aglDestroyPixelFormat(pix: TAGLPixelFormat); cdecl; external libAGL;
  1989. function aglCreateContext(pix: TAGLPixelFormat; share: TAGLContext): TAGLContext; cdecl; external libAGL;
  1990. function aglDestroyContext(ctx: TAGLContext): GLboolean; cdecl; external libAGL;
  1991. function aglSetCurrentContext(ctx: TAGLContext): GLboolean; cdecl; external libAGL;
  1992. function aglSetDrawable(ctx: TAGLContext; draw: TAGLDrawable): GLboolean; cdecl; external libAGL;{$ENDIF}
  1993. function gluErrorString(errCode: Cardinal): PAnsiChar; {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external glu32;
  1994. function gluGetString(Name: Cardinal): PAnsiChar; {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external glu32;
  1995. procedure gluOrtho2D(left, right, bottom, top: TGLdouble);
  1996. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl;{$ENDIF} external glu32;
  1997. procedure gluPerspective(fovy, aspect, zNear, zFar: TGLdouble);{$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl;{$ENDIF} external glu32;
  1998. procedure gluPickMatrix(X, y, Width, Height: TGLdouble; const Viewport: TVector4i);
  1999. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl;{$ENDIF} external glu32;
  2000. procedure gluLookAt(eyex, eyey, eyez, centerx, centery, centerz, upx, upy, upz: TGLdouble);
  2001. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl;{$ENDIF} external glu32;
  2002. function gluProject(objx, objy, objz: TGLdouble; const modelMatrix: TMatrix4d;
  2003. const projMatrix: TMatrix4d; const Viewport: TVector4i;
  2004. winx, winy, winz: PGLdouble): TGLint;
  2005. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external glu32;
  2006. function gluUnProject(winx, winy, winz: TGLdouble; const modelMatrix: TMatrix4d;
  2007. const projMatrix: TMatrix4d; const Viewport: TVector4i;
  2008. objx, objy, objz: PGLdouble): TGLint;
  2009. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external glu32;
  2010. function gluScaleImage(format: Cardinal; widthin, heightin: TGLint;
  2011. typein: Cardinal; datain: Pointer; widthout, heightout: TGLint;
  2012. typeout: Cardinal; dataout: Pointer): TGLint; {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external glu32;
  2013. function gluBuild1DMipmaps(target: Cardinal; Components, Width: TGLint;
  2014. format, atype: Cardinal; Data: Pointer): TGLint; {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external glu32;
  2015. function gluBuild2DMipmaps(target: Cardinal; Components, Width, Height: TGLint;
  2016. format, atype: Cardinal; Data: Pointer): TGLint; {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external glu32;
  2017. function gluNewQuadric: PGLUquadric; {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external glu32;
  2018. procedure gluDeleteQuadric(state: PGLUquadric);
  2019. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external glu32;
  2020. procedure gluQuadricNormals(quadObject: PGLUquadric; normals: Cardinal);
  2021. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl;{$ENDIF} external glu32;
  2022. procedure gluQuadricTexture(quadObject: PGLUquadric; textureCoords: TGLboolean);
  2023. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl;{$ENDIF} external glu32;
  2024. procedure gluQuadricOrientation(quadObject: PGLUquadric; orientation: Cardinal);
  2025. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl;{$ENDIF} external glu32;
  2026. procedure gluQuadricDrawStyle(quadObject: PGLUquadric; drawStyle: Cardinal);
  2027. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl;{$ENDIF} external glu32;
  2028. procedure gluCylinder(quadObject: PGLUquadric;
  2029. baseRadius, topRadius, Height: TGLdouble; slices, stacks: TGLint);
  2030. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl;{$ENDIF} external glu32;
  2031. procedure gluDisk(quadObject: PGLUquadric; innerRadius, outerRadius: TGLdouble;
  2032. slices, loops: TGLint);
  2033. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl;{$ENDIF} external glu32;
  2034. procedure gluPartialDisk(quadObject: PGLUquadric;
  2035. innerRadius, outerRadius: TGLdouble; slices, loops: TGLint;
  2036. startAngle, sweepAngle: TGLdouble);
  2037. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl;{$ENDIF} external glu32;
  2038. procedure gluSphere(quadObject: PGLUquadric; radius: TGLdouble;
  2039. slices, stacks: TGLint);
  2040. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl;{$ENDIF} external glu32;
  2041. procedure gluQuadricCallback(quadObject: PGLUquadric; which: Cardinal;
  2042. fn: TGLUQuadricErrorProc); {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl;
  2043. {$ENDIF} external glu32;
  2044. function gluNewTess: PGLUtesselator; {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external glu32;
  2045. procedure gluDeleteTess(tess: PGLUtesselator);
  2046. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external glu32;
  2047. procedure gluTessBeginPolygon(tess: PGLUtesselator; polygon_data: Pointer);
  2048. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl;
  2049. {$ENDIF} external glu32;
  2050. procedure gluTessBeginContour(tess: PGLUtesselator); {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external glu32;
  2051. procedure gluTessVertex(tess: PGLUtesselator; const coords: TVector3d;
  2052. Data: Pointer);
  2053. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl;{$ENDIF} external glu32;
  2054. procedure gluTessEndContour(tess: PGLUtesselator); {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external glu32;
  2055. procedure gluTessEndPolygon(tess: PGLUtesselator);
  2056. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external glu32;
  2057. procedure gluTessProperty(tess: PGLUtesselator; which: Cardinal;
  2058. Value: TGLdouble);
  2059. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl;{$ENDIF} external glu32;
  2060. procedure gluTessNormal(tess: PGLUtesselator; X, y, z: TGLdouble);
  2061. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl;{$ENDIF} external glu32;
  2062. procedure gluTessCallback(tess: PGLUtesselator; which: Cardinal; fn: Pointer);
  2063. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl;{$ENDIF} external glu32;
  2064. procedure gluGetTessProperty(tess: PGLUtesselator; which: Cardinal; Value: PGLdouble);
  2065. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl;{$ENDIF} external glu32;
  2066. function gluNewNurbsRenderer: PGLUnurbs; {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external glu32;
  2067. procedure gluDeleteNurbsRenderer(nobj: PGLUnurbs);
  2068. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external glu32;
  2069. procedure gluBeginSurface(nobj: PGLUnurbs);
  2070. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external glu32;
  2071. procedure gluBeginCurve(nobj: PGLUnurbs);
  2072. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external glu32;
  2073. procedure gluEndCurve(nobj: PGLUnurbs);
  2074. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external glu32;
  2075. procedure gluEndSurface(nobj: PGLUnurbs);
  2076. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external glu32;
  2077. procedure gluBeginTrim(nobj: PGLUnurbs);
  2078. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external glu32;
  2079. procedure gluEndTrim(nobj: PGLUnurbs);
  2080. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external glu32;
  2081. procedure gluPwlCurve(nobj: PGLUnurbs; Count: TGLint; points: PGLfloat; stride: TGLint; atype: Cardinal);
  2082. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external glu32;
  2083. procedure gluNurbsCurve(nobj: PGLUnurbs; nknots: TGLint; knot: PGLfloat;
  2084. stride: TGLint; ctlarray: PGLfloat; order: TGLint; atype: Cardinal);
  2085. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl;{$ENDIF} external glu32;
  2086. procedure gluNurbsSurface(nobj: PGLUnurbs; sknot_count: TGLint; sknot: PGLfloat;
  2087. tknot_count: TGLint; tknot: PGLfloat; s_stride, t_stride: TGLint;
  2088. ctlarray: PGLfloat; sorder, torder: TGLint; atype: Cardinal);
  2089. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl;{$ENDIF} external glu32;
  2090. procedure gluLoadSamplingMatrices(nobj: PGLUnurbs; const modelMatrix: TMatrix4f;
  2091. const projMatrix: TMatrix4f; const Viewport: TVector4i);
  2092. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl;{$ENDIF} external glu32;
  2093. procedure gluNurbsProperty(nobj: PGLUnurbs; aproperty: Cardinal; Value: TGLfloat);
  2094. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl;{$ENDIF} external glu32;
  2095. procedure gluGetNurbsProperty(nobj: PGLUnurbs; aproperty: Cardinal; Value: PGLfloat);
  2096. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl;{$ENDIF} external glu32;
  2097. procedure gluNurbsCallback(nobj: PGLUnurbs; which: Cardinal;
  2098. fn: TGLUNurbsErrorProc);
  2099. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl;{$ENDIF} external glu32;
  2100. procedure gluBeginPolygon(tess: PGLUtesselator);
  2101. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external glu32;
  2102. procedure gluNextContour(tess: PGLUtesselator; atype: Cardinal);
  2103. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl;{$ENDIF} external glu32;
  2104. procedure gluEndPolygon(tess: PGLUtesselator);
  2105. {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external glu32;
  2106. function GetProcAddressGLLib(ProcName: PAnsiChar): Pointer;
  2107. function GetProcAddressGLS(ProcName: PAnsiChar): Pointer;
  2108. procedure CloseOpenGL;
  2109. function InitOpenGL: boolean;
  2110. function InitOpenGLFromLibrary(const GLName, GLUName: string): boolean;
  2111. function IsOpenGLInitialized: boolean;
  2112. // compatibility routines
  2113. procedure UnloadOpenGL;
  2114. function LoadOpenGL: boolean;
  2115. function LoadOpenGLFromLibrary(GLName, GLUName: string): boolean;
  2116. function IsOpenGLLoaded: boolean;
  2117. function IsMesaGL: boolean;
  2118. procedure TrimAndSplitVersionString(buffer: string; var max, min: integer);
  2119. function IsVersionMet(MajorVersion, MinorVersion, actualMajorVersion,
  2120. actualMinorVersion: integer): boolean;
  2121. //------------------------------------------------------------------
  2122. implementation
  2123. //------------------------------------------------------------------
  2124. const
  2125. glPrefix = 'gl';
  2126. // ************** Windows specific ********************
  2127. {$IFDEF MSWINDOWS}
  2128. const
  2129. INVALID_MODULEHANDLE = 0;
  2130. var
  2131. GLHandle: HINST;
  2132. GLUHandle: HINST;
  2133. {$IFDEF EGL_SUPPORT}
  2134. EGLHandle: HINST;
  2135. EGL2Handle: HINST;
  2136. {$ENDIF}
  2137. function GetProcAddressGLS(ProcName: PAnsiChar): Pointer;
  2138. begin
  2139. {$IFNDEF EGL_SUPPORT}
  2140. Result := wglGetProcAddress(ProcName);
  2141. {$ELSE}
  2142. Result := getProcAddress(EGL2Handle, ProcName);
  2143. {$ENDIF}
  2144. end;
  2145. {$IFDEF EGL_SUPPORT}
  2146. function GetProcAddressEGL(ProcName: PAnsiChar): Pointer;
  2147. begin
  2148. Result := getProcAddress(EGLHandle, ProcName);
  2149. end;
  2150. {$ENDIF}
  2151. {$ENDIF}
  2152. function GetProcAddressGLLib(ProcName: PAnsiChar): Pointer;
  2153. begin
  2154. Result := getProcAddress(GLHandle, ProcName);
  2155. end;
  2156. var
  2157. vNotInformed: boolean = True;
  2158. procedure DebugCallBack(Source: Cardinal; type_: Cardinal; id: Cardinal;
  2159. severity: Cardinal; length: TGLsizei; const message: PAnsiChar;
  2160. userParam: Pointer);
  2161. {$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
  2162. begin
  2163. {$IFDEF USE_LOGGING}
  2164. if length > 0 then
  2165. GLSLogger.LogDebug(string(message));
  2166. {$ENDIF}
  2167. end;
  2168. procedure DebugCallBackAMD(id: Cardinal; category: Cardinal; severity: Cardinal;
  2169. length: TGLsizei; message: PAnsiChar; userParam: Pointer);
  2170. {$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
  2171. begin
  2172. if length > 0 then
  2173. GLSLogger.LogDebug(string(message));
  2174. end;
  2175. constructor TGLExtensionsAndEntryPoints.Create;
  2176. begin
  2177. FInitialized := False;
  2178. end;
  2179. procedure glCap;{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
  2180. begin
  2181. {$IFDEF USE_LOGGING}
  2182. GLSLogger.LogError('Call OpenGL function with undefined entry point');
  2183. {$ENDIF}
  2184. Abort;
  2185. end;
  2186. function TGLExtensionsAndEntryPoints.GetAddress(const ProcName: string): Pointer;
  2187. var
  2188. vName: string;
  2189. begin
  2190. vName := glPrefix + ProcName;
  2191. Result := GetProcAddressGLS(PAnsiChar(AnsiString(vName)));
  2192. if Result = nil then
  2193. begin
  2194. vName := glPrefix + ProcName + 'ARB';
  2195. Result := GetProcAddressGLS(PAnsiChar(AnsiString(vName)));
  2196. if Result = nil then
  2197. begin
  2198. vName := glPrefix + ProcName;
  2199. Result := GetProcAddressGLLib(PAnsiChar(AnsiString(vName)));
  2200. if Result = nil then
  2201. begin
  2202. vName := glPrefix + ProcName + 'EXT';
  2203. Result := GetProcAddressGLS(PAnsiChar(AnsiString(vName)));
  2204. if Result = nil then
  2205. begin
  2206. vName := glPrefix + ProcName + 'NV';
  2207. Result := GetProcAddressGLS(PAnsiChar(AnsiString(vName)));
  2208. if Result = nil then
  2209. begin
  2210. vName := glPrefix + ProcName + 'ATI';
  2211. Result := GetProcAddressGLS(PAnsiChar(AnsiString(vName)));
  2212. if Result = nil then
  2213. begin
  2214. vName := glPrefix + ProcName + 'OES';
  2215. Result := GetProcAddressGLS(PAnsiChar(AnsiString(vName)));
  2216. if Result = nil then
  2217. Result := @glCap;
  2218. end;
  2219. end;
  2220. end;
  2221. end;
  2222. end;
  2223. end;
  2224. {$IFDEF USE_OPENGL_DEBUG}
  2225. if Result <> @glCap then
  2226. GLSLogger.LogDebug('Finded entry point of ' + vName)
  2227. else
  2228. GLSLogger.LogDebug('Can''t find entry point of ' + vName);
  2229. {$ENDIF}
  2230. end;
  2231. function TGLExtensionsAndEntryPoints.GetAddressAlt(const ProcName1,
  2232. ProcName2: string): Pointer;
  2233. begin
  2234. Result := GetAddress(ProcName1);
  2235. if Result = @glCap then
  2236. Result := GetAddress(ProcName2);
  2237. end;
  2238. function TGLExtensionsAndEntryPoints.GetAddressNoSuffixes
  2239. (const ProcName: string): Pointer;
  2240. var
  2241. vName: string;
  2242. begin
  2243. vName := glPrefix + ProcName;
  2244. Result := GetProcAddressGLS(PAnsiChar(AnsiString(vName)));
  2245. if Result = nil then
  2246. Result := @glCap;
  2247. {$IFDEF USE_OPENGL_DEBUG}
  2248. if Result <> @glCap then
  2249. GLSLogger.LogDebug('Finded entry point of ' + vName)
  2250. else
  2251. GLSLogger.LogDebug('Can''t find entry point of ' + vName);
  2252. {$ENDIF}
  2253. end;
  2254. function TGLExtensionsAndEntryPoints.GetCapAddress: Pointer;
  2255. begin
  2256. Result := @glCap;
  2257. end;
  2258. procedure TGLExtensionsAndEntryPoints.CheckError;
  2259. var
  2260. glError: Cardinal;
  2261. Count: word;
  2262. begin
  2263. if FInitialized then
  2264. try
  2265. glError := GetError();
  2266. if glError <> GL_NO_ERROR then
  2267. begin
  2268. Count := 0;
  2269. try
  2270. while (GetError <> GL_NO_ERROR) and (Count < 6) do
  2271. Inc(Count);
  2272. except
  2273. end;
  2274. if not(FDebug and ARB_debug_output) then
  2275. case glError of
  2276. GL_INVALID_ENUM:
  2277. GLSLogger.LogError(format(strOpenGLError, ['Invalid enum']));
  2278. GL_INVALID_VALUE:
  2279. GLSLogger.LogError(format(strOpenGLError, ['Invalid value']));
  2280. GL_INVALID_OPERATION:
  2281. GLSLogger.LogError(format(strOpenGLError,
  2282. ['Invalid Operation']));
  2283. GL_OUT_OF_MEMORY:
  2284. GLSLogger.LogError(format(strOpenGLError, ['Out of memory']));
  2285. end;
  2286. end;
  2287. except
  2288. GLSLogger.LogError(format(strOpenGLError, ['Exception in glGetError']));
  2289. end;
  2290. end;
  2291. procedure TGLExtensionsAndEntryPoints.ClearError;
  2292. var
  2293. n: integer;
  2294. begin
  2295. n := 0;
  2296. while (GetError <> GL_NO_ERROR) and (n < 6) do
  2297. Inc(n);
  2298. end;
  2299. function TGLExtensionsAndEntryPoints.CheckExtension(const Extension
  2300. : string): boolean;
  2301. var
  2302. ExtPos: integer;
  2303. begin
  2304. // First find the position of the extension string as substring in Buffer.
  2305. ExtPos := Pos(Extension, FBuffer);
  2306. Result := ExtPos > 0;
  2307. // Now check that it isn't only a substring of another extension.
  2308. if Result then
  2309. Result := ((ExtPos + length(Extension) - 1) = length(FBuffer)) or
  2310. (FBuffer[ExtPos + length(Extension)] = ' ');
  2311. {$IFDEF USE_OPENGL_DEBUG}
  2312. if Result then
  2313. GLSLogger.LogDebug(Extension);
  2314. {$ENDIF}
  2315. end;
  2316. procedure TGLExtensionsAndEntryPoints.Initialize(ATemporary: boolean);
  2317. var
  2318. i: integer;
  2319. numExt: TGLint;
  2320. MajorVersion, MinorVersion: integer;
  2321. begin
  2322. GLSLogger.LogNotice('Getting OpenGL entry points and extension');
  2323. {$IFDEF SUPPORT_WGL}
  2324. ReadWGLExtensions;
  2325. ReadWGLImplementationProperties;
  2326. {$ENDIF}
  2327. {$IFDEF SUPPORT_GLX}
  2328. ReadGLXExtensions;
  2329. ReadGLXImplementationProperties;
  2330. {$ENDIF}
  2331. {$IFDEF EGL_SUPPORT}
  2332. ReadEGLExtensions;
  2333. ReadEGLImplementationProperties;
  2334. {$ENDIF}
  2335. GetString := GetAddress('GetString');
  2336. GetStringi := GetAddress('GetStringi');
  2337. GetIntegerv := GetAddress('GetIntegerv');
  2338. GetError := GetAddress('GetError');
  2339. // determine OpenGL versions supported
  2340. FBuffer := string(GetString(GL_VERSION));
  2341. TrimAndSplitVersionString(FBuffer, MajorVersion, MinorVersion);
  2342. VERSION_1_0 := True;
  2343. VERSION_1_1 := IsVersionMet(1, 1, MajorVersion, MinorVersion);
  2344. VERSION_1_2 := IsVersionMet(1, 2, MajorVersion, MinorVersion);
  2345. VERSION_1_3 := IsVersionMet(1, 3, MajorVersion, MinorVersion);
  2346. VERSION_1_4 := IsVersionMet(1, 4, MajorVersion, MinorVersion);
  2347. VERSION_1_5 := IsVersionMet(1, 5, MajorVersion, MinorVersion);
  2348. VERSION_2_0 := IsVersionMet(2, 0, MajorVersion, MinorVersion);
  2349. VERSION_2_1 := IsVersionMet(2, 1, MajorVersion, MinorVersion);
  2350. VERSION_3_0 := IsVersionMet(3, 0, MajorVersion, MinorVersion);
  2351. VERSION_3_1 := IsVersionMet(3, 1, MajorVersion, MinorVersion);
  2352. VERSION_3_2 := IsVersionMet(3, 2, MajorVersion, MinorVersion);
  2353. VERSION_3_3 := IsVersionMet(3, 3, MajorVersion, MinorVersion);
  2354. VERSION_4_0 := IsVersionMet(4, 0, MajorVersion, MinorVersion);
  2355. VERSION_4_1 := IsVersionMet(4, 1, MajorVersion, MinorVersion);
  2356. VERSION_4_2 := IsVersionMet(4, 2, MajorVersion, MinorVersion);
  2357. if vNotInformed then
  2358. begin
  2359. GLSLogger.LogNotice('');
  2360. GLSLogger.LogInfo('OpenGL rendering context information:');
  2361. GLSLogger.LogInfo(format('Renderer : %s', [GetString(GL_RENDERER)]));
  2362. GLSLogger.LogInfo(format('Vendor : %s', [GetString(GL_VENDOR)]));
  2363. GLSLogger.LogInfo(format('Version : %s', [GetString(GL_VERSION)]));
  2364. if VERSION_2_0 then
  2365. GLSLogger.LogInfo(format('GLSL version : %s',
  2366. [GetString(GL_SHADING_LANGUAGE_VERSION)]))
  2367. else
  2368. GLSLogger.LogWarning('GLSL version : not supported');
  2369. GLSLogger.LogNotice('');
  2370. vNotInformed := False;
  2371. end;
  2372. if ATemporary then
  2373. begin
  2374. FInitialized := True;
  2375. exit;
  2376. end;
  2377. // check supported OpenGL extensions
  2378. if VERSION_3_0 then
  2379. begin
  2380. FBuffer := '';
  2381. GetIntegerv(GL_NUM_EXTENSIONS, @numExt);
  2382. for i := 0 to numExt - 1 do
  2383. FBuffer := FBuffer + string(GetStringi(GL_EXTENSIONS, i)) + ' ';
  2384. end
  2385. else
  2386. FBuffer := string(GetString(GL_EXTENSIONS));
  2387. // check ARB approved OpenGL extensions
  2388. ARB_blend_func_extended := CheckExtension('GL_ARB_blend_func_extended');
  2389. ARB_color_buffer_float := CheckExtension('GL_ARB_color_buffer_float');
  2390. ARB_compatibility := CheckExtension('GL_ARB_compatibility');
  2391. ARB_copy_buffer := CheckExtension('GL_ARB_copy_buffer');
  2392. ARB_depth_buffer_float := CheckExtension('GL_ARB_depth_buffer_float');
  2393. ARB_depth_clamp := CheckExtension('GL_ARB_depth_clamp');
  2394. ARB_depth_texture := CheckExtension('GL_ARB_depth_texture');
  2395. ARB_draw_buffers := CheckExtension('GL_ARB_draw_buffers');
  2396. ARB_draw_buffers_blend := CheckExtension('GL_ARB_draw_buffers_blend');
  2397. ARB_draw_elements_base_vertex := CheckExtension('GL_ARB_draw_elements_base_vertex');
  2398. ARB_draw_indirect := CheckExtension('GL_ARB_draw_indirect');
  2399. ARB_draw_instanced := CheckExtension('GL_ARB_draw_instanced');
  2400. ARB_explicit_attrib_location := CheckExtension('GL_ARB_explicit_attrib_location');
  2401. ARB_fragment_coord_conventions := CheckExtension('GL_ARB_fragment_coord_conventions');
  2402. ARB_fragment_program := CheckExtension('GL_ARB_fragment_program');
  2403. ARB_fragment_program_shadow := CheckExtension('GL_ARB_fragment_program_shadow');
  2404. ARB_fragment_shader := CheckExtension('GL_ARB_fragment_shader');
  2405. ARB_framebuffer_object := CheckExtension('GL_ARB_framebuffer_object');
  2406. ARB_framebuffer_sRGB := CheckExtension('GL_ARB_framebuffer_sRGB');
  2407. ARB_geometry_shader4 := CheckExtension('GL_ARB_geometry_shader4');
  2408. ARB_gpu_shader_fp64 := CheckExtension('GL_ARB_gpu_shader_fp64');
  2409. ARB_gpu_shader5 := CheckExtension('GL_ARB_gpu_shader5');
  2410. ARB_half_float_pixel := CheckExtension('GL_ARB_half_float_pixel');
  2411. ARB_half_float_vertex := CheckExtension('GL_ARB_half_float_vertex');
  2412. ARB_imaging := CheckExtension('GL_ARB_imaging');
  2413. ARB_instanced_arrays := CheckExtension('GL_ARB_instanced_arrays');
  2414. ARB_map_buffer_range := CheckExtension('GL_ARB_map_buffer_range');
  2415. ARB_matrix_palette := CheckExtension('GL_ARB_matrix_palette');
  2416. ARB_multisample := CheckExtension('GL_ARB_multisample');
  2417. // ' ' to avoid collision with WGL variant
  2418. ARB_multitexture := CheckExtension('GL_ARB_multitexture');
  2419. ARB_occlusion_query := CheckExtension('GL_ARB_occlusion_query');
  2420. ARB_occlusion_query2 := CheckExtension('GL_ARB_occlusion_query2');
  2421. ARB_pixel_buffer_object := CheckExtension('GL_ARB_pixel_buffer_object');
  2422. ARB_point_parameters := CheckExtension('GL_ARB_point_parameters');
  2423. ARB_point_sprite := CheckExtension('GL_ARB_point_sprite');
  2424. ARB_provoking_vertex := CheckExtension('GL_ARB_provoking_vertex');
  2425. ARB_sample_shading := CheckExtension('GL_ARB_sample_shading');
  2426. ARB_sampler_objects := CheckExtension('GL_ARB_sampler_objects');
  2427. ARB_seamless_cube_map := CheckExtension('GL_ARB_seamless_cube_map');
  2428. ARB_shader_bit_encoding := CheckExtension('GL_ARB_shader_bit_encoding');
  2429. ARB_shader_objects := CheckExtension('GL_ARB_shader_objects');
  2430. ARB_shader_subroutine := CheckExtension('GL_ARB_shader_subroutine');
  2431. ARB_shader_texture_lod := CheckExtension('GL_ARB_shader_texture_lod');
  2432. ARB_shading_language_100 := CheckExtension('GL_ARB_shading_language_100');
  2433. ARB_shadow := CheckExtension('GL_ARB_shadow');
  2434. ARB_shadow_ambient := CheckExtension('GL_ARB_shadow_ambient');
  2435. ARB_sync := CheckExtension('GL_ARB_sync');
  2436. ARB_tessellation_shader := CheckExtension('GL_ARB_tessellation_shader');
  2437. ARB_texture_border_clamp := CheckExtension('GL_ARB_texture_border_clamp');
  2438. ARB_texture_buffer_object := CheckExtension('GL_ARB_texture_buffer_object');
  2439. ARB_texture_buffer_object_rgb32 := CheckExtension('GL_ARB_texture_buffer_object_rgb32');
  2440. ARB_texture_compression := CheckExtension('GL_ARB_texture_compression');
  2441. ARB_texture_compression_rgtc := CheckExtension('GL_ARB_texture_compression_rgtc');
  2442. ARB_texture_cube_map := CheckExtension('GL_ARB_texture_cube_map');
  2443. ARB_texture_cube_map_array := CheckExtension('GL_ARB_texture_cube_map_array');
  2444. ARB_texture_env_add := CheckExtension('GL_ARB_texture_env_add');
  2445. ARB_texture_env_combine := CheckExtension('GL_ARB_texture_env_combine');
  2446. ARB_texture_env_crossbar := CheckExtension('GL_ARB_texture_env_crossbar');
  2447. ARB_texture_env_dot3 := CheckExtension('GL_ARB_texture_env_dot3');
  2448. ARB_texture_float := CheckExtension('GL_ARB_texture_float');
  2449. ARB_texture_gather := CheckExtension('GL_ARB_texture_gather');
  2450. ARB_texture_mirrored_repeat := CheckExtension('GL_ARB_texture_mirrored_repeat');
  2451. ARB_texture_multisample := CheckExtension('GL_ARB_texture_multisample');
  2452. ARB_texture_non_power_of_two := CheckExtension('GL_ARB_texture_non_power_of_two');
  2453. ARB_texture_query_lod := CheckExtension('GL_ARB_texture_query_lod');
  2454. ARB_texture_rectangle := CheckExtension('GL_ARB_texture_rectangle');
  2455. ARB_texture_rg := CheckExtension('GL_ARB_texture_rg');
  2456. ARB_texture_rgb10_a2ui := CheckExtension('GL_ARB_texture_rgb10_a2ui');
  2457. ARB_texture_swizzle := CheckExtension('GL_ARB_texture_swizzle');
  2458. ARB_timer_query := CheckExtension('GL_ARB_timer_query');
  2459. ARB_transform_feedback2 := CheckExtension('GL_ARB_transform_feedback2');
  2460. ARB_transform_feedback3 := CheckExtension('GL_ARB_transform_feedback3');
  2461. ARB_transpose_matrix := CheckExtension('GL_ARB_transpose_matrix');
  2462. ARB_uniform_buffer_object := CheckExtension('GL_ARB_uniform_buffer_object');
  2463. ARB_vertex_array_bgra := CheckExtension('GL_ARB_vertex_array_bgra');
  2464. ARB_vertex_array_object := CheckExtension('GL_ARB_vertex_array_object');
  2465. ARB_vertex_blend := CheckExtension('GL_ARB_vertex_blend');
  2466. ARB_vertex_buffer_object := CheckExtension('GL_ARB_vertex_buffer_object');
  2467. ARB_vertex_program := CheckExtension('GL_ARB_vertex_program');
  2468. ARB_vertex_shader := CheckExtension('GL_ARB_vertex_shader');
  2469. ARB_vertex_type_2_10_10_10_rev := CheckExtension('GL_ARB_vertex_type_2_10_10_10_rev');
  2470. ARB_window_pos := CheckExtension('GL_ARB_window_pos');
  2471. ARB_texture_compression_bptc := CheckExtension('GL_ARB_texture_compression_bptc');
  2472. ARB_get_program_binary := CheckExtension('GL_ARB_get_program_binary');
  2473. ARB_separate_shader_objects := CheckExtension('GL_ARB_separate_shader_objects');
  2474. ARB_shader_stencil_export := CheckExtension('GL_ARB_shader_stencil_export');
  2475. KHR_debug := CheckExtension('GL_KHR_debug');
  2476. ARB_clear_buffer_object := CheckExtension('GL_ARB_clear_buffer_object');
  2477. ARB_compute_shader := CheckExtension('GL_ARB_compute_shader');
  2478. ARB_copy_image := CheckExtension('GL_ARB_copy_image');
  2479. ARB_debug_group := CheckExtension('GL_ARB_debug_group');
  2480. ARB_debug_label := CheckExtension('GL_ARB_debug_label');
  2481. ARB_debug_output2 := CheckExtension('GL_ARB_debug_output2');
  2482. ARB_ES3_compatibility := CheckExtension('GL_ARB_ES3_compatibility');
  2483. ARB_explicit_uniform_location := CheckExtension('GL_ARB_explicit_uniform_location');
  2484. ARB_fragment_layer_viewport := CheckExtension('GL_ARB_fragment_layer_viewport');
  2485. ARB_framebuffer_no_attachments := CheckExtension('GL_ARB_framebuffer_no_attachments');
  2486. ARB_internalformat_query2 := CheckExtension('GL_ARB_internalformat_query2');
  2487. ARB_invalidate_subdata := CheckExtension('GL_ARB_invalidate_subdata');
  2488. ARB_multi_draw_indirect := CheckExtension('GL_ARB_multi_draw_indirect');
  2489. ARB_program_interface_query := CheckExtension('GL_ARB_program_interface_query');
  2490. ARB_shader_image_size := CheckExtension('GL_ARB_shader_image_size');
  2491. ARB_shader_storage_buffer_object := CheckExtension('GL_ARB_shader_storage_buffer_object');
  2492. ARB_stencil_texturing := CheckExtension('GL_ARB_stencil_texturing');
  2493. ARB_texture_buffer_range := CheckExtension('GL_ARB_texture_buffer_range');
  2494. ARB_texture_query_levels := CheckExtension('GL_ARB_texture_query_levels');
  2495. ARB_texture_storage_multisample := CheckExtension('GL_ARB_texture_storage_multisample');
  2496. ARB_texture_view := CheckExtension('GL_ARB_texture_view');
  2497. ARB_vertex_attrib_binding := CheckExtension('GL_ARB_vertex_attrib_binding');
  2498. ARB_robustness_isolation := CheckExtension('GL_ARB_robustness_isolation');
  2499. ARB_cl_event := CheckExtension('GL_ARB_cl_event');
  2500. // check Vendor/EXT OpenGL extensions
  2501. _3DFX_multisample := CheckExtension('GL_3DFX_multisample');
  2502. _3DFX_tbuffer := CheckExtension('GL_3DFX_tbuffer');
  2503. _3DFX_texture_compression_FXT1 := CheckExtension('GL_3DFX_texture_compression_FXT1');
  2504. ATI_draw_buffers := CheckExtension('GL_ATI_draw_buffers');
  2505. ATI_texture_compression_3dc := CheckExtension('GL_ATI_texture_compression_3dc');
  2506. ATI_texture_float := CheckExtension('GL_ATI_texture_float');
  2507. ATI_texture_mirror_once := CheckExtension('GL_ATI_texture_mirror_once');
  2508. S3_s3tc := CheckExtension('GL_S3_s3tc');
  2509. EXT_abgr := CheckExtension('GL_EXT_abgr');
  2510. EXT_bgra := CheckExtension('GL_EXT_bgra');
  2511. EXT_bindable_uniform := CheckExtension('GL_EXT_bindable_uniform');
  2512. EXT_blend_color := CheckExtension('GL_EXT_blend_color');
  2513. EXT_blend_equation_separate := CheckExtension('GL_EXT_blend_equation_separate');
  2514. EXT_blend_func_separate := CheckExtension('GL_EXT_blend_func_separate');
  2515. EXT_blend_logic_op := CheckExtension('GL_EXT_blend_logic_op');
  2516. EXT_blend_minmax := CheckExtension('GL_EXT_blend_minmax');
  2517. EXT_blend_subtract := CheckExtension('GL_EXT_blend_subtract');
  2518. EXT_Cg_shader := CheckExtension('GL_EXT_Cg_shader');
  2519. EXT_clip_volume_hint := CheckExtension('GL_EXT_clip_volume_hint');
  2520. EXT_compiled_vertex_array := CheckExtension('GL_EXT_compiled_vertex_array');
  2521. EXT_copy_texture := CheckExtension('GL_EXT_copy_texture');
  2522. EXT_depth_bounds_test := CheckExtension('GL_EXT_depth_bounds_test');
  2523. EXT_draw_buffers2 := CheckExtension('GL_EXT_draw_buffers2');
  2524. EXT_draw_instanced := CheckExtension('GL_EXT_draw_instanced');
  2525. EXT_draw_range_elements := CheckExtension('GL_EXT_draw_range_elements');
  2526. EXT_fog_coord := CheckExtension('GL_EXT_fog_coord');
  2527. EXT_framebuffer_blit := CheckExtension('GL_EXT_framebuffer_blit');
  2528. EXT_framebuffer_multisample := CheckExtension('GL_EXT_framebuffer_multisample');
  2529. EXT_framebuffer_object := CheckExtension('GL_EXT_framebuffer_object');
  2530. EXT_framebuffer_sRGB := CheckExtension('GL_EXT_framebuffer_sRGB');
  2531. EXT_geometry_shader4 := CheckExtension('GL_EXT_geometry_shader4');
  2532. EXT_gpu_program_parameters := CheckExtension('GL_EXT_gpu_program_parameters');
  2533. EXT_gpu_shader4 := CheckExtension('GL_EXT_gpu_shader4');
  2534. EXT_multi_draw_arrays := CheckExtension('GL_EXT_multi_draw_arrays');
  2535. EXT_multisample := CheckExtension('GL_EXT_multisample');
  2536. EXT_packed_depth_stencil := CheckExtension('GL_EXT_packed_depth_stencil');
  2537. EXT_packed_float := CheckExtension('GL_EXT_packed_float');
  2538. EXT_packed_pixels := CheckExtension('GL_EXT_packed_pixels');
  2539. EXT_paletted_texture := CheckExtension('GL_EXT_paletted_texture');
  2540. EXT_pixel_buffer_object := CheckExtension('GL_EXT_pixel_buffer_object');
  2541. EXT_polygon_offset := CheckExtension('GL_EXT_polygon_offset');
  2542. EXT_rescale_normal := CheckExtension('GL_EXT_rescale_normal');
  2543. EXT_secondary_color := CheckExtension('GL_EXT_secondary_color');
  2544. EXT_separate_specular_color := CheckExtension('GL_EXT_separate_specular_color');
  2545. EXT_shadow_funcs := CheckExtension('GL_EXT_shadow_funcs');
  2546. EXT_shared_texture_palette := CheckExtension('GL_EXT_shared_texture_palette');
  2547. EXT_stencil_clear_tag := CheckExtension('GL_EXT_stencil_clear_tag');
  2548. EXT_stencil_two_side := CheckExtension('GL_EXT_stencil_two_side');
  2549. EXT_stencil_wrap := CheckExtension('GL_EXT_stencil_wrap');
  2550. EXT_texture3D := CheckExtension('GL_EXT_texture3D');
  2551. EXT_texture_array := CheckExtension('GL_EXT_texture_array');
  2552. EXT_texture_buffer_object := CheckExtension('GL_EXT_texture_buffer_object');
  2553. EXT_texture_compression_latc := CheckExtension('GL_EXT_texture_compression_latc');
  2554. EXT_texture_compression_rgtc := CheckExtension('GL_EXT_texture_compression_rgtc');
  2555. EXT_texture_compression_s3tc := CheckExtension('GL_EXT_texture_compression_s3tc');
  2556. EXT_texture_cube_map := CheckExtension('GL_EXT_texture_cube_map');
  2557. EXT_texture_edge_clamp := CheckExtension('GL_EXT_texture_edge_clamp');
  2558. EXT_texture_env_add := CheckExtension('GL_EXT_texture_env_add');
  2559. EXT_texture_env_combine := CheckExtension('GL_EXT_texture_env_combine');
  2560. EXT_texture_env_dot3 := CheckExtension('GL_EXT_texture_env_dot3');
  2561. EXT_texture_filter_anisotropic :=
  2562. CheckExtension('GL_EXT_texture_filter_anisotropic');
  2563. EXT_texture_integer := CheckExtension('GL_EXT_texture_integer');
  2564. EXT_texture_lod := CheckExtension('GL_EXT_texture_lod');
  2565. EXT_texture_lod_bias := CheckExtension('GL_EXT_texture_lod_bias');
  2566. EXT_texture_mirror_clamp := CheckExtension('GL_EXT_texture_mirror_clamp');
  2567. EXT_texture_object := CheckExtension('GL_EXT_texture_object');
  2568. EXT_texture_rectangle := CheckExtension('GL_EXT_texture_rectangle');
  2569. EXT_texture_sRGB := CheckExtension('GL_EXT_texture_sRGB');
  2570. EXT_texture_shared_exponent := CheckExtension('GL_EXT_texture_shared_exponent');
  2571. EXT_timer_query := CheckExtension('GL_EXT_timer_query');
  2572. EXT_transform_feedback := CheckExtension('GL_EXT_transform_feedback');
  2573. EXT_vertex_array := CheckExtension('GL_EXT_vertex_array');
  2574. EXT_texture_sRGB_decode := CheckExtension('GL_EXT_texture_sRGB_decode');
  2575. EXT_direct_state_access := CheckExtension('EXT_direct_state_access');
  2576. EXT_texture_swizzle := CheckExtension('EXT_texture_swizzle');
  2577. HP_occlusion_test := CheckExtension('GL_HP_occlusion_test');
  2578. IBM_rasterpos_clip := CheckExtension('GL_IBM_rasterpos_clip');
  2579. KTX_buffer_region := CheckExtension('GL_KTX_buffer_region');
  2580. MESA_resize_buffers := CheckExtension('GL_MESA_resize_buffers');
  2581. NV_blend_square := CheckExtension('GL_NV_blend_square');
  2582. NV_conditional_render := CheckExtension('GL_NV_conditional_render');
  2583. NV_copy_image := CheckExtension('GL_NV_copy_image');
  2584. NV_depth_buffer_float := CheckExtension('GL_NV_depth_buffer_float');
  2585. NV_fence := CheckExtension('GL_NV_fence');
  2586. NV_float_buffer := CheckExtension('GL_NV_float_buffer');
  2587. NV_fog_distance := CheckExtension('GL_NV_fog_distance');
  2588. NV_geometry_program4 := CheckExtension('GL_NV_geometry_program4');
  2589. NV_light_max_exponent := CheckExtension('GL_NV_light_max_exponent');
  2590. NV_multisample_filter_hint := CheckExtension('GL_NV_multisample_filter_hint');
  2591. NV_occlusion_query := CheckExtension('GL_NV_occlusion_query');
  2592. NV_point_sprite := CheckExtension('GL_NV_point_sprite');
  2593. NV_primitive_restart := CheckExtension('GL_NV_primitive_restart');
  2594. NV_register_combiners := CheckExtension('GL_NV_register_combiners');
  2595. NV_shader_buffer_load := CheckExtension('GL_NV_shader_buffer_load');
  2596. NV_texgen_reflection := CheckExtension('GL_NV_texgen_reflection');
  2597. NV_texture_compression_vtc := CheckExtension('GL_NV_texture_compression_vtc');
  2598. NV_texture_env_combine4 := CheckExtension('GL_NV_texture_env_combine4');
  2599. NV_texture_rectangle := CheckExtension('GL_NV_texture_rectangle');
  2600. NV_texture_shader := CheckExtension('GL_NV_texture_shader');
  2601. NV_texture_shader2 := CheckExtension('GL_NV_texture_shader2');
  2602. NV_texture_shader3 := CheckExtension('GL_NV_texture_shader3');
  2603. NV_transform_feedback := CheckExtension('GL_NV_transform_feedback');
  2604. NV_vertex_array_range := CheckExtension('GL_NV_vertex_array_range');
  2605. NV_vertex_array_range2 := CheckExtension('GL_NV_vertex_array_range2');
  2606. NV_vertex_buffer_unified_memory := CheckExtension('GL_NV_vertex_buffer_unified_memory');
  2607. NV_vertex_program := CheckExtension('GL_NV_vertex_program');
  2608. SGI_color_matrix := CheckExtension('GL_SGI_color_matrix');
  2609. SGIS_generate_mipmap := CheckExtension('GL_SGIS_generate_mipmap');
  2610. SGIS_multisample := CheckExtension('GL_SGIS_multisample');
  2611. SGIS_texture_border_clamp := CheckExtension('GL_SGIS_texture_border_clamp');
  2612. SGIS_texture_color_mask := CheckExtension('GL_SGIS_texture_color_mask');
  2613. SGIS_texture_edge_clamp := CheckExtension('GL_SGIS_texture_edge_clamp');
  2614. SGIS_texture_lod := CheckExtension('GL_SGIS_texture_lod');
  2615. SGIX_depth_texture := CheckExtension('GL_SGIX_depth_texture');
  2616. SGIX_shadow := CheckExtension('GL_SGIX_shadow');
  2617. SGIX_shadow_ambient := CheckExtension('GL_SGIX_shadow_ambient');
  2618. AMD_vertex_shader_tessellator := CheckExtension('GL_AMD_vertex_shader_tessellator');
  2619. WIN_swap_hint := CheckExtension('GL_WIN_swap_hint');
  2620. ATI_meminfo := CheckExtension('GL_ATI_meminfo');
  2621. NVX_gpu_memory_info := CheckExtension('GL_NVX_gpu_memory_info');
  2622. NV_vdpau_interop := CheckExtension('GL_NV_vdpau_interop');
  2623. NV_path_rendering := CheckExtension('GL_NV_path_rendering');
  2624. GREMEDY_frame_terminator := CheckExtension('GL_GREMEDY_frame_terminator');
  2625. GREMEDY_string_marker := CheckExtension('GL_GREMEDY_string_marker');
  2626. AMDX_debug_output := CheckExtension('AMDX_debug_output');
  2627. ARB_debug_output := CheckExtension('GL_ARB_debug_output');
  2628. BindTexture := GetAddress('BindTexture');
  2629. BlendFunc := GetAddress('BlendFunc');
  2630. Clear := GetAddress('Clear');
  2631. ClearColor := GetAddress('ClearColor');
  2632. ClearDepth := GetAddress('ClearDepth');
  2633. ClearStencil := GetAddress('ClearStencil');
  2634. ColorMask := GetAddress('ColorMask');
  2635. CopyTexImage1D := GetAddress('CopyTexImage1D');
  2636. CopyTexImage2D := GetAddress('CopyTexImage2D');
  2637. CopyTexSubImage1D := GetAddress('CopyTexSubImage1D');
  2638. CopyTexSubImage2D := GetAddress('CopyTexSubImage2D');
  2639. CullFace := GetAddress('CullFace');
  2640. DeleteTextures := GetAddress('DeleteTextures');
  2641. DepthFunc := GetAddress('DepthFunc');
  2642. DepthMask := GetAddress('DepthMask');
  2643. DepthRange := GetAddress('DepthRange');
  2644. Disable := GetAddress('Disable');
  2645. DrawArrays := GetAddress('DrawArrays');
  2646. DrawBuffer := GetAddress('DrawBuffer');
  2647. DrawElements := GetAddress('DrawElements');
  2648. Enable := GetAddress('Enable');
  2649. Finish := GetAddress('Finish');
  2650. Flush := GetAddress('Flush');
  2651. FrontFace := GetAddress('FrontFace');
  2652. GenTextures := GetAddress('GenTextures');
  2653. GetBooleanv := GetAddress('GetBooleanv');
  2654. GetDoublev := GetAddress('GetDoublev');
  2655. GetFloatv := GetAddress('GetFloatv');
  2656. GetPointerv := GetAddress('GetPointerv');
  2657. GetString := GetAddress('GetString');
  2658. GetTexImage := GetAddress('GetTexImage');
  2659. GetTexLevelParameterfv := GetAddress('GetTexLevelParameterfv');
  2660. GetTexLevelParameteriv := GetAddress('GetTexLevelParameteriv');
  2661. GetTexParameterfv := GetAddress('GetTexParameterfv');
  2662. GetTexParameteriv := GetAddress('GetTexParameteriv');
  2663. Hint := GetAddress('Hint');
  2664. IsEnabled := GetAddress('IsEnabled');
  2665. IsTexture := GetAddress('IsTexture');
  2666. LineWidth := GetAddress('LineWidth');
  2667. LogicOp := GetAddress('LogicOp');
  2668. PixelStoref := GetAddress('PixelStoref');
  2669. PixelStorei := GetAddress('PixelStorei');
  2670. PointSize := GetAddress('PointSize');
  2671. PolygonMode := GetAddress('PolygonMode');
  2672. PolygonOffset := GetAddress('PolygonOffset');
  2673. ReadBuffer := GetAddress('ReadBuffer');
  2674. ReadPixels := GetAddress('ReadPixels');
  2675. Scissor := GetAddress('Scissor');
  2676. StencilFunc := GetAddress('StencilFunc');
  2677. StencilMask := GetAddress('StencilMask');
  2678. StencilOp := GetAddress('StencilOp');
  2679. TexImage1D := GetAddress('TexImage1D');
  2680. TexImage2D := GetAddress('TexImage2D');
  2681. TexParameterf := GetAddress('TexParameterf');
  2682. TexParameterfv := GetAddress('TexParameterfv');
  2683. TexParameteri := GetAddress('TexParameteri');
  2684. TexParameteriv := GetAddress('TexParameteriv');
  2685. TexSubImage1D := GetAddress('TexSubImage1D');
  2686. TexSubImage2D := GetAddress('TexSubImage2D');
  2687. Viewport := GetAddress('Viewport');
  2688. Accum := GetAddress('Accum');
  2689. AlphaFunc := GetAddress('AlphaFunc');
  2690. AreTexturesResident := GetAddress('AreTexturesResident');
  2691. ArrayElement := GetAddress('ArrayElement');
  2692. Begin_ := GetAddress('Begin');
  2693. Bitmap := GetAddress('Bitmap');
  2694. CallList := GetAddress('CallList');
  2695. CallLists := GetAddress('CallLists');
  2696. ClearAccum := GetAddress('ClearAccum');
  2697. ClearIndex := GetAddress('ClearIndex');
  2698. ClipPlane := GetAddress('ClipPlane');
  2699. Color3b := GetAddress('Color3b');
  2700. Color3bv := GetAddress('Color3bv');
  2701. Color3d := GetAddress('Color3d');
  2702. Color3dv := GetAddress('Color3dv');
  2703. Color3f := GetAddress('Color3f');
  2704. Color3fv := GetAddress('Color3fv');
  2705. Color3i := GetAddress('Color3i');
  2706. Color3iv := GetAddress('Color3iv');
  2707. Color3s := GetAddress('Color3s');
  2708. Color3sv := GetAddress('Color3sv');
  2709. Color3ub := GetAddress('Color3ub');
  2710. Color3ubv := GetAddress('Color3ubv');
  2711. Color3ui := GetAddress('Color3ui');
  2712. Color3uiv := GetAddress('Color3uiv');
  2713. Color3us := GetAddress('Color3us');
  2714. Color3usv := GetAddress('Color3usv');
  2715. Color4b := GetAddress('Color4b');
  2716. Color4bv := GetAddress('Color4bv');
  2717. Color4d := GetAddress('Color4d');
  2718. Color4dv := GetAddress('Color4dv');
  2719. Color4f := GetAddress('Color4f');
  2720. Color4fv := GetAddress('Color4fv');
  2721. Color4i := GetAddress('Color4i');
  2722. Color4iv := GetAddress('Color4iv');
  2723. Color4s := GetAddress('Color4s');
  2724. Color4sv := GetAddress('Color4sv');
  2725. Color4ub := GetAddress('Color4ub');
  2726. Color4ubv := GetAddress('Color4ubv');
  2727. Color4ui := GetAddress('Color4ui');
  2728. Color4uiv := GetAddress('Color4uiv');
  2729. Color4us := GetAddress('Color4us');
  2730. Color4usv := GetAddress('Color4usv');
  2731. ColorMaterial := GetAddress('ColorMaterial');
  2732. ColorPointer := GetAddress('ColorPointer');
  2733. CopyPixels := GetAddress('CopyPixels');
  2734. DeleteLists := GetAddress('DeleteLists');
  2735. DisableClientState := GetAddress('DisableClientState');
  2736. DrawPixels := GetAddress('DrawPixels');
  2737. EdgeFlag := GetAddress('EdgeFlag');
  2738. EdgeFlagPointer := GetAddress('EdgeFlagPointer');
  2739. EdgeFlagv := GetAddress('EdgeFlagv');
  2740. EnableClientState := GetAddress('EnableClientState');
  2741. End_ := GetAddress('End');
  2742. EndList := GetAddress('EndList');
  2743. EvalCoord1d := GetAddress('EvalCoord1d');
  2744. EvalCoord1dv := GetAddress('EvalCoord1dv');
  2745. EvalCoord1f := GetAddress('EvalCoord1f');
  2746. EvalCoord1fv := GetAddress('EvalCoord1fv');
  2747. EvalCoord2d := GetAddress('EvalCoord2d');
  2748. EvalCoord2dv := GetAddress('EvalCoord2dv');
  2749. EvalCoord2f := GetAddress('EvalCoord2f');
  2750. EvalCoord2fv := GetAddress('EvalCoord2fv');
  2751. EvalMesh1 := GetAddress('EvalMesh1');
  2752. EvalMesh2 := GetAddress('EvalMesh2');
  2753. EvalPoint1 := GetAddress('EvalPoint1');
  2754. EvalPoint2 := GetAddress('EvalPoint2');
  2755. FeedbackBuffer := GetAddress('FeedbackBuffer');
  2756. Fogf := GetAddress('Fogf');
  2757. Fogfv := GetAddress('Fogfv');
  2758. Fogi := GetAddress('Fogi');
  2759. Fogiv := GetAddress('Fogiv');
  2760. Frustum := GetAddress('Frustum');
  2761. GenLists := GetAddress('GenLists');
  2762. GetClipPlane := GetAddress('GetClipPlane');
  2763. GetLightfv := GetAddress('GetLightfv');
  2764. GetLightiv := GetAddress('GetLightiv');
  2765. GetMapdv := GetAddress('GetMapdv');
  2766. GetMapfv := GetAddress('GetMapfv');
  2767. GetMapiv := GetAddress('GetMapiv');
  2768. GetMaterialfv := GetAddress('GetMaterialfv');
  2769. GetMaterialiv := GetAddress('GetMaterialiv');
  2770. GetPixelMapfv := GetAddress('GetPixelMapfv');
  2771. GetPixelMapuiv := GetAddress('GetPixelMapuiv');
  2772. GetPixelMapusv := GetAddress('GetPixelMapusv');
  2773. GetPolygonStipple := GetAddress('GetPolygonStipple');
  2774. GetTexEnvfv := GetAddress('GetTexEnvfv');
  2775. GetTexEnviv := GetAddress('GetTexEnviv');
  2776. GetTexGendv := GetAddress('GetTexGendv');
  2777. GetTexGenfv := GetAddress('GetTexGenfv');
  2778. GetTexGeniv := GetAddress('GetTexGeniv');
  2779. IndexMask := GetAddress('IndexMask');
  2780. IndexPointer := GetAddress('IndexPointer');
  2781. Indexd := GetAddress('Indexd');
  2782. Indexdv := GetAddress('Indexdv');
  2783. Indexf := GetAddress('Indexf');
  2784. Indexfv := GetAddress('Indexfv');
  2785. Indexi := GetAddress('Indexi');
  2786. Indexiv := GetAddress('Indexiv');
  2787. Indexs := GetAddress('Indexs');
  2788. Indexsv := GetAddress('Indexsv');
  2789. Indexub := GetAddress('Indexub');
  2790. Indexubv := GetAddress('Indexubv');
  2791. InitNames := GetAddress('InitNames');
  2792. InterleavedArrays := GetAddress('InterleavedArrays');
  2793. IsList := GetAddress('IsList');
  2794. LightModelf := GetAddress('LightModelf');
  2795. LightModelfv := GetAddress('LightModelfv');
  2796. LightModeli := GetAddress('LightModeli');
  2797. LightModeliv := GetAddress('LightModeliv');
  2798. Lightf := GetAddress('Lightf');
  2799. Lightfv := GetAddress('Lightfv');
  2800. Lighti := GetAddress('Lighti');
  2801. Lightiv := GetAddress('Lightiv');
  2802. LineStipple := GetAddress('LineStipple');
  2803. ListBase := GetAddress('ListBase');
  2804. LoadIdentity := GetAddress('LoadIdentity');
  2805. LoadMatrixd := GetAddress('LoadMatrixd');
  2806. LoadMatrixf := GetAddress('LoadMatrixf');
  2807. LoadName := GetAddress('LoadName');
  2808. Map1d := GetAddress('Map1d');
  2809. Map1f := GetAddress('Map1f');
  2810. Map2d := GetAddress('Map2d');
  2811. Map2f := GetAddress('Map2f');
  2812. MapGrid1d := GetAddress('MapGrid1d');
  2813. MapGrid1f := GetAddress('MapGrid1f');
  2814. MapGrid2d := GetAddress('MapGrid2d');
  2815. MapGrid2f := GetAddress('MapGrid2f');
  2816. Materialf := GetAddress('Materialf');
  2817. Materialfv := GetAddress('Materialfv');
  2818. Materiali := GetAddress('Materiali');
  2819. Materialiv := GetAddress('Materialiv');
  2820. MatrixMode := GetAddress('MatrixMode');
  2821. MultMatrixd := GetAddress('MultMatrixd');
  2822. MultMatrixf := GetAddress('MultMatrixf');
  2823. NewList := GetAddress('NewList');
  2824. Normal3b := GetAddress('Normal3b');
  2825. Normal3bv := GetAddress('Normal3bv');
  2826. Normal3d := GetAddress('Normal3d');
  2827. Normal3dv := GetAddress('Normal3dv');
  2828. Normal3f := GetAddress('Normal3f');
  2829. Normal3fv := GetAddress('Normal3fv');
  2830. Normal3i := GetAddress('Normal3i');
  2831. Normal3iv := GetAddress('Normal3iv');
  2832. Normal3s := GetAddress('Normal3s');
  2833. Normal3sv := GetAddress('Normal3sv');
  2834. NormalPointer := GetAddress('NormalPointer');
  2835. Ortho := GetAddress('Ortho');
  2836. PassThrough := GetAddress('PassThrough');
  2837. PixelMapfv := GetAddress('PixelMapfv');
  2838. PixelMapuiv := GetAddress('PixelMapuiv');
  2839. PixelMapusv := GetAddress('PixelMapusv');
  2840. PixelTransferf := GetAddress('PixelTransferf');
  2841. PixelTransferi := GetAddress('PixelTransferi');
  2842. PixelZoom := GetAddress('PixelZoom');
  2843. PolygonStipple := GetAddress('PolygonStipple');
  2844. PopAttrib := GetAddress('PopAttrib');
  2845. PopClientAttrib := GetAddress('PopClientAttrib');
  2846. PopMatrix := GetAddress('PopMatrix');
  2847. PopName := GetAddress('PopName');
  2848. PrioritizeTextures := GetAddress('PrioritizeTextures');
  2849. PushAttrib := GetAddress('PushAttrib');
  2850. PushClientAttrib := GetAddress('PushClientAttrib');
  2851. PushMatrix := GetAddress('PushMatrix');
  2852. PushName := GetAddress('PushName');
  2853. RasterPos2d := GetAddress('RasterPos2d');
  2854. RasterPos2dv := GetAddress('RasterPos2dv');
  2855. RasterPos2f := GetAddress('RasterPos2f');
  2856. RasterPos2fv := GetAddress('RasterPos2fv');
  2857. RasterPos2i := GetAddress('RasterPos2i');
  2858. RasterPos2iv := GetAddress('RasterPos2iv');
  2859. RasterPos2s := GetAddress('RasterPos2s');
  2860. RasterPos2sv := GetAddress('RasterPos2sv');
  2861. RasterPos3d := GetAddress('RasterPos3d');
  2862. RasterPos3dv := GetAddress('RasterPos3dv');
  2863. RasterPos3f := GetAddress('RasterPos3f');
  2864. RasterPos3fv := GetAddress('RasterPos3fv');
  2865. RasterPos3i := GetAddress('RasterPos3i');
  2866. RasterPos3iv := GetAddress('RasterPos3iv');
  2867. RasterPos3s := GetAddress('RasterPos3s');
  2868. RasterPos3sv := GetAddress('RasterPos3sv');
  2869. RasterPos4d := GetAddress('RasterPos4d');
  2870. RasterPos4dv := GetAddress('RasterPos4dv');
  2871. RasterPos4f := GetAddress('RasterPos4f');
  2872. RasterPos4fv := GetAddress('RasterPos4fv');
  2873. RasterPos4i := GetAddress('RasterPos4i');
  2874. RasterPos4iv := GetAddress('RasterPos4iv');
  2875. RasterPos4s := GetAddress('RasterPos4s');
  2876. RasterPos4sv := GetAddress('RasterPos4sv');
  2877. Rectd := GetAddress('Rectd');
  2878. Rectdv := GetAddress('Rectdv');
  2879. Rectf := GetAddress('Rectf');
  2880. Rectfv := GetAddress('Rectfv');
  2881. Recti := GetAddress('Recti');
  2882. Rectiv := GetAddress('Rectiv');
  2883. Rects := GetAddress('Rects');
  2884. Rectsv := GetAddress('Rectsv');
  2885. RenderMode := GetAddress('RenderMode');
  2886. Rotated := GetAddress('Rotated');
  2887. Rotatef := GetAddress('Rotatef');
  2888. Scaled := GetAddress('Scaled');
  2889. Scalef := GetAddress('Scalef');
  2890. SelectBuffer := GetAddress('SelectBuffer');
  2891. ShadeModel := GetAddress('ShadeModel');
  2892. TexCoord1d := GetAddress('TexCoord1d');
  2893. TexCoord1dv := GetAddress('TexCoord1dv');
  2894. TexCoord1f := GetAddress('TexCoord1f');
  2895. TexCoord1fv := GetAddress('TexCoord1fv');
  2896. TexCoord1i := GetAddress('TexCoord1i');
  2897. TexCoord1iv := GetAddress('TexCoord1iv');
  2898. TexCoord1s := GetAddress('TexCoord1s');
  2899. TexCoord1sv := GetAddress('TexCoord1sv');
  2900. TexCoord2d := GetAddress('TexCoord2d');
  2901. TexCoord2dv := GetAddress('TexCoord2dv');
  2902. TexCoord2f := GetAddress('TexCoord2f');
  2903. TexCoord2fv := GetAddress('TexCoord2fv');
  2904. TexCoord2i := GetAddress('TexCoord2i');
  2905. TexCoord2iv := GetAddress('TexCoord2iv');
  2906. TexCoord2s := GetAddress('TexCoord2s');
  2907. TexCoord2sv := GetAddress('TexCoord2sv');
  2908. TexCoord3d := GetAddress('TexCoord3d');
  2909. TexCoord3dv := GetAddress('TexCoord3dv');
  2910. TexCoord3f := GetAddress('TexCoord3f');
  2911. TexCoord3fv := GetAddress('TexCoord3fv');
  2912. TexCoord3i := GetAddress('TexCoord3i');
  2913. TexCoord3iv := GetAddress('TexCoord3iv');
  2914. TexCoord3s := GetAddress('TexCoord3s');
  2915. TexCoord3sv := GetAddress('TexCoord3sv');
  2916. TexCoord4d := GetAddress('TexCoord4d');
  2917. TexCoord4dv := GetAddress('TexCoord4dv');
  2918. TexCoord4f := GetAddress('TexCoord4f');
  2919. TexCoord4fv := GetAddress('TexCoord4fv');
  2920. TexCoord4i := GetAddress('TexCoord4i');
  2921. TexCoord4iv := GetAddress('TexCoord4iv');
  2922. TexCoord4s := GetAddress('TexCoord4s');
  2923. TexCoord4sv := GetAddress('TexCoord4sv');
  2924. TexCoordPointer := GetAddress('TexCoordPointer');
  2925. TexEnvf := GetAddress('TexEnvf');
  2926. TexEnvfv := GetAddress('TexEnvfv');
  2927. TexEnvi := GetAddress('TexEnvi');
  2928. TexEnviv := GetAddress('TexEnviv');
  2929. TexGend := GetAddress('TexGend');
  2930. TexGendv := GetAddress('TexGendv');
  2931. TexGenf := GetAddress('TexGenf');
  2932. TexGenfv := GetAddress('TexGenfv');
  2933. TexGeni := GetAddress('TexGeni');
  2934. TexGeniv := GetAddress('TexGeniv');
  2935. Translated := GetAddress('Translated');
  2936. Translatef := GetAddress('Translatef');
  2937. Vertex2d := GetAddress('Vertex2d');
  2938. Vertex2dv := GetAddress('Vertex2dv');
  2939. Vertex2f := GetAddress('Vertex2f');
  2940. Vertex2fv := GetAddress('Vertex2fv');
  2941. Vertex2i := GetAddress('Vertex2i');
  2942. Vertex2iv := GetAddress('Vertex2iv');
  2943. Vertex2s := GetAddress('Vertex2s');
  2944. Vertex2sv := GetAddress('Vertex2sv');
  2945. Vertex3d := GetAddress('Vertex3d');
  2946. Vertex3dv := GetAddress('Vertex3dv');
  2947. Vertex3f := GetAddress('Vertex3f');
  2948. Vertex3fv := GetAddress('Vertex3fv');
  2949. Vertex3i := GetAddress('Vertex3i');
  2950. Vertex3iv := GetAddress('Vertex3iv');
  2951. Vertex3s := GetAddress('Vertex3s');
  2952. Vertex3sv := GetAddress('Vertex3sv');
  2953. Vertex4d := GetAddress('Vertex4d');
  2954. Vertex4dv := GetAddress('Vertex4dv');
  2955. Vertex4f := GetAddress('Vertex4f');
  2956. Vertex4fv := GetAddress('Vertex4fv');
  2957. Vertex4i := GetAddress('Vertex4i');
  2958. Vertex4iv := GetAddress('Vertex4iv');
  2959. Vertex4s := GetAddress('Vertex4s');
  2960. Vertex4sv := GetAddress('Vertex4sv');
  2961. VertexPointer := GetAddress('VertexPointer');
  2962. BlendColor := GetAddress('BlendColor');
  2963. BlendEquation := GetAddress('BlendEquation');
  2964. DrawRangeElements := GetAddress('DrawRangeElements');
  2965. TexImage3D := GetAddress('TexImage3D');
  2966. TexSubImage3D := GetAddress('TexSubImage3D');
  2967. CopyTexSubImage3D := GetAddress('CopyTexSubImage3D');
  2968. IsRenderbuffer := GetAddress('IsRenderbuffer');
  2969. BindRenderbuffer := GetAddress('BindRenderbuffer');
  2970. DeleteRenderbuffers := GetAddress('DeleteRenderbuffers');
  2971. GenRenderbuffers := GetAddress('GenRenderbuffers');
  2972. RenderbufferStorage := GetAddress('RenderbufferStorage');
  2973. RenderbufferStorageMultisample :=
  2974. GetAddress('RenderbufferStorageMultisample');
  2975. GetRenderbufferParameteriv := GetAddress('GetRenderbufferParameteriv');
  2976. IsFramebuffer := GetAddress('IsFramebuffer');
  2977. BindFramebuffer := GetAddress('BindFramebuffer');
  2978. DeleteFramebuffers := GetAddress('DeleteFramebuffers');
  2979. GenFramebuffers := GetAddress('GenFramebuffers');
  2980. CheckFramebufferStatus := GetAddress('CheckFramebufferStatus');
  2981. FramebufferTexture := GetAddress('FramebufferTexture');
  2982. FramebufferTexture1D := GetAddress('FramebufferTexture1D');
  2983. FramebufferTexture2D := GetAddress('FramebufferTexture2D');
  2984. FramebufferTexture3D := GetAddress('FramebufferTexture3D');
  2985. FramebufferTextureLayer := GetAddress('FramebufferTextureLayer');
  2986. FramebufferTextureFace := GetAddress('FramebufferTextureFace');
  2987. FramebufferRenderbuffer := GetAddress('FramebufferRenderbuffer');
  2988. GetFramebufferAttachmentParameteriv :=
  2989. GetAddress('GetFramebufferAttachmentParameteriv');
  2990. BlitFramebuffer := GetAddress('BlitFramebuffer');
  2991. GenerateMipmap := GetAddress('GenerateMipmap');
  2992. ClearBufferiv := GetAddress('ClearBufferiv');
  2993. ClearBufferuiv := GetAddress('ClearBufferuiv');
  2994. ClearBufferfv := GetAddress('ClearBufferfv');
  2995. ClearBufferfi := GetAddress('ClearBufferfi');
  2996. BlendFuncSeparate := GetAddress('BlendFuncSeparate');
  2997. MultiDrawArrays := GetAddress('MultiDrawArrays');
  2998. MultiDrawElements := GetAddress('MultiDrawElements');
  2999. PointParameterf := GetAddress('PointParameterf');
  3000. PointParameterfv := GetAddress('PointParameterfv');
  3001. PointParameteri := GetAddress('PointParameteri');
  3002. PointParameteriv := GetAddress('PointParameteriv');
  3003. LockArrays := GetAddress('LockArrays');
  3004. UnlockArrays := GetAddress('UnlockArrays');
  3005. BindBuffer := GetAddress('BindBuffer');
  3006. DeleteBuffers := GetAddress('DeleteBuffers');
  3007. GenBuffers := GetAddress('GenBuffers');
  3008. IsBuffer := GetAddress('IsBuffer');
  3009. BufferData := GetAddress('BufferData');
  3010. BufferSubData := GetAddress('BufferSubData');
  3011. GetBufferSubData := GetAddress('GetBufferSubData');
  3012. MapBuffer := GetAddress('MapBuffer');
  3013. UnmapBuffer := GetAddress('UnmapBuffer');
  3014. GetBufferParameteriv := GetAddress('GetBufferParameteriv');
  3015. GetBufferPointerv := GetAddress('GetBufferPointerv');
  3016. MapBufferRange := GetAddress('MapBufferRange');
  3017. FlushMappedBufferRange := GetAddress('FlushMappedBufferRange');
  3018. BindBufferRange := GetAddress('BindBufferRange');
  3019. BindBufferOffset := GetAddress('BindBufferOffset');
  3020. BindBufferBase := GetAddress('BindBufferBase');
  3021. BeginTransformFeedback := GetAddress('BeginTransformFeedback');
  3022. EndTransformFeedback := GetAddress('EndTransformFeedback');
  3023. TransformFeedbackVaryings := GetAddress('TransformFeedbackVaryings');
  3024. GetTransformFeedbackVarying := GetAddress('GetTransformFeedbackVarying');
  3025. TransformFeedbackAttribs := GetAddress('TransformFeedbackAttribs');
  3026. TransformFeedbackVaryingsNV := GetAddressNoSuffixes('TransformFeedbackVaryingsNV');
  3027. TexBuffer := GetAddress('TexBuffer');
  3028. BindVertexArray := GetAddress('BindVertexArray');
  3029. DeleteVertexArrays := GetAddress('DeleteVertexArrays');
  3030. GenVertexArrays := GetAddress('GenVertexArrays');
  3031. IsVertexArray := GetAddress('IsVertexArray');
  3032. FlushVertexArrayRangeNV := GetAddressNoSuffixes('FlushVertexArrayRangeNV');
  3033. VertexArrayRangeNV := GetAddressNoSuffixes('VertexArrayRangeNV');
  3034. CopyBufferSubData := GetAddress('CopyBufferSubData');
  3035. UniformBuffer := GetAddress('UniformBuffer');
  3036. GetUniformBufferSize := GetAddress('GetUniformBufferSize');
  3037. GetUniformOffset := GetAddress('GetUniformOffset');
  3038. PrimitiveRestartIndex := GetAddress('PrimitiveRestartIndex');
  3039. DrawElementsBaseVertex := GetAddress('DrawElementsBaseVertex');
  3040. DrawRangeElementsBaseVertex := GetAddress('DrawRangeElementsBaseVertex');
  3041. DrawElementsInstancedBaseVertex :=
  3042. GetAddress('DrawElementsInstancedBaseVertex');
  3043. MultiDrawElementsBaseVertex := GetAddress('MultiDrawElementsBaseVertex');
  3044. DrawArraysInstanced := GetAddress('DrawArraysInstanced');
  3045. DrawElementsInstanced := GetAddress('DrawElementsInstanced');
  3046. VertexAttrib1d := GetAddress('VertexAttrib1d');
  3047. VertexAttrib1dv := GetAddress('VertexAttrib1dv');
  3048. VertexAttrib1f := GetAddress('VertexAttrib1f');
  3049. VertexAttrib1fv := GetAddress('VertexAttrib1fv');
  3050. VertexAttrib1s := GetAddress('VertexAttrib1s');
  3051. VertexAttrib1sv := GetAddress('VertexAttrib1sv');
  3052. VertexAttrib2d := GetAddress('VertexAttrib2d');
  3053. VertexAttrib2dv := GetAddress('VertexAttrib2dv');
  3054. VertexAttrib2f := GetAddress('VertexAttrib2f');
  3055. VertexAttrib2fv := GetAddress('VertexAttrib2fv');
  3056. VertexAttrib2s := GetAddress('VertexAttrib2s');
  3057. VertexAttrib2sv := GetAddress('VertexAttrib2sv');
  3058. VertexAttrib3d := GetAddress('VertexAttrib3d');
  3059. VertexAttrib3dv := GetAddress('VertexAttrib3dv');
  3060. VertexAttrib3f := GetAddress('VertexAttrib3f');
  3061. VertexAttrib3fv := GetAddress('VertexAttrib3fv');
  3062. VertexAttrib3s := GetAddress('VertexAttrib3s');
  3063. VertexAttrib3sv := GetAddress('VertexAttrib3sv');
  3064. VertexAttrib4Nbv := GetAddress('VertexAttrib4Nbv');
  3065. VertexAttrib4Niv := GetAddress('VertexAttrib4Niv');
  3066. VertexAttrib4Nsv := GetAddress('VertexAttrib4Nsv');
  3067. VertexAttrib4Nub := GetAddress('VertexAttrib4Nub');
  3068. VertexAttrib4Nubv := GetAddress('VertexAttrib4Nubv');
  3069. VertexAttrib4Nuiv := GetAddress('VertexAttrib4Nuiv');
  3070. VertexAttrib4Nusv := GetAddress('VertexAttrib4Nusv');
  3071. VertexAttrib4bv := GetAddress('VertexAttrib4bv');
  3072. VertexAttrib4d := GetAddress('VertexAttrib4d');
  3073. VertexAttrib4dv := GetAddress('VertexAttrib4dv');
  3074. VertexAttrib4f := GetAddress('VertexAttrib4f');
  3075. VertexAttrib4fv := GetAddress('VertexAttrib4fv');
  3076. VertexAttrib4iv := GetAddress('VertexAttrib4iv');
  3077. VertexAttrib4s := GetAddress('VertexAttrib4s');
  3078. VertexAttrib4sv := GetAddress('VertexAttrib4sv');
  3079. VertexAttrib4ubv := GetAddress('VertexAttrib4ubv');
  3080. VertexAttrib4uiv := GetAddress('VertexAttrib4uiv');
  3081. VertexAttrib4usv := GetAddress('VertexAttrib4usv');
  3082. VertexAttribPointer := GetAddress('VertexAttribPointer');
  3083. VertexAttribI1i := GetAddress('VertexAttribI1i');
  3084. VertexAttribI2i := GetAddress('VertexAttribI2i');
  3085. VertexAttribI3i := GetAddress('VertexAttribI3i');
  3086. VertexAttribI4i := GetAddress('VertexAttribI4i');
  3087. VertexAttribI1ui := GetAddress('VertexAttribI1ui');
  3088. VertexAttribI2ui := GetAddress('VertexAttribI2ui');
  3089. VertexAttribI3ui := GetAddress('VertexAttribI3ui');
  3090. VertexAttribI4ui := GetAddress('VertexAttribI4ui');
  3091. VertexAttribI1iv := GetAddress('VertexAttribI1iv');
  3092. VertexAttribI2iv := GetAddress('VertexAttribI2iv');
  3093. VertexAttribI3iv := GetAddress('VertexAttribI3iv');
  3094. VertexAttribI4iv := GetAddress('VertexAttribI4iv');
  3095. VertexAttribI1uiv := GetAddress('VertexAttribI1uiv');
  3096. VertexAttribI2uiv := GetAddress('VertexAttribI2uiv');
  3097. VertexAttribI3uiv := GetAddress('VertexAttribI3uiv');
  3098. VertexAttribI4uiv := GetAddress('VertexAttribI4uiv');
  3099. VertexAttribI4bv := GetAddress('VertexAttribI4bv');
  3100. VertexAttribI4sv := GetAddress('VertexAttribI4sv');
  3101. VertexAttribI4ubv := GetAddress('VertexAttribI4ubv');
  3102. VertexAttribI4usv := GetAddress('VertexAttribI4usv');
  3103. VertexAttribIPointer := GetAddress('VertexAttribIPointer');
  3104. GetVertexAttribIiv := GetAddress('GetVertexAttribIiv');
  3105. GetVertexAttribIuiv := GetAddress('GetVertexAttribIuiv');
  3106. EnableVertexAttribArray := GetAddress('EnableVertexAttribArray');
  3107. DisableVertexAttribArray := GetAddress('DisableVertexAttribArray');
  3108. VertexAttribDivisor := GetAddress('VertexAttribDivisor');
  3109. GenQueries := GetAddress('GenQueries');
  3110. DeleteQueries := GetAddress('DeleteQueries');
  3111. IsQuery := GetAddress('IsQuery');
  3112. BeginQuery := GetAddress('BeginQuery');
  3113. EndQuery := GetAddress('EndQuery');
  3114. GetQueryiv := GetAddress('GetQueryiv');
  3115. GetQueryObjectiv := GetAddress('GetQueryObjectiv');
  3116. GetQueryObjectuiv := GetAddress('GetQueryObjectuiv');
  3117. QueryCounter := GetAddress('QueryCounter');
  3118. GetQueryObjecti64v := GetAddress('GetQueryObjecti64v');
  3119. GetQueryObjectui64v := GetAddress('GetQueryObjectui64v');
  3120. DeleteObject := GetAddress('DeleteObject');
  3121. GetHandle := GetAddress('GetHandle');
  3122. DetachShader := GetAddressAlt('DetachShader', 'DetachObject');
  3123. CreateShader := GetAddressAlt('CreateShader', 'CreateShaderObject');
  3124. ShaderSource := GetAddress('ShaderSource');
  3125. CompileShader := GetAddress('CompileShader');
  3126. CreateProgram := GetAddressAlt('CreateProgram', 'CreateProgramObject');
  3127. AttachShader := GetAddressAlt('AttachShader', 'AttachObject');
  3128. LinkProgram := GetAddress('LinkProgram');
  3129. UseProgram := GetAddressAlt('UseProgram', 'UseProgramObject');
  3130. ValidateProgram := GetAddress('ValidateProgram');
  3131. Uniform1f := GetAddress('Uniform1f');
  3132. Uniform2f := GetAddress('Uniform2f');
  3133. Uniform3f := GetAddress('Uniform3f');
  3134. Uniform4f := GetAddress('Uniform4f');
  3135. Uniform1i := GetAddress('Uniform1i');
  3136. Uniform2i := GetAddress('Uniform2i');
  3137. Uniform3i := GetAddress('Uniform3i');
  3138. Uniform4i := GetAddress('Uniform4i');
  3139. Uniform1fv := GetAddress('Uniform1fv');
  3140. Uniform2fv := GetAddress('Uniform2fv');
  3141. Uniform3fv := GetAddress('Uniform3fv');
  3142. Uniform4fv := GetAddress('Uniform4fv');
  3143. Uniform1iv := GetAddress('Uniform1iv');
  3144. Uniform2iv := GetAddress('Uniform2iv');
  3145. Uniform3iv := GetAddress('Uniform3iv');
  3146. Uniform4iv := GetAddress('Uniform4iv');
  3147. Uniform1ui := GetAddress('Uniform1ui');
  3148. Uniform2ui := GetAddress('Uniform2ui');
  3149. Uniform3ui := GetAddress('Uniform3ui');
  3150. Uniform4ui := GetAddress('Uniform4ui');
  3151. Uniform1uiv := GetAddress('Uniform1uiv');
  3152. Uniform2uiv := GetAddress('Uniform2uiv');
  3153. Uniform3uiv := GetAddress('Uniform3uiv');
  3154. Uniform4uiv := GetAddress('Uniform4uiv');
  3155. GetUniformuiv := GetAddress('GetUniformuiv');
  3156. UniformMatrix2fv := GetAddress('UniformMatrix2fv');
  3157. UniformMatrix3fv := GetAddress('UniformMatrix3fv');
  3158. UniformMatrix4fv := GetAddress('UniformMatrix4fv');
  3159. BindFragDataLocation := GetAddress('BindFragDataLocation');
  3160. GetFragDataLocation := GetAddress('GetFragDataLocation');
  3161. ClampColor := GetAddress('ClampColor');
  3162. ColorMaski := GetAddress('ColorMaski');
  3163. GetBooleani_v := GetAddress('GetBooleani_v');
  3164. GetIntegeri_v := GetAddress('GetIntegeri_v');
  3165. Enablei := GetAddress('Enablei');
  3166. Disablei := GetAddress('Disablei');
  3167. IsEnabledi := GetAddress('IsEnabledi');
  3168. BindFragDataLocationIndexed := GetAddress('BindFragDataLocationIndexed');
  3169. GetFragDataIndex := GetAddress('GetFragDataIndex');
  3170. GetObjectParameterfv := GetAddress('GetObjectParameterfv');
  3171. GetObjectParameteriv := GetAddress('GetObjectParameteriv');
  3172. GetAttachedObjects := GetAddress('GetAttachedObjects');
  3173. GetActiveAttrib := GetAddress('GetActiveAttrib');
  3174. GetActiveUniform := GetAddress('GetActiveUniform');
  3175. GetAttachedShaders := GetAddress('GetAttachedShaders');
  3176. GetAttribLocation := GetAddress('GetAttribLocation');
  3177. GetProgramiv := GetAddressAlt('GetProgramiv', 'GetObjectParameteriv');
  3178. GetProgramInfoLog := GetAddress('GetProgramInfoLog');
  3179. GetShaderiv := GetAddressAlt('GetShaderiv', 'GetObjectParameteriv');
  3180. GetInfoLog := GetAddress('GetInfoLog');
  3181. GetShaderInfoLog := GetAddress('GetShaderInfoLog');
  3182. GetShaderSource := GetAddress('GetShaderSource');
  3183. GetUniformLocation := GetAddress('GetUniformLocation');
  3184. GetUniformfv := GetAddress('GetUniformfv');
  3185. GetUniformiv := GetAddress('GetUniformiv');
  3186. GetVertexAttribdv := GetAddress('GetVertexAttribdv');
  3187. GetVertexAttribfv := GetAddress('GetVertexAttribfv');
  3188. GetVertexAttribiv := GetAddress('GetVertexAttribiv');
  3189. GetVertexAttribPointerv := GetAddress('GetVertexAttribPointerv');
  3190. IsProgram := GetAddress('IsProgram');
  3191. IsShader := GetAddress('IsShader');
  3192. GetUniformLocation := GetAddress('GetUniformLocation');
  3193. BindAttribLocation := GetAddress('BindAttribLocation');
  3194. GetVaryingLocation := GetAddress('GetVaryingLocation');
  3195. GetActiveVarying := GetAddress('GetActiveVarying');
  3196. ActiveVarying := GetAddress('ActiveVarying');
  3197. GetUniformIndices := GetAddress('GetUniformIndices');
  3198. GetActiveUniformsiv := GetAddress('GetActiveUniformsiv');
  3199. GetActiveUniformName := GetAddress('GetActiveUniformName');
  3200. GetUniformBlockIndex := GetAddress('GetUniformBlockIndex');
  3201. GetActiveUniformBlockiv := GetAddress('GetActiveUniformBlockiv');
  3202. GetActiveUniformBlockName := GetAddress('GetActiveUniformBlockName');
  3203. UniformBlockBinding := GetAddress('UniformBlockBinding');
  3204. GetProgramBinary := GetAddress('GetProgramBinary');
  3205. ProgramBinary := GetAddress('ProgramBinary');
  3206. UseProgramStages := GetAddress('UseProgramStages');
  3207. ActiveShaderProgram := GetAddress('ActiveShaderProgram');
  3208. CreateShaderProgramv := GetAddress('CreateShaderProgramv');
  3209. BindProgramPipeline := GetAddress('BindProgramPipeline');
  3210. DeleteProgramPipelines := GetAddress('DeleteProgramPipelines');
  3211. GenProgramPipelines := GetAddress('GenProgramPipelines');
  3212. IsProgramPipeline := GetAddress('IsProgramPipeline');
  3213. GetProgramPipelineiv := GetAddress('GetProgramPipelineiv');
  3214. ProgramUniform1i := GetAddress('ProgramUniform1i');
  3215. ProgramUniform1iv := GetAddress('ProgramUniform1iv');
  3216. ProgramUniform1f := GetAddress('ProgramUniform1f');
  3217. ProgramUniform1fv := GetAddress('ProgramUniform1fv');
  3218. ProgramUniform1d := GetAddress('ProgramUniform1d');
  3219. ProgramUniform1dv := GetAddress('ProgramUniform1dv');
  3220. ProgramUniform1ui := GetAddress('ProgramUniform1ui');
  3221. ProgramUniform1uiv := GetAddress('ProgramUniform1uiv');
  3222. ProgramUniform2i := GetAddress('ProgramUniform2i');
  3223. ProgramUniform2iv := GetAddress('ProgramUniform2iv');
  3224. ProgramUniform2f := GetAddress('ProgramUniform2f');
  3225. ProgramUniform2fv := GetAddress('ProgramUniform2fv');
  3226. ProgramUniform2d := GetAddress('ProgramUniform2d');
  3227. ProgramUniform2dv := GetAddress('ProgramUniform2dv');
  3228. ProgramUniform2ui := GetAddress('ProgramUniform2ui');
  3229. ProgramUniform2uiv := GetAddress('ProgramUniform2uiv');
  3230. ProgramUniform3i := GetAddress('ProgramUniform3i');
  3231. ProgramUniform3iv := GetAddress('ProgramUniform3iv');
  3232. ProgramUniform3f := GetAddress('ProgramUniform3f');
  3233. ProgramUniform3fv := GetAddress('ProgramUniform3fv');
  3234. ProgramUniform3d := GetAddress('ProgramUniform3d');
  3235. ProgramUniform3dv := GetAddress('ProgramUniform3dv');
  3236. ProgramUniform3ui := GetAddress('ProgramUniform3ui');
  3237. ProgramUniform3uiv := GetAddress('ProgramUniform3uiv');
  3238. ProgramUniform4i := GetAddress('ProgramUniform4i');
  3239. ProgramUniform4iv := GetAddress('ProgramUniform4iv');
  3240. ProgramUniform4f := GetAddress('ProgramUniform4f');
  3241. ProgramUniform4fv := GetAddress('ProgramUniform4fv');
  3242. ProgramUniform4d := GetAddress('ProgramUniform4d');
  3243. ProgramUniform4dv := GetAddress('ProgramUniform4dv');
  3244. ProgramUniform4ui := GetAddress('ProgramUniform4ui');
  3245. ProgramUniform4uiv := GetAddress('ProgramUniform4uiv');
  3246. ProgramUniformMatrix2fv := GetAddress('ProgramUniformMatrix2fv');
  3247. ProgramUniformMatrix3fv := GetAddress('ProgramUniformMatrix3fv');
  3248. ProgramUniformMatrix4fv := GetAddress('ProgramUniformMatrix4fv');
  3249. ProgramUniformMatrix2dv := GetAddress('ProgramUniformMatrix2dv');
  3250. ProgramUniformMatrix3dv := GetAddress('ProgramUniformMatrix3dv');
  3251. ProgramUniformMatrix4dv := GetAddress('ProgramUniformMatrix4dv');
  3252. ProgramUniformMatrix2x3fv := GetAddress('ProgramUniformMatrix2x3fv');
  3253. ProgramUniformMatrix3x2fv := GetAddress('ProgramUniformMatrix3x2fv');
  3254. ProgramUniformMatrix2x4fv := GetAddress('ProgramUniformMatrix2x4fv');
  3255. ProgramUniformMatrix4x2fv := GetAddress('ProgramUniformMatrix4x2fv');
  3256. ProgramUniformMatrix3x4fv := GetAddress('ProgramUniformMatrix3x4fv');
  3257. ProgramUniformMatrix4x3fv := GetAddress('ProgramUniformMatrix4x3fv');
  3258. ProgramUniformMatrix2x3dv := GetAddress('ProgramUniformMatrix2x3dv');
  3259. ProgramUniformMatrix3x2dv := GetAddress('ProgramUniformMatrix3x2dv');
  3260. ProgramUniformMatrix2x4dv := GetAddress('ProgramUniformMatrix2x4dv');
  3261. ProgramUniformMatrix4x2dv := GetAddress('ProgramUniformMatrix4x2dv');
  3262. ProgramUniformMatrix3x4dv := GetAddress('ProgramUniformMatrix3x4dv');
  3263. ProgramUniformMatrix4x3dv := GetAddress('ProgramUniformMatrix4x3dv');
  3264. ValidateProgramPipeline := GetAddress('ValidateProgramPipeline');
  3265. GetProgramPipelineInfoLog := GetAddress('GetProgramPipelineInfoLog');
  3266. BlendEquationSeparate := GetAddress('BlendEquationSeparate');
  3267. DrawBuffers := GetAddress('DrawBuffers');
  3268. StencilOpSeparate := GetAddress('StencilOpSeparate');
  3269. StencilFuncSeparate := GetAddress('StencilFuncSeparate');
  3270. StencilMaskSeparate := GetAddress('StencilMaskSeparate');
  3271. ActiveTexture := GetAddress('ActiveTexture');
  3272. CompressedTexImage3D := GetAddress('CompressedTexImage3D');
  3273. CompressedTexImage2D := GetAddress('CompressedTexImage2D');
  3274. CompressedTexImage1D := GetAddress('CompressedTexImage1D');
  3275. CompressedTexSubImage3D := GetAddress('CompressedTexSubImage3D');
  3276. CompressedTexSubImage2D := GetAddress('CompressedTexSubImage2D');
  3277. CompressedTexSubImage1D := GetAddress('CompressedTexSubImage1D');
  3278. GetCompressedTexImage := GetAddress('GetCompressedTexImage');
  3279. ClientActiveTexture := GetAddress('ClientActiveTexture');
  3280. MultiTexCoord1d := GetAddress('MultiTexCoord1d');
  3281. MultiTexCoord1dV := GetAddress('MultiTexCoord1dv');
  3282. MultiTexCoord1f := GetAddress('MultiTexCoord1f');
  3283. MultiTexCoord1fv := GetAddress('MultiTexCoord1fv');
  3284. MultiTexCoord1i := GetAddress('MultiTexCoord1i');
  3285. MultiTexCoord1iv := GetAddress('MultiTexCoord1iv');
  3286. MultiTexCoord1s := GetAddress('MultiTexCoord1s');
  3287. MultiTexCoord1sv := GetAddress('MultiTexCoord1sv');
  3288. MultiTexCoord2d := GetAddress('MultiTexCoord2d');
  3289. MultiTexCoord2dv := GetAddress('MultiTexCoord2dv');
  3290. MultiTexCoord2f := GetAddress('MultiTexCoord2f');
  3291. MultiTexCoord2fv := GetAddress('MultiTexCoord2fv');
  3292. MultiTexCoord2i := GetAddress('MultiTexCoord2i');
  3293. MultiTexCoord2iv := GetAddress('MultiTexCoord2iv');
  3294. MultiTexCoord2s := GetAddress('MultiTexCoord2s');
  3295. MultiTexCoord2sv := GetAddress('MultiTexCoord2sv');
  3296. MultiTexCoord3d := GetAddress('MultiTexCoord3d');
  3297. MultiTexCoord3dv := GetAddress('MultiTexCoord3dv');
  3298. MultiTexCoord3f := GetAddress('MultiTexCoord3f');
  3299. MultiTexCoord3fv := GetAddress('MultiTexCoord3fv');
  3300. MultiTexCoord3i := GetAddress('MultiTexCoord3i');
  3301. MultiTexCoord3iv := GetAddress('MultiTexCoord3iv');
  3302. MultiTexCoord3s := GetAddress('MultiTexCoord3s');
  3303. MultiTexCoord3sv := GetAddress('MultiTexCoord3sv');
  3304. MultiTexCoord4d := GetAddress('MultiTexCoord4d');
  3305. MultiTexCoord4dv := GetAddress('MultiTexCoord4dv');
  3306. MultiTexCoord4f := GetAddress('MultiTexCoord4f');
  3307. MultiTexCoord4fv := GetAddress('MultiTexCoord4fv');
  3308. MultiTexCoord4i := GetAddress('MultiTexCoord4i');
  3309. MultiTexCoord4iv := GetAddress('MultiTexCoord4iv');
  3310. MultiTexCoord4s := GetAddress('MultiTexCoord4s');
  3311. MultiTexCoord4sv := GetAddress('MultiTexCoord4sv');
  3312. GetInteger64i_v := GetAddress('GetInteger64i_v');
  3313. GetBufferParameteri64v := GetAddress('GetBufferParameteri64v');
  3314. ProgramParameteri := GetAddress('ProgramParameteri');
  3315. ProgramString := GetAddress('ProgramString');
  3316. BindProgram := GetAddress('BindProgram');
  3317. DeletePrograms := GetAddress('DeletePrograms');
  3318. GenPrograms := GetAddress('GenPrograms');
  3319. ProgramEnvParameter4d := GetAddress('ProgramEnvParameter4d');
  3320. ProgramEnvParameter4dv := GetAddress('ProgramEnvParameter4dv');
  3321. ProgramEnvParameter4f := GetAddress('ProgramEnvParameter4f');
  3322. ProgramEnvParameter4fv := GetAddress('ProgramEnvParameter4fv');
  3323. ProgramLocalParameter4d := GetAddress('ProgramLocalParameter4d');
  3324. ProgramLocalParameter4dv := GetAddress('ProgramLocalParameter4dv');
  3325. ProgramLocalParameter4f := GetAddress('ProgramLocalParameter4f');
  3326. ProgramLocalParameter4fv := GetAddress('ProgramLocalParameter4fv');
  3327. GetProgramEnvParameterdv := GetAddress('GetProgramEnvParameterdv');
  3328. GetProgramEnvParameterfv := GetAddress('GetProgramEnvParameterfv');
  3329. GetProgramLocalParameterdv := GetAddress('GetProgramLocalParameterdv');
  3330. GetProgramLocalParameterfv := GetAddress('GetProgramLocalParameterfv');
  3331. ClearColorIi := GetAddress('ClearColorIi');
  3332. ClearColorIui := GetAddress('ClearColorIui');
  3333. TexParameterIiv := GetAddress('TexParameterIiv');
  3334. TexParameterIuiv := GetAddress('TexParameterIuiv');
  3335. GetTexParameterIiv := GetAddress('GetTexParameterIiv');
  3336. GetTexParameterIuiv := GetAddress('GetTexParameterIuiv');
  3337. PatchParameteri := GetAddress('PatchParameteri');
  3338. PatchParameterfv := GetAddress('PatchParameterfv');
  3339. BufferAddressRangeNV := GetAddressNoSuffixes('BufferAddressRangeNV');
  3340. VertexFormatNV := GetAddressNoSuffixes('VertexFormatNV');
  3341. NormalFormatNV := GetAddressNoSuffixes('NormalFormatNV');
  3342. ColorFormatNV := GetAddressNoSuffixes('ColorFormatNV');
  3343. IndexFormatNV := GetAddressNoSuffixes('IndexFormatNV');
  3344. TexCoordFormatNV := GetAddressNoSuffixes('TexCoordFormatNV');
  3345. EdgeFlagFormatNV := GetAddressNoSuffixes('EdgeFlagFormatNV');
  3346. SecondaryColorFormatNV := GetAddressNoSuffixes('SecondaryColorFormatNV');
  3347. FogCoordFormatNV := GetAddressNoSuffixes('FogCoordFormatNV');
  3348. VertexAttribFormatNV := GetAddressNoSuffixes('VertexAttribFormatNV');
  3349. VertexAttribIFormatNV := GetAddressNoSuffixes('VertexAttribIFormatNV');
  3350. GetIntegerui64i_vNV := GetAddressNoSuffixes('GetIntegerui64i_vNV');
  3351. GetBufferParameterui64vNV := GetAddressNoSuffixes('GetBufferParameterui64vNV');
  3352. MakeBufferResidentNV := GetAddressNoSuffixes('MakeBufferResidentNV');
  3353. MakeBufferNonResidentNV := GetAddressNoSuffixes('MakeBufferNonResidentNV');
  3354. IsBufferResidentNV := GetAddressNoSuffixes('IsBufferResidentNV');
  3355. MakeNamedBufferResidentNV := GetAddressNoSuffixes('MakeNamedBufferResidentNV');
  3356. MakeNamedBufferNonResidentNV := GetAddressNoSuffixes('MakeNamedBufferNonResidentNV');
  3357. IsNamedBufferResidentNV := GetAddressNoSuffixes('IsNamedBufferResidentNV');
  3358. GetNamedBufferParameterui64vNV := GetAddressNoSuffixes('GetNamedBufferParameterui64vNV');
  3359. GetIntegerui64vNV := GetAddressNoSuffixes('GetIntegerui64vNV');
  3360. Uniformui64NV := GetAddressNoSuffixes('Uniformui64NV');
  3361. Uniformui64vNV := GetAddressNoSuffixes('Uniformui64vNV');
  3362. GetUniformui64vNV := GetAddressNoSuffixes('GetUniformui64vNV');
  3363. ProgramUniformui64NV := GetAddressNoSuffixes('ProgramUniformui64NV');
  3364. ProgramUniformui64vNV := GetAddressNoSuffixes('ProgramUniformui64vNV');
  3365. TexImage2DMultisample := GetAddress('TexImage2DMultisample');
  3366. TexImage3DMultisample := GetAddress('TexImage3DMultisample');
  3367. GetMultisamplefv := GetAddress('GetMultisamplefv');
  3368. SampleMaski := GetAddress('SampleMaski');
  3369. ProvokingVertex := GetAddress('ProvokingVertex');
  3370. FenceSync := GetAddress('FenceSync');
  3371. IsSync := GetAddress('IsSync');
  3372. DeleteSync := GetAddress('DeleteSync');
  3373. ClientWaitSync := GetAddress('ClientWaitSync');
  3374. WaitSync := GetAddress('WaitSync');
  3375. GetInteger64v := GetAddress('GetInteger64v');
  3376. GetSynciv := GetAddress('GetSynciv');
  3377. BlendEquationi := GetAddress('BlendEquationi');
  3378. BlendEquationSeparatei := GetAddress('BlendEquationSeparatei');
  3379. BlendFunci := GetAddress('BlendFunci');
  3380. BlendFuncSeparatei := GetAddress('BlendFuncSeparatei');
  3381. MinSampleShading := GetAddress('MinSampleShading');
  3382. GenSamplers := GetAddress('GenSamplers');
  3383. DeleteSamplers := GetAddress('DeleteSamplers');
  3384. IsSampler := GetAddress('IsSampler');
  3385. BindSampler := GetAddress('BindSampler');
  3386. SamplerParameteri := GetAddress('SamplerParameteri');
  3387. SamplerParameteriv := GetAddress('SamplerParameteriv');
  3388. SamplerParameterf := GetAddress('SamplerParameterf');
  3389. SamplerParameterfv := GetAddress('SamplerParameterfv');
  3390. SamplerParameterIiv := GetAddress('SamplerParameterIiv');
  3391. SamplerParameterIuiv := GetAddress('SamplerParameterIuiv');
  3392. GetSamplerParameteriv := GetAddress('GetSamplerParameteriv');
  3393. GetSamplerParameterIiv := GetAddress('GetSamplerParameterIiv');
  3394. GetSamplerParameterfv := GetAddress('GetSamplerParameterfv');
  3395. GetSamplerParameterIfv := GetAddress('GetSamplerParameterIfv');
  3396. ClientAttribDefault := GetAddress('ClientAttribDefault');
  3397. PushClientAttribDefault := GetAddress('PushClientAttribDefault');
  3398. MatrixLoadf := GetAddress('MatrixLoadf');
  3399. MatrixLoadd := GetAddress('MatrixLoadd');
  3400. MatrixMultf := GetAddress('MatrixMultf');
  3401. MatrixMultd := GetAddress('MatrixMultd');
  3402. MatrixLoadIdentity := GetAddress('MatrixLoadIdentity');
  3403. MatrixRotatef := GetAddress('MatrixRotatef');
  3404. MatrixRotated := GetAddress('MatrixRotated');
  3405. MatrixScalef := GetAddress('MatrixScalef');
  3406. MatrixScaled := GetAddress('MatrixScaled');
  3407. MatrixTranslatef := GetAddress('MatrixTranslatef');
  3408. MatrixTranslated := GetAddress('MatrixTranslated');
  3409. MatrixFrustum := GetAddress('MatrixFrustum');
  3410. MatrixOrtho := GetAddress('MatrixOrtho');
  3411. MatrixPop := GetAddress('MatrixPop');
  3412. MatrixPush := GetAddress('MatrixPush');
  3413. MatrixLoadTransposef := GetAddress('MatrixLoadTransposef');
  3414. MatrixLoadTransposed := GetAddress('MatrixLoadTransposed');
  3415. MatrixMultTransposef := GetAddress('MatrixMultTransposef');
  3416. MatrixMultTransposed := GetAddress('MatrixMultTransposed');
  3417. TextureParameterfv := GetAddress('TextureParameterfv');
  3418. TextureParameteri := GetAddress('TextureParameteri');
  3419. TextureParameteriv := GetAddress('TextureParameteriv');
  3420. TextureImage1D := GetAddress('TextureImage1D');
  3421. TextureImage2D := GetAddress('TextureImage2D');
  3422. TextureSubImage1D := GetAddress('TextureSubImage1D');
  3423. TextureSubImage2D := GetAddress('TextureSubImage2D');
  3424. CopyTextureImage1D := GetAddress('CopyTextureImage1D');
  3425. CopyTextureImage2D := GetAddress('CopyTextureImage2D');
  3426. CopyTextureSubImage1D := GetAddress('CopyTextureSubImage1D');
  3427. CopyTextureSubImage2D := GetAddress('CopyTextureSubImage2D');
  3428. GetTextureImage := GetAddress('GetTextureImage');
  3429. GetTextureParameterfv := GetAddress('GetTextureParameterfv');
  3430. GetTextureParameteriv := GetAddress('GetTextureParameteriv');
  3431. GetTextureLevelParameterfv := GetAddress('GetTextureLevelParameterfv');
  3432. GetTextureLevelParameteriv := GetAddress('GetTextureLevelParameteriv');
  3433. TextureImage3D := GetAddress('TextureImage3D');
  3434. TextureSubImage3D := GetAddress('TextureSubImage3D');
  3435. CopyTextureSubImage3D := GetAddress('CopyTextureSubImage3D');
  3436. MultiTexParameterf := GetAddress('MultiTexParameterf');
  3437. MultiTexParameterfv := GetAddress('MultiTexParameterfv');
  3438. MultiTexParameteri := GetAddress('MultiTexParameteri');
  3439. MultiTexParameteriv := GetAddress('MultiTexParameteriv');
  3440. MultiTexImage1D := GetAddress('MultiTexImage1D');
  3441. MultiTexImage2D := GetAddress('MultiTexImage2D');
  3442. MultiTexSubImage1D := GetAddress('MultiTexSubImage1D');
  3443. MultiTexSubImage2D := GetAddress('MultiTexSubImage2D');
  3444. CopyMultiTexImage1D := GetAddress('CopyMultiTexImage1D');
  3445. CopyMultiTexImage2D := GetAddress('CopyMultiTexImage2D');
  3446. CopyMultiTexSubImage1D := GetAddress('CopyMultiTexSubImage1D');
  3447. CopyMultiTexSubImage2D := GetAddress('CopyMultiTexSubImage2D');
  3448. GetMultiTexImage := GetAddress('GetMultiTexImage');
  3449. GetMultiTexParameterfv := GetAddress('GetMultiTexParameterfv');
  3450. GetMultiTexParameteriv := GetAddress('GetMultiTexParameteriv');
  3451. GetMultiTexLevelParameterfv := GetAddress('GetMultiTexLevelParameterfv');
  3452. GetMultiTexLevelParameteriv := GetAddress('GetMultiTexLevelParameteriv');
  3453. MultiTexImage3D := GetAddress('MultiTexImage3D');
  3454. MultiTexSubImage3D := GetAddress('MultiTexSubImage3D');
  3455. CopyMultiTexSubImage3D := GetAddress('CopyMultiTexSubImage3D');
  3456. BindMultiTexture := GetAddress('BindMultiTexture');
  3457. EnableClientStateIndexed := GetAddress('EnableClientStateIndexed');
  3458. DisableClientStateIndexed := GetAddress('DisableClientStateIndexed');
  3459. MultiTexCoordPointer := GetAddress('MultiTexCoordPointer');
  3460. MultiTexEnvf := GetAddress('MultiTexEnvf');
  3461. MultiTexEnvfv := GetAddress('MultiTexEnvfv');
  3462. MultiTexEnvi := GetAddress('MultiTexEnvi');
  3463. MultiTexEnviv := GetAddress('MultiTexEnviv');
  3464. MultiTexGend := GetAddress('MultiTexGend');
  3465. MultiTexGendv := GetAddress('MultiTexGendv');
  3466. MultiTexGenf := GetAddress('MultiTexGenf');
  3467. MultiTexGenfv := GetAddress('MultiTexGenfv');
  3468. MultiTexGeni := GetAddress('MultiTexGeni');
  3469. MultiTexGeniv := GetAddress('MultiTexGeniv');
  3470. GetMultiTexEnvfv := GetAddress('GetMultiTexEnvfv');
  3471. GetMultiTexEnviv := GetAddress('GetMultiTexEnviv');
  3472. GetMultiTexGendv := GetAddress('GetMultiTexGendv');
  3473. GetMultiTexGenfv := GetAddress('GetMultiTexGenfv');
  3474. GetMultiTexGeniv := GetAddress('GetMultiTexGeniv');
  3475. GetFloatIndexedv := GetAddress('GetFloatIndexedv');
  3476. GetDoubleIndexedv := GetAddress('GetDoubleIndexedv');
  3477. GetPointerIndexedv := GetAddress('GetPointerIndexedv');
  3478. CompressedTextureImage3D := GetAddress('CompressedTextureImage3D');
  3479. CompressedTextureImage2D := GetAddress('CompressedTextureImage2D');
  3480. CompressedTextureImage1D := GetAddress('CompressedTextureImage1D');
  3481. CompressedTextureSubImage3D := GetAddress('CompressedTextureSubImage3D');
  3482. CompressedTextureSubImage2D := GetAddress('CompressedTextureSubImage2D');
  3483. CompressedTextureSubImage1D := GetAddress('CompressedTextureSubImage1D');
  3484. GetCompressedTextureImage := GetAddress('GetCompressedTextureImage');
  3485. CompressedMultiTexImage3D := GetAddress('CompressedMultiTexImage3D');
  3486. CompressedMultiTexImage2D := GetAddress('CompressedMultiTexImage2D');
  3487. CompressedMultiTexImage1D := GetAddress('CompressedMultiTexImage1D');
  3488. CompressedMultiTexSubImage3D := GetAddress('CompressedMultiTexSubImage3D');
  3489. CompressedMultiTexSubImage2D := GetAddress('CompressedMultiTexSubImage2D');
  3490. CompressedMultiTexSubImage1D := GetAddress('CompressedMultiTexSubImage1D');
  3491. GetCompressedMultiTexImage := GetAddress('GetCompressedMultiTexImage');
  3492. NamedProgramString := GetAddress('NamedProgramString');
  3493. NamedProgramLocalParameter4d := GetAddress('NamedProgramLocalParameter4d');
  3494. NamedProgramLocalParameter4dv := GetAddress('NamedProgramLocalParameter4dv');
  3495. NamedProgramLocalParameter4f := GetAddress('NamedProgramLocalParameter4f');
  3496. NamedProgramLocalParameter4fv := GetAddress('NamedProgramLocalParameter4fv');
  3497. GetNamedProgramLocalParameterdv := GetAddress('GetNamedProgramLocalParameterdv');
  3498. GetNamedProgramLocalParameterfv := GetAddress('GetNamedProgramLocalParameterfv');
  3499. GetNamedProgramiv := GetAddress('GetNamedProgramiv');
  3500. GetNamedProgramString := GetAddress('GetNamedProgramString');
  3501. NamedProgramLocalParameters4fv := GetAddress('NamedProgramLocalParameters4fv');
  3502. NamedProgramLocalParameterI4i := GetAddress('NamedProgramLocalParameterI4i');
  3503. NamedProgramLocalParameterI4iv := GetAddress('NamedProgramLocalParameterI4iv');
  3504. NamedProgramLocalParametersI4iv := GetAddress('NamedProgramLocalParametersI4iv');
  3505. NamedProgramLocalParameterI4ui := GetAddress('NamedProgramLocalParameterI4ui');
  3506. NamedProgramLocalParameterI4uiv := GetAddress('NamedProgramLocalParameterI4uiv');
  3507. NamedProgramLocalParametersI4uiv := GetAddress('NamedProgramLocalParametersI4uiv');
  3508. GetNamedProgramLocalParameterIiv := GetAddress('GetNamedProgramLocalParameterIiv');
  3509. GetNamedProgramLocalParameterIuiv := GetAddress('GetNamedProgramLocalParameterIuiv');
  3510. TextureParameterIiv := GetAddress('TextureParameterIiv');
  3511. TextureParameterIuiv := GetAddress('TextureParameterIuiv');
  3512. GetTextureParameterIiv := GetAddress('GetTextureParameterIiv');
  3513. GetTextureParameterIuiv := GetAddress('GetTextureParameterIuiv');
  3514. MultiTexParameterIiv := GetAddress('MultiTexParameterIiv');
  3515. MultiTexParameterIuiv := GetAddress('MultiTexParameterIuiv');
  3516. GetMultiTexParameterIiv := GetAddress('GetMultiTexParameterIiv');
  3517. GetMultiTexParameterIuiv := GetAddress('GetMultiTexParameterIuiv');
  3518. NamedBufferData := GetAddress('NamedBufferData');
  3519. NamedBufferSubData := GetAddress('NamedBufferSubData');
  3520. MapNamedBuffer := GetAddress('MapNamedBuffer');
  3521. UnmapNamedBuffer := GetAddress('UnmapNamedBuffer');
  3522. MapNamedBufferRange := GetAddress('MapNamedBufferRange');
  3523. FlushMappedNamedBufferRange := GetAddress('FlushMappedNamedBufferRange');
  3524. NamedCopyBufferSubData := GetAddress('NamedCopyBufferSubData');
  3525. GetNamedBufferParameteriv := GetAddress('GetNamedBufferParameteriv');
  3526. GetNamedBufferPointerv := GetAddress('GetNamedBufferPointerv');
  3527. GetNamedBufferSubData := GetAddress('GetNamedBufferSubData');
  3528. TextureBuffer := GetAddress('TextureBuffer');
  3529. MultiTexBuffer := GetAddress('MultiTexBuffer');
  3530. NamedRenderbufferStorage := GetAddress('NamedRenderbufferStorage');
  3531. GetNamedRenderbufferParameteriv :=
  3532. GetAddress('GetNamedRenderbufferParameteriv');
  3533. CheckNamedFramebufferStatus := GetAddress('CheckNamedFramebufferStatus');
  3534. NamedFramebufferTexture1D := GetAddress('NamedFramebufferTexture1D');
  3535. NamedFramebufferTexture2D := GetAddress('NamedFramebufferTexture2D');
  3536. NamedFramebufferTexture3D := GetAddress('NamedFramebufferTexture3D');
  3537. NamedFramebufferRenderbuffer := GetAddress('NamedFramebufferRenderbuffer');
  3538. GetNamedFramebufferAttachmentParameteriv := GetAddress('GetNamedFramebufferAttachmentParameteriv');
  3539. GenerateTextureMipmap := GetAddress('GenerateTextureMipmap');
  3540. GenerateMultiTexMipmap := GetAddress('GenerateMultiTexMipmap');
  3541. FramebufferDrawBuffer := GetAddress('FramebufferDrawBuffer');
  3542. FramebufferDrawBuffers := GetAddress('FramebufferDrawBuffers');
  3543. FramebufferReadBuffer := GetAddress('FramebufferReadBuffer');
  3544. GetFramebufferParameteriv := GetAddress('GetFramebufferParameteriv');
  3545. NamedRenderbufferStorageMultisample := GetAddress('NamedRenderbufferStorageMultisample');
  3546. NamedRenderbufferStorageMultisampleCoverage := GetAddress('NamedRenderbufferStorageMultisampleCoverage');
  3547. NamedFramebufferTexture := GetAddress('NamedFramebufferTexture');
  3548. NamedFramebufferTextureLayer := GetAddress('NamedFramebufferTextureLayer');
  3549. NamedFramebufferTextureFace := GetAddress('NamedFramebufferTextureFace');
  3550. TextureRenderbuffer := GetAddress('TextureRenderbuffer');
  3551. MultiTexRenderbuffer := GetAddress('MultiTexRenderbuffer');
  3552. FrameTerminatorGREMEDY := GetAddress('FrameTerminatorGREMEDY');
  3553. StringMarkerGREMEDY := GetAddress('StringMarkerGREMEDY');
  3554. DebugMessageEnableAMDX := GetAddressNoSuffixes('DebugMessageEnableAMDX');
  3555. DebugMessageCallbackAMDX := GetAddressNoSuffixes('DebugMessageCallbackAMDX');
  3556. DebugMessageControl := GetAddress('DebugMessageControl');
  3557. DebugMessageInsert := GetAddress('DebugMessageInsert');
  3558. DebugMessageCallback := GetAddress('DebugMessageCallback');
  3559. GetDebugMessageLog := GetAddress('GetDebugMessageLog');
  3560. PushDebugGroup := GetAddress('PushDebugGroup');
  3561. PopDebugGroup := GetAddress('PopDebugGroup');
  3562. ObjectLabel := GetAddress('ObjectLabel');
  3563. GetObjectLabel := GetAddress('GetObjectLabel');
  3564. ObjectPtrLabel := GetAddress('ObjectPtrLabel');
  3565. GetObjectPtrLabel := GetAddress('GetObjectPtrLabel');
  3566. ClearBufferData := GetAddress('ClearBufferData');
  3567. ClearBufferSubData := GetAddress('ClearBufferSubData');
  3568. ClearNamedBufferData := GetAddress('ClearNamedBufferData');
  3569. ClearNamedBufferSubData := GetAddress('ClearNamedBufferSubData');
  3570. DispatchCompute := GetAddress('DispatchCompute');
  3571. DispatchComputeIndirect := GetAddress('DispatchComputeIndirect');
  3572. CopyImageSubData := GetAddress('CopyImageSubData');
  3573. FramebufferParameteri := GetAddress('FramebufferParameteri');
  3574. NamedFramebufferParameteri := GetAddress('NamedFramebufferParameteri');
  3575. GetNamedFramebufferParameteriv := GetAddress('GetNamedFramebufferParameteriv');
  3576. GetInternalformati64v := GetAddress('GetInternalformati64v');
  3577. InvalidateTexSubImage := GetAddress('InvalidateTexSubImage');
  3578. InvalidateTexImage := GetAddress('InvalidateTexImage');
  3579. InvalidateBufferSubData := GetAddress('InvalidateBufferSubData');
  3580. InvalidateBufferData := GetAddress('InvalidateBufferData');
  3581. InvalidateFramebuffer := GetAddress('InvalidateFramebuffer');
  3582. InvalidateSubFramebuffer := GetAddress('InvalidateSubFramebuffer');
  3583. MultiDrawArraysIndirect := GetAddress('MultiDrawArraysIndirect');
  3584. MultiDrawElementsIndirect := GetAddress('MultiDrawElementsIndirect');
  3585. GetProgramInterfaceiv := GetAddress('GetProgramInterfaceiv');
  3586. GetProgramResourceIndex := GetAddress('GetProgramResourceIndex');
  3587. GetProgramResourceName := GetAddress('GetProgramResourceName');
  3588. GetProgramResourceiv := GetAddress('GetProgramResourceiv');
  3589. GetProgramResourceLocation := GetAddress('GetProgramResourceLocation');
  3590. GetProgramResourceLocationIndex := GetAddress('GetProgramResourceLocationIndex');
  3591. ShaderStorageBlockBinding := GetAddress('ShaderStorageBlockBinding');
  3592. TexBufferRange := GetAddress('TexBufferRange');
  3593. TextureBufferRange := GetAddress('TextureBufferRange');
  3594. TexStorage2DMultisample := GetAddress('TexStorage2DMultisample');
  3595. TexStorage3DMultisample := GetAddress('TexStorage3DMultisample');
  3596. TextureStorage2DMultisample := GetAddress('TextureStorage2DMultisample');
  3597. TextureStorage3DMultisample := GetAddress('TextureStorage3DMultisample');
  3598. BufferStorage := GetAddress('BufferStorage');
  3599. ClearTexImage := GetAddress('ClearTexImage');
  3600. ClearTexSubImage := GetAddress('ClearTexSubImage');
  3601. BindBuffersBase := GetAddress('BindBuffersBase');
  3602. BindBuffersRange := GetAddress('BindBuffersRange');
  3603. BindTextures := GetAddress('BindTextures');
  3604. BindSamplers := GetAddress('BindSamplers');
  3605. BindImageTextures := GetAddress('BindImageTextures');
  3606. BindVertexBuffers := GetAddress('BindVertexBuffers');
  3607. TextureView := GetAddress('TextureView');
  3608. BindVertexBuffer := GetAddress('BindVertexBuffer');
  3609. VertexAttribFormat := GetAddress('VertexAttribFormat');
  3610. VertexAttribIFormat := GetAddress('VertexAttribIFormat');
  3611. VertexAttribLFormat := GetAddress('VertexAttribLFormat');
  3612. VertexAttribBinding := GetAddress('VertexAttribBinding');
  3613. VertexBindingDivisor := GetAddress('VertexBindingDivisor');
  3614. VertexArrayBindVertexBuffer := GetAddress('VertexArrayBindVertexBuffer');
  3615. VertexArrayVertexAttribFormat := GetAddress('VertexArrayVertexAttribFormat');
  3616. VertexArrayVertexAttribIFormat := GetAddress('VertexArrayVertexAttribIFormat');
  3617. VertexArrayVertexAttribLFormat := GetAddress('VertexArrayVertexAttribLFormat');
  3618. VertexArrayVertexAttribBinding := GetAddress('VertexArrayVertexAttribBinding');
  3619. VertexArrayVertexBindingDivisor := GetAddress('VertexArrayVertexBindingDivisor');
  3620. CreateSyncFromCLevent := GetAddress('CreateSyncFromCLevent');
  3621. GenPathsNV := GetAddressNoSuffixes('GenPathsNV');
  3622. DeletePathsNV := GetAddressNoSuffixes('DeletePathsNV');
  3623. IsPathNV := GetAddressNoSuffixes('IsPathNV');
  3624. PathCommandsNV := GetAddressNoSuffixes('PathCommandsNV');
  3625. PathCoordsNV := GetAddressNoSuffixes('PathCoordsNV');
  3626. PathSubCommandsNV := GetAddressNoSuffixes('PathSubCommandsNV');
  3627. PathSubCoordsNV := GetAddressNoSuffixes('PathSubCoordsNV');
  3628. PathStringNV := GetAddressNoSuffixes('PathStringNV');
  3629. PathGlyphsNV := GetAddressNoSuffixes('PathGlyphsNV');
  3630. PathGlyphRangeNV := GetAddressNoSuffixes('PathGlyphRangeNV');
  3631. WeightPathsNV := GetAddressNoSuffixes('WeightPathsNV');
  3632. CopyPathNV := GetAddressNoSuffixes('CopyPathNV');
  3633. InterpolatePathsNV := GetAddressNoSuffixes('InterpolatePathsNV');
  3634. PathParameterivNV := GetAddressNoSuffixes('PathParameterivNV');
  3635. PathParameteriNV := GetAddressNoSuffixes('PathParameteriNV');
  3636. PathParameterfvNV := GetAddressNoSuffixes('PathParameterfvNV');
  3637. PathParameterfNV := GetAddressNoSuffixes('PathParameterfNV');
  3638. PathDashArrayNV := GetAddressNoSuffixes('PathDashArrayNV');
  3639. PathStencilFuncNV := GetAddressNoSuffixes('PathStencilFuncNV');
  3640. StencilFillPathNV := GetAddressNoSuffixes('StencilFillPathNV');
  3641. StencilStrokePathNV := GetAddressNoSuffixes('StencilStrokePathNV');
  3642. StencilFillPathInstancedNV := GetAddressNoSuffixes('StencilFillPathInstancedNV');
  3643. StencilStrokePathInstancedNV := GetAddressNoSuffixes('StencilStrokePathInstancedNV');
  3644. PathColorGenNV := GetAddressNoSuffixes('PathColorGenNV');
  3645. PathTexGenNV := GetAddressNoSuffixes('PathTexGenNV');
  3646. PathFogGenNV := GetAddressNoSuffixes('PathFogGenNV');
  3647. CoverFillPathNV := GetAddressNoSuffixes('CoverFillPathNV');
  3648. CoverStrokePathNV := GetAddressNoSuffixes('CoverStrokePathNV');
  3649. CoverFillPathInstancedNV := GetAddressNoSuffixes('CoverFillPathInstancedNV');
  3650. CoverStrokePathInstancedNV := GetAddressNoSuffixes('CoverStrokePathInstancedNV');
  3651. GetPathParameterivNV := GetAddressNoSuffixes('GetPathParameterivNV');
  3652. GetPathParameterfvNV := GetAddressNoSuffixes('GetPathParameterfvNV');
  3653. GetPathCommandsNV := GetAddressNoSuffixes('GetPathCommandsNV');
  3654. GetPathCoordsNV := GetAddressNoSuffixes('GetPathCoordsNV');
  3655. GetPathDashArrayNV := GetAddressNoSuffixes('GetPathDashArrayNV');
  3656. GetPathMetricsNV := GetAddressNoSuffixes('GetPathMetricsNV');
  3657. GetPathMetricRangeNV := GetAddressNoSuffixes('GetPathMetricRangeNV');
  3658. GetPathSpacingNV := GetAddressNoSuffixes('GetPathSpacingNV');
  3659. GetPathColorGenivNV := GetAddressNoSuffixes('GetPathColorGenivNV');
  3660. GetPathColorGenfvNV := GetAddressNoSuffixes('GetPathColorGenfvNV');
  3661. GetPathTexGenivNV := GetAddressNoSuffixes('GetPathTexGenivNV');
  3662. GetPathTexGenfvNV := GetAddressNoSuffixes('GetPathTexGenfvNV');
  3663. IsPointInFillPathNV := GetAddressNoSuffixes('IsPointInFillPathNV');
  3664. IsPointInStrokePathNV := GetAddressNoSuffixes('IsPointInStrokePathNV');
  3665. GetPathLengthNV := GetAddressNoSuffixes('GetPathLengthNV');
  3666. PointAlongPathNV := GetAddressNoSuffixes('PointAlongPathNV');
  3667. PathStencilDepthOffsetNV := GetAddressNoSuffixes('PathStencilDepthOffsetNV');
  3668. PathCoverDepthFuncNV := GetAddressNoSuffixes('PathCoverDepthFuncNV');
  3669. if FDebug then
  3670. if ARB_debug_output then
  3671. begin
  3672. DebugMessageCallback(DebugCallBack, nil);
  3673. DebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0,
  3674. FDebugIds, True);
  3675. Enable(GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB);
  3676. end
  3677. else if AMDX_debug_output then
  3678. begin
  3679. DebugMessageCallbackAMDX(DebugCallBackAMD, nil);
  3680. DebugMessageEnableAMDX(0, 0, 0, FDebugIds, True);
  3681. end
  3682. else
  3683. FDebug := False;
  3684. SetLength(FBuffer, 0);
  3685. FInitialized := True;
  3686. end;
  3687. procedure TGLExtensionsAndEntryPoints.Close;
  3688. begin
  3689. if FDebug then
  3690. if ARB_debug_output then
  3691. begin
  3692. DebugMessageCallback(nil, nil);
  3693. DebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0,
  3694. FDebugIds, False);
  3695. end
  3696. else if AMDX_debug_output then
  3697. begin
  3698. DebugMessageCallbackAMDX(nil, nil);
  3699. DebugMessageEnableAMDX(0, 0, 0, FDebugIds, False);
  3700. end;
  3701. VERSION_1_0 := False;
  3702. VERSION_1_1 := False;
  3703. VERSION_1_2 := False;
  3704. VERSION_1_3 := False;
  3705. VERSION_1_4 := False;
  3706. VERSION_1_5 := False;
  3707. VERSION_2_0 := False;
  3708. VERSION_2_1 := False;
  3709. VERSION_3_0 := False;
  3710. VERSION_3_1 := False;
  3711. VERSION_3_2 := False;
  3712. VERSION_3_3 := False;
  3713. VERSION_4_0 := False;
  3714. VERSION_4_1 := False;
  3715. ARB_blend_func_extended := False;
  3716. ARB_color_buffer_float := False;
  3717. ARB_compatibility := False;
  3718. ARB_copy_buffer := False;
  3719. ARB_depth_buffer_float := False;
  3720. ARB_depth_clamp := False;
  3721. ARB_depth_texture := False;
  3722. ARB_draw_buffers := False;
  3723. ARB_draw_buffers_blend := False;
  3724. ARB_draw_elements_base_vertex := False;
  3725. ARB_draw_indirect := False;
  3726. ARB_draw_instanced := False;
  3727. ARB_explicit_attrib_location := False;
  3728. ARB_fragment_coord_conventions := False;
  3729. ARB_fragment_program := False;
  3730. ARB_fragment_program_shadow := False;
  3731. ARB_fragment_shader := False;
  3732. ARB_framebuffer_object := False;
  3733. ARB_framebuffer_sRGB := False;
  3734. ARB_geometry_shader4 := False;
  3735. ARB_gpu_shader_fp64 := False;
  3736. ARB_gpu_shader5 := False;
  3737. ARB_half_float_pixel := False;
  3738. ARB_half_float_vertex := False;
  3739. ARB_imaging := False;
  3740. ARB_instanced_arrays := False;
  3741. ARB_map_buffer_range := False;
  3742. ARB_matrix_palette := False;
  3743. ARB_multisample := False;
  3744. // ' ' to avoid collision with WGL variant
  3745. ARB_multitexture := False;
  3746. ARB_occlusion_query := False;
  3747. ARB_occlusion_query2 := False;
  3748. ARB_pixel_buffer_object := False;
  3749. ARB_point_parameters := False;
  3750. ARB_point_sprite := False;
  3751. ARB_provoking_vertex := False;
  3752. ARB_sample_shading := False;
  3753. ARB_sampler_objects := False;
  3754. ARB_seamless_cube_map := False;
  3755. ARB_shader_bit_encoding := False;
  3756. ARB_shader_objects := False;
  3757. ARB_shader_subroutine := False;
  3758. ARB_shader_texture_lod := False;
  3759. ARB_shading_language_100 := False;
  3760. ARB_shadow := False;
  3761. ARB_shadow_ambient := False;
  3762. ARB_sync := False;
  3763. ARB_tessellation_shader := False;
  3764. ARB_texture_border_clamp := False;
  3765. ARB_texture_buffer_object := False;
  3766. ARB_texture_buffer_object_rgb32 := False;
  3767. ARB_texture_compression := False;
  3768. ARB_texture_compression_rgtc := False;
  3769. ARB_texture_cube_map := False;
  3770. ARB_texture_cube_map_array := False;
  3771. ARB_texture_env_add := False;
  3772. ARB_texture_env_combine := False;
  3773. ARB_texture_env_crossbar := False;
  3774. ARB_texture_env_dot3 := False;
  3775. ARB_texture_float := False;
  3776. ARB_texture_gather := False;
  3777. ARB_texture_mirrored_repeat := False;
  3778. ARB_texture_multisample := False;
  3779. ARB_texture_non_power_of_two := False;
  3780. ARB_texture_query_lod := False;
  3781. ARB_texture_rectangle := False;
  3782. ARB_texture_rg := False;
  3783. ARB_texture_rgb10_a2ui := False;
  3784. ARB_texture_swizzle := False;
  3785. ARB_timer_query := False;
  3786. ARB_transform_feedback2 := False;
  3787. ARB_transform_feedback3 := False;
  3788. ARB_transpose_matrix := False;
  3789. ARB_uniform_buffer_object := False;
  3790. ARB_vertex_array_bgra := False;
  3791. ARB_vertex_array_object := False;
  3792. ARB_vertex_blend := False;
  3793. ARB_vertex_buffer_object := False;
  3794. ARB_vertex_program := False;
  3795. ARB_vertex_shader := False;
  3796. ARB_vertex_type_2_10_10_10_rev := False;
  3797. ARB_window_pos := False;
  3798. ARB_texture_compression_bptc := False;
  3799. ARB_get_program_binary := False;
  3800. ARB_separate_shader_objects := False;
  3801. ARB_shader_stencil_export := False;
  3802. KHR_debug := False;
  3803. ARB_clear_buffer_object := False;
  3804. ARB_compute_shader := False;
  3805. ARB_copy_image := False;
  3806. ARB_debug_group := False;
  3807. ARB_debug_label := False;
  3808. ARB_debug_output2 := False;
  3809. ARB_ES3_compatibility := False;
  3810. ARB_explicit_uniform_location := False;
  3811. ARB_fragment_layer_viewport := False;
  3812. ARB_framebuffer_no_attachments := False;
  3813. ARB_internalformat_query2 := False;
  3814. ARB_invalidate_subdata := False;
  3815. ARB_multi_draw_indirect := False;
  3816. ARB_program_interface_query := False;
  3817. ARB_shader_image_size := False;
  3818. ARB_shader_storage_buffer_object := False;
  3819. ARB_stencil_texturing := False;
  3820. ARB_texture_buffer_range := False;
  3821. ARB_texture_query_levels := False;
  3822. ARB_texture_storage_multisample := False;
  3823. ARB_texture_view := False;
  3824. ARB_vertex_attrib_binding := False;
  3825. ARB_robustness_isolation := False;
  3826. ARB_cl_event := False;
  3827. // check Vendor/EXT OpenGL extensions
  3828. _3DFX_multisample := False;
  3829. _3DFX_tbuffer := False;
  3830. _3DFX_texture_compression_FXT1 := False;
  3831. ATI_draw_buffers := False;
  3832. ATI_texture_compression_3dc := False;
  3833. ATI_texture_float := False;
  3834. ATI_texture_mirror_once := False;
  3835. S3_s3tc := False;
  3836. EXT_abgr := False;
  3837. EXT_bgra := False;
  3838. EXT_bindable_uniform := False;
  3839. EXT_blend_color := False;
  3840. EXT_blend_equation_separate := False;
  3841. EXT_blend_func_separate := False;
  3842. EXT_blend_logic_op := False;
  3843. EXT_blend_minmax := False;
  3844. EXT_blend_subtract := False;
  3845. EXT_Cg_shader := False;
  3846. EXT_clip_volume_hint := False;
  3847. EXT_compiled_vertex_array := False;
  3848. EXT_copy_texture := False;
  3849. EXT_depth_bounds_test := False;
  3850. EXT_draw_buffers2 := False;
  3851. EXT_draw_instanced := False;
  3852. EXT_draw_range_elements := False;
  3853. EXT_fog_coord := False;
  3854. EXT_framebuffer_blit := False;
  3855. EXT_framebuffer_multisample := False;
  3856. EXT_framebuffer_object := False;
  3857. EXT_framebuffer_sRGB := False;
  3858. EXT_geometry_shader4 := False;
  3859. EXT_gpu_program_parameters := False;
  3860. EXT_gpu_shader4 := False;
  3861. EXT_multi_draw_arrays := False;
  3862. EXT_multisample := False;
  3863. EXT_packed_depth_stencil := False;
  3864. EXT_packed_float := False;
  3865. EXT_packed_pixels := False;
  3866. EXT_paletted_texture := False;
  3867. EXT_pixel_buffer_object := False;
  3868. EXT_polygon_offset := False;
  3869. EXT_rescale_normal := False;
  3870. EXT_secondary_color := False;
  3871. EXT_separate_specular_color := False;
  3872. EXT_shadow_funcs := False;
  3873. EXT_shared_texture_palette := False;
  3874. EXT_stencil_clear_tag := False;
  3875. EXT_stencil_two_side := False;
  3876. EXT_stencil_wrap := False;
  3877. EXT_texture3D := False;
  3878. EXT_texture_array := False;
  3879. EXT_texture_buffer_object := False;
  3880. EXT_texture_compression_latc := False;
  3881. EXT_texture_compression_rgtc := False;
  3882. EXT_texture_compression_s3tc := False;
  3883. EXT_texture_cube_map := False;
  3884. EXT_texture_edge_clamp := False;
  3885. EXT_texture_env_add := False;
  3886. EXT_texture_env_combine := False;
  3887. EXT_texture_env_dot3 := False;
  3888. EXT_texture_filter_anisotropic := False;
  3889. EXT_texture_integer := False;
  3890. EXT_texture_lod := False;
  3891. EXT_texture_lod_bias := False;
  3892. EXT_texture_mirror_clamp := False;
  3893. EXT_texture_object := False;
  3894. EXT_texture_rectangle := False;
  3895. EXT_texture_sRGB := False;
  3896. EXT_texture_shared_exponent := False;
  3897. EXT_timer_query := False;
  3898. EXT_transform_feedback := False;
  3899. EXT_vertex_array := False;
  3900. EXT_texture_sRGB_decode := False;
  3901. EXT_direct_state_access := False;
  3902. EXT_texture_swizzle := False;
  3903. HP_occlusion_test := False;
  3904. IBM_rasterpos_clip := False;
  3905. KTX_buffer_region := False;
  3906. MESA_resize_buffers := False;
  3907. NV_blend_square := False;
  3908. NV_conditional_render := False;
  3909. NV_copy_image := False;
  3910. NV_depth_buffer_float := False;
  3911. NV_fence := False;
  3912. NV_float_buffer := False;
  3913. NV_fog_distance := False;
  3914. NV_geometry_program4 := False;
  3915. NV_light_max_exponent := False;
  3916. NV_multisample_filter_hint := False;
  3917. NV_occlusion_query := False;
  3918. NV_point_sprite := False;
  3919. NV_primitive_restart := False;
  3920. NV_register_combiners := False;
  3921. NV_shader_buffer_load := False;
  3922. NV_texgen_reflection := False;
  3923. NV_texture_compression_vtc := False;
  3924. NV_texture_env_combine4 := False;
  3925. NV_texture_rectangle := False;
  3926. NV_texture_shader := False;
  3927. NV_texture_shader2 := False;
  3928. NV_texture_shader3 := False;
  3929. NV_transform_feedback := False;
  3930. NV_vertex_array_range := False;
  3931. NV_vertex_array_range2 := False;
  3932. NV_vertex_buffer_unified_memory := False;
  3933. NV_vertex_program := False;
  3934. SGI_color_matrix := False;
  3935. SGIS_generate_mipmap := False;
  3936. SGIS_multisample := False;
  3937. SGIS_texture_border_clamp := False;
  3938. SGIS_texture_color_mask := False;
  3939. SGIS_texture_edge_clamp := False;
  3940. SGIS_texture_lod := False;
  3941. SGIX_depth_texture := False;
  3942. SGIX_shadow := False;
  3943. SGIX_shadow_ambient := False;
  3944. AMD_vertex_shader_tessellator := False;
  3945. WIN_swap_hint := False;
  3946. ATI_meminfo := False;
  3947. NVX_gpu_memory_info := False;
  3948. NV_vdpau_interop := False;
  3949. NV_path_rendering := False;
  3950. GREMEDY_frame_terminator := False;
  3951. GREMEDY_string_marker := False;
  3952. ARB_debug_output := False;
  3953. BindTexture := GetCapAddress();
  3954. BlendFunc := GetCapAddress();
  3955. Clear := GetCapAddress();
  3956. ClearColor := GetCapAddress();
  3957. ClearDepth := GetCapAddress();
  3958. ClearStencil := GetCapAddress();
  3959. ColorMask := GetCapAddress();
  3960. CopyTexImage1D := GetCapAddress();
  3961. CopyTexImage2D := GetCapAddress();
  3962. CopyTexSubImage1D := GetCapAddress();
  3963. CopyTexSubImage2D := GetCapAddress();
  3964. CullFace := GetCapAddress();
  3965. DeleteTextures := GetCapAddress();
  3966. DepthFunc := GetCapAddress();
  3967. DepthMask := GetCapAddress();
  3968. DepthRange := GetCapAddress();
  3969. Disable := GetCapAddress();
  3970. DrawArrays := GetCapAddress();
  3971. DrawBuffer := GetCapAddress();
  3972. DrawElements := GetCapAddress();
  3973. Enable := GetCapAddress();
  3974. Finish := GetCapAddress();
  3975. Flush := GetCapAddress();
  3976. FrontFace := GetCapAddress();
  3977. GenTextures := GetCapAddress();
  3978. GetBooleanv := GetCapAddress();
  3979. GetDoublev := GetCapAddress();
  3980. GetError := GetCapAddress();
  3981. GetFloatv := GetCapAddress();
  3982. GetPointerv := GetCapAddress();
  3983. GetString := GetCapAddress();
  3984. GetTexImage := GetCapAddress();
  3985. GetTexLevelParameterfv := GetCapAddress();
  3986. GetTexLevelParameteriv := GetCapAddress();
  3987. GetTexParameterfv := GetCapAddress();
  3988. GetTexParameteriv := GetCapAddress();
  3989. Hint := GetCapAddress();
  3990. IsEnabled := GetCapAddress();
  3991. IsTexture := GetCapAddress();
  3992. LineWidth := GetCapAddress();
  3993. LogicOp := GetCapAddress();
  3994. PixelStoref := GetCapAddress();
  3995. PixelStorei := GetCapAddress();
  3996. PointSize := GetCapAddress();
  3997. PolygonMode := GetCapAddress();
  3998. PolygonOffset := GetCapAddress();
  3999. ReadBuffer := GetCapAddress();
  4000. ReadPixels := GetCapAddress();
  4001. Scissor := GetCapAddress();
  4002. StencilFunc := GetCapAddress();
  4003. StencilMask := GetCapAddress();
  4004. StencilOp := GetCapAddress();
  4005. TexImage1D := GetCapAddress();
  4006. TexImage2D := GetCapAddress();
  4007. TexParameterf := GetCapAddress();
  4008. TexParameterfv := GetCapAddress();
  4009. TexParameteri := GetCapAddress();
  4010. TexParameteriv := GetCapAddress();
  4011. TexSubImage1D := GetCapAddress();
  4012. TexSubImage2D := GetCapAddress();
  4013. Viewport := GetCapAddress();
  4014. Accum := GetCapAddress();
  4015. AlphaFunc := GetCapAddress();
  4016. AreTexturesResident := GetCapAddress();
  4017. ArrayElement := GetCapAddress();
  4018. Begin_ := GetCapAddress();
  4019. Bitmap := GetCapAddress();
  4020. CallList := GetCapAddress();
  4021. CallLists := GetCapAddress();
  4022. ClearAccum := GetCapAddress();
  4023. ClearIndex := GetCapAddress();
  4024. ClipPlane := GetCapAddress();
  4025. Color3b := GetCapAddress();
  4026. Color3bv := GetCapAddress();
  4027. Color3d := GetCapAddress();
  4028. Color3dv := GetCapAddress();
  4029. Color3f := GetCapAddress();
  4030. Color3fv := GetCapAddress();
  4031. Color3i := GetCapAddress();
  4032. Color3iv := GetCapAddress();
  4033. Color3s := GetCapAddress();
  4034. Color3sv := GetCapAddress();
  4035. Color3ub := GetCapAddress();
  4036. Color3ubv := GetCapAddress();
  4037. Color3ui := GetCapAddress();
  4038. Color3uiv := GetCapAddress();
  4039. Color3us := GetCapAddress();
  4040. Color3usv := GetCapAddress();
  4041. Color4b := GetCapAddress();
  4042. Color4bv := GetCapAddress();
  4043. Color4d := GetCapAddress();
  4044. Color4dv := GetCapAddress();
  4045. Color4f := GetCapAddress();
  4046. Color4fv := GetCapAddress();
  4047. Color4i := GetCapAddress();
  4048. Color4iv := GetCapAddress();
  4049. Color4s := GetCapAddress();
  4050. Color4sv := GetCapAddress();
  4051. Color4ub := GetCapAddress();
  4052. Color4ubv := GetCapAddress();
  4053. Color4ui := GetCapAddress();
  4054. Color4uiv := GetCapAddress();
  4055. Color4us := GetCapAddress();
  4056. Color4usv := GetCapAddress();
  4057. ColorMaterial := GetCapAddress();
  4058. ColorPointer := GetCapAddress();
  4059. CopyPixels := GetCapAddress();
  4060. DeleteLists := GetCapAddress();
  4061. DisableClientState := GetCapAddress();
  4062. DrawPixels := GetCapAddress();
  4063. EdgeFlag := GetCapAddress();
  4064. EdgeFlagPointer := GetCapAddress();
  4065. EdgeFlagv := GetCapAddress();
  4066. EnableClientState := GetCapAddress();
  4067. End_ := GetCapAddress();
  4068. EndList := GetCapAddress();
  4069. EvalCoord1d := GetCapAddress();
  4070. EvalCoord1dv := GetCapAddress();
  4071. EvalCoord1f := GetCapAddress();
  4072. EvalCoord1fv := GetCapAddress();
  4073. EvalCoord2d := GetCapAddress();
  4074. EvalCoord2dv := GetCapAddress();
  4075. EvalCoord2f := GetCapAddress();
  4076. EvalCoord2fv := GetCapAddress();
  4077. EvalMesh1 := GetCapAddress();
  4078. EvalMesh2 := GetCapAddress();
  4079. EvalPoint1 := GetCapAddress();
  4080. EvalPoint2 := GetCapAddress();
  4081. FeedbackBuffer := GetCapAddress();
  4082. Fogf := GetCapAddress();
  4083. Fogfv := GetCapAddress();
  4084. Fogi := GetCapAddress();
  4085. Fogiv := GetCapAddress();
  4086. Frustum := GetCapAddress();
  4087. GenLists := GetCapAddress();
  4088. GetClipPlane := GetCapAddress();
  4089. GetLightfv := GetCapAddress();
  4090. GetLightiv := GetCapAddress();
  4091. GetMapdv := GetCapAddress();
  4092. GetMapfv := GetCapAddress();
  4093. GetMapiv := GetCapAddress();
  4094. GetMaterialfv := GetCapAddress();
  4095. GetMaterialiv := GetCapAddress();
  4096. GetPixelMapfv := GetCapAddress();
  4097. GetPixelMapuiv := GetCapAddress();
  4098. GetPixelMapusv := GetCapAddress();
  4099. GetPolygonStipple := GetCapAddress();
  4100. GetTexEnvfv := GetCapAddress();
  4101. GetTexEnviv := GetCapAddress();
  4102. GetTexGendv := GetCapAddress();
  4103. GetTexGenfv := GetCapAddress();
  4104. GetTexGeniv := GetCapAddress();
  4105. IndexMask := GetCapAddress();
  4106. IndexPointer := GetCapAddress();
  4107. Indexd := GetCapAddress();
  4108. Indexdv := GetCapAddress();
  4109. Indexf := GetCapAddress();
  4110. Indexfv := GetCapAddress();
  4111. Indexi := GetCapAddress();
  4112. Indexiv := GetCapAddress();
  4113. Indexs := GetCapAddress();
  4114. Indexsv := GetCapAddress();
  4115. Indexub := GetCapAddress();
  4116. Indexubv := GetCapAddress();
  4117. InitNames := GetCapAddress();
  4118. InterleavedArrays := GetCapAddress();
  4119. IsList := GetCapAddress();
  4120. LightModelf := GetCapAddress();
  4121. LightModelfv := GetCapAddress();
  4122. LightModeli := GetCapAddress();
  4123. LightModeliv := GetCapAddress();
  4124. Lightf := GetCapAddress();
  4125. Lightfv := GetCapAddress();
  4126. Lighti := GetCapAddress();
  4127. Lightiv := GetCapAddress();
  4128. LineStipple := GetCapAddress();
  4129. ListBase := GetCapAddress();
  4130. LoadIdentity := GetCapAddress();
  4131. LoadMatrixd := GetCapAddress();
  4132. LoadMatrixf := GetCapAddress();
  4133. LoadName := GetCapAddress();
  4134. Map1d := GetCapAddress();
  4135. Map1f := GetCapAddress();
  4136. Map2d := GetCapAddress();
  4137. Map2f := GetCapAddress();
  4138. MapGrid1d := GetCapAddress();
  4139. MapGrid1f := GetCapAddress();
  4140. MapGrid2d := GetCapAddress();
  4141. MapGrid2f := GetCapAddress();
  4142. Materialf := GetCapAddress();
  4143. Materialfv := GetCapAddress();
  4144. Materiali := GetCapAddress();
  4145. Materialiv := GetCapAddress();
  4146. MatrixMode := GetCapAddress();
  4147. MultMatrixd := GetCapAddress();
  4148. MultMatrixf := GetCapAddress();
  4149. NewList := GetCapAddress();
  4150. Normal3b := GetCapAddress();
  4151. Normal3bv := GetCapAddress();
  4152. Normal3d := GetCapAddress();
  4153. Normal3dv := GetCapAddress();
  4154. Normal3f := GetCapAddress();
  4155. Normal3fv := GetCapAddress();
  4156. Normal3i := GetCapAddress();
  4157. Normal3iv := GetCapAddress();
  4158. Normal3s := GetCapAddress();
  4159. Normal3sv := GetCapAddress();
  4160. NormalPointer := GetCapAddress();
  4161. Ortho := GetCapAddress();
  4162. PassThrough := GetCapAddress();
  4163. PixelMapfv := GetCapAddress();
  4164. PixelMapuiv := GetCapAddress();
  4165. PixelMapusv := GetCapAddress();
  4166. PixelTransferf := GetCapAddress();
  4167. PixelTransferi := GetCapAddress();
  4168. PixelZoom := GetCapAddress();
  4169. PolygonStipple := GetCapAddress();
  4170. PopAttrib := GetCapAddress();
  4171. PopClientAttrib := GetCapAddress();
  4172. PopMatrix := GetCapAddress();
  4173. PopName := GetCapAddress();
  4174. PrioritizeTextures := GetCapAddress();
  4175. PushAttrib := GetCapAddress();
  4176. PushClientAttrib := GetCapAddress();
  4177. PushMatrix := GetCapAddress();
  4178. PushName := GetCapAddress();
  4179. RasterPos2d := GetCapAddress();
  4180. RasterPos2dv := GetCapAddress();
  4181. RasterPos2f := GetCapAddress();
  4182. RasterPos2fv := GetCapAddress();
  4183. RasterPos2i := GetCapAddress();
  4184. RasterPos2iv := GetCapAddress();
  4185. RasterPos2s := GetCapAddress();
  4186. RasterPos2sv := GetCapAddress();
  4187. RasterPos3d := GetCapAddress();
  4188. RasterPos3dv := GetCapAddress();
  4189. RasterPos3f := GetCapAddress();
  4190. RasterPos3fv := GetCapAddress();
  4191. RasterPos3i := GetCapAddress();
  4192. RasterPos3iv := GetCapAddress();
  4193. RasterPos3s := GetCapAddress();
  4194. RasterPos3sv := GetCapAddress();
  4195. RasterPos4d := GetCapAddress();
  4196. RasterPos4dv := GetCapAddress();
  4197. RasterPos4f := GetCapAddress();
  4198. RasterPos4fv := GetCapAddress();
  4199. RasterPos4i := GetCapAddress();
  4200. RasterPos4iv := GetCapAddress();
  4201. RasterPos4s := GetCapAddress();
  4202. RasterPos4sv := GetCapAddress();
  4203. Rectd := GetCapAddress();
  4204. Rectdv := GetCapAddress();
  4205. Rectf := GetCapAddress();
  4206. Rectfv := GetCapAddress();
  4207. Recti := GetCapAddress();
  4208. Rectiv := GetCapAddress();
  4209. Rects := GetCapAddress();
  4210. Rectsv := GetCapAddress();
  4211. RenderMode := GetCapAddress();
  4212. Rotated := GetCapAddress();
  4213. Rotatef := GetCapAddress();
  4214. Scaled := GetCapAddress();
  4215. Scalef := GetCapAddress();
  4216. SelectBuffer := GetCapAddress();
  4217. ShadeModel := GetCapAddress();
  4218. TexCoord1d := GetCapAddress();
  4219. TexCoord1dv := GetCapAddress();
  4220. TexCoord1f := GetCapAddress();
  4221. TexCoord1fv := GetCapAddress();
  4222. TexCoord1i := GetCapAddress();
  4223. TexCoord1iv := GetCapAddress();
  4224. TexCoord1s := GetCapAddress();
  4225. TexCoord1sv := GetCapAddress();
  4226. TexCoord2d := GetCapAddress();
  4227. TexCoord2dv := GetCapAddress();
  4228. TexCoord2f := GetCapAddress();
  4229. TexCoord2fv := GetCapAddress();
  4230. TexCoord2i := GetCapAddress();
  4231. TexCoord2iv := GetCapAddress();
  4232. TexCoord2s := GetCapAddress();
  4233. TexCoord2sv := GetCapAddress();
  4234. TexCoord3d := GetCapAddress();
  4235. TexCoord3dv := GetCapAddress();
  4236. TexCoord3f := GetCapAddress();
  4237. TexCoord3fv := GetCapAddress();
  4238. TexCoord3i := GetCapAddress();
  4239. TexCoord3iv := GetCapAddress();
  4240. TexCoord3s := GetCapAddress();
  4241. TexCoord3sv := GetCapAddress();
  4242. TexCoord4d := GetCapAddress();
  4243. TexCoord4dv := GetCapAddress();
  4244. TexCoord4f := GetCapAddress();
  4245. TexCoord4fv := GetCapAddress();
  4246. TexCoord4i := GetCapAddress();
  4247. TexCoord4iv := GetCapAddress();
  4248. TexCoord4s := GetCapAddress();
  4249. TexCoord4sv := GetCapAddress();
  4250. TexCoordPointer := GetCapAddress();
  4251. TexEnvf := GetCapAddress();
  4252. TexEnvfv := GetCapAddress();
  4253. TexEnvi := GetCapAddress();
  4254. TexEnviv := GetCapAddress();
  4255. TexGend := GetCapAddress();
  4256. TexGendv := GetCapAddress();
  4257. TexGenf := GetCapAddress();
  4258. TexGenfv := GetCapAddress();
  4259. TexGeni := GetCapAddress();
  4260. TexGeniv := GetCapAddress();
  4261. Translated := GetCapAddress();
  4262. Translatef := GetCapAddress();
  4263. Vertex2d := GetCapAddress();
  4264. Vertex2dv := GetCapAddress();
  4265. Vertex2f := GetCapAddress();
  4266. Vertex2fv := GetCapAddress();
  4267. Vertex2i := GetCapAddress();
  4268. Vertex2iv := GetCapAddress();
  4269. Vertex2s := GetCapAddress();
  4270. Vertex2sv := GetCapAddress();
  4271. Vertex3d := GetCapAddress();
  4272. Vertex3dv := GetCapAddress();
  4273. Vertex3f := GetCapAddress();
  4274. Vertex3fv := GetCapAddress();
  4275. Vertex3i := GetCapAddress();
  4276. Vertex3iv := GetCapAddress();
  4277. Vertex3s := GetCapAddress();
  4278. Vertex3sv := GetCapAddress();
  4279. Vertex4d := GetCapAddress();
  4280. Vertex4dv := GetCapAddress();
  4281. Vertex4f := GetCapAddress();
  4282. Vertex4fv := GetCapAddress();
  4283. Vertex4i := GetCapAddress();
  4284. Vertex4iv := GetCapAddress();
  4285. Vertex4s := GetCapAddress();
  4286. Vertex4sv := GetCapAddress();
  4287. VertexPointer := GetCapAddress();
  4288. BlendColor := GetCapAddress();
  4289. BlendEquation := GetCapAddress();
  4290. DrawRangeElements := GetCapAddress();
  4291. TexImage3D := GetCapAddress();
  4292. TexSubImage3D := GetCapAddress();
  4293. CopyTexSubImage3D := GetCapAddress();
  4294. IsRenderbuffer := GetCapAddress();
  4295. BindRenderbuffer := GetCapAddress();
  4296. DeleteRenderbuffers := GetCapAddress();
  4297. GenRenderbuffers := GetCapAddress();
  4298. RenderbufferStorage := GetCapAddress();
  4299. RenderbufferStorageMultisample := GetCapAddress();
  4300. GetRenderbufferParameteriv := GetCapAddress();
  4301. IsFramebuffer := GetCapAddress();
  4302. BindFramebuffer := GetCapAddress();
  4303. DeleteFramebuffers := GetCapAddress();
  4304. GenFramebuffers := GetCapAddress();
  4305. CheckFramebufferStatus := GetCapAddress();
  4306. FramebufferTexture := GetCapAddress();
  4307. FramebufferTexture1D := GetCapAddress();
  4308. FramebufferTexture2D := GetCapAddress();
  4309. FramebufferTexture3D := GetCapAddress();
  4310. FramebufferTextureLayer := GetCapAddress();
  4311. FramebufferTextureFace := GetCapAddress();
  4312. FramebufferRenderbuffer := GetCapAddress();
  4313. GetFramebufferAttachmentParameteriv := GetCapAddress();
  4314. BlitFramebuffer := GetCapAddress();
  4315. GenerateMipmap := GetCapAddress();
  4316. ClearBufferiv := GetCapAddress();
  4317. ClearBufferuiv := GetCapAddress();
  4318. ClearBufferfv := GetCapAddress();
  4319. ClearBufferfi := GetCapAddress();
  4320. LockArrays := GetCapAddress();
  4321. UnlockArrays := GetCapAddress();
  4322. BindBuffer := GetCapAddress();
  4323. DeleteBuffers := GetCapAddress();
  4324. GenBuffers := GetCapAddress();
  4325. IsBuffer := GetCapAddress();
  4326. BufferData := GetCapAddress();
  4327. BufferSubData := GetCapAddress();
  4328. GetBufferSubData := GetCapAddress();
  4329. MapBuffer := GetCapAddress();
  4330. UnmapBuffer := GetCapAddress();
  4331. GetBufferParameteriv := GetCapAddress();
  4332. GetBufferPointerv := GetCapAddress();
  4333. MapBufferRange := GetCapAddress();
  4334. FlushMappedBufferRange := GetCapAddress();
  4335. BindBufferRange := GetCapAddress();
  4336. BindBufferOffset := GetCapAddress();
  4337. BindBufferBase := GetCapAddress();
  4338. BeginTransformFeedback := GetCapAddress();
  4339. EndTransformFeedback := GetCapAddress();
  4340. TransformFeedbackVaryings := GetCapAddress();
  4341. GetTransformFeedbackVarying := GetCapAddress();
  4342. TransformFeedbackAttribs := GetCapAddress();
  4343. TransformFeedbackVaryingsNV := GetCapAddress();
  4344. TexBuffer := GetCapAddress();
  4345. BindVertexArray := GetCapAddress();
  4346. DeleteVertexArrays := GetCapAddress();
  4347. GenVertexArrays := GetCapAddress();
  4348. IsVertexArray := GetCapAddress();
  4349. FlushVertexArrayRangeNV := GetCapAddress();
  4350. VertexArrayRangeNV := GetCapAddress();
  4351. CopyBufferSubData := GetCapAddress();
  4352. UniformBuffer := GetCapAddress();
  4353. GetUniformBufferSize := GetCapAddress();
  4354. GetUniformOffset := GetCapAddress();
  4355. PrimitiveRestartIndex := GetCapAddress();
  4356. DrawElementsBaseVertex := GetCapAddress();
  4357. DrawRangeElementsBaseVertex := GetCapAddress();
  4358. DrawElementsInstancedBaseVertex := GetCapAddress();
  4359. MultiDrawElementsBaseVertex := GetCapAddress();
  4360. DrawArraysInstanced := GetCapAddress();
  4361. DrawElementsInstanced := GetCapAddress();
  4362. VertexAttrib1d := GetCapAddress();
  4363. VertexAttrib1dv := GetCapAddress();
  4364. VertexAttrib1f := GetCapAddress();
  4365. VertexAttrib1fv := GetCapAddress();
  4366. VertexAttrib1s := GetCapAddress();
  4367. VertexAttrib1sv := GetCapAddress();
  4368. VertexAttrib2d := GetCapAddress();
  4369. VertexAttrib2dv := GetCapAddress();
  4370. VertexAttrib2f := GetCapAddress();
  4371. VertexAttrib2fv := GetCapAddress();
  4372. VertexAttrib2s := GetCapAddress();
  4373. VertexAttrib2sv := GetCapAddress();
  4374. VertexAttrib3d := GetCapAddress();
  4375. VertexAttrib3dv := GetCapAddress();
  4376. VertexAttrib3f := GetCapAddress();
  4377. VertexAttrib3fv := GetCapAddress();
  4378. VertexAttrib3s := GetCapAddress();
  4379. VertexAttrib3sv := GetCapAddress();
  4380. VertexAttrib4Nbv := GetCapAddress();
  4381. VertexAttrib4Niv := GetCapAddress();
  4382. VertexAttrib4Nsv := GetCapAddress();
  4383. VertexAttrib4Nub := GetCapAddress();
  4384. VertexAttrib4Nubv := GetCapAddress();
  4385. VertexAttrib4Nuiv := GetCapAddress();
  4386. VertexAttrib4Nusv := GetCapAddress();
  4387. VertexAttrib4bv := GetCapAddress();
  4388. VertexAttrib4d := GetCapAddress();
  4389. VertexAttrib4dv := GetCapAddress();
  4390. VertexAttrib4f := GetCapAddress();
  4391. VertexAttrib4fv := GetCapAddress();
  4392. VertexAttrib4iv := GetCapAddress();
  4393. VertexAttrib4s := GetCapAddress();
  4394. VertexAttrib4sv := GetCapAddress();
  4395. VertexAttrib4ubv := GetCapAddress();
  4396. VertexAttrib4uiv := GetCapAddress();
  4397. VertexAttrib4usv := GetCapAddress();
  4398. VertexAttribPointer := GetCapAddress();
  4399. VertexAttribI1i := GetCapAddress();
  4400. VertexAttribI2i := GetCapAddress();
  4401. VertexAttribI3i := GetCapAddress();
  4402. VertexAttribI4i := GetCapAddress();
  4403. VertexAttribI1ui := GetCapAddress();
  4404. VertexAttribI2ui := GetCapAddress();
  4405. VertexAttribI3ui := GetCapAddress();
  4406. VertexAttribI4ui := GetCapAddress();
  4407. VertexAttribI1iv := GetCapAddress();
  4408. VertexAttribI2iv := GetCapAddress();
  4409. VertexAttribI3iv := GetCapAddress();
  4410. VertexAttribI4iv := GetCapAddress();
  4411. VertexAttribI1uiv := GetCapAddress();
  4412. VertexAttribI2uiv := GetCapAddress();
  4413. VertexAttribI3uiv := GetCapAddress();
  4414. VertexAttribI4uiv := GetCapAddress();
  4415. VertexAttribI4bv := GetCapAddress();
  4416. VertexAttribI4sv := GetCapAddress();
  4417. VertexAttribI4ubv := GetCapAddress();
  4418. VertexAttribI4usv := GetCapAddress();
  4419. VertexAttribIPointer := GetCapAddress();
  4420. GetVertexAttribIiv := GetCapAddress();
  4421. GetVertexAttribIuiv := GetCapAddress();
  4422. EnableVertexAttribArray := GetCapAddress();
  4423. DisableVertexAttribArray := GetCapAddress();
  4424. VertexAttribDivisor := GetCapAddress();
  4425. GenQueries := GetCapAddress();
  4426. DeleteQueries := GetCapAddress();
  4427. IsQuery := GetCapAddress();
  4428. BeginQuery := GetCapAddress();
  4429. EndQuery := GetCapAddress();
  4430. GetQueryiv := GetCapAddress();
  4431. GetQueryObjectiv := GetCapAddress();
  4432. GetQueryObjectuiv := GetCapAddress();
  4433. QueryCounter := GetCapAddress();
  4434. GetQueryObjecti64v := GetCapAddress();
  4435. GetQueryObjectui64v := GetCapAddress();
  4436. DeleteObject := GetCapAddress();
  4437. GetHandle := GetCapAddress();
  4438. DetachShader := GetCapAddress();
  4439. CreateShader := GetCapAddress();
  4440. ShaderSource := GetCapAddress();
  4441. CompileShader := GetCapAddress();
  4442. CreateProgram := GetCapAddress();
  4443. AttachShader := GetCapAddress();
  4444. LinkProgram := GetCapAddress();
  4445. UseProgram := GetCapAddress();
  4446. ValidateProgram := GetCapAddress();
  4447. Uniform1f := GetCapAddress();
  4448. Uniform2f := GetCapAddress();
  4449. Uniform3f := GetCapAddress();
  4450. Uniform4f := GetCapAddress();
  4451. Uniform1i := GetCapAddress();
  4452. Uniform2i := GetCapAddress();
  4453. Uniform3i := GetCapAddress();
  4454. Uniform4i := GetCapAddress();
  4455. Uniform1fv := GetCapAddress();
  4456. Uniform2fv := GetCapAddress();
  4457. Uniform3fv := GetCapAddress();
  4458. Uniform4fv := GetCapAddress();
  4459. Uniform1iv := GetCapAddress();
  4460. Uniform2iv := GetCapAddress();
  4461. Uniform3iv := GetCapAddress();
  4462. Uniform4iv := GetCapAddress();
  4463. Uniform1ui := GetCapAddress();
  4464. Uniform2ui := GetCapAddress();
  4465. Uniform3ui := GetCapAddress();
  4466. Uniform4ui := GetCapAddress();
  4467. Uniform1uiv := GetCapAddress();
  4468. Uniform2uiv := GetCapAddress();
  4469. Uniform3uiv := GetCapAddress();
  4470. Uniform4uiv := GetCapAddress();
  4471. GetUniformuiv := GetCapAddress();
  4472. UniformMatrix2fv := GetCapAddress();
  4473. UniformMatrix3fv := GetCapAddress();
  4474. UniformMatrix4fv := GetCapAddress();
  4475. BindFragDataLocation := GetCapAddress();
  4476. GetFragDataLocation := GetCapAddress();
  4477. ClampColor := GetCapAddress();
  4478. ColorMaski := GetCapAddress();
  4479. GetBooleani_v := GetCapAddress();
  4480. GetIntegeri_v := GetCapAddress();
  4481. Enablei := GetCapAddress();
  4482. Disablei := GetCapAddress();
  4483. IsEnabledi := GetCapAddress();
  4484. BindFragDataLocationIndexed := GetCapAddress();
  4485. GetFragDataIndex := GetCapAddress();
  4486. GetObjectParameterfv := GetCapAddress();
  4487. GetObjectParameteriv := GetCapAddress();
  4488. GetAttachedObjects := GetCapAddress();
  4489. GetActiveAttrib := GetCapAddress();
  4490. GetActiveUniform := GetCapAddress();
  4491. GetAttachedShaders := GetCapAddress();
  4492. GetAttribLocation := GetCapAddress();
  4493. GetProgramiv := GetCapAddress();
  4494. GetProgramInfoLog := GetCapAddress();
  4495. GetShaderiv := GetCapAddress();
  4496. GetInfoLog := GetCapAddress();
  4497. GetShaderInfoLog := GetCapAddress();
  4498. GetShaderSource := GetCapAddress();
  4499. GetUniformLocation := GetCapAddress();
  4500. GetUniformfv := GetCapAddress();
  4501. GetUniformiv := GetCapAddress();
  4502. GetVertexAttribdv := GetCapAddress();
  4503. GetVertexAttribfv := GetCapAddress();
  4504. GetVertexAttribiv := GetCapAddress();
  4505. GetVertexAttribPointerv := GetCapAddress();
  4506. IsProgram := GetCapAddress();
  4507. IsShader := GetCapAddress();
  4508. GetUniformLocation := GetCapAddress();
  4509. BindAttribLocation := GetCapAddress();
  4510. GetVaryingLocation := GetCapAddress();
  4511. GetActiveVarying := GetCapAddress();
  4512. ActiveVarying := GetCapAddress();
  4513. GetUniformIndices := GetCapAddress();
  4514. GetActiveUniformsiv := GetCapAddress();
  4515. GetActiveUniformName := GetCapAddress();
  4516. GetUniformBlockIndex := GetCapAddress();
  4517. GetActiveUniformBlockiv := GetCapAddress();
  4518. GetActiveUniformBlockName := GetCapAddress();
  4519. UniformBlockBinding := GetCapAddress();
  4520. GetProgramBinary := GetCapAddress();
  4521. ProgramBinary := GetCapAddress();
  4522. UseProgramStages := GetCapAddress();
  4523. ActiveShaderProgram := GetCapAddress();
  4524. CreateShaderProgramv := GetCapAddress();
  4525. BindProgramPipeline := GetCapAddress();
  4526. DeleteProgramPipelines := GetCapAddress();
  4527. GenProgramPipelines := GetCapAddress();
  4528. IsProgramPipeline := GetCapAddress();
  4529. GetProgramPipelineiv := GetCapAddress();
  4530. ProgramUniform1i := GetCapAddress();
  4531. ProgramUniform1iv := GetCapAddress();
  4532. ProgramUniform1f := GetCapAddress();
  4533. ProgramUniform1fv := GetCapAddress();
  4534. ProgramUniform1d := GetCapAddress();
  4535. ProgramUniform1dv := GetCapAddress();
  4536. ProgramUniform1ui := GetCapAddress();
  4537. ProgramUniform1uiv := GetCapAddress();
  4538. ProgramUniform2i := GetCapAddress();
  4539. ProgramUniform2iv := GetCapAddress();
  4540. ProgramUniform2f := GetCapAddress();
  4541. ProgramUniform2fv := GetCapAddress();
  4542. ProgramUniform2d := GetCapAddress();
  4543. ProgramUniform2dv := GetCapAddress();
  4544. ProgramUniform2ui := GetCapAddress();
  4545. ProgramUniform2uiv := GetCapAddress();
  4546. ProgramUniform3i := GetCapAddress();
  4547. ProgramUniform3iv := GetCapAddress();
  4548. ProgramUniform3f := GetCapAddress();
  4549. ProgramUniform3fv := GetCapAddress();
  4550. ProgramUniform3d := GetCapAddress();
  4551. ProgramUniform3dv := GetCapAddress();
  4552. ProgramUniform3ui := GetCapAddress();
  4553. ProgramUniform3uiv := GetCapAddress();
  4554. ProgramUniform4i := GetCapAddress();
  4555. ProgramUniform4iv := GetCapAddress();
  4556. ProgramUniform4f := GetCapAddress();
  4557. ProgramUniform4fv := GetCapAddress();
  4558. ProgramUniform4d := GetCapAddress();
  4559. ProgramUniform4dv := GetCapAddress();
  4560. ProgramUniform4ui := GetCapAddress();
  4561. ProgramUniform4uiv := GetCapAddress();
  4562. ProgramUniformMatrix2fv := GetCapAddress();
  4563. ProgramUniformMatrix3fv := GetCapAddress();
  4564. ProgramUniformMatrix4fv := GetCapAddress();
  4565. ProgramUniformMatrix2dv := GetCapAddress();
  4566. ProgramUniformMatrix3dv := GetCapAddress();
  4567. ProgramUniformMatrix4dv := GetCapAddress();
  4568. ProgramUniformMatrix2x3fv := GetCapAddress();
  4569. ProgramUniformMatrix3x2fv := GetCapAddress();
  4570. ProgramUniformMatrix2x4fv := GetCapAddress();
  4571. ProgramUniformMatrix4x2fv := GetCapAddress();
  4572. ProgramUniformMatrix3x4fv := GetCapAddress();
  4573. ProgramUniformMatrix4x3fv := GetCapAddress();
  4574. ProgramUniformMatrix2x3dv := GetCapAddress();
  4575. ProgramUniformMatrix3x2dv := GetCapAddress();
  4576. ProgramUniformMatrix2x4dv := GetCapAddress();
  4577. ProgramUniformMatrix4x2dv := GetCapAddress();
  4578. ProgramUniformMatrix3x4dv := GetCapAddress();
  4579. ProgramUniformMatrix4x3dv := GetCapAddress();
  4580. ValidateProgramPipeline := GetCapAddress();
  4581. GetProgramPipelineInfoLog := GetCapAddress();
  4582. DrawBuffers := GetCapAddress();
  4583. ActiveTexture := GetCapAddress();
  4584. CompressedTexImage3D := GetCapAddress();
  4585. CompressedTexImage2D := GetCapAddress();
  4586. CompressedTexImage1D := GetCapAddress();
  4587. CompressedTexSubImage3D := GetCapAddress();
  4588. CompressedTexSubImage2D := GetCapAddress();
  4589. CompressedTexSubImage1D := GetCapAddress();
  4590. GetCompressedTexImage := GetCapAddress();
  4591. ClientActiveTexture := GetCapAddress();
  4592. MultiTexCoord1d := GetCapAddress();
  4593. MultiTexCoord1dV := GetCapAddress();
  4594. MultiTexCoord1f := GetCapAddress();
  4595. MultiTexCoord1fv := GetCapAddress();
  4596. MultiTexCoord1i := GetCapAddress();
  4597. MultiTexCoord1iv := GetCapAddress();
  4598. MultiTexCoord1s := GetCapAddress();
  4599. MultiTexCoord1sv := GetCapAddress();
  4600. MultiTexCoord2d := GetCapAddress();
  4601. MultiTexCoord2dv := GetCapAddress();
  4602. MultiTexCoord2f := GetCapAddress();
  4603. MultiTexCoord2fv := GetCapAddress();
  4604. MultiTexCoord2i := GetCapAddress();
  4605. MultiTexCoord2iv := GetCapAddress();
  4606. MultiTexCoord2s := GetCapAddress();
  4607. MultiTexCoord2sv := GetCapAddress();
  4608. MultiTexCoord3d := GetCapAddress();
  4609. MultiTexCoord3dv := GetCapAddress();
  4610. MultiTexCoord3f := GetCapAddress();
  4611. MultiTexCoord3fv := GetCapAddress();
  4612. MultiTexCoord3i := GetCapAddress();
  4613. MultiTexCoord3iv := GetCapAddress();
  4614. MultiTexCoord3s := GetCapAddress();
  4615. MultiTexCoord3sv := GetCapAddress();
  4616. MultiTexCoord4d := GetCapAddress();
  4617. MultiTexCoord4dv := GetCapAddress();
  4618. MultiTexCoord4f := GetCapAddress();
  4619. MultiTexCoord4fv := GetCapAddress();
  4620. MultiTexCoord4i := GetCapAddress();
  4621. MultiTexCoord4iv := GetCapAddress();
  4622. MultiTexCoord4s := GetCapAddress();
  4623. MultiTexCoord4sv := GetCapAddress();
  4624. GetInteger64i_v := GetCapAddress();
  4625. GetBufferParameteri64v := GetCapAddress();
  4626. ProgramParameteri := GetCapAddress();
  4627. ProgramString := GetCapAddress();
  4628. BindProgram := GetCapAddress();
  4629. DeletePrograms := GetCapAddress();
  4630. GenPrograms := GetCapAddress();
  4631. ProgramEnvParameter4d := GetCapAddress();
  4632. ProgramEnvParameter4dv := GetCapAddress();
  4633. ProgramEnvParameter4f := GetCapAddress();
  4634. ProgramEnvParameter4fv := GetCapAddress();
  4635. ProgramLocalParameter4d := GetCapAddress();
  4636. ProgramLocalParameter4dv := GetCapAddress();
  4637. ProgramLocalParameter4f := GetCapAddress();
  4638. ProgramLocalParameter4fv := GetCapAddress();
  4639. GetProgramEnvParameterdv := GetCapAddress();
  4640. GetProgramEnvParameterfv := GetCapAddress();
  4641. GetProgramLocalParameterdv := GetCapAddress();
  4642. GetProgramLocalParameterfv := GetCapAddress();
  4643. ClearColorIi := GetCapAddress();
  4644. ClearColorIui := GetCapAddress();
  4645. TexParameterIiv := GetCapAddress();
  4646. TexParameterIuiv := GetCapAddress();
  4647. GetTexParameterIiv := GetCapAddress();
  4648. GetTexParameterIuiv := GetCapAddress();
  4649. PatchParameteri := GetCapAddress();
  4650. PatchParameterfv := GetCapAddress();
  4651. BufferAddressRangeNV := GetCapAddress();
  4652. VertexFormatNV := GetCapAddress();
  4653. NormalFormatNV := GetCapAddress();
  4654. ColorFormatNV := GetCapAddress();
  4655. IndexFormatNV := GetCapAddress();
  4656. TexCoordFormatNV := GetCapAddress();
  4657. EdgeFlagFormatNV := GetCapAddress();
  4658. SecondaryColorFormatNV := GetCapAddress();
  4659. FogCoordFormatNV := GetCapAddress();
  4660. VertexAttribFormatNV := GetCapAddress();
  4661. VertexAttribIFormatNV := GetCapAddress();
  4662. GetIntegerui64i_vNV := GetCapAddress();
  4663. GetBufferParameterui64vNV := GetCapAddress();
  4664. MakeBufferResidentNV := GetCapAddress();
  4665. MakeBufferNonResidentNV := GetCapAddress();
  4666. IsBufferResidentNV := GetCapAddress();
  4667. MakeNamedBufferResidentNV := GetCapAddress();
  4668. MakeNamedBufferNonResidentNV := GetCapAddress();
  4669. IsNamedBufferResidentNV := GetCapAddress();
  4670. GetNamedBufferParameterui64vNV := GetCapAddress();
  4671. GetIntegerui64vNV := GetCapAddress();
  4672. Uniformui64NV := GetCapAddress();
  4673. Uniformui64vNV := GetCapAddress();
  4674. GetUniformui64vNV := GetCapAddress();
  4675. ProgramUniformui64NV := GetCapAddress();
  4676. ProgramUniformui64vNV := GetCapAddress();
  4677. TexImage2DMultisample := GetCapAddress();
  4678. TexImage3DMultisample := GetCapAddress();
  4679. GetMultisamplefv := GetCapAddress();
  4680. SampleMaski := GetCapAddress();
  4681. ProvokingVertex := GetCapAddress();
  4682. FenceSync := GetCapAddress();
  4683. IsSync := GetCapAddress();
  4684. DeleteSync := GetCapAddress();
  4685. ClientWaitSync := GetCapAddress();
  4686. WaitSync := GetCapAddress();
  4687. GetInteger64v := GetCapAddress();
  4688. GetSynciv := GetCapAddress();
  4689. BlendEquationi := GetCapAddress();
  4690. BlendEquationSeparatei := GetCapAddress();
  4691. BlendFunci := GetCapAddress();
  4692. BlendFuncSeparatei := GetCapAddress();
  4693. MinSampleShading := GetCapAddress();
  4694. GenSamplers := GetCapAddress();
  4695. DeleteSamplers := GetCapAddress();
  4696. IsSampler := GetCapAddress();
  4697. BindSampler := GetCapAddress();
  4698. SamplerParameteri := GetCapAddress();
  4699. SamplerParameteriv := GetCapAddress();
  4700. SamplerParameterf := GetCapAddress();
  4701. SamplerParameterfv := GetCapAddress();
  4702. SamplerParameterIiv := GetCapAddress();
  4703. SamplerParameterIuiv := GetCapAddress();
  4704. GetSamplerParameteriv := GetCapAddress();
  4705. GetSamplerParameterIiv := GetCapAddress();
  4706. GetSamplerParameterfv := GetCapAddress();
  4707. GetSamplerParameterIfv := GetCapAddress();
  4708. ClientAttribDefault := GetCapAddress();
  4709. PushClientAttribDefault := GetCapAddress();
  4710. MatrixLoadf := GetCapAddress();
  4711. MatrixLoadd := GetCapAddress();
  4712. MatrixMultf := GetCapAddress();
  4713. MatrixMultd := GetCapAddress();
  4714. MatrixLoadIdentity := GetCapAddress();
  4715. MatrixRotatef := GetCapAddress();
  4716. MatrixRotated := GetCapAddress();
  4717. MatrixScalef := GetCapAddress();
  4718. MatrixScaled := GetCapAddress();
  4719. MatrixTranslatef := GetCapAddress();
  4720. MatrixTranslated := GetCapAddress();
  4721. MatrixFrustum := GetCapAddress();
  4722. MatrixOrtho := GetCapAddress();
  4723. MatrixPop := GetCapAddress();
  4724. MatrixPush := GetCapAddress();
  4725. MatrixLoadTransposef := GetCapAddress();
  4726. MatrixLoadTransposed := GetCapAddress();
  4727. MatrixMultTransposef := GetCapAddress();
  4728. MatrixMultTransposed := GetCapAddress();
  4729. TextureParameterfv := GetCapAddress();
  4730. TextureParameteri := GetCapAddress();
  4731. TextureParameteriv := GetCapAddress();
  4732. TextureImage1D := GetCapAddress();
  4733. TextureImage2D := GetCapAddress();
  4734. TextureSubImage1D := GetCapAddress();
  4735. TextureSubImage2D := GetCapAddress();
  4736. CopyTextureImage1D := GetCapAddress();
  4737. CopyTextureImage2D := GetCapAddress();
  4738. CopyTextureSubImage1D := GetCapAddress();
  4739. CopyTextureSubImage2D := GetCapAddress();
  4740. GetTextureImage := GetCapAddress();
  4741. GetTextureParameterfv := GetCapAddress();
  4742. GetTextureParameteriv := GetCapAddress();
  4743. GetTextureLevelParameterfv := GetCapAddress();
  4744. GetTextureLevelParameteriv := GetCapAddress();
  4745. TextureImage3D := GetCapAddress();
  4746. TextureSubImage3D := GetCapAddress();
  4747. CopyTextureSubImage3D := GetCapAddress();
  4748. MultiTexParameterf := GetCapAddress();
  4749. MultiTexParameterfv := GetCapAddress();
  4750. MultiTexParameteri := GetCapAddress();
  4751. MultiTexParameteriv := GetCapAddress();
  4752. MultiTexImage1D := GetCapAddress();
  4753. MultiTexImage2D := GetCapAddress();
  4754. MultiTexSubImage1D := GetCapAddress();
  4755. MultiTexSubImage2D := GetCapAddress();
  4756. CopyMultiTexImage1D := GetCapAddress();
  4757. CopyMultiTexImage2D := GetCapAddress();
  4758. CopyMultiTexSubImage1D := GetCapAddress();
  4759. CopyMultiTexSubImage2D := GetCapAddress();
  4760. GetMultiTexImage := GetCapAddress();
  4761. GetMultiTexParameterfv := GetCapAddress();
  4762. GetMultiTexParameteriv := GetCapAddress();
  4763. GetMultiTexLevelParameterfv := GetCapAddress();
  4764. GetMultiTexLevelParameteriv := GetCapAddress();
  4765. MultiTexImage3D := GetCapAddress();
  4766. MultiTexSubImage3D := GetCapAddress();
  4767. CopyMultiTexSubImage3D := GetCapAddress();
  4768. BindMultiTexture := GetCapAddress();
  4769. EnableClientStateIndexed := GetCapAddress();
  4770. DisableClientStateIndexed := GetCapAddress();
  4771. MultiTexCoordPointer := GetCapAddress();
  4772. MultiTexEnvf := GetCapAddress();
  4773. MultiTexEnvfv := GetCapAddress();
  4774. MultiTexEnvi := GetCapAddress();
  4775. MultiTexEnviv := GetCapAddress();
  4776. MultiTexGend := GetCapAddress();
  4777. MultiTexGendv := GetCapAddress();
  4778. MultiTexGenf := GetCapAddress();
  4779. MultiTexGenfv := GetCapAddress();
  4780. MultiTexGeni := GetCapAddress();
  4781. MultiTexGeniv := GetCapAddress();
  4782. GetMultiTexEnvfv := GetCapAddress();
  4783. GetMultiTexEnviv := GetCapAddress();
  4784. GetMultiTexGendv := GetCapAddress();
  4785. GetMultiTexGenfv := GetCapAddress();
  4786. GetMultiTexGeniv := GetCapAddress();
  4787. GetFloatIndexedv := GetCapAddress();
  4788. GetDoubleIndexedv := GetCapAddress();
  4789. GetPointerIndexedv := GetCapAddress();
  4790. CompressedTextureImage3D := GetCapAddress();
  4791. CompressedTextureImage2D := GetCapAddress();
  4792. CompressedTextureImage1D := GetCapAddress();
  4793. CompressedTextureSubImage3D := GetCapAddress();
  4794. CompressedTextureSubImage2D := GetCapAddress();
  4795. CompressedTextureSubImage1D := GetCapAddress();
  4796. GetCompressedTextureImage := GetCapAddress();
  4797. CompressedMultiTexImage3D := GetCapAddress();
  4798. CompressedMultiTexImage2D := GetCapAddress();
  4799. CompressedMultiTexImage1D := GetCapAddress();
  4800. CompressedMultiTexSubImage3D := GetCapAddress();
  4801. CompressedMultiTexSubImage2D := GetCapAddress();
  4802. CompressedMultiTexSubImage1D := GetCapAddress();
  4803. GetCompressedMultiTexImage := GetCapAddress();
  4804. NamedProgramString := GetCapAddress();
  4805. NamedProgramLocalParameter4d := GetCapAddress();
  4806. NamedProgramLocalParameter4dv := GetCapAddress();
  4807. NamedProgramLocalParameter4f := GetCapAddress();
  4808. NamedProgramLocalParameter4fv := GetCapAddress();
  4809. GetNamedProgramLocalParameterdv := GetCapAddress();
  4810. GetNamedProgramLocalParameterfv := GetCapAddress();
  4811. GetNamedProgramiv := GetCapAddress();
  4812. GetNamedProgramString := GetCapAddress();
  4813. NamedProgramLocalParameters4fv := GetCapAddress();
  4814. NamedProgramLocalParameterI4i := GetCapAddress();
  4815. NamedProgramLocalParameterI4iv := GetCapAddress();
  4816. NamedProgramLocalParametersI4iv := GetCapAddress();
  4817. NamedProgramLocalParameterI4ui := GetCapAddress();
  4818. NamedProgramLocalParameterI4uiv := GetCapAddress();
  4819. NamedProgramLocalParametersI4uiv := GetCapAddress();
  4820. GetNamedProgramLocalParameterIiv := GetCapAddress();
  4821. GetNamedProgramLocalParameterIuiv := GetCapAddress();
  4822. TextureParameterIiv := GetCapAddress();
  4823. TextureParameterIuiv := GetCapAddress();
  4824. GetTextureParameterIiv := GetCapAddress();
  4825. GetTextureParameterIuiv := GetCapAddress();
  4826. MultiTexParameterIiv := GetCapAddress();
  4827. MultiTexParameterIuiv := GetCapAddress();
  4828. GetMultiTexParameterIiv := GetCapAddress();
  4829. GetMultiTexParameterIuiv := GetCapAddress();
  4830. NamedBufferData := GetCapAddress();
  4831. NamedBufferSubData := GetCapAddress();
  4832. MapNamedBuffer := GetCapAddress();
  4833. UnmapNamedBuffer := GetCapAddress();
  4834. MapNamedBufferRange := GetCapAddress();
  4835. FlushMappedNamedBufferRange := GetCapAddress();
  4836. NamedCopyBufferSubData := GetCapAddress();
  4837. GetNamedBufferParameteriv := GetCapAddress();
  4838. GetNamedBufferPointerv := GetCapAddress();
  4839. GetNamedBufferSubData := GetCapAddress();
  4840. TextureBuffer := GetCapAddress();
  4841. MultiTexBuffer := GetCapAddress();
  4842. NamedRenderbufferStorage := GetCapAddress();
  4843. GetNamedRenderbufferParameteriv := GetCapAddress();
  4844. CheckNamedFramebufferStatus := GetCapAddress();
  4845. NamedFramebufferTexture1D := GetCapAddress();
  4846. NamedFramebufferTexture2D := GetCapAddress();
  4847. NamedFramebufferTexture3D := GetCapAddress();
  4848. NamedFramebufferRenderbuffer := GetCapAddress();
  4849. GetNamedFramebufferAttachmentParameteriv := GetCapAddress();
  4850. GenerateTextureMipmap := GetCapAddress();
  4851. GenerateMultiTexMipmap := GetCapAddress();
  4852. FramebufferDrawBuffer := GetCapAddress();
  4853. FramebufferDrawBuffers := GetCapAddress();
  4854. FramebufferReadBuffer := GetCapAddress();
  4855. GetFramebufferParameteriv := GetCapAddress();
  4856. NamedRenderbufferStorageMultisample := GetCapAddress();
  4857. NamedRenderbufferStorageMultisampleCoverage := GetCapAddress();
  4858. NamedFramebufferTexture := GetCapAddress();
  4859. NamedFramebufferTextureLayer := GetCapAddress();
  4860. NamedFramebufferTextureFace := GetCapAddress();
  4861. TextureRenderbuffer := GetCapAddress();
  4862. MultiTexRenderbuffer := GetCapAddress();
  4863. FrameTerminatorGREMEDY := GetCapAddress();
  4864. StringMarkerGREMEDY := GetCapAddress();
  4865. DebugMessageControl := GetCapAddress();
  4866. DebugMessageInsert := GetCapAddress();
  4867. DebugMessageCallback := GetCapAddress();
  4868. GetDebugMessageLog := GetCapAddress();
  4869. PushDebugGroup := GetCapAddress();
  4870. PopDebugGroup := GetCapAddress();
  4871. ObjectLabel := GetCapAddress();
  4872. GetObjectLabel := GetCapAddress();
  4873. ObjectPtrLabel := GetCapAddress();
  4874. GetObjectPtrLabel := GetCapAddress();
  4875. ClearBufferData := GetCapAddress();
  4876. ClearBufferSubData := GetCapAddress();
  4877. ClearNamedBufferData := GetCapAddress();
  4878. ClearNamedBufferSubData := GetCapAddress();
  4879. DispatchCompute := GetCapAddress();
  4880. DispatchComputeIndirect := GetCapAddress();
  4881. CopyImageSubData := GetCapAddress();
  4882. FramebufferParameteri := GetCapAddress();
  4883. NamedFramebufferParameteri := GetCapAddress();
  4884. GetNamedFramebufferParameteriv := GetCapAddress();
  4885. GetInternalformati64v := GetCapAddress();
  4886. InvalidateTexSubImage := GetCapAddress();
  4887. InvalidateTexImage := GetCapAddress();
  4888. InvalidateBufferSubData := GetCapAddress();
  4889. InvalidateBufferData := GetCapAddress();
  4890. InvalidateFramebuffer := GetCapAddress();
  4891. InvalidateSubFramebuffer := GetCapAddress();
  4892. MultiDrawArraysIndirect := GetCapAddress();
  4893. MultiDrawElementsIndirect := GetCapAddress();
  4894. GetProgramInterfaceiv := GetCapAddress();
  4895. GetProgramResourceIndex := GetCapAddress();
  4896. GetProgramResourceName := GetCapAddress();
  4897. GetProgramResourceiv := GetCapAddress();
  4898. GetProgramResourceLocation := GetCapAddress();
  4899. GetProgramResourceLocationIndex := GetCapAddress();
  4900. ShaderStorageBlockBinding := GetCapAddress();
  4901. TexBufferRange := GetCapAddress();
  4902. TextureBufferRange := GetCapAddress();
  4903. TexStorage2DMultisample := GetCapAddress();
  4904. TexStorage3DMultisample := GetCapAddress();
  4905. TextureStorage2DMultisample := GetCapAddress();
  4906. TextureStorage3DMultisample := GetCapAddress();
  4907. BufferStorage := GetCapAddress();
  4908. ClearTexImage := GetCapAddress();
  4909. ClearTexSubImage := GetCapAddress();
  4910. BindBuffersBase := GetCapAddress();
  4911. BindBuffersRange := GetCapAddress();
  4912. BindTextures := GetCapAddress();
  4913. BindSamplers := GetCapAddress();
  4914. BindImageTextures := GetCapAddress();
  4915. BindVertexBuffers := GetCapAddress();
  4916. TextureView := GetCapAddress();
  4917. BindVertexBuffer := GetCapAddress();
  4918. VertexAttribFormat := GetCapAddress();
  4919. VertexAttribIFormat := GetCapAddress();
  4920. VertexAttribLFormat := GetCapAddress();
  4921. VertexAttribBinding := GetCapAddress();
  4922. VertexBindingDivisor := GetCapAddress();
  4923. VertexArrayBindVertexBuffer := GetCapAddress();
  4924. VertexArrayVertexAttribFormat := GetCapAddress();
  4925. VertexArrayVertexAttribIFormat := GetCapAddress();
  4926. VertexArrayVertexAttribLFormat := GetCapAddress();
  4927. VertexArrayVertexAttribBinding := GetCapAddress();
  4928. VertexArrayVertexBindingDivisor := GetCapAddress();
  4929. CreateSyncFromCLevent := GetCapAddress();
  4930. GenPathsNV := GetCapAddress();
  4931. DeletePathsNV := GetCapAddress();
  4932. IsPathNV := GetCapAddress();
  4933. PathCommandsNV := GetCapAddress();
  4934. PathCoordsNV := GetCapAddress();
  4935. PathSubCommandsNV := GetCapAddress();
  4936. PathSubCoordsNV := GetCapAddress();
  4937. PathStringNV := GetCapAddress();
  4938. PathGlyphsNV := GetCapAddress();
  4939. PathGlyphRangeNV := GetCapAddress();
  4940. WeightPathsNV := GetCapAddress();
  4941. CopyPathNV := GetCapAddress();
  4942. InterpolatePathsNV := GetCapAddress();
  4943. PathParameterivNV := GetCapAddress();
  4944. PathParameteriNV := GetCapAddress();
  4945. PathParameterfvNV := GetCapAddress();
  4946. PathParameterfNV := GetCapAddress();
  4947. PathDashArrayNV := GetCapAddress();
  4948. PathStencilFuncNV := GetCapAddress();
  4949. StencilFillPathNV := GetCapAddress();
  4950. StencilStrokePathNV := GetCapAddress();
  4951. StencilFillPathInstancedNV := GetCapAddress();
  4952. StencilStrokePathInstancedNV := GetCapAddress();
  4953. PathColorGenNV := GetCapAddress();
  4954. PathTexGenNV := GetCapAddress();
  4955. PathFogGenNV := GetCapAddress();
  4956. CoverFillPathNV := GetCapAddress();
  4957. CoverStrokePathNV := GetCapAddress();
  4958. CoverFillPathInstancedNV := GetCapAddress();
  4959. CoverStrokePathInstancedNV := GetCapAddress();
  4960. GetPathParameterivNV := GetCapAddress();
  4961. GetPathParameterfvNV := GetCapAddress();
  4962. GetPathCommandsNV := GetCapAddress();
  4963. GetPathCoordsNV := GetCapAddress();
  4964. GetPathDashArrayNV := GetCapAddress();
  4965. GetPathMetricsNV := GetCapAddress();
  4966. GetPathMetricRangeNV := GetCapAddress();
  4967. GetPathSpacingNV := GetCapAddress();
  4968. GetPathColorGenivNV := GetCapAddress();
  4969. GetPathColorGenfvNV := GetCapAddress();
  4970. GetPathTexGenivNV := GetCapAddress();
  4971. GetPathTexGenfvNV := GetCapAddress();
  4972. IsPointInFillPathNV := GetCapAddress();
  4973. IsPointInStrokePathNV := GetCapAddress();
  4974. GetPathLengthNV := GetCapAddress();
  4975. PointAlongPathNV := GetCapAddress();
  4976. PathStencilDepthOffsetNV := GetCapAddress();
  4977. PathCoverDepthFuncNV := GetCapAddress();
  4978. FInitialized := False;
  4979. end;
  4980. {$IFDEF SUPPORT_WGL}
  4981. // ReadWGLImplementationProperties
  4982. procedure TGLExtensionsAndEntryPoints.ReadWGLImplementationProperties;
  4983. begin
  4984. // ARB wgl extensions
  4985. if Assigned(WGetExtensionsStringARB) then
  4986. FBuffer := string(WGetExtensionsStringARB(wglGetCurrentDC))
  4987. else
  4988. FBuffer := '';
  4989. W_ARB_buffer_region := CheckExtension('WGL_ARB_buffer_region');
  4990. W_ARB_create_context := CheckExtension('WGL_ARB_create_context');
  4991. W_ARB_create_context_profile :=
  4992. CheckExtension('WGL_ARB_create_context_profile');
  4993. W_ARB_extensions_string := CheckExtension('WGL_ARB_extensions_string');
  4994. W_ARB_framebuffer_sRGB := CheckExtension('WGL_ARB_framebuffer_sRGB');
  4995. W_ARB_make_current_read := CheckExtension('WGL_ARB_make_current_read');
  4996. W_ARB_multisample := CheckExtension('WGL_ARB_multisample');
  4997. W_ARB_pbuffer := CheckExtension('WGL_ARB_pbuffer');
  4998. W_ARB_pixel_format := CheckExtension('WGL_ARB_pixel_format');
  4999. W_ARB_pixel_format_float := CheckExtension('WGL_ARB_pixel_format_float');
  5000. W_ARB_render_texture := CheckExtension('WGL_ARB_render_texture');
  5001. // Vendor/EXT wgl extensions
  5002. W_ATI_pixel_format_float := CheckExtension('WGL_ATI_pixel_format_float');
  5003. W_EXT_framebuffer_sRGB := CheckExtension('WGL_EXT_framebuffer_sRGB');
  5004. W_EXT_pixel_format_packed_float :=
  5005. CheckExtension('WGL_EXT_pixel_format_packed_float');
  5006. W_EXT_swap_control := CheckExtension('WGL_EXT_swap_control');
  5007. W_NV_gpu_affinity := CheckExtension('WGL_NV_gpu_affinity');
  5008. W_NV_DX_interop := CheckExtension('WGL_NV_DX_interop');
  5009. W_NV_DX_interop2 := CheckExtension('WGL_NV_DX_interop2');
  5010. W_EXT_create_context_es2_profile :=
  5011. CheckExtension('WGL_EXT_create_context_es2_profile');
  5012. end;
  5013. procedure TGLExtensionsAndEntryPoints.ReadWGLExtensions;
  5014. begin
  5015. // ARB wgl extensions
  5016. // ###########################################################
  5017. // locating functions and procedures for
  5018. // ARB approved WGL extensions
  5019. // ###########################################################
  5020. // WGL_buffer_region (ARB #4)
  5021. WCreateBufferRegionARB := GetProcAddressGLS('wglCreateBufferRegionARB');
  5022. WDeleteBufferRegionARB := GetProcAddressGLS('wglDeleteBufferRegionARB');
  5023. WSaveBufferRegionARB := GetProcAddressGLS('wglSaveBufferRegionARB');
  5024. WRestoreBufferRegionARB := GetProcAddressGLS('wglRestoreBufferRegionARB');
  5025. // WGL_ARB_extensions_string (ARB #8)
  5026. WGetExtensionsStringARB := GetProcAddressGLS('wglGetExtensionsStringARB');
  5027. // WGL_ARB_pixel_format (ARB #9)
  5028. WGetPixelFormatAttribivARB :=
  5029. GetProcAddressGLS('wglGetPixelFormatAttribivARB');
  5030. WGetPixelFormatAttribfvARB :=
  5031. GetProcAddressGLS('wglGetPixelFormatAttribfvARB');
  5032. WChoosePixelFormatARB := GetProcAddressGLS('wglChoosePixelFormatARB');
  5033. // WGL_make_current_read (ARB #10)
  5034. WMakeContextCurrentARB := GetProcAddressGLS('wglMakeContextCurrentARB');
  5035. WGetCurrentReadDCARB := GetProcAddressGLS('wglGetCurrentReadDCARB');
  5036. // WGL_ARB_pbuffer (ARB #11)
  5037. WCreatePbufferARB := GetProcAddressGLS('wglCreatePbufferARB');
  5038. WGetPbufferDCARB := GetProcAddressGLS('wglGetPbufferDCARB');
  5039. WReleasePbufferDCARB := GetProcAddressGLS('wglReleasePbufferDCARB');
  5040. WDestroyPbufferARB := GetProcAddressGLS('wglDestroyPbufferARB');
  5041. WQueryPbufferARB := GetProcAddressGLS('wglQueryPbufferARB');
  5042. // WGL_ARB_render_texture (ARB #20)
  5043. WBindTexImageARB := GetProcAddressGLS('wglBindTexImageARB');
  5044. WReleaseTexImageARB := GetProcAddressGLS('wglReleaseTexImageARB');
  5045. WSetPbufferAttribARB := GetProcAddressGLS('wglSetPbufferAttribARB');
  5046. // WGL_ARB_create_context (ARB #55)
  5047. WCreateContextAttribsARB := GetProcAddressGLS('wglCreateContextAttribsARB');
  5048. // ###########################################################
  5049. // locating functions and procedures for
  5050. // Vendor/EXT WGL extensions
  5051. // ###########################################################
  5052. // WGL_EXT_swap_control (EXT #172)
  5053. WSwapIntervalEXT := GetProcAddressGLS('wglSwapIntervalEXT');
  5054. WGetSwapIntervalEXT := GetProcAddressGLS('wglGetSwapIntervalEXT');
  5055. // GL_NV_vertex_array_range (EXT #190)
  5056. WAllocateMemoryNV := GetProcAddressGLS('wglAllocateMemoryNV');
  5057. WFreeMemoryNV := GetProcAddressGLS('wglFreeMemoryNV');
  5058. // WGL_NV_gpu_affinity
  5059. WEnumGpusNV := GetProcAddressGLS('wglEnumGpusNV');
  5060. WEnumGpuDevicesNV := GetProcAddressGLS('wglEnumGpuDevicesNV');
  5061. WCreateAffinityDCNV := GetProcAddressGLS('wglCreateAffinityDCNV');
  5062. WEnumGpusFromAffinityDCNV := GetProcAddressGLS('wglEnumGpusFromAffinityDCNV');
  5063. WDeleteDCNV := GetProcAddressGLS('wglDeleteDCNV');
  5064. // WGL_NV_DX_interop
  5065. WDXSetResourceShareHandleNV :=
  5066. GetProcAddressGLS('wglDXSetResourceShareHandleNV');
  5067. WDXOpenDeviceNV := GetProcAddressGLS('wglDXOpenDeviceNV');
  5068. WDXCloseDeviceNV := GetProcAddressGLS('wglDXCloseDeviceNV');
  5069. WDXRegisterObjectNV := GetProcAddressGLS('wglDXRegisterObjectNV');
  5070. WDXUnregisterObjectNV := GetProcAddressGLS('wglDXUnregisterObjectNV');
  5071. WDXObjectAccessNV := GetProcAddressGLS('wglDXObjectAccessNV');
  5072. WDXLockObjectsNV := GetProcAddressGLS('wglDXLockObjectsNV');
  5073. WDXUnlockObjectsNV := GetProcAddressGLS('wglDXUnlockObjectsNV');
  5074. end;
  5075. {$ENDIF}
  5076. {$IFDEF SUPPORT_GLX}
  5077. // ReadGLXImplementationProperties
  5078. procedure TGLExtensionsAndEntryPoints.ReadGLXImplementationProperties;
  5079. var
  5080. MajorVersion, MinorVersion: integer;
  5081. dpy: PDisplay;
  5082. begin
  5083. dpy := glXGetCurrentDisplay();
  5084. FBuffer := string(glXQueryServerString(dpy, XDefaultScreen(dpy),
  5085. GLX_VERSION));
  5086. TrimAndSplitVersionString(FBuffer, MajorVersion, MinorVersion);
  5087. X_VERSION_1_1 := IsVersionMet(1, 1, MajorVersion, MinorVersion);
  5088. X_VERSION_1_2 := IsVersionMet(1, 2, MajorVersion, MinorVersion);
  5089. X_VERSION_1_3 := IsVersionMet(1, 3, MajorVersion, MinorVersion);
  5090. X_VERSION_1_4 := IsVersionMet(1, 4, MajorVersion, MinorVersion);
  5091. // This procedure will probably need changing, as totally untested
  5092. // This might only work if GLX functions/procedures are loaded dynamically
  5093. if Assigned(glXQueryExtensionsString) then
  5094. FBuffer := glXQueryExtensionsString(dpy, 0) // guess at a valid screen
  5095. else
  5096. FBuffer := '';
  5097. X_ARB_create_context := CheckExtension('GLX_ARB_create_context');
  5098. X_ARB_create_context_profile :=
  5099. CheckExtension('GLX_ARB_create_context_profile');
  5100. X_ARB_framebuffer_sRGB := CheckExtension('GLX_ARB_framebuffer_sRGB');
  5101. X_EXT_framebuffer_sRGB := CheckExtension('GLX_EXT_framebuffer_sRGB');
  5102. X_EXT_fbconfig_packed_float :=
  5103. CheckExtension('GLX_EXT_fbconfig_packed_float');
  5104. X_SGI_swap_control := CheckExtension('GLX_SGI_swap_control');
  5105. X_ARB_multisample := CheckExtension('GLX_ARB_multisample');
  5106. X_SGIS_multisample := CheckExtension('GLX_SGIS_multisample');
  5107. X_EXT_visual_info := CheckExtension('GLX_EXT_visual_info');
  5108. X_SGI_video_sync := CheckExtension('GLX_SGI_video_sync');
  5109. X_SGI_make_current_read := CheckExtension('GLX_SGI_make_current_read');
  5110. X_SGIX_video_source := CheckExtension('GLX_SGIX_video_source');
  5111. X_EXT_visual_rating := CheckExtension('GLX_EXT_visual_rating');
  5112. X_EXT_import_context := CheckExtension('GLX_EXT_import_context');
  5113. X_SGIX_fbconfig := CheckExtension('GLX_SGIX_fbconfig');
  5114. X_SGIX_pbuffer := CheckExtension('GLX_SGIX_pbuffer');
  5115. X_SGI_cushion := CheckExtension('GLX_SGI_cushion');
  5116. X_SGIX_video_resize := CheckExtension('GLX_SGIX_video_resize');
  5117. X_SGIX_dmbuffer := CheckExtension('GLX_SGIX_dmbuffer');
  5118. X_SGIX_swap_group := CheckExtension('GLX_SGIX_swap_group');
  5119. X_SGIX_swap_barrier := CheckExtension('GLX_SGIX_swap_barrier');
  5120. X_SGIS_blended_overlay := CheckExtension('GLX_SGIS_blended_overlay');
  5121. X_SGIS_shared_multisample := CheckExtension('GLX_SGIS_shared_multisample');
  5122. X_SUN_get_transparent_index :=
  5123. CheckExtension('GLX_SUN_get_transparent_index');
  5124. X_3DFX_multisample := CheckExtension('GLX_3DFX_multisample');
  5125. X_MESA_copy_sub_buffer := CheckExtension('GLX_MESA_copy_sub_buffer');
  5126. X_MESA_pixmap_colormap := CheckExtension('GLX_MESA_pixmap_colormap');
  5127. X_MESA_release_buffers := CheckExtension('GLX_MESA_release_buffers');
  5128. X_MESA_set_3dfx_mode := CheckExtension('GLX_MESA_set_3dfx_mode');
  5129. X_SGIX_visual_select_group := CheckExtension('GLX_SGIX_visual_select_group');
  5130. X_SGIX_hyperpipe := CheckExtension('GLX_SGIX_hyperpipe');
  5131. X_NV_multisample_coverage := CheckExtension('GLX_NV_multisample_coverage');
  5132. end;
  5133. procedure TGLExtensionsAndEntryPoints.ReadGLXExtensions;
  5134. begin
  5135. // ARB glx extensions
  5136. // ###########################################################
  5137. // locating functions and procedures for
  5138. // ARB approved GLX extensions
  5139. // ###########################################################
  5140. // GLX 1.3 and later
  5141. XChooseFBConfig := GetProcAddressGLS('glXChooseFBConfig');
  5142. XGetFBConfigAttrib := GetProcAddressGLS('glXGetFBConfigAttrib');
  5143. XGetFBConfigs := GetProcAddressGLS('glXGetFBConfigs');
  5144. XGetVisualFromFBConfig := GetProcAddressGLS('glXGetVisualFromFBConfig');
  5145. XCreateWindow := GetProcAddressGLS('glXCreateWindow');
  5146. XDestroyWindow := GetProcAddressGLS('glXDestroyWindow');
  5147. XCreatePixmap := GetProcAddressGLS('glXCreatePixmap');
  5148. XDestroyPixmap := GetProcAddressGLS('glXDestroyPixmap');
  5149. XCreatePbuffer := GetProcAddressGLS('glXCreatePbuffer');
  5150. XDestroyPbuffer := GetProcAddressGLS('glXDestroyPbuffer');
  5151. XQueryDrawable := GetProcAddressGLS('glXQueryDrawable');
  5152. XCreateNewContext := GetProcAddressGLS('glXCreateNewContext');
  5153. XMakeContextCurrent := GetProcAddressGLS('glXMakeContextCurrent');
  5154. XGetCurrentReadDrawable := GetProcAddressGLS('glXGetCurrentReadDrawable');
  5155. XQueryContext := GetProcAddressGLS('glXQueryContext');
  5156. XSelectEvent := GetProcAddressGLS('glXSelectEvent');
  5157. XGetSelectedEvent := GetProcAddressGLS('glXGetSelectedEvent');
  5158. XBindTexImageARB := GetProcAddressGLS('glXBindTexImageARB');
  5159. XReleaseTexImageARB := GetProcAddressGLS('glXReleaseTexImageARB');
  5160. XDrawableAttribARB := GetProcAddressGLS('glxDrawableAttribARB');
  5161. // GLX 1.4
  5162. // GLX_ARB_create_context (EXT #56)
  5163. XCreateContextAttribsARB := GetProcAddressGLS('glXCreateContextAttribsARB');
  5164. // ###########################################################
  5165. // locating functions and procedures for
  5166. // Vendor/EXT WGL extensions
  5167. // ###########################################################
  5168. // WGL_EXT_swap_control (EXT #172)
  5169. XSwapIntervalSGI := GetProcAddressGLS('glXSwapIntervalSGI');
  5170. XGetVideoSyncSGI := GetProcAddressGLS('glXGetVideoSyncSGI');
  5171. XWaitVideoSyncSGI := GetProcAddressGLS('glXWaitVideoSyncSGI');
  5172. XFreeContextEXT := GetProcAddressGLS('glXFreeContextEXT');
  5173. XGetContextIDEXT := GetProcAddressGLS('glXGetContextIDEXT');
  5174. XGetCurrentDisplayEXT := GetProcAddressGLS('glXGetCurrentDisplayEXT');
  5175. XImportContextEXT := GetProcAddressGLS('glXImportContextEXT');
  5176. XQueryContextInfoEXT := GetProcAddressGLS('glXQueryContextInfoEXT');
  5177. XCopySubBufferMESA := GetProcAddressGLS('glXCopySubBufferMESA');
  5178. XCreateGLXPixmapMESA := GetProcAddressGLS('glXCreateGLXPixmapMESA');
  5179. XReleaseBuffersMESA := GetProcAddressGLS('glXReleaseBuffersMESA');
  5180. XSet3DfxModeMESA := GetProcAddressGLS('glXSet3DfxModeMESA');
  5181. XBindTexImageEXT := GetProcAddressGLS('glXBindTexImageEXT');
  5182. XReleaseTexImageEXT := GetProcAddressGLS('glXReleaseTexImageEXT');
  5183. // GLX 1.4
  5184. XMakeCurrentReadSGI := GetProcAddressGLS('glXMakeCurrentReadSGI');
  5185. XGetCurrentReadDrawableSGI :=
  5186. GetProcAddressGLS('glXGetCurrentReadDrawableSGI');
  5187. XGetFBConfigAttribSGIX := GetProcAddressGLS('glXGetFBConfigAttribSGIX');
  5188. XChooseFBConfigSGIX := GetProcAddressGLS('glXChooseFBConfigSGIX');
  5189. XCreateGLXPixmapWithConfigSGIX :=
  5190. GetProcAddressGLS('glXCreateGLXPixmapWithConfigSGIX');
  5191. XCreateContextWithConfigSGIX :=
  5192. GetProcAddressGLS('glXCreateContextWithConfigSGIX');
  5193. XGetVisualFromFBConfigSGIX :=
  5194. GetProcAddressGLS('glXGetVisualFromFBConfigSGIX');
  5195. XGetFBConfigFromVisualSGIX :=
  5196. GetProcAddressGLS('glXGetFBConfigFromVisualSGIX');
  5197. XCreateGLXPbufferSGIX := GetProcAddressGLS('glXCreateGLXPbufferSGIX');
  5198. XDestroyGLXPbufferSGIX := GetProcAddressGLS('glXDestroyGLXPbufferSGIX');
  5199. XQueryGLXPbufferSGIX := GetProcAddressGLS('glXQueryGLXPbufferSGIX');
  5200. XSelectEventSGIX := GetProcAddressGLS('glXSelectEventSGIX');
  5201. XGetSelectedEventSGIX := GetProcAddressGLS('glXGetSelectedEventSGIX');
  5202. XCushionSGI := GetProcAddressGLS('glXCushionSGI');
  5203. XBindChannelToWindowSGIX := GetProcAddressGLS('glXBindChannelToWindowSGIX');
  5204. XChannelRectSGIX := GetProcAddressGLS('glXChannelRectSGIX');
  5205. XQueryChannelRectSGIX := GetProcAddressGLS('glXQueryChannelRectSGIX');
  5206. XQueryChannelDeltasSGIX := GetProcAddressGLS('glXQueryChannelDeltasSGIX');
  5207. XChannelRectSyncSGIX := GetProcAddressGLS('glXChannelRectSyncSGIX');
  5208. XJoinSwapGroupSGIX := GetProcAddressGLS('glXJoinSwapGroupSGIX');
  5209. XBindSwapBarrierSGIX := GetProcAddressGLS('glXBindSwapBarrierSGIX');
  5210. XQueryMaxSwapBarriersSGIX := GetProcAddressGLS('glXQueryMaxSwapBarriersSGIX');
  5211. XQueryHyperpipeNetworkSGIX :=
  5212. GetProcAddressGLS('glXQueryHyperpipeNetworkSGIX');
  5213. XHyperpipeConfigSGIX := GetProcAddressGLS('glXHyperpipeConfigSGIX');
  5214. XQueryHyperpipeConfigSGIX := GetProcAddressGLS('glXQueryHyperpipeConfigSGIX');
  5215. XDestroyHyperpipeConfigSGIX :=
  5216. GetProcAddressGLS('glXDestroyHyperpipeConfigSGIX');
  5217. XBindHyperpipeSGIX := GetProcAddressGLS('glXBindHyperpipeSGIX');
  5218. XQueryHyperpipeBestAttribSGIX :=
  5219. GetProcAddressGLS('glXQueryHyperpipeBestAttribSGIX');
  5220. XHyperpipeAttribSGIX := GetProcAddressGLS('glXHyperpipeAttribSGIX');
  5221. XQueryHyperpipeAttribSGIX := GetProcAddressGLS('glXQueryHyperpipeAttribSGIX');
  5222. XGetAGPOffsetMESA := GetProcAddressGLS('glXGetAGPOffsetMESA');
  5223. XEnumerateVideoDevicesNV := GetProcAddressGLS('glXEnumerateVideoDevicesNV');
  5224. XBindVideoDeviceNV := GetProcAddressGLS('glXBindVideoDeviceNV');
  5225. XGetVideoDeviceNV := GetProcAddressGLS('glXGetVideoDeviceNV');
  5226. XCopySubBufferMESA := GetProcAddressGLS('glXCopySubBufferMESA');
  5227. XReleaseBuffersMESA := GetProcAddressGLS('glXReleaseBuffersMESA');
  5228. XCreateGLXPixmapMESA := GetProcAddressGLS('glXCreateGLXPixmapMESA');
  5229. XSet3DfxModeMESA := GetProcAddressGLS('glXSet3DfxModeMESA');
  5230. XAllocateMemoryNV := GetProcAddressGLS('glXAllocateMemoryNV');
  5231. XFreeMemoryNV := GetProcAddressGLS('glXFreeMemoryNV');
  5232. XReleaseVideoDeviceNV := GetProcAddressGLS('glXReleaseVideoDeviceNV');
  5233. XBindVideoImageNV := GetProcAddressGLS('glXBindVideoImageNV');
  5234. XReleaseVideoImageNV := GetProcAddressGLS('glXReleaseVideoImageNV');
  5235. XSendPbufferToVideoNV := GetProcAddressGLS('glXSendPbufferToVideoNV');
  5236. XGetVideoInfoNV := GetProcAddressGLS('glXGetVideoInfoNV');
  5237. XJoinSwapGroupNV := GetProcAddressGLS('glXJoinSwapGroupNV');
  5238. XBindSwapBarrierNV := GetProcAddressGLS('glXBindSwapBarrierNV');
  5239. XQuerySwapGroupNV := GetProcAddressGLS('glXQuerySwapGroupNV');
  5240. XQueryMaxSwapGroupsNV := GetProcAddressGLS('glXQueryMaxSwapGroupsNV');
  5241. XQueryFrameCountNV := GetProcAddressGLS('glXQueryFrameCountNV');
  5242. XResetFrameCountNV := GetProcAddressGLS('glXResetFrameCountNV');
  5243. XBindVideoCaptureDeviceNV := GetProcAddressGLS('glXBindVideoCaptureDeviceNV');
  5244. XEnumerateVideoCaptureDevicesNV :=
  5245. GetProcAddressGLS('glXEnumerateVideoCaptureDevicesNV');
  5246. XLockVideoCaptureDeviceNV := GetProcAddressGLS('glxLockVideoCaptureDeviceNV');
  5247. XQueryVideoCaptureDeviceNV :=
  5248. GetProcAddressGLS('glXQueryVideoCaptureDeviceNV');
  5249. XReleaseVideoCaptureDeviceNV :=
  5250. GetProcAddressGLS('glXReleaseVideoCaptureDeviceNV');
  5251. XSwapIntervalEXT := GetProcAddressGLS('glXSwapIntervalEXT');
  5252. XCopyImageSubDataNV := GetProcAddressGLS('glXCopyImageSubDataNV');
  5253. end;
  5254. {$ENDIF}
  5255. {$IFDEF EGL_SUPPORT}
  5256. procedure TGLExtensionsAndEntryPoints.ReadEGLImplementationProperties;
  5257. var
  5258. MajorVersion, MinorVersion: integer;
  5259. begin
  5260. if Assigned(GetString) then
  5261. FBuffer := string(GetString(GL_EXTENSIONS))
  5262. else
  5263. FBuffer := '';
  5264. OES_depth24 := CheckExtension('GL_OES_depth24');
  5265. OES_depth32 := CheckExtension('GL_OES_depth32');
  5266. OES_depth_texture := CheckExtension('GL_OES_depth_texture');
  5267. OES_element_index_uint := CheckExtension('GL_OES_element_index_uint');
  5268. OES_fbo_render_mipmap := CheckExtension('GL_OES_fbo_render_mipmap');
  5269. OES_get_program_binary := CheckExtension('GL_OES_get_program_binary');
  5270. OES_mapbuffer := CheckExtension('GL_OES_mapbuffer');
  5271. OES_packed_depth_stencil := CheckExtension('GL_OES_packed_depth_stencil');
  5272. OES_rgb8_rgba8 := CheckExtension('GL_OES_rgb8_rgba8');
  5273. OES_standard_derivatives := CheckExtension('GL_OES_standard_derivatives');
  5274. OES_texture_3D := CheckExtension('GL_OES_texture_3D');
  5275. OES_texture_float := CheckExtension('GL_OES_texture_float');
  5276. OES_texture_float_linear := CheckExtension('GL_OES_texture_float_linear');
  5277. OES_texture_half_float := CheckExtension('GL_OES_texture_half_float');
  5278. OES_texture_half_float_linear :=
  5279. CheckExtension('GL_OES_texture_half_float_linear');
  5280. OES_texture_npot := CheckExtension('GL_OES_texture_npot');
  5281. OES_vertex_array_object := CheckExtension('GL_OES_vertex_array_object');
  5282. OES_vertex_half_float := CheckExtension('GL_OES_vertex_half_float');
  5283. end;
  5284. procedure TGLExtensionsAndEntryPoints.ReadEGLExtensions;
  5285. begin
  5286. eglGetError := GetProcAddressEGL('eglGetError');
  5287. eglGetDisplay := GetProcAddressEGL('eglGetDisplay');
  5288. eglInitialize := GetProcAddressEGL('eglInitialize');
  5289. eglTerminate := GetProcAddressEGL('eglTerminate');
  5290. eglQueryString := GetProcAddressEGL('eglQueryString');
  5291. eglGetConfigs := GetProcAddressEGL('eglGetConfigs');
  5292. eglChooseConfig := GetProcAddressEGL('eglChooseConfig');
  5293. eglGetConfigAttrib := GetProcAddressEGL('eglGetConfigAttrib');
  5294. eglCreatePixmapSurface := GetProcAddressEGL('eglCreatePixmapSurface');
  5295. eglDestroySurface := GetProcAddressEGL('eglDestroySurface');
  5296. eglQuerySurface := GetProcAddressEGL('eglQuerySurface');
  5297. eglBindAPI := GetProcAddressEGL('eglBindAPI');
  5298. eglQueryAPI := GetProcAddressEGL('eglQueryAPI');
  5299. eglWaitClient := GetProcAddressEGL('eglWaitClient');
  5300. eglReleaseThread := GetProcAddressEGL('eglReleaseThread');
  5301. eglCreatePbufferFromClientBuffer :=
  5302. GetProcAddressEGL('eglCreatePbufferFromClientBuffer');
  5303. eglSurfaceAttrib := GetProcAddressEGL('eglSurfaceAttrib');
  5304. eglBindTexImage := GetProcAddressEGL('eglBindTexImage');
  5305. eglReleaseTexImage := GetProcAddressEGL('eglReleaseTexImage');
  5306. eglSwapInterval := GetProcAddressEGL('eglSwapInterval');
  5307. eglCreateContext := GetProcAddressEGL('eglCreateContext');
  5308. eglDestroyContext := GetProcAddressEGL('eglDestroyContext');
  5309. eglMakeCurrent := GetProcAddressEGL('eglMakeCurrent');
  5310. eglGetCurrentContext := GetProcAddressEGL('eglGetCurrentContext');
  5311. eglGetCurrentSurface := GetProcAddressEGL('eglGetCurrentSurface');
  5312. eglGetCurrentDisplay := GetProcAddressEGL('eglGetCurrentDisplay');
  5313. eglQueryContext := GetProcAddressEGL('eglQueryContext');
  5314. eglWaitGL := GetProcAddressEGL('eglWaitGL');
  5315. eglWaitNative := GetProcAddressEGL('eglWaitNative');
  5316. eglSwapBuffers := GetProcAddressEGL('eglSwapBuffers');
  5317. eglCopyBuffers := GetProcAddressEGL('eglCopyBuffers');
  5318. end;
  5319. {$ENDIF}
  5320. procedure TrimAndSplitVersionString(buffer: string; var max, min: integer);
  5321. // Peels out the X.Y form from the given Buffer which must contain a version string like "text Minor.Major.Build text"
  5322. // at least however "Major.Minor".
  5323. var
  5324. Separator: integer;
  5325. begin
  5326. try
  5327. // There must be at least one dot to separate major and minor version number.
  5328. Separator := Pos('.', buffer);
  5329. // At least one number must be before and one after the dot.
  5330. if (Separator > 1) and (Separator < length(buffer)) and
  5331. (AnsiChar(buffer[Separator - 1]) in ['0' .. '9']) and
  5332. (AnsiChar(buffer[Separator + 1]) in ['0' .. '9']) then
  5333. begin
  5334. // OK, it's a valid version string. Now remove unnecessary parts.
  5335. Dec(Separator);
  5336. // Find last non-numeric character before version number.
  5337. while (Separator > 0) and (AnsiChar(buffer[Separator]) in ['0' .. '9']) do
  5338. Dec(Separator);
  5339. // Delete leading characters which do not belong to the version string.
  5340. Delete(buffer, 1, Separator);
  5341. Separator := Pos('.', buffer) + 1;
  5342. // Find first non-numeric character after version number
  5343. while (Separator <= length(buffer)) and
  5344. (AnsiChar(buffer[Separator]) in ['0' .. '9']) do
  5345. Inc(Separator);
  5346. // delete trailing characters not belonging to the version string
  5347. Delete(buffer, Separator, 255);
  5348. // Now translate the numbers.
  5349. Separator := Pos('.', buffer);
  5350. // This is necessary because the buffer length might have changed.
  5351. max := StrToInt(Copy(buffer, 1, Separator - 1));
  5352. min := StrToInt(Copy(buffer, Separator + 1, 255));
  5353. end
  5354. else
  5355. Abort;
  5356. except
  5357. min := 0;
  5358. max := 0;
  5359. end;
  5360. end;
  5361. function IsVersionMet(MajorVersion, MinorVersion, actualMajorVersion,
  5362. actualMinorVersion: integer): boolean;
  5363. begin
  5364. Result := (actualMajorVersion > MajorVersion) or
  5365. ((actualMajorVersion = MajorVersion) and
  5366. (actualMinorVersion >= MinorVersion));
  5367. end;
  5368. function InitOpenGL: boolean;
  5369. begin
  5370. {$IFNDEF EGL_SUPPORT}
  5371. if (GLHandle = INVALID_MODULEHANDLE) or (GLUHandle = INVALID_MODULEHANDLE)
  5372. then
  5373. Result := InitOpenGLFromLibrary(opengl32, glu32)
  5374. else
  5375. Result := True;
  5376. {$ELSE}
  5377. CloseOpenGL;
  5378. Result := True;
  5379. {$IFNDEF DARWIN}
  5380. EGLHandle := LoadLibrary(pchar(libEGL));
  5381. Result := EGLHandle <> INVALID_MODULEHANDLE;
  5382. {$ENDIF}
  5383. EGL2Handle := LoadLibrary(pchar(libGLES2));
  5384. Result := Result and (EGL2Handle <> INVALID_MODULEHANDLE);
  5385. {$ENDIF}
  5386. end;
  5387. function InitOpenGLFromLibrary(const GLName, GLUName: string): boolean;
  5388. begin
  5389. Result := False;
  5390. CloseOpenGL;
  5391. GLHandle := LoadLibrary(pchar(GLName));
  5392. GLUHandle := LoadLibrary(pchar(GLUName));
  5393. if (GLHandle <> INVALID_MODULEHANDLE) and (GLUHandle <> INVALID_MODULEHANDLE)
  5394. then
  5395. begin
  5396. Result := True;
  5397. end
  5398. else
  5399. CloseOpenGL;
  5400. end;
  5401. function IsOpenGLInitialized: boolean;
  5402. begin
  5403. Result := {$IFNDEF EGL_SUPPORT}(GLHandle <> INVALID_MODULEHANDLE){$ELSE}(EGL2Handle <> INVALID_MODULEHANDLE){$ENDIF};
  5404. end;
  5405. procedure CloseOpenGL;
  5406. begin
  5407. {$IFNDEF EGL_SUPPORT}
  5408. if GLHandle <> INVALID_MODULEHANDLE then
  5409. begin
  5410. FreeLibrary(GLHandle);
  5411. GLHandle := INVALID_MODULEHANDLE;
  5412. end;
  5413. if GLUHandle <> INVALID_MODULEHANDLE then
  5414. begin
  5415. FreeLibrary(GLUHandle);
  5416. GLUHandle := INVALID_MODULEHANDLE;
  5417. end;
  5418. {$ELSE}
  5419. {$IFNDEF DARWIN}
  5420. if EGLHandle <> INVALID_MODULEHANDLE then
  5421. begin
  5422. FreeLibrary(EGLHandle);
  5423. EGLHandle := INVALID_MODULEHANDLE;
  5424. end;
  5425. {$ENDIF}
  5426. if EGL2Handle <> INVALID_MODULEHANDLE then
  5427. begin
  5428. FreeLibrary(EGL2Handle);
  5429. EGL2Handle := INVALID_MODULEHANDLE;
  5430. end;
  5431. {$ENDIF}
  5432. end;
  5433. procedure UnloadOpenGL;
  5434. begin
  5435. CloseOpenGL;
  5436. end;
  5437. function LoadOpenGL: boolean;
  5438. begin
  5439. Result := InitOpenGL;
  5440. end;
  5441. function LoadOpenGLFromLibrary(GLName, GLUName: string): boolean;
  5442. begin
  5443. Result := InitOpenGLFromLibrary(GLName, GLUName);
  5444. end;
  5445. function IsOpenGLLoaded: boolean;
  5446. begin
  5447. Result := IsOpenGLInitialized();
  5448. end;
  5449. function IsMesaGL: boolean;
  5450. begin
  5451. Result := GetProcAddressGLS('glResizeBuffersMESA') <> nil;
  5452. end;
  5453. initialization
  5454. Set8087CW($133F);
  5455. finalization
  5456. CloseOpenGL;
  5457. end.