glext.pp 285 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113
  1. {
  2. $Id$
  3. Adaption of the delphi3d.net OpenGL units to FreePascal
  4. Sebastian Guenther ([email protected]) in 2002
  5. These units are free to use
  6. }
  7. {$MACRO ON}
  8. {$MODE Delphi}
  9. {$IFDEF Win32}
  10. {$DEFINE extdecl:=stdcall }
  11. {$ELSE}
  12. {$DEFINE extdecl:=cdecl }
  13. {$ENDIF}
  14. unit GLext;
  15. (**************************************************
  16. * OpenGL extension loading library *
  17. * Generated by MetaGLext, written by Tom Nuydens *
  18. * ([email protected] -- http://www.delphi3d.net *
  19. **************************************************)
  20. //*** Generated on 10/11/2002
  21. interface
  22. uses
  23. SysUtils,
  24. {$IFDEF Win32}
  25. Windows,
  26. {$ELSE}
  27. DLLFuncs,
  28. {$ENDIF}
  29. GL;
  30. {$IFDEF Win32}
  31. { Declared in Windows unit as well in FPC; but declared here as well, to be
  32. fully compatible to upstream version - sg }
  33. function wglGetProcAddress(proc: PChar): Pointer; extdecl; external 'OpenGL32.dll';
  34. {$ELSE}
  35. function wglGetProcAddress(proc: PChar): Pointer;
  36. {$ENDIF}
  37. // Test if the given extension name is present in the given extension string.
  38. function glext_ExtensionSupported(const extension: String; const searchIn: String): Boolean;
  39. // Load the extension with the given name.
  40. function glext_LoadExtension(ext: String): Boolean;
  41. //***** GL_version_1_2 *****//
  42. const
  43. GL_UNSIGNED_BYTE_3_3_2 = $8032;
  44. GL_UNSIGNED_SHORT_4_4_4_4 = $8033;
  45. GL_UNSIGNED_SHORT_5_5_5_1 = $8034;
  46. GL_UNSIGNED_INT_8_8_8_8 = $8035;
  47. GL_UNSIGNED_INT_10_10_10_2 = $8036;
  48. GL_RESCALE_NORMAL = $803A;
  49. GL_UNSIGNED_BYTE_2_3_3_REV = $8362;
  50. GL_UNSIGNED_SHORT_5_6_5 = $8363;
  51. GL_UNSIGNED_SHORT_5_6_5_REV = $8364;
  52. GL_UNSIGNED_SHORT_4_4_4_4_REV = $8365;
  53. GL_UNSIGNED_SHORT_1_5_5_5_REV = $8366;
  54. GL_UNSIGNED_INT_8_8_8_8_REV = $8367;
  55. GL_UNSIGNED_INT_2_10_10_10_REV = $8368;
  56. GL_BGR = $80E0;
  57. GL_BGRA = $80E1;
  58. GL_MAX_ELEMENTS_VERTICES = $80E8;
  59. GL_MAX_ELEMENTS_INDICES = $80E9;
  60. GL_CLAMP_TO_EDGE = $812F;
  61. GL_TEXTURE_MIN_LOD = $813A;
  62. GL_TEXTURE_MAX_LOD = $813B;
  63. GL_TEXTURE_BASE_LEVEL = $813C;
  64. GL_TEXTURE_MAX_LEVEL = $813D;
  65. GL_LIGHT_MODEL_COLOR_CONTROL = $81F8;
  66. GL_SINGLE_COLOR = $81F9;
  67. GL_SEPARATE_SPECULAR_COLOR = $81FA;
  68. GL_SMOOTH_POINT_SIZE_RANGE = $0B12;
  69. GL_SMOOTH_POINT_SIZE_GRANULARITY = $0B13;
  70. GL_SMOOTH_LINE_WIDTH_RANGE = $0B22;
  71. GL_SMOOTH_LINE_WIDTH_GRANULARITY = $0B23;
  72. GL_ALIASED_POINT_SIZE_RANGE = $846D;
  73. GL_ALIASED_LINE_WIDTH_RANGE = $846E;
  74. GL_PACK_SKIP_IMAGES = $806B;
  75. GL_PACK_IMAGE_HEIGHT = $806C;
  76. GL_UNPACK_SKIP_IMAGES = $806D;
  77. GL_UNPACK_IMAGE_HEIGHT = $806E;
  78. GL_TEXTURE_3D = $806F;
  79. GL_PROXY_TEXTURE_3D = $8070;
  80. GL_TEXTURE_DEPTH = $8071;
  81. GL_TEXTURE_WRAP_R = $8072;
  82. GL_MAX_3D_TEXTURE_SIZE = $8073;
  83. var
  84. glBlendColor: procedure(red: GLclampf; green: GLclampf; blue: GLclampf; alpha: GLclampf); extdecl;
  85. glBlendEquation: procedure(mode: GLenum); extdecl;
  86. glDrawRangeElements: procedure(mode: GLenum; start: GLuint; _end: GLuint; count: GLsizei; _type: GLenum; const indices: PGLvoid); extdecl;
  87. glColorTable: procedure(target: GLenum; internalformat: GLenum; width: GLsizei; format: GLenum; _type: GLenum; const table: PGLvoid); extdecl;
  88. glColorTableParameterfv: procedure(target: GLenum; pname: GLenum; const params: PGLfloat); extdecl;
  89. glColorTableParameteriv: procedure(target: GLenum; pname: GLenum; const params: PGLint); extdecl;
  90. glCopyColorTable: procedure(target: GLenum; internalformat: GLenum; x: GLint; y: GLint; width: GLsizei); extdecl;
  91. glGetColorTable: procedure(target: GLenum; format: GLenum; _type: GLenum; table: PGLvoid); extdecl;
  92. glGetColorTableParameterfv: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  93. glGetColorTableParameteriv: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  94. glColorSubTable: procedure(target: GLenum; start: GLsizei; count: GLsizei; format: GLenum; _type: GLenum; const data: PGLvoid); extdecl;
  95. glCopyColorSubTable: procedure(target: GLenum; start: GLsizei; x: GLint; y: GLint; width: GLsizei); extdecl;
  96. glConvolutionFilter1D: procedure(target: GLenum; internalformat: GLenum; width: GLsizei; format: GLenum; _type: GLenum; const image: PGLvoid); extdecl;
  97. glConvolutionFilter2D: procedure(target: GLenum; internalformat: GLenum; width: GLsizei; height: GLsizei; format: GLenum; _type: GLenum; const image: PGLvoid); extdecl;
  98. glConvolutionParameterf: procedure(target: GLenum; pname: GLenum; params: GLfloat); extdecl;
  99. glConvolutionParameterfv: procedure(target: GLenum; pname: GLenum; const params: PGLfloat); extdecl;
  100. glConvolutionParameteri: procedure(target: GLenum; pname: GLenum; params: GLint); extdecl;
  101. glConvolutionParameteriv: procedure(target: GLenum; pname: GLenum; const params: PGLint); extdecl;
  102. glCopyConvolutionFilter1D: procedure(target: GLenum; internalformat: GLenum; x: GLint; y: GLint; width: GLsizei); extdecl;
  103. glCopyConvolutionFilter2D: procedure(target: GLenum; internalformat: GLenum; x: GLint; y: GLint; width: GLsizei; height: GLsizei); extdecl;
  104. glGetConvolutionFilter: procedure(target: GLenum; format: GLenum; _type: GLenum; image: PGLvoid); extdecl;
  105. glGetConvolutionParameterfv: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  106. glGetConvolutionParameteriv: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  107. glGetSeparableFilter: procedure(target: GLenum; format: GLenum; _type: GLenum; row: PGLvoid; column: PGLvoid; span: PGLvoid); extdecl;
  108. glSeparableFilter2D: procedure(target: GLenum; internalformat: GLenum; width: GLsizei; height: GLsizei; format: GLenum; _type: GLenum; const row: PGLvoid; const column: PGLvoid); extdecl;
  109. glGetHistogram: procedure(target: GLenum; reset: GLboolean; format: GLenum; _type: GLenum; values: PGLvoid); extdecl;
  110. glGetHistogramParameterfv: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  111. glGetHistogramParameteriv: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  112. glGetMinmax: procedure(target: GLenum; reset: GLboolean; format: GLenum; _type: GLenum; values: PGLvoid); extdecl;
  113. glGetMinmaxParameterfv: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  114. glGetMinmaxParameteriv: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  115. glHistogram: procedure(target: GLenum; width: GLsizei; internalformat: GLenum; sink: GLboolean); extdecl;
  116. glMinmax: procedure(target: GLenum; internalformat: GLenum; sink: GLboolean); extdecl;
  117. glResetHistogram: procedure(target: GLenum); extdecl;
  118. glResetMinmax: procedure(target: GLenum); extdecl;
  119. glTexImage3D: procedure(target: GLenum; level: GLint; internalformat: GLint; width: GLsizei; height: GLsizei; depth: GLsizei; border: GLint; format: GLenum; _type: GLenum; const pixels: PGLvoid); extdecl;
  120. glTexSubImage3D: procedure(target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; zoffset: GLint; width: GLsizei; height: GLsizei; depth: GLsizei; format: GLenum; _type: GLenum; const pixels: PGLvoid); extdecl;
  121. glCopyTexSubImage3D: procedure(target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; zoffset: GLint; x: GLint; y: GLint; width: GLsizei; height: GLsizei); extdecl;
  122. function Load_GL_version_1_2: Boolean;
  123. //***** GL_ARB_imaging *****//
  124. const
  125. GL_CONSTANT_COLOR = $8001;
  126. GL_ONE_MINUS_CONSTANT_COLOR = $8002;
  127. GL_CONSTANT_ALPHA = $8003;
  128. GL_ONE_MINUS_CONSTANT_ALPHA = $8004;
  129. GL_BLEND_COLOR = $8005;
  130. GL_FUNC_ADD = $8006;
  131. GL_MIN = $8007;
  132. GL_MAX = $8008;
  133. GL_BLEND_EQUATION = $8009;
  134. GL_FUNC_SUBTRACT = $800A;
  135. GL_FUNC_REVERSE_SUBTRACT = $800B;
  136. GL_CONVOLUTION_1D = $8010;
  137. GL_CONVOLUTION_2D = $8011;
  138. GL_SEPARABLE_2D = $8012;
  139. GL_CONVOLUTION_BORDER_MODE = $8013;
  140. GL_CONVOLUTION_FILTER_SCALE = $8014;
  141. GL_CONVOLUTION_FILTER_BIAS = $8015;
  142. GL_REDUCE = $8016;
  143. GL_CONVOLUTION_FORMAT = $8017;
  144. GL_CONVOLUTION_WIDTH = $8018;
  145. GL_CONVOLUTION_HEIGHT = $8019;
  146. GL_MAX_CONVOLUTION_WIDTH = $801A;
  147. GL_MAX_CONVOLUTION_HEIGHT = $801B;
  148. GL_POST_CONVOLUTION_RED_SCALE = $801C;
  149. GL_POST_CONVOLUTION_GREEN_SCALE = $801D;
  150. GL_POST_CONVOLUTION_BLUE_SCALE = $801E;
  151. GL_POST_CONVOLUTION_ALPHA_SCALE = $801F;
  152. GL_POST_CONVOLUTION_RED_BIAS = $8020;
  153. GL_POST_CONVOLUTION_GREEN_BIAS = $8021;
  154. GL_POST_CONVOLUTION_BLUE_BIAS = $8022;
  155. GL_POST_CONVOLUTION_ALPHA_BIAS = $8023;
  156. GL_HISTOGRAM = $8024;
  157. GL_PROXY_HISTOGRAM = $8025;
  158. GL_HISTOGRAM_WIDTH = $8026;
  159. GL_HISTOGRAM_FORMAT = $8027;
  160. GL_HISTOGRAM_RED_SIZE = $8028;
  161. GL_HISTOGRAM_GREEN_SIZE = $8029;
  162. GL_HISTOGRAM_BLUE_SIZE = $802A;
  163. GL_HISTOGRAM_ALPHA_SIZE = $802B;
  164. GL_HISTOGRAM_LUMINANCE_SIZE = $802C;
  165. GL_HISTOGRAM_SINK = $802D;
  166. GL_MINMAX = $802E;
  167. GL_MINMAX_FORMAT = $802F;
  168. GL_MINMAX_SINK = $8030;
  169. GL_TABLE_TOO_LARGE = $8031;
  170. GL_COLOR_MATRIX = $80B1;
  171. GL_COLOR_MATRIX_STACK_DEPTH = $80B2;
  172. GL_MAX_COLOR_MATRIX_STACK_DEPTH = $80B3;
  173. GL_POST_COLOR_MATRIX_RED_SCALE = $80B4;
  174. GL_POST_COLOR_MATRIX_GREEN_SCALE = $80B5;
  175. GL_POST_COLOR_MATRIX_BLUE_SCALE = $80B6;
  176. GL_POST_COLOR_MATRIX_ALPHA_SCALE = $80B7;
  177. GL_POST_COLOR_MATRIX_RED_BIAS = $80B8;
  178. GL_POST_COLOR_MATRIX_GREEN_BIAS = $80B9;
  179. GL_POST_COLOR_MATRIX_BLUE_BIAS = $80BA;
  180. GL_POST_COLOR_MATIX_ALPHA_BIAS = $80BB;
  181. GL_COLOR_TABLE = $80D0;
  182. GL_POST_CONVOLUTION_COLOR_TABLE = $80D1;
  183. GL_POST_COLOR_MATRIX_COLOR_TABLE = $80D2;
  184. GL_PROXY_COLOR_TABLE = $80D3;
  185. GL_PROXY_POST_CONVOLUTION_COLOR_TABLE = $80D4;
  186. GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE = $80D5;
  187. GL_COLOR_TABLE_SCALE = $80D6;
  188. GL_COLOR_TABLE_BIAS = $80D7;
  189. GL_COLOR_TABLE_FORMAT = $80D8;
  190. GL_COLOR_TABLE_WIDTH = $80D9;
  191. GL_COLOR_TABLE_RED_SIZE = $80DA;
  192. GL_COLOR_TABLE_GREEN_SIZE = $80DB;
  193. GL_COLOR_TABLE_BLUE_SIZE = $80DC;
  194. GL_COLOR_TABLE_ALPHA_SIZE = $80DD;
  195. GL_COLOR_TABLE_LUMINANCE_SIZE = $80DE;
  196. GL_COLOR_TABLE_INTENSITY_SIZE = $80DF;
  197. GL_IGNORE_BORDER = $8150;
  198. GL_CONSTANT_BORDER = $8151;
  199. GL_WRAP_BORDER = $8152;
  200. GL_REPLICATE_BORDER = $8153;
  201. GL_CONVOLUTION_BORDER_COLOR = $8154;
  202. function Load_GL_ARB_imaging: Boolean;
  203. //***** GL_version_1_3 *****//
  204. const
  205. GL_TEXTURE0 = $84C0;
  206. GL_TEXTURE1 = $84C1;
  207. GL_TEXTURE2 = $84C2;
  208. GL_TEXTURE3 = $84C3;
  209. GL_TEXTURE4 = $84C4;
  210. GL_TEXTURE5 = $84C5;
  211. GL_TEXTURE6 = $84C6;
  212. GL_TEXTURE7 = $84C7;
  213. GL_TEXTURE8 = $84C8;
  214. GL_TEXTURE9 = $84C9;
  215. GL_TEXTURE10 = $84CA;
  216. GL_TEXTURE11 = $84CB;
  217. GL_TEXTURE12 = $84CC;
  218. GL_TEXTURE13 = $84CD;
  219. GL_TEXTURE14 = $84CE;
  220. GL_TEXTURE15 = $84CF;
  221. GL_TEXTURE16 = $84D0;
  222. GL_TEXTURE17 = $84D1;
  223. GL_TEXTURE18 = $84D2;
  224. GL_TEXTURE19 = $84D3;
  225. GL_TEXTURE20 = $84D4;
  226. GL_TEXTURE21 = $84D5;
  227. GL_TEXTURE22 = $84D6;
  228. GL_TEXTURE23 = $84D7;
  229. GL_TEXTURE24 = $84D8;
  230. GL_TEXTURE25 = $84D9;
  231. GL_TEXTURE26 = $84DA;
  232. GL_TEXTURE27 = $84DB;
  233. GL_TEXTURE28 = $84DC;
  234. GL_TEXTURE29 = $84DD;
  235. GL_TEXTURE30 = $84DE;
  236. GL_TEXTURE31 = $84DF;
  237. GL_ACTIVE_TEXTURE = $84E0;
  238. GL_CLIENT_ACTIVE_TEXTURE = $84E1;
  239. GL_MAX_TEXTURE_UNITS = $84E2;
  240. GL_TRANSPOSE_MODELVIEW_MATRIX = $84E3;
  241. GL_TRANSPOSE_PROJECTION_MATRIX = $84E4;
  242. GL_TRANSPOSE_TEXTURE_MATRIX = $84E5;
  243. GL_TRANSPOSE_COLOR_MATRIX = $84E6;
  244. GL_MULTISAMPLE = $809D;
  245. GL_SAMPLE_ALPHA_TO_COVERAGE = $809E;
  246. GL_SAMPLE_ALPHA_TO_ONE = $809F;
  247. GL_SAMPLE_COVERAGE = $80A0;
  248. GL_SAMPLE_BUFFERS = $80A8;
  249. GL_SAMPLES = $80A9;
  250. GL_SAMPLE_COVERAGE_VALUE = $80AA;
  251. GL_SAMPLE_COVERAGE_INVERT = $80AB;
  252. GL_MULTISAMPLE_BIT = $20000000;
  253. GL_NORMAL_MAP = $8511;
  254. GL_REFLECTION_MAP = $8512;
  255. GL_TEXTURE_CUBE_MAP = $8513;
  256. GL_TEXTURE_BINDING_CUBE_MAP = $8514;
  257. GL_TEXTURE_CUBE_MAP_POSITIVE_X = $8515;
  258. GL_TEXTURE_CUBE_MAP_NEGATIVE_X = $8516;
  259. GL_TEXTURE_CUBE_MAP_POSITIVE_Y = $8517;
  260. GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = $8518;
  261. GL_TEXTURE_CUBE_MAP_POSITIVE_Z = $8519;
  262. GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = $851A;
  263. GL_PROXY_TEXTURE_CUBE_MAP = $851B;
  264. GL_MAX_CUBE_MAP_TEXTURE_SIZE = $851C;
  265. GL_COMPRESSED_ALPHA = $84E9;
  266. GL_COMPRESSED_LUMINANCE = $84EA;
  267. GL_COMPRESSED_LUMINANCE_ALPHA = $84EB;
  268. GL_COMPRESSED_INTENSITY = $84EC;
  269. GL_COMPRESSED_RGB = $84ED;
  270. GL_COMPRESSED_RGBA = $84EE;
  271. GL_TEXTURE_COMPRESSION_HINT = $84EF;
  272. GL_TEXTURE_COMPRESSED_IMAGE_SIZE = $86A0;
  273. GL_TEXTURE_COMPRESSED = $86A1;
  274. GL_NUM_COMPRESSED_TEXTURE_FORMATS = $86A2;
  275. GL_COMPRESSED_TEXTURE_FORMATS = $86A3;
  276. GL_CLAMP_TO_BORDER = $812D;
  277. GL_CLAMP_TO_BORDER_SGIS = $812D;
  278. GL_COMBINE = $8570;
  279. GL_COMBINE_RGB = $8571;
  280. GL_COMBINE_ALPHA = $8572;
  281. GL_SOURCE0_RGB = $8580;
  282. GL_SOURCE1_RGB = $8581;
  283. GL_SOURCE2_RGB = $8582;
  284. GL_SOURCE0_ALPHA = $8588;
  285. GL_SOURCE1_ALPHA = $8589;
  286. GL_SOURCE2_ALPHA = $858A;
  287. GL_OPERAND0_RGB = $8590;
  288. GL_OPERAND1_RGB = $8591;
  289. GL_OPERAND2_RGB = $8592;
  290. GL_OPERAND0_ALPHA = $8598;
  291. GL_OPERAND1_ALPHA = $8599;
  292. GL_OPERAND2_ALPHA = $859A;
  293. GL_RGB_SCALE = $8573;
  294. GL_ADD_SIGNED = $8574;
  295. GL_INTERPOLATE = $8575;
  296. GL_SUBTRACT = $84E7;
  297. GL_CONSTANT = $8576;
  298. GL_PRIMARY_COLOR = $8577;
  299. GL_PREVIOUS = $8578;
  300. GL_DOT3_RGB = $86AE;
  301. GL_DOT3_RGBA = $86AF;
  302. var
  303. glActiveTexture: procedure(texture: GLenum); extdecl;
  304. glClientActiveTexture: procedure(texture: GLenum); extdecl;
  305. glMultiTexCoord1d: procedure(target: GLenum; s: GLdouble); extdecl;
  306. glMultiTexCoord1dv: procedure(target: GLenum; const v: PGLdouble); extdecl;
  307. glMultiTexCoord1f: procedure(target: GLenum; s: GLfloat); extdecl;
  308. glMultiTexCoord1fv: procedure(target: GLenum; const v: PGLfloat); extdecl;
  309. glMultiTexCoord1i: procedure(target: GLenum; s: GLint); extdecl;
  310. glMultiTexCoord1iv: procedure(target: GLenum; const v: PGLint); extdecl;
  311. glMultiTexCoord1s: procedure(target: GLenum; s: GLshort); extdecl;
  312. glMultiTexCoord1sv: procedure(target: GLenum; const v: PGLshort); extdecl;
  313. glMultiTexCoord2d: procedure(target: GLenum; s: GLdouble; t: GLdouble); extdecl;
  314. glMultiTexCoord2dv: procedure(target: GLenum; const v: PGLdouble); extdecl;
  315. glMultiTexCoord2f: procedure(target: GLenum; s: GLfloat; t: GLfloat); extdecl;
  316. glMultiTexCoord2fv: procedure(target: GLenum; const v: PGLfloat); extdecl;
  317. glMultiTexCoord2i: procedure(target: GLenum; s: GLint; t: GLint); extdecl;
  318. glMultiTexCoord2iv: procedure(target: GLenum; const v: PGLint); extdecl;
  319. glMultiTexCoord2s: procedure(target: GLenum; s: GLshort; t: GLshort); extdecl;
  320. glMultiTexCoord2sv: procedure(target: GLenum; const v: PGLshort); extdecl;
  321. glMultiTexCoord3d: procedure(target: GLenum; s: GLdouble; t: GLdouble; r: GLdouble); extdecl;
  322. glMultiTexCoord3dv: procedure(target: GLenum; const v: PGLdouble); extdecl;
  323. glMultiTexCoord3f: procedure(target: GLenum; s: GLfloat; t: GLfloat; r: GLfloat); extdecl;
  324. glMultiTexCoord3fv: procedure(target: GLenum; const v: PGLfloat); extdecl;
  325. glMultiTexCoord3i: procedure(target: GLenum; s: GLint; t: GLint; r: GLint); extdecl;
  326. glMultiTexCoord3iv: procedure(target: GLenum; const v: PGLint); extdecl;
  327. glMultiTexCoord3s: procedure(target: GLenum; s: GLshort; t: GLshort; r: GLshort); extdecl;
  328. glMultiTexCoord3sv: procedure(target: GLenum; const v: PGLshort); extdecl;
  329. glMultiTexCoord4d: procedure(target: GLenum; s: GLdouble; t: GLdouble; r: GLdouble; q: GLdouble); extdecl;
  330. glMultiTexCoord4dv: procedure(target: GLenum; const v: PGLdouble); extdecl;
  331. glMultiTexCoord4f: procedure(target: GLenum; s: GLfloat; t: GLfloat; r: GLfloat; q: GLfloat); extdecl;
  332. glMultiTexCoord4fv: procedure(target: GLenum; const v: PGLfloat); extdecl;
  333. glMultiTexCoord4i: procedure(target: GLenum; s: GLint; t: GLint; r: GLint; q: GLint); extdecl;
  334. glMultiTexCoord4iv: procedure(target: GLenum; const v: PGLint); extdecl;
  335. glMultiTexCoord4s: procedure(target: GLenum; s: GLshort; t: GLshort; r: GLshort; q: GLshort); extdecl;
  336. glMultiTexCoord4sv: procedure(target: GLenum; const v: PGLshort); extdecl;
  337. glLoadTransposeMatrixf: procedure(const m: PGLfloat); extdecl;
  338. glLoadTransposeMatrixd: procedure(const m: PGLdouble); extdecl;
  339. glMultTransposeMatrixf: procedure(const m: PGLfloat); extdecl;
  340. glMultTransposeMatrixd: procedure(const m: PGLdouble); extdecl;
  341. glSampleCoverage: procedure(value: GLclampf; invert: GLboolean); extdecl;
  342. glCompressedTexImage3D: procedure(target: GLenum; level: GLint; internalformat: GLenum; width: GLsizei; height: GLsizei; depth: GLsizei; border: GLint; imageSize: GLsizei; const data: PGLvoid); extdecl;
  343. glCompressedTexImage2D: procedure(target: GLenum; level: GLint; internalformat: GLenum; width: GLsizei; height: GLsizei; border: GLint; imageSize: GLsizei; const data: PGLvoid); extdecl;
  344. glCompressedTexImage1D: procedure(target: GLenum; level: GLint; internalformat: GLenum; width: GLsizei; border: GLint; imageSize: GLsizei; const data: PGLvoid); extdecl;
  345. glCompressedTexSubImage3D: procedure(target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; zoffset: GLint; width: GLsizei; height: GLsizei; depth: GLsizei; format: GLenum; imageSize: GLsizei; const data: PGLvoid); extdecl;
  346. glCompressedTexSubImage2D: procedure(target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; width: GLsizei; height: GLsizei; format: GLenum; imageSize: GLsizei; const data: PGLvoid); extdecl;
  347. glCompressedTexSubImage1D: procedure(target: GLenum; level: GLint; xoffset: GLint; width: GLsizei; format: GLenum; imageSize: GLsizei; const data: PGLvoid); extdecl;
  348. glGetCompressedTexImage: procedure(target: GLenum; level: GLint; img: PGLvoid); extdecl;
  349. function Load_GL_version_1_3: Boolean;
  350. //***** GL_ARB_multitexture *****//
  351. const
  352. GL_TEXTURE0_ARB = $84C0;
  353. GL_TEXTURE1_ARB = $84C1;
  354. GL_TEXTURE2_ARB = $84C2;
  355. GL_TEXTURE3_ARB = $84C3;
  356. GL_TEXTURE4_ARB = $84C4;
  357. GL_TEXTURE5_ARB = $84C5;
  358. GL_TEXTURE6_ARB = $84C6;
  359. GL_TEXTURE7_ARB = $84C7;
  360. GL_TEXTURE8_ARB = $84C8;
  361. GL_TEXTURE9_ARB = $84C9;
  362. GL_TEXTURE10_ARB = $84CA;
  363. GL_TEXTURE11_ARB = $84CB;
  364. GL_TEXTURE12_ARB = $84CC;
  365. GL_TEXTURE13_ARB = $84CD;
  366. GL_TEXTURE14_ARB = $84CE;
  367. GL_TEXTURE15_ARB = $84CF;
  368. GL_TEXTURE16_ARB = $84D0;
  369. GL_TEXTURE17_ARB = $84D1;
  370. GL_TEXTURE18_ARB = $84D2;
  371. GL_TEXTURE19_ARB = $84D3;
  372. GL_TEXTURE20_ARB = $84D4;
  373. GL_TEXTURE21_ARB = $84D5;
  374. GL_TEXTURE22_ARB = $84D6;
  375. GL_TEXTURE23_ARB = $84D7;
  376. GL_TEXTURE24_ARB = $84D8;
  377. GL_TEXTURE25_ARB = $84D9;
  378. GL_TEXTURE26_ARB = $84DA;
  379. GL_TEXTURE27_ARB = $84DB;
  380. GL_TEXTURE28_ARB = $84DC;
  381. GL_TEXTURE29_ARB = $84DD;
  382. GL_TEXTURE30_ARB = $84DE;
  383. GL_TEXTURE31_ARB = $84DF;
  384. GL_ACTIVE_TEXTURE_ARB = $84E0;
  385. GL_CLIENT_ACTIVE_TEXTURE_ARB = $84E1;
  386. GL_MAX_TEXTURE_UNITS_ARB = $84E2;
  387. var
  388. glActiveTextureARB: procedure(texture: GLenum); extdecl;
  389. glClientActiveTextureARB: procedure(texture: GLenum); extdecl;
  390. glMultiTexCoord1dARB: procedure(target: GLenum; s: GLdouble); extdecl;
  391. glMultiTexCoord1dvARB: procedure(target: GLenum; const v: PGLdouble); extdecl;
  392. glMultiTexCoord1fARB: procedure(target: GLenum; s: GLfloat); extdecl;
  393. glMultiTexCoord1fvARB: procedure(target: GLenum; const v: PGLfloat); extdecl;
  394. glMultiTexCoord1iARB: procedure(target: GLenum; s: GLint); extdecl;
  395. glMultiTexCoord1ivARB: procedure(target: GLenum; const v: PGLint); extdecl;
  396. glMultiTexCoord1sARB: procedure(target: GLenum; s: GLshort); extdecl;
  397. glMultiTexCoord1svARB: procedure(target: GLenum; const v: PGLshort); extdecl;
  398. glMultiTexCoord2dARB: procedure(target: GLenum; s: GLdouble; t: GLdouble); extdecl;
  399. glMultiTexCoord2dvARB: procedure(target: GLenum; const v: PGLdouble); extdecl;
  400. glMultiTexCoord2fARB: procedure(target: GLenum; s: GLfloat; t: GLfloat); extdecl;
  401. glMultiTexCoord2fvARB: procedure(target: GLenum; const v: PGLfloat); extdecl;
  402. glMultiTexCoord2iARB: procedure(target: GLenum; s: GLint; t: GLint); extdecl;
  403. glMultiTexCoord2ivARB: procedure(target: GLenum; const v: PGLint); extdecl;
  404. glMultiTexCoord2sARB: procedure(target: GLenum; s: GLshort; t: GLshort); extdecl;
  405. glMultiTexCoord2svARB: procedure(target: GLenum; const v: PGLshort); extdecl;
  406. glMultiTexCoord3dARB: procedure(target: GLenum; s: GLdouble; t: GLdouble; r: GLdouble); extdecl;
  407. glMultiTexCoord3dvARB: procedure(target: GLenum; const v: PGLdouble); extdecl;
  408. glMultiTexCoord3fARB: procedure(target: GLenum; s: GLfloat; t: GLfloat; r: GLfloat); extdecl;
  409. glMultiTexCoord3fvARB: procedure(target: GLenum; const v: PGLfloat); extdecl;
  410. glMultiTexCoord3iARB: procedure(target: GLenum; s: GLint; t: GLint; r: GLint); extdecl;
  411. glMultiTexCoord3ivARB: procedure(target: GLenum; const v: PGLint); extdecl;
  412. glMultiTexCoord3sARB: procedure(target: GLenum; s: GLshort; t: GLshort; r: GLshort); extdecl;
  413. glMultiTexCoord3svARB: procedure(target: GLenum; const v: PGLshort); extdecl;
  414. glMultiTexCoord4dARB: procedure(target: GLenum; s: GLdouble; t: GLdouble; r: GLdouble; q: GLdouble); extdecl;
  415. glMultiTexCoord4dvARB: procedure(target: GLenum; const v: PGLdouble); extdecl;
  416. glMultiTexCoord4fARB: procedure(target: GLenum; s: GLfloat; t: GLfloat; r: GLfloat; q: GLfloat); extdecl;
  417. glMultiTexCoord4fvARB: procedure(target: GLenum; const v: PGLfloat); extdecl;
  418. glMultiTexCoord4iARB: procedure(target: GLenum; s: GLint; t: GLint; r: GLint; q: GLint); extdecl;
  419. glMultiTexCoord4ivARB: procedure(target: GLenum; const v: PGLint); extdecl;
  420. glMultiTexCoord4sARB: procedure(target: GLenum; s: GLshort; t: GLshort; r: GLshort; q: GLshort); extdecl;
  421. glMultiTexCoord4svARB: procedure(target: GLenum; const v: PGLshort); extdecl;
  422. function Load_GL_ARB_multitexture: Boolean;
  423. //***** GL_ARB_transpose_matrix *****//
  424. const
  425. GL_TRANSPOSE_MODELVIEW_MATRIX_ARB = $84E3;
  426. GL_TRANSPOSE_PROJECTION_MATRIX_ARB = $84E4;
  427. GL_TRANSPOSE_TEXTURE_MATRIX_ARB = $84E5;
  428. GL_TRANSPOSE_COLOR_MATRIX_ARB = $84E6;
  429. var
  430. glLoadTransposeMatrixfARB: procedure(m: PGLfloat); extdecl;
  431. glLoadTransposeMatrixdARB: procedure(m: PGLdouble); extdecl;
  432. glMultTransposeMatrixfARB: procedure(m: PGLfloat); extdecl;
  433. glMultTransposeMatrixdARB: procedure(m: PGLdouble); extdecl;
  434. function Load_GL_ARB_transpose_matrix: Boolean;
  435. //***** GL_ARB_multisample *****//
  436. const
  437. WGL_SAMPLE_BUFFERS_ARB = $2041;
  438. WGL_SAMPLES_ARB = $2042;
  439. GL_MULTISAMPLE_ARB = $809D;
  440. GL_SAMPLE_ALPHA_TO_COVERAGE_ARB = $809E;
  441. GL_SAMPLE_ALPHA_TO_ONE_ARB = $809F;
  442. GL_SAMPLE_COVERAGE_ARB = $80A0;
  443. GL_MULTISAMPLE_BIT_ARB = $20000000;
  444. GL_SAMPLE_BUFFERS_ARB = $80A8;
  445. GL_SAMPLES_ARB = $80A9;
  446. GL_SAMPLE_COVERAGE_VALUE_ARB = $80AA;
  447. GL_SAMPLE_COVERAGE_INVERT_ARB = $80AB;
  448. var
  449. glSampleCoverageARB: procedure(value: GLclampf; invert: GLboolean); extdecl;
  450. function Load_GL_ARB_multisample: Boolean;
  451. //***** GL_ARB_texture_env_add *****//
  452. function Load_GL_ARB_texture_env_add: Boolean;
  453. {$IFDEF Win32}
  454. //***** WGL_ARB_extensions_string *****//
  455. var
  456. wglGetExtensionsStringARB: function(hdc: HDC): Pchar; extdecl;
  457. function Load_WGL_ARB_extensions_string: Boolean;
  458. //***** WGL_ARB_buffer_region *****//
  459. const
  460. WGL_FRONT_COLOR_BUFFER_BIT_ARB = $0001;
  461. WGL_BACK_COLOR_BUFFER_BIT_ARB = $0002;
  462. WGL_DEPTH_BUFFER_BIT_ARB = $0004;
  463. WGL_STENCIL_BUFFER_BIT_ARB = $0008;
  464. var
  465. wglCreateBufferRegionARB: function(hDC: HDC; iLayerPlane: GLint; uType: GLuint): THandle; extdecl;
  466. wglDeleteBufferRegionARB: procedure(hRegion: THandle); extdecl;
  467. wglSaveBufferRegionARB: function(hRegion: THandle; x: GLint; y: GLint; width: GLint; height: GLint): BOOL; extdecl;
  468. wglRestoreBufferRegionARB: function(hRegion: THandle; x: GLint; y: GLint; width: GLint; height: GLint; xSrc: GLint; ySrc: GLint): BOOL; extdecl;
  469. function Load_WGL_ARB_buffer_region: Boolean;
  470. {$ENDIF}
  471. //***** GL_ARB_texture_cube_map *****//
  472. const
  473. GL_NORMAL_MAP_ARB = $8511;
  474. GL_REFLECTION_MAP_ARB = $8512;
  475. GL_TEXTURE_CUBE_MAP_ARB = $8513;
  476. GL_TEXTURE_BINDING_CUBE_MAP_ARB = $8514;
  477. GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB = $8515;
  478. GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB = $8516;
  479. GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB = $8517;
  480. GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB = $8518;
  481. GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB = $8519;
  482. GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB = $851A;
  483. GL_PROXY_TEXTURE_CUBE_MAP_ARB = $851B;
  484. GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB = $851C;
  485. function Load_GL_ARB_texture_cube_map: Boolean;
  486. //***** GL_ARB_depth_texture *****//
  487. const
  488. GL_DEPTH_COMPONENT16_ARB = $81A5;
  489. GL_DEPTH_COMPONENT24_ARB = $81A6;
  490. GL_DEPTH_COMPONENT32_ARB = $81A7;
  491. GL_TEXTURE_DEPTH_SIZE_ARB = $884A;
  492. GL_DEPTH_TEXTURE_MODE_ARB = $884B;
  493. function Load_GL_ARB_depth_texture: Boolean;
  494. //***** GL_ARB_point_parameters *****//
  495. const
  496. GL_POINT_SIZE_MIN_ARB = $8126;
  497. GL_POINT_SIZE_MAX_ARB = $8127;
  498. GL_POINT_FADE_THRESHOLD_SIZE_ARB = $8128;
  499. GL_POINT_DISTANCE_ATTENUATION_ARB = $8129;
  500. var
  501. glPointParameterfARB: procedure(pname: GLenum; param: GLfloat); extdecl;
  502. glPointParameterfvARB: procedure(pname: GLenum; params: PGLfloat); extdecl;
  503. function Load_GL_ARB_point_parameters: Boolean;
  504. //***** GL_ARB_shadow *****//
  505. const
  506. GL_TEXTURE_COMPARE_MODE_ARB = $884C;
  507. GL_TEXTURE_COMPARE_FUNC_ARB = $884D;
  508. GL_COMPARE_R_TO_TEXTURE_ARB = $884E;
  509. function Load_GL_ARB_shadow: Boolean;
  510. //***** GL_ARB_shadow_ambient *****//
  511. const
  512. GL_TEXTURE_COMPARE_FAIL_VALUE_ARB = $80BF;
  513. function Load_GL_ARB_shadow_ambient: Boolean;
  514. //***** GL_ARB_texture_border_clamp *****//
  515. const
  516. GL_CLAMP_TO_BORDER_ARB = $812D;
  517. function Load_GL_ARB_texture_border_clamp: Boolean;
  518. //***** GL_ARB_texture_compression *****//
  519. const
  520. GL_COMPRESSED_ALPHA_ARB = $84E9;
  521. GL_COMPRESSED_LUMINANCE_ARB = $84EA;
  522. GL_COMPRESSED_LUMINANCE_ALPHA_ARB = $84EB;
  523. GL_COMPRESSED_INTENSITY_ARB = $84EC;
  524. GL_COMPRESSED_RGB_ARB = $84ED;
  525. GL_COMPRESSED_RGBA_ARB = $84EE;
  526. GL_TEXTURE_COMPRESSION_HINT_ARB = $84EF;
  527. GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB = $86A0;
  528. GL_TEXTURE_COMPRESSED_ARB = $86A1;
  529. GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB = $86A2;
  530. GL_COMPRESSED_TEXTURE_FORMATS_ARB = $86A3;
  531. var
  532. glCompressedTexImage3DARB: procedure(target: GLenum; level: GLint; internalformat: GLenum; width: GLsizei; height: GLsizei; depth: GLsizei; border: GLint; imageSize: GLsizei; const data: PGLvoid); extdecl;
  533. glCompressedTexImage2DARB: procedure(target: GLenum; level: GLint; internalformat: GLenum; width: GLsizei; height: GLsizei; border: GLint; imageSize: GLsizei; const data: PGLvoid); extdecl;
  534. glCompressedTexImage1DARB: procedure(target: GLenum; level: GLint; internalformat: GLenum; width: GLsizei; border: GLint; imageSize: GLsizei; const data: PGLvoid); extdecl;
  535. glCompressedTexSubImage3DARB: procedure(target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; zoffset: GLint; width: GLsizei; height: GLsizei; depth: GLsizei; format: GLenum; imageSize: GLsizei; const data: PGLvoid); extdecl;
  536. glCompressedTexSubImage2DARB: procedure(target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; width: GLsizei; height: GLsizei; format: GLenum; imageSize: GLsizei; const data: PGLvoid); extdecl;
  537. glCompressedTexSubImage1DARB: procedure(target: GLenum; level: GLint; xoffset: GLint; width: GLsizei; format: GLenum; imageSize: GLsizei; const data: PGLvoid); extdecl;
  538. glGetCompressedTexImageARB: procedure(target: GLenum; lod: GLint; img: PGLvoid); extdecl;
  539. function Load_GL_ARB_texture_compression: Boolean;
  540. //***** GL_ARB_texture_env_combine *****//
  541. const
  542. GL_COMBINE_ARB = $8570;
  543. GL_COMBINE_RGB_ARB = $8571;
  544. GL_COMBINE_ALPHA_ARB = $8572;
  545. GL_SOURCE0_RGB_ARB = $8580;
  546. GL_SOURCE1_RGB_ARB = $8581;
  547. GL_SOURCE2_RGB_ARB = $8582;
  548. GL_SOURCE0_ALPHA_ARB = $8588;
  549. GL_SOURCE1_ALPHA_ARB = $8589;
  550. GL_SOURCE2_ALPHA_ARB = $858A;
  551. GL_OPERAND0_RGB_ARB = $8590;
  552. GL_OPERAND1_RGB_ARB = $8591;
  553. GL_OPERAND2_RGB_ARB = $8592;
  554. GL_OPERAND0_ALPHA_ARB = $8598;
  555. GL_OPERAND1_ALPHA_ARB = $8599;
  556. GL_OPERAND2_ALPHA_ARB = $859A;
  557. GL_RGB_SCALE_ARB = $8573;
  558. GL_ADD_SIGNED_ARB = $8574;
  559. GL_INTERPOLATE_ARB = $8575;
  560. GL_SUBTRACT_ARB = $84E7;
  561. GL_CONSTANT_ARB = $8576;
  562. GL_PRIMARY_COLOR_ARB = $8577;
  563. GL_PREVIOUS_ARB = $8578;
  564. function Load_GL_ARB_texture_env_combine: Boolean;
  565. //***** GL_ARB_texture_env_crossbar *****//
  566. function Load_GL_ARB_texture_env_crossbar: Boolean;
  567. //***** GL_ARB_texture_env_dot3 *****//
  568. const
  569. GL_DOT3_RGB_ARB = $86AE;
  570. GL_DOT3_RGBA_ARB = $86AF;
  571. function Load_GL_ARB_texture_env_dot3: Boolean;
  572. //***** GL_ARB_texture_mirrored_repeat *****//
  573. const
  574. GL_MIRRORED_REPEAT_ARB = $8370;
  575. function Load_GL_ARB_texture_mirrored_repeat: Boolean;
  576. //***** GL_ARB_vertex_blend *****//
  577. const
  578. GL_MAX_VERTEX_UNITS_ARB = $86A4;
  579. GL_ACTIVE_VERTEX_UNITS_ARB = $86A5;
  580. GL_WEIGHT_SUM_UNITY_ARB = $86A6;
  581. GL_VERTEX_BLEND_ARB = $86A7;
  582. GL_MODELVIEW0_ARB = $1700;
  583. GL_MODELVIEW1_ARB = $850A;
  584. GL_MODELVIEW2_ARB = $8722;
  585. GL_MODELVIEW3_ARB = $8723;
  586. GL_MODELVIEW4_ARB = $8724;
  587. GL_MODELVIEW5_ARB = $8725;
  588. GL_MODELVIEW6_ARB = $8726;
  589. GL_MODELVIEW7_ARB = $8727;
  590. GL_MODELVIEW8_ARB = $8728;
  591. GL_MODELVIEW9_ARB = $8729;
  592. GL_MODELVIEW10_ARB = $872A;
  593. GL_MODELVIEW11_ARB = $872B;
  594. GL_MODELVIEW12_ARB = $872C;
  595. GL_MODELVIEW13_ARB = $872D;
  596. GL_MODELVIEW14_ARB = $872E;
  597. GL_MODELVIEW15_ARB = $872F;
  598. GL_MODELVIEW16_ARB = $8730;
  599. GL_MODELVIEW17_ARB = $8731;
  600. GL_MODELVIEW18_ARB = $8732;
  601. GL_MODELVIEW19_ARB = $8733;
  602. GL_MODELVIEW20_ARB = $8734;
  603. GL_MODELVIEW21_ARB = $8735;
  604. GL_MODELVIEW22_ARB = $8736;
  605. GL_MODELVIEW23_ARB = $8737;
  606. GL_MODELVIEW24_ARB = $8738;
  607. GL_MODELVIEW25_ARB = $8739;
  608. GL_MODELVIEW26_ARB = $873A;
  609. GL_MODELVIEW27_ARB = $873B;
  610. GL_MODELVIEW28_ARB = $873C;
  611. GL_MODELVIEW29_ARB = $873D;
  612. GL_MODELVIEW30_ARB = $873E;
  613. GL_MODELVIEW31_ARB = $873F;
  614. GL_CURRENT_WEIGHT_ARB = $86A8;
  615. GL_WEIGHT_ARRAY_TYPE_ARB = $86A9;
  616. GL_WEIGHT_ARRAY_STRIDE_ARB = $86AA;
  617. GL_WEIGHT_ARRAY_SIZE_ARB = $86AB;
  618. GL_WEIGHT_ARRAY_POINTER_ARB = $86AC;
  619. GL_WEIGHT_ARRAY_ARB = $86AD;
  620. var
  621. glWeightbvARB: procedure(size: GLint; weights: PGLbyte); extdecl;
  622. glWeightsvARB: procedure(size: GLint; weights: PGLshort); extdecl;
  623. glWeightivARB: procedure(size: GLint; weights: PGLint); extdecl;
  624. glWeightfvARB: procedure(size: GLint; weights: PGLfloat); extdecl;
  625. glWeightdvARB: procedure(size: GLint; weights: PGLdouble); extdecl;
  626. glWeightvARB: procedure(size: GLint; weights: PGLdouble); extdecl;
  627. glWeightubvARB: procedure(size: GLint; weights: PGLubyte); extdecl;
  628. glWeightusvARB: procedure(size: GLint; weights: PGLushort); extdecl;
  629. glWeightuivARB: procedure(size: GLint; weights: PGLuint); extdecl;
  630. glWeightPointerARB: procedure(size: GLint; _type: GLenum; stride: GLsizei; pointer: PGLvoid); extdecl;
  631. glVertexBlendARB: procedure(count: GLint); extdecl;
  632. function Load_GL_ARB_vertex_blend: Boolean;
  633. //***** GL_ARB_vertex_program *****//
  634. const
  635. GL_VERTEX_PROGRAM_ARB = $8620;
  636. GL_VERTEX_PROGRAM_POINT_SIZE_ARB = $8642;
  637. GL_VERTEX_PROGRAM_TWO_SIDE_ARB = $8643;
  638. GL_COLOR_SUM_ARB = $8458;
  639. GL_PROGRAM_FORMAT_ASCII_ARB = $8875;
  640. GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB = $8622;
  641. GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB = $8623;
  642. GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB = $8624;
  643. GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB = $8625;
  644. GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB = $886A;
  645. GL_CURRENT_VERTEX_ATTRIB_ARB = $8626;
  646. GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB = $8645;
  647. GL_PROGRAM_LENGTH_ARB = $8627;
  648. GL_PROGRAM_FORMAT_ARB = $8876;
  649. GL_PROGRAM_BINDING_ARB = $8677;
  650. GL_PROGRAM_INSTRUCTIONS_ARB = $88A0;
  651. GL_MAX_PROGRAM_INSTRUCTIONS_ARB = $88A1;
  652. GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB = $88A2;
  653. GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB = $88A3;
  654. GL_PROGRAM_TEMPORARIES_ARB = $88A4;
  655. GL_MAX_PROGRAM_TEMPORARIES_ARB = $88A5;
  656. GL_PROGRAM_NATIVE_TEMPORARIES_ARB = $88A6;
  657. GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB = $88A7;
  658. GL_PROGRAM_PARAMETERS_ARB = $88A8;
  659. GL_MAX_PROGRAM_PARAMETERS_ARB = $88A9;
  660. GL_PROGRAM_NATIVE_PARAMETERS_ARB = $88AA;
  661. GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB = $88AB;
  662. GL_PROGRAM_ATTRIBS_ARB = $88AC;
  663. GL_MAX_PROGRAM_ATTRIBS_ARB = $88AD;
  664. GL_PROGRAM_NATIVE_ATTRIBS_ARB = $88AE;
  665. GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB = $88AF;
  666. GL_PROGRAM_ADDRESS_REGISTERS_ARB = $88B0;
  667. GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB = $88B1;
  668. GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB = $88B2;
  669. GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB = $88B3;
  670. GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB = $88B4;
  671. GL_MAX_PROGRAM_ENV_PARAMETERS_ARB = $88B5;
  672. GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB = $88B6;
  673. GL_PROGRAM_STRING_ARB = $8628;
  674. GL_PROGRAM_ERROR_POSITION_ARB = $864B;
  675. GL_CURRENT_MATRIX_ARB = $8641;
  676. GL_TRANSPOSE_CURRENT_MATRIX_ARB = $88B7;
  677. GL_CURRENT_MATRIX_STACK_DEPTH_ARB = $8640;
  678. GL_MAX_VERTEX_ATTRIBS_ARB = $8869;
  679. GL_MAX_PROGRAM_MATRICES_ARB = $862F;
  680. GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB = $862E;
  681. GL_PROGRAM_ERROR_STRING_ARB = $8874;
  682. GL_MATRIX0_ARB = $88C0;
  683. GL_MATRIX1_ARB = $88C1;
  684. GL_MATRIX2_ARB = $88C2;
  685. GL_MATRIX3_ARB = $88C3;
  686. GL_MATRIX4_ARB = $88C4;
  687. GL_MATRIX5_ARB = $88C5;
  688. GL_MATRIX6_ARB = $88C6;
  689. GL_MATRIX7_ARB = $88C7;
  690. GL_MATRIX8_ARB = $88C8;
  691. GL_MATRIX9_ARB = $88C9;
  692. GL_MATRIX10_ARB = $88CA;
  693. GL_MATRIX11_ARB = $88CB;
  694. GL_MATRIX12_ARB = $88CC;
  695. GL_MATRIX13_ARB = $88CD;
  696. GL_MATRIX14_ARB = $88CE;
  697. GL_MATRIX15_ARB = $88CF;
  698. GL_MATRIX16_ARB = $88D0;
  699. GL_MATRIX17_ARB = $88D1;
  700. GL_MATRIX18_ARB = $88D2;
  701. GL_MATRIX19_ARB = $88D3;
  702. GL_MATRIX20_ARB = $88D4;
  703. GL_MATRIX21_ARB = $88D5;
  704. GL_MATRIX22_ARB = $88D6;
  705. GL_MATRIX23_ARB = $88D7;
  706. GL_MATRIX24_ARB = $88D8;
  707. GL_MATRIX25_ARB = $88D9;
  708. GL_MATRIX26_ARB = $88DA;
  709. GL_MATRIX27_ARB = $88DB;
  710. GL_MATRIX28_ARB = $88DC;
  711. GL_MATRIX29_ARB = $88DD;
  712. GL_MATRIX30_ARB = $88DE;
  713. GL_MATRIX31_ARB = $88DF;
  714. var
  715. glVertexAttrib1sARB: procedure(index: GLuint; x: GLshort); extdecl;
  716. glVertexAttrib1fARB: procedure(index: GLuint; x: GLfloat); extdecl;
  717. glVertexAttrib1dARB: procedure(index: GLuint; x: GLdouble); extdecl;
  718. glVertexAttrib2sARB: procedure(index: GLuint; x: GLshort; y: GLshort); extdecl;
  719. glVertexAttrib2fARB: procedure(index: GLuint; x: GLfloat; y: GLfloat); extdecl;
  720. glVertexAttrib2dARB: procedure(index: GLuint; x: GLdouble; y: GLdouble); extdecl;
  721. glVertexAttrib3sARB: procedure(index: GLuint; x: GLshort; y: GLshort; z: GLshort); extdecl;
  722. glVertexAttrib3fARB: procedure(index: GLuint; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  723. glVertexAttrib3dARB: procedure(index: GLuint; x: GLdouble; y: GLdouble; z: GLdouble); extdecl;
  724. glVertexAttrib4sARB: procedure(index: GLuint; x: GLshort; y: GLshort; z: GLshort; w: GLshort); extdecl;
  725. glVertexAttrib4fARB: procedure(index: GLuint; x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); extdecl;
  726. glVertexAttrib4dARB: procedure(index: GLuint; x: GLdouble; y: GLdouble; z: GLdouble; w: GLdouble); extdecl;
  727. glVertexAttrib4NubARB: procedure(index: GLuint; x: GLubyte; y: GLubyte; z: GLubyte; w: GLubyte); extdecl;
  728. glVertexAttrib1svARB: procedure(index: GLuint; const v: PGLshort); extdecl;
  729. glVertexAttrib1fvARB: procedure(index: GLuint; const v: PGLfloat); extdecl;
  730. glVertexAttrib1dvARB: procedure(index: GLuint; const v: PGLdouble); extdecl;
  731. glVertexAttrib2svARB: procedure(index: GLuint; const v: PGLshort); extdecl;
  732. glVertexAttrib2fvARB: procedure(index: GLuint; const v: PGLfloat); extdecl;
  733. glVertexAttrib2dvARB: procedure(index: GLuint; const v: PGLdouble); extdecl;
  734. glVertexAttrib3svARB: procedure(index: GLuint; const v: PGLshort); extdecl;
  735. glVertexAttrib3fvARB: procedure(index: GLuint; const v: PGLfloat); extdecl;
  736. glVertexAttrib3dvARB: procedure(index: GLuint; const v: PGLdouble); extdecl;
  737. glVertexAttrib4bvARB: procedure(index: GLuint; const v: PGLbyte); extdecl;
  738. glVertexAttrib4svARB: procedure(index: GLuint; const v: PGLshort); extdecl;
  739. glVertexAttrib4ivARB: procedure(index: GLuint; const v: PGLint); extdecl;
  740. glVertexAttrib4ubvARB: procedure(index: GLuint; const v: PGLubyte); extdecl;
  741. glVertexAttrib4usvARB: procedure(index: GLuint; const v: PGLushort); extdecl;
  742. glVertexAttrib4uivARB: procedure(index: GLuint; const v: PGLuint); extdecl;
  743. glVertexAttrib4fvARB: procedure(index: GLuint; const v: PGLfloat); extdecl;
  744. glVertexAttrib4dvARB: procedure(index: GLuint; const v: PGLdouble); extdecl;
  745. glVertexAttrib4NbvARB: procedure(index: GLuint; const v: PGLbyte); extdecl;
  746. glVertexAttrib4NsvARB: procedure(index: GLuint; const v: PGLshort); extdecl;
  747. glVertexAttrib4NivARB: procedure(index: GLuint; const v: PGLint); extdecl;
  748. glVertexAttrib4NubvARB: procedure(index: GLuint; const v: PGLubyte); extdecl;
  749. glVertexAttrib4NusvARB: procedure(index: GLuint; const v: PGLushort); extdecl;
  750. glVertexAttrib4NuivARB: procedure(index: GLuint; const v: PGLuint); extdecl;
  751. glVertexAttribPointerARB: procedure(index: GLuint; size: GLint; _type: GLenum; normalized: GLboolean; stride: GLsizei; const pointer: PGLvoid); extdecl;
  752. glEnableVertexAttribArrayARB: procedure(index: GLuint); extdecl;
  753. glDisableVertexAttribArrayARB: procedure(index: GLuint); extdecl;
  754. glProgramStringARB: procedure(target: GLenum; format: GLenum; len: GLsizei; const _string: PGLvoid); extdecl;
  755. glBindProgramARB: procedure(target: GLenum; _program: GLuint); extdecl;
  756. glDeleteProgramsARB: procedure(n: GLsizei; const programs: PGLuint); extdecl;
  757. glGenProgramsARB: procedure(n: GLsizei; programs: PGLuint); extdecl;
  758. glProgramEnvParameter4dARB: procedure(target: GLenum; index: GLuint; x: GLdouble; y: GLdouble; z: GLdouble; w: GLdouble); extdecl;
  759. glProgramEnvParameter4dvARB: procedure(target: GLenum; index: GLuint; const params: PGLdouble); extdecl;
  760. glProgramEnvParameter4fARB: procedure(target: GLenum; index: GLuint; x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); extdecl;
  761. glProgramEnvParameter4fvARB: procedure(target: GLenum; index: GLuint; const params: PGLfloat); extdecl;
  762. glProgramLocalParameter4dARB: procedure(target: GLenum; index: GLuint; x: GLdouble; y: GLdouble; z: GLdouble; w: GLdouble); extdecl;
  763. glProgramLocalParameter4dvARB: procedure(target: GLenum; index: GLuint; const params: PGLdouble); extdecl;
  764. glProgramLocalParameter4fARB: procedure(target: GLenum; index: GLuint; x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); extdecl;
  765. glProgramLocalParameter4fvARB: procedure(target: GLenum; index: GLuint; const params: PGLfloat); extdecl;
  766. glGetProgramEnvParameterdvARB: procedure(target: GLenum; index: GLuint; params: PGLdouble); extdecl;
  767. glGetProgramEnvParameterfvARB: procedure(target: GLenum; index: GLuint; params: PGLfloat); extdecl;
  768. glGetProgramLocalParameterdvARB: procedure(target: GLenum; index: GLuint; params: PGLdouble); extdecl;
  769. glGetProgramLocalParameterfvARB: procedure(target: GLenum; index: GLuint; params: PGLfloat); extdecl;
  770. glGetProgramivARB: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  771. glGetProgramStringARB: procedure(target: GLenum; pname: GLenum; _string: PGLvoid); extdecl;
  772. glGetVertexAttribdvARB: procedure(index: GLuint; pname: GLenum; params: PGLdouble); extdecl;
  773. glGetVertexAttribfvARB: procedure(index: GLuint; pname: GLenum; params: PGLfloat); extdecl;
  774. glGetVertexAttribivARB: procedure(index: GLuint; pname: GLenum; params: PGLint); extdecl;
  775. glGetVertexAttribPointervARB: procedure(index: GLuint; pname: GLenum; pointer: PGLvoid); extdecl;
  776. glIsProgramARB: function(_program: GLuint): GLboolean; extdecl;
  777. function Load_GL_ARB_vertex_program: Boolean;
  778. //***** GL_ARB_window_pos *****//
  779. var
  780. glWindowPos2dARB: procedure(x: GLdouble; y: GLdouble); extdecl;
  781. glWindowPos2fARB: procedure(x: GLfloat; y: GLfloat); extdecl;
  782. glWindowPos2iARB: procedure(x: GLint; y: GLint); extdecl;
  783. glWindowPos2sARB: procedure(x: GLshort; y: GLshort); extdecl;
  784. glWindowPos2dvARB: procedure(const p: PGLdouble); extdecl;
  785. glWindowPos2fvARB: procedure(const p: PGLfloat); extdecl;
  786. glWindowPos2ivARB: procedure(const p: PGLint); extdecl;
  787. glWindowPos2svARB: procedure(const p: PGLshort); extdecl;
  788. glWindowPos3dARB: procedure(x: GLdouble; y: GLdouble; z: GLdouble); extdecl;
  789. glWindowPos3fARB: procedure(x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  790. glWindowPos3iARB: procedure(x: GLint; y: GLint; z: GLint); extdecl;
  791. glWindowPos3sARB: procedure(x: GLshort; y: GLshort; z: GLshort); extdecl;
  792. glWindowPos3dvARB: procedure(const p: PGLdouble); extdecl;
  793. glWindowPos3fvARB: procedure(const p: PGLfloat); extdecl;
  794. glWindowPos3ivARB: procedure(const p: PGLint); extdecl;
  795. glWindowPos3svARB: procedure(const p: PGLshort); extdecl;
  796. function Load_GL_ARB_window_pos: Boolean;
  797. //***** GL_EXT_422_pixels *****//
  798. const
  799. GL_422_EXT = $80CC;
  800. GL_422_REV_EXT = $80CD;
  801. GL_422_AVERAGE_EXT = $80CE;
  802. GL_422_REV_AVERAGE_EXT = $80CF;
  803. function Load_GL_EXT_422_pixels: Boolean;
  804. //***** GL_EXT_abgr *****//
  805. const
  806. GL_ABGR_EXT = $8000;
  807. function Load_GL_EXT_abgr: Boolean;
  808. //***** GL_EXT_bgra *****//
  809. const
  810. GL_BGR_EXT = $80E0;
  811. GL_BGRA_EXT = $80E1;
  812. function Load_GL_EXT_bgra: Boolean;
  813. //***** GL_EXT_blend_color *****//
  814. const
  815. GL_CONSTANT_COLOR_EXT = $8001;
  816. GL_ONE_MINUS_CONSTANT_COLOR_EXT = $8002;
  817. GL_CONSTANT_ALPHA_EXT = $8003;
  818. GL_ONE_MINUS_CONSTANT_ALPHA_EXT = $8004;
  819. GL_BLEND_COLOR_EXT = $8005;
  820. var
  821. glBlendColorEXT: procedure(red: GLclampf; green: GLclampf; blue: GLclampf; alpha: GLclampf); extdecl;
  822. function Load_GL_EXT_blend_color: Boolean;
  823. //***** GL_EXT_blend_func_separate *****//
  824. const
  825. GL_BLEND_DST_RGB_EXT = $80C8;
  826. GL_BLEND_SRC_RGB_EXT = $80C9;
  827. GL_BLEND_DST_ALPHA_EXT = $80CA;
  828. GL_BLEND_SRC_ALPHA_EXT = $80CB;
  829. var
  830. glBlendFuncSeparateEXT: procedure(sfactorRGB: GLenum; dfactorRGB: GLenum; sfactorAlpha: GLenum; dfactorAlpha: GLenum); extdecl;
  831. function Load_GL_EXT_blend_func_separate: Boolean;
  832. //***** GL_EXT_blend_logic_op *****//
  833. function Load_GL_EXT_blend_logic_op: Boolean;
  834. //***** GL_EXT_blend_minmax *****//
  835. const
  836. GL_FUNC_ADD_EXT = $8006;
  837. GL_MIN_EXT = $8007;
  838. GL_MAX_EXT = $8008;
  839. GL_BLEND_EQUATION_EXT = $8009;
  840. var
  841. glBlendEquationEXT: procedure(mode: GLenum); extdecl;
  842. function Load_GL_EXT_blend_minmax: Boolean;
  843. //***** GL_EXT_blend_subtract *****//
  844. const
  845. GL_FUNC_SUBTRACT_EXT = $800A;
  846. GL_FUNC_REVERSE_SUBTRACT_EXT = $800B;
  847. function Load_GL_EXT_blend_subtract: Boolean;
  848. //***** GL_EXT_clip_volume_hint *****//
  849. const
  850. GL_CLIP_VOLUME_CLIPPING_HINT_EXT = $80F0;
  851. function Load_GL_EXT_clip_volume_hint: Boolean;
  852. //***** GL_EXT_color_subtable *****//
  853. var
  854. glColorSubTableEXT: procedure(target: GLenum; start: GLsizei; count: GLsizei; format: GLenum; _type: GLenum; const data: PGLvoid); extdecl;
  855. glCopyColorSubTableEXT: procedure(target: GLenum; start: GLsizei; x: GLint; y: GLint; width: GLsizei); extdecl;
  856. function Load_GL_EXT_color_subtable: Boolean;
  857. //***** GL_EXT_compiled_vertex_array *****//
  858. const
  859. GL_ARRAY_ELEMENT_LOCK_FIRST_EXT = $81A8;
  860. GL_ARRAY_ELEMENT_LOCK_COUNT_EXT = $81A9;
  861. var
  862. glLockArraysEXT: procedure(first: GLint; count: GLsizei); extdecl;
  863. glUnlockArraysEXT: procedure(); extdecl;
  864. function Load_GL_EXT_compiled_vertex_array: Boolean;
  865. //***** GL_EXT_convolution *****//
  866. const
  867. GL_CONVOLUTION_1D_EXT = $8010;
  868. GL_CONVOLUTION_2D_EXT = $8011;
  869. GL_SEPARABLE_2D_EXT = $8012;
  870. GL_CONVOLUTION_BORDER_MODE_EXT = $8013;
  871. GL_CONVOLUTION_FILTER_SCALE_EXT = $8014;
  872. GL_CONVOLUTION_FILTER_BIAS_EXT = $8015;
  873. GL_REDUCE_EXT = $8016;
  874. GL_CONVOLUTION_FORMAT_EXT = $8017;
  875. GL_CONVOLUTION_WIDTH_EXT = $8018;
  876. GL_CONVOLUTION_HEIGHT_EXT = $8019;
  877. GL_MAX_CONVOLUTION_WIDTH_EXT = $801A;
  878. GL_MAX_CONVOLUTION_HEIGHT_EXT = $801B;
  879. GL_POST_CONVOLUTION_RED_SCALE_EXT = $801C;
  880. GL_POST_CONVOLUTION_GREEN_SCALE_EXT = $801D;
  881. GL_POST_CONVOLUTION_BLUE_SCALE_EXT = $801E;
  882. GL_POST_CONVOLUTION_ALPHA_SCALE_EXT = $801F;
  883. GL_POST_CONVOLUTION_RED_BIAS_EXT = $8020;
  884. GL_POST_CONVOLUTION_GREEN_BIAS_EXT = $8021;
  885. GL_POST_CONVOLUTION_BLUE_BIAS_EXT = $8022;
  886. GL_POST_CONVOLUTION_ALPHA_BIAS_EXT = $8023;
  887. var
  888. glConvolutionFilter1DEXT: procedure(target: GLenum; internalformat: GLenum; width: GLsizei; format: GLenum; _type: GLenum; const image: PGLvoid); extdecl;
  889. glConvolutionFilter2DEXT: procedure(target: GLenum; internalformat: GLenum; width: GLsizei; height: GLsizei; format: GLenum; _type: GLenum; const image: PGLvoid); extdecl;
  890. glCopyConvolutionFilter1DEXT: procedure(target: GLenum; internalformat: GLenum; x: GLint; y: GLint; width: GLsizei); extdecl;
  891. glCopyConvolutionFilter2DEXT: procedure(target: GLenum; internalformat: GLenum; x: GLint; y: GLint; width: GLsizei; height: GLsizei); extdecl;
  892. glGetConvolutionFilterEXT: procedure(target: GLenum; format: GLenum; _type: GLenum; image: PGLvoid); extdecl;
  893. glSeparableFilter2DEXT: procedure(target: GLenum; internalformat: GLenum; width: GLsizei; height: GLsizei; format: GLenum; _type: GLenum; const row: PGLvoid; const column: PGLvoid); extdecl;
  894. glGetSeparableFilterEXT: procedure(target: GLenum; format: GLenum; _type: GLenum; row: PGLvoid; column: PGLvoid; span: PGLvoid); extdecl;
  895. glConvolutionParameteriEXT: procedure(target: GLenum; pname: GLenum; param: GLint); extdecl;
  896. glConvolutionParameterivEXT: procedure(target: GLenum; pname: GLenum; const params: PGLint); extdecl;
  897. glConvolutionParameterfEXT: procedure(target: GLenum; pname: GLenum; param: GLfloat); extdecl;
  898. glConvolutionParameterfvEXT: procedure(target: GLenum; pname: GLenum; const params: PGLfloat); extdecl;
  899. glGetConvolutionParameterivEXT: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  900. glGetConvolutionParameterfvEXT: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  901. function Load_GL_EXT_convolution: Boolean;
  902. //***** GL_EXT_fog_coord *****//
  903. const
  904. GL_FOG_COORDINATE_SOURCE_EXT = $8450;
  905. GL_FOG_COORDINATE_EXT = $8451;
  906. GL_FRAGMENT_DEPTH_EXT = $8452;
  907. GL_CURRENT_FOG_COORDINATE_EXT = $8453;
  908. GL_FOG_COORDINATE_ARRAY_TYPE_EXT = $8454;
  909. GL_FOG_COORDINATE_ARRAY_STRIDE_EXT = $8455;
  910. GL_FOG_COORDINATE_ARRAY_POINTER_EXT = $8456;
  911. GL_FOG_COORDINATE_ARRAY_EXT = $8457;
  912. var
  913. glFogCoordfEXfloat: procedure(coord: GLfloat); extdecl;
  914. glFogCoorddEXdouble: procedure(coord: GLdouble); extdecl;
  915. glFogCoordfvEXfloat: procedure(coord: GLfloat); extdecl;
  916. glFogCoorddvEXdouble: procedure(coord: GLdouble); extdecl;
  917. glFogCoordPointerEXT: procedure(_type: GLenum; stride: GLsizei; pointer: PGLvoid); extdecl;
  918. function Load_GL_EXT_fog_coord: Boolean;
  919. //***** GL_EXT_histogram *****//
  920. const
  921. GL_HISTOGRAM_EXT = $8024;
  922. GL_PROXY_HISTOGRAM_EXT = $8025;
  923. GL_HISTOGRAM_WIDTH_EXT = $8026;
  924. GL_HISTOGRAM_FORMAT_EXT = $8027;
  925. GL_HISTOGRAM_RED_SIZE_EXT = $8028;
  926. GL_HISTOGRAM_GREEN_SIZE_EXT = $8029;
  927. GL_HISTOGRAM_BLUE_SIZE_EXT = $802A;
  928. GL_HISTOGRAM_ALPHA_SIZE_EXT = $802B;
  929. GL_HISTOGRAM_LUMINANCE_SIZE_EXT = $802C;
  930. GL_HISTOGRAM_SINK_EXT = $802D;
  931. GL_MINMAX_EXT = $802E;
  932. GL_MINMAX_FORMAT_EXT = $802F;
  933. GL_MINMAX_SINK_EXT = $8030;
  934. var
  935. glHistogramEXT: procedure(target: GLenum; width: GLsizei; internalformat: GLenum; sink: GLboolean); extdecl;
  936. glResetHistogramEXT: procedure(target: GLenum); extdecl;
  937. glGetHistogramEXT: procedure(target: GLenum; reset: GLboolean; format: GLenum; _type: GLenum; values: PGLvoid); extdecl;
  938. glGetHistogramParameterivEXT: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  939. glGetHistogramParameterfvEXT: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  940. glMinmaxEXT: procedure(target: GLenum; internalformat: GLenum; sink: GLboolean); extdecl;
  941. glResetMinmaxEXT: procedure(target: GLenum); extdecl;
  942. glGetMinmaxEXT: procedure(target: GLenum; reset: GLboolean; format: GLenum; _type: GLenum; values: PGLvoid); extdecl;
  943. glGetMinmaxParameterivEXT: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  944. glGetMinmaxParameterfvEXT: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  945. function Load_GL_EXT_histogram: Boolean;
  946. //***** GL_EXT_multi_draw_arrays *****//
  947. var
  948. glMultiDrawArraysEXT: procedure(mode: GLenum; first: PGLint; count: PGLsizei; primcount: GLsizei); extdecl;
  949. glMultiDrawElementsEXT: procedure(mode: GLenum; count: PGLsizei; _type: GLenum; const indices: PGLvoid; primcount: GLsizei); extdecl;
  950. function Load_GL_EXT_multi_draw_arrays: Boolean;
  951. //***** GL_EXT_packed_pixels *****//
  952. const
  953. GL_UNSIGNED_BYTE_3_3_2_EXT = $8032;
  954. GL_UNSIGNED_SHORT_4_4_4_4_EXT = $8033;
  955. GL_UNSIGNED_SHORT_5_5_5_1_EXT = $8034;
  956. GL_UNSIGNED_INT_8_8_8_8_EXT = $8035;
  957. GL_UNSIGNED_INT_10_10_10_2_EXT = $8036;
  958. function Load_GL_EXT_packed_pixels: Boolean;
  959. //***** GL_EXT_paletted_texture *****//
  960. const
  961. GL_COLOR_INDEX1_EXT = $80E2;
  962. GL_COLOR_INDEX2_EXT = $80E3;
  963. GL_COLOR_INDEX4_EXT = $80E4;
  964. GL_COLOR_INDEX8_EXT = $80E5;
  965. GL_COLOR_INDEX12_EXT = $80E6;
  966. GL_COLOR_INDEX16_EXT = $80E7;
  967. GL_COLOR_TABLE_FORMAT_EXT = $80D8;
  968. GL_COLOR_TABLE_WIDTH_EXT = $80D9;
  969. GL_COLOR_TABLE_RED_SIZE_EXT = $80DA;
  970. GL_COLOR_TABLE_GREEN_SIZE_EXT = $80DB;
  971. GL_COLOR_TABLE_BLUE_SIZE_EXT = $80DC;
  972. GL_COLOR_TABLE_ALPHA_SIZE_EXT = $80DD;
  973. GL_COLOR_TABLE_LUMINANCE_SIZE_EXT = $80DE;
  974. GL_COLOR_TABLE_INTENSITY_SIZE_EXT = $80DF;
  975. GL_TEXTURE_INDEX_SIZE_EXT = $80ED;
  976. GL_TEXTURE_1D = $0DE0;
  977. GL_TEXTURE_2D = $0DE1;
  978. GL_TEXTURE_3D_EXT = $806F;
  979. // GL_TEXTURE_CUBE_MAP_ARB { already defined }
  980. GL_PROXY_TEXTURE_1D = $8063;
  981. GL_PROXY_TEXTURE_2D = $8064;
  982. GL_PROXY_TEXTURE_3D_EXT = $8070;
  983. // GL_PROXY_TEXTURE_CUBE_MAP_ARB { already defined }
  984. // GL_TEXTURE_1D { already defined }
  985. // GL_TEXTURE_2D { already defined }
  986. // GL_TEXTURE_3D_EXT { already defined }
  987. // GL_TEXTURE_CUBE_MAP_ARB { already defined }
  988. var
  989. glColorTableEXT: procedure(target: GLenum; internalFormat: GLenum; width: GLsizei; format: GLenum; _type: GLenum; const data: PGLvoid); extdecl;
  990. // glColorSubTableEXT { already defined }
  991. glGetColorTableEXT: procedure(target: GLenum; format: GLenum; _type: GLenum; data: PGLvoid); extdecl;
  992. glGetColorTableParameterivEXT: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  993. glGetColorTableParameterfvEXT: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  994. function Load_GL_EXT_paletted_texture: Boolean;
  995. //***** GL_EXT_point_parameters *****//
  996. const
  997. GL_POINT_SIZE_MIN_EXT = $8126;
  998. GL_POINT_SIZE_MAX_EXT = $8127;
  999. GL_POINT_FADE_THRESHOLD_SIZE_EXT = $8128;
  1000. GL_DISTANCE_ATTENUATION_EXT = $8129;
  1001. var
  1002. glPointParameterfEXT: procedure(pname: GLenum; param: GLfloat); extdecl;
  1003. glPointParameterfvEXT: procedure(pname: GLenum; params: PGLfloat); extdecl;
  1004. function Load_GL_EXT_point_parameters: Boolean;
  1005. //***** GL_EXT_polygon_offset *****//
  1006. const
  1007. GL_POLYGON_OFFSET_EXT = $8037;
  1008. GL_POLYGON_OFFSET_FACTOR_EXT = $8038;
  1009. GL_POLYGON_OFFSET_BIAS_EXT = $8039;
  1010. var
  1011. glPolygonOffsetEXT: procedure(factor: GLfloat; bias: GLfloat); extdecl;
  1012. function Load_GL_EXT_polygon_offset: Boolean;
  1013. //***** GL_EXT_secondary_color *****//
  1014. const
  1015. GL_COLOR_SUM_EXT = $8458;
  1016. GL_CURRENT_SECONDARY_COLOR_EXT = $8459;
  1017. GL_SECONDARY_COLOR_ARRAY_SIZE_EXT = $845A;
  1018. GL_SECONDARY_COLOR_ARRAY_TYPE_EXT = $845B;
  1019. GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT = $845C;
  1020. GL_SECONDARY_COLOR_ARRAY_POINTER_EXT = $845D;
  1021. GL_SECONDARY_COLOR_ARRAY_EXT = $845E;
  1022. var
  1023. glSecondaryColor3bEXT: procedure(components: GLbyte); extdecl;
  1024. glSecondaryColor3sEXT: procedure(components: GLshort); extdecl;
  1025. glSecondaryColor3iEXT: procedure(components: GLint); extdecl;
  1026. glSecondaryColor3fEXT: procedure(components: GLfloat); extdecl;
  1027. glSecondaryColor3dEXT: procedure(components: GLdouble); extdecl;
  1028. glSecondaryColor3ubEXT: procedure(components: GLubyte); extdecl;
  1029. glSecondaryColor3usEXT: procedure(components: GLushort); extdecl;
  1030. glSecondaryColor3uiEXT: procedure(components: GLuint); extdecl;
  1031. glSecondaryColor3bvEXT: procedure(components: GLbyte); extdecl;
  1032. glSecondaryColor3svEXT: procedure(components: GLshort); extdecl;
  1033. glSecondaryColor3ivEXT: procedure(components: GLint); extdecl;
  1034. glSecondaryColor3fvEXT: procedure(components: GLfloat); extdecl;
  1035. glSecondaryColor3dvEXT: procedure(components: GLdouble); extdecl;
  1036. glSecondaryColor3ubvEXT: procedure(components: GLubyte); extdecl;
  1037. glSecondaryColor3usvEXT: procedure(components: GLushort); extdecl;
  1038. glSecondaryColor3uivEXT: procedure(components: GLuint); extdecl;
  1039. glSecondaryColorPointerEXT: procedure(size: GLint; _type: GLenum; stride: GLsizei; pointer: PGLvoid); extdecl;
  1040. function Load_GL_EXT_secondary_color: Boolean;
  1041. //***** GL_EXT_separate_specular_color *****//
  1042. const
  1043. GL_LIGHT_MODEL_COLOR_CONTROL_EXT = $81F8;
  1044. GL_SINGLE_COLOR_EXT = $81F9;
  1045. GL_SEPARATE_SPECULAR_COLOR_EXT = $81FA;
  1046. function Load_GL_EXT_separate_specular_color: Boolean;
  1047. //***** GL_EXT_shadow_funcs *****//
  1048. function Load_GL_EXT_shadow_funcs: Boolean;
  1049. //***** GL_EXT_shared_texture_palette *****//
  1050. const
  1051. GL_SHARED_TEXTURE_PALETTE_EXT = $81FB;
  1052. function Load_GL_EXT_shared_texture_palette: Boolean;
  1053. //***** GL_EXT_stencil_two_side *****//
  1054. const
  1055. GL_STENCIL_TEST_TWO_SIDE_EXT = $8910;
  1056. GL_ACTIVE_STENCIL_FACE_EXT = $8911;
  1057. var
  1058. glActiveStencilFaceEXT: procedure(face: GLenum); extdecl;
  1059. function Load_GL_EXT_stencil_two_side: Boolean;
  1060. //***** GL_EXT_stencil_wrap *****//
  1061. const
  1062. GL_INCR_WRAP_EXT = $8507;
  1063. GL_DECR_WRAP_EXT = $8508;
  1064. function Load_GL_EXT_stencil_wrap: Boolean;
  1065. //***** GL_EXT_subtexture *****//
  1066. var
  1067. glTexSubImage1DEXT: procedure(target: GLenum; level: GLint; xoffset: GLint; width: GLsizei; format: GLenum; _type: GLenum; const pixels: PGLvoid); extdecl;
  1068. glTexSubImage2DEXT: procedure(target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; width: GLsizei; height: GLsizei; format: GLenum; _type: GLenum; const pixels: PGLvoid); extdecl;
  1069. glTexSubImage3DEXT: procedure(target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; zoffset: GLint; width: GLsizei; height: GLsizei; depth: GLsizei; format: GLenum; _type: GLenum; const pixels: PGLvoid); extdecl;
  1070. function Load_GL_EXT_subtexture: Boolean;
  1071. //***** GL_EXT_texture3D *****//
  1072. const
  1073. GL_PACK_SKIP_IMAGES_EXT = $806B;
  1074. GL_PACK_IMAGE_HEIGHT_EXT = $806C;
  1075. GL_UNPACK_SKIP_IMAGES_EXT = $806D;
  1076. GL_UNPACK_IMAGE_HEIGHT_EXT = $806E;
  1077. // GL_TEXTURE_3D_EXT { already defined }
  1078. // GL_PROXY_TEXTURE_3D_EXT { already defined }
  1079. GL_TEXTURE_DEPTH_EXT = $8071;
  1080. GL_TEXTURE_WRAP_R_EXT = $8072;
  1081. GL_MAX_3D_TEXTURE_SIZE_EXT = $8073;
  1082. var
  1083. glTexImage3DEXT: procedure(target: GLenum; level: GLint; internalformat: GLenum; width: GLsizei; height: GLsizei; depth: GLsizei; border: GLint; format: GLenum; _type: GLenum; const pixels: PGLvoid); extdecl;
  1084. function Load_GL_EXT_texture3D: Boolean;
  1085. //***** GL_EXT_texture_compression_s3tc *****//
  1086. const
  1087. GL_COMPRESSED_RGB_S3TC_DXT1_EXT = $83F0;
  1088. GL_COMPRESSED_RGBA_S3TC_DXT1_EXT = $83F1;
  1089. GL_COMPRESSED_RGBA_S3TC_DXT3_EXT = $83F2;
  1090. GL_COMPRESSED_RGBA_S3TC_DXT5_EXT = $83F3;
  1091. function Load_GL_EXT_texture_compression_s3tc: Boolean;
  1092. //***** GL_EXT_texture_env_add *****//
  1093. function Load_GL_EXT_texture_env_add: Boolean;
  1094. //***** GL_EXT_texture_env_combine *****//
  1095. const
  1096. GL_COMBINE_EXT = $8570;
  1097. GL_COMBINE_RGB_EXT = $8571;
  1098. GL_COMBINE_ALPHA_EXT = $8572;
  1099. GL_SOURCE0_RGB_EXT = $8580;
  1100. GL_SOURCE1_RGB_EXT = $8581;
  1101. GL_SOURCE2_RGB_EXT = $8582;
  1102. GL_SOURCE0_ALPHA_EXT = $8588;
  1103. GL_SOURCE1_ALPHA_EXT = $8589;
  1104. GL_SOURCE2_ALPHA_EXT = $858A;
  1105. GL_OPERAND0_RGB_EXT = $8590;
  1106. GL_OPERAND1_RGB_EXT = $8591;
  1107. GL_OPERAND2_RGB_EXT = $8592;
  1108. GL_OPERAND0_ALPHA_EXT = $8598;
  1109. GL_OPERAND1_ALPHA_EXT = $8599;
  1110. GL_OPERAND2_ALPHA_EXT = $859A;
  1111. GL_RGB_SCALE_EXT = $8573;
  1112. GL_ADD_SIGNED_EXT = $8574;
  1113. GL_INTERPOLATE_EXT = $8575;
  1114. GL_CONSTANT_EXT = $8576;
  1115. GL_PRIMARY_COLOR_EXT = $8577;
  1116. GL_PREVIOUS_EXT = $8578;
  1117. function Load_GL_EXT_texture_env_combine: Boolean;
  1118. //***** GL_EXT_texture_env_dot3 *****//
  1119. const
  1120. GL_DOT3_RGB_EXT = $8740;
  1121. GL_DOT3_RGBA_EXT = $8741;
  1122. function Load_GL_EXT_texture_env_dot3: Boolean;
  1123. //***** GL_EXT_texture_filter_anisotropic *****//
  1124. const
  1125. GL_TEXTURE_MAX_ANISOTROPY_EXT = $84FE;
  1126. GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = $84FF;
  1127. function Load_GL_EXT_texture_filter_anisotropic: Boolean;
  1128. //***** GL_EXT_texture_lod_bias *****//
  1129. const
  1130. GL_TEXTURE_FILTER_CONTROL_EXT = $8500;
  1131. GL_TEXTURE_LOD_BIAS_EXT = $8501;
  1132. GL_MAX_TEXTURE_LOD_BIAS_EXT = $84FD;
  1133. function Load_GL_EXT_texture_lod_bias: Boolean;
  1134. //***** GL_EXT_texture_object *****//
  1135. const
  1136. GL_TEXTURE_PRIORITY_EXT = $8066;
  1137. GL_TEXTURE_RESIDENT_EXT = $8067;
  1138. GL_TEXTURE_1D_BINDING_EXT = $8068;
  1139. GL_TEXTURE_2D_BINDING_EXT = $8069;
  1140. GL_TEXTURE_3D_BINDING_EXT = $806A;
  1141. var
  1142. glGenTexturesEXT: procedure(n: GLsizei; textures: PGLuint); extdecl;
  1143. glDeleteTexturesEXT: procedure(n: GLsizei; const textures: PGLuint); extdecl;
  1144. glBindTextureEXT: procedure(target: GLenum; texture: GLuint); extdecl;
  1145. glPrioritizeTexturesEXT: procedure(n: GLsizei; const textures: PGLuint; const priorities: PGLclampf); extdecl;
  1146. glAreTexturesResidentEXT: function(n: GLsizei; const textures: PGLuint; residences: PGLboolean): GLboolean; extdecl;
  1147. glIsTextureEXT: function(texture: GLuint): GLboolean; extdecl;
  1148. function Load_GL_EXT_texture_object: Boolean;
  1149. //***** GL_EXT_vertex_array *****//
  1150. const
  1151. GL_VERTEX_ARRAY_EXT = $8074;
  1152. GL_NORMAL_ARRAY_EXT = $8075;
  1153. GL_COLOR_ARRAY_EXT = $8076;
  1154. GL_INDEX_ARRAY_EXT = $8077;
  1155. GL_TEXTURE_COORD_ARRAY_EXT = $8078;
  1156. GL_EDGE_FLAG_ARRAY_EXT = $8079;
  1157. GL_DOUBLE_EXT = $140A;
  1158. GL_VERTEX_ARRAY_SIZE_EXT = $807A;
  1159. GL_VERTEX_ARRAY_TYPE_EXT = $807B;
  1160. GL_VERTEX_ARRAY_STRIDE_EXT = $807C;
  1161. GL_VERTEX_ARRAY_COUNT_EXT = $807D;
  1162. GL_NORMAL_ARRAY_TYPE_EXT = $807E;
  1163. GL_NORMAL_ARRAY_STRIDE_EXT = $807F;
  1164. GL_NORMAL_ARRAY_COUNT_EXT = $8080;
  1165. GL_COLOR_ARRAY_SIZE_EXT = $8081;
  1166. GL_COLOR_ARRAY_TYPE_EXT = $8082;
  1167. GL_COLOR_ARRAY_STRIDE_EXT = $8083;
  1168. GL_COLOR_ARRAY_COUNT_EXT = $8084;
  1169. GL_INDEX_ARRAY_TYPE_EXT = $8085;
  1170. GL_INDEX_ARRAY_STRIDE_EXT = $8086;
  1171. GL_INDEX_ARRAY_COUNT_EXT = $8087;
  1172. GL_TEXTURE_COORD_ARRAY_SIZE_EXT = $8088;
  1173. GL_TEXTURE_COORD_ARRAY_TYPE_EXT = $8089;
  1174. GL_TEXTURE_COORD_ARRAY_STRIDE_EXT = $808A;
  1175. GL_TEXTURE_COORD_ARRAY_COUNT_EXT = $808B;
  1176. GL_EDGE_FLAG_ARRAY_STRIDE_EXT = $808C;
  1177. GL_EDGE_FLAG_ARRAY_COUNT_EXT = $808D;
  1178. GL_VERTEX_ARRAY_POINTER_EXT = $808E;
  1179. GL_NORMAL_ARRAY_POINTER_EXT = $808F;
  1180. GL_COLOR_ARRAY_POINTER_EXT = $8090;
  1181. GL_INDEX_ARRAY_POINTER_EXT = $8091;
  1182. GL_TEXTURE_COORD_ARRAY_POINTER_EXT = $8092;
  1183. GL_EDGE_FLAG_ARRAY_POINTER_EXT = $8093;
  1184. var
  1185. glArrayElementEXT: procedure(i: GLint); extdecl;
  1186. glDrawArraysEXT: procedure(mode: GLenum; first: GLint; count: GLsizei); extdecl;
  1187. glVertexPointerEXT: procedure(size: GLint; _type: GLenum; stride: GLsizei; count: GLsizei; const pointer: PGLvoid); extdecl;
  1188. glNormalPointerEXT: procedure(_type: GLenum; stride: GLsizei; count: GLsizei; const pointer: PGLvoid); extdecl;
  1189. glColorPointerEXT: procedure(size: GLint; _type: GLenum; stride: GLsizei; count: GLsizei; const pointer: PGLvoid); extdecl;
  1190. glIndexPointerEXT: procedure(_type: GLenum; stride: GLsizei; count: GLsizei; const pointer: PGLvoid); extdecl;
  1191. glTexCoordPointerEXT: procedure(size: GLint; _type: GLenum; stride: GLsizei; count: GLsizei; const pointer: PGLvoid); extdecl;
  1192. glEdgeFlagPointerEXT: procedure(stride: GLsizei; count: GLsizei; const pointer: PGLboolean); extdecl;
  1193. glGetPointervEXT: procedure(pname: GLenum; params: PGLvoid); extdecl;
  1194. function Load_GL_EXT_vertex_array: Boolean;
  1195. //***** GL_EXT_vertex_shader *****//
  1196. const
  1197. GL_VERTEX_SHADER_EXT = $8780;
  1198. GL_VARIANT_VALUE_EXT = $87E4;
  1199. GL_VARIANT_DATATYPE_EXT = $87E5;
  1200. GL_VARIANT_ARRAY_STRIDE_EXT = $87E6;
  1201. GL_VARIANT_ARRAY_TYPE_EXT = $87E7;
  1202. GL_VARIANT_ARRAY_EXT = $87E8;
  1203. GL_VARIANT_ARRAY_POINTER_EXT = $87E9;
  1204. GL_INVARIANT_VALUE_EXT = $87EA;
  1205. GL_INVARIANT_DATATYPE_EXT = $87EB;
  1206. GL_LOCAL_CONSTANT_VALUE_EXT = $87EC;
  1207. GL_LOCAL_CONSTANT_DATATYPE_EXT = $87ED;
  1208. GL_OP_INDEX_EXT = $8782;
  1209. GL_OP_NEGATE_EXT = $8783;
  1210. GL_OP_DOT3_EXT = $8784;
  1211. GL_OP_DOT4_EXT = $8785;
  1212. GL_OP_MUL_EXT = $8786;
  1213. GL_OP_ADD_EXT = $8787;
  1214. GL_OP_MADD_EXT = $8788;
  1215. GL_OP_FRAC_EXT = $8789;
  1216. GL_OP_MAX_EXT = $878A;
  1217. GL_OP_MIN_EXT = $878B;
  1218. GL_OP_SET_GE_EXT = $878C;
  1219. GL_OP_SET_LT_EXT = $878D;
  1220. GL_OP_CLAMP_EXT = $878E;
  1221. GL_OP_FLOOR_EXT = $878F;
  1222. GL_OP_ROUND_EXT = $8790;
  1223. GL_OP_EXP_BASE_2_EXT = $8791;
  1224. GL_OP_LOG_BASE_2_EXT = $8792;
  1225. GL_OP_POWER_EXT = $8793;
  1226. GL_OP_RECIP_EXT = $8794;
  1227. GL_OP_RECIP_SQRT_EXT = $8795;
  1228. GL_OP_SUB_EXT = $8796;
  1229. GL_OP_CROSS_PRODUCT_EXT = $8797;
  1230. GL_OP_MULTIPLY_MATRIX_EXT = $8798;
  1231. GL_OP_MOV_EXT = $8799;
  1232. GL_OUTPUT_VERTEX_EXT = $879A;
  1233. GL_OUTPUT_COLOR0_EXT = $879B;
  1234. GL_OUTPUT_COLOR1_EXT = $879C;
  1235. GL_OUTPUT_TEXTURE_COORD0_EXT = $879D;
  1236. GL_OUTPUT_TEXTURE_COORD1_EXT = $879E;
  1237. GL_OUTPUT_TEXTURE_COORD2_EXT = $879F;
  1238. GL_OUTPUT_TEXTURE_COORD3_EXT = $87A0;
  1239. GL_OUTPUT_TEXTURE_COORD4_EXT = $87A1;
  1240. GL_OUTPUT_TEXTURE_COORD5_EXT = $87A2;
  1241. GL_OUTPUT_TEXTURE_COORD6_EXT = $87A3;
  1242. GL_OUTPUT_TEXTURE_COORD7_EXT = $87A4;
  1243. GL_OUTPUT_TEXTURE_COORD8_EXT = $87A5;
  1244. GL_OUTPUT_TEXTURE_COORD9_EXT = $87A6;
  1245. GL_OUTPUT_TEXTURE_COORD10_EXT = $87A7;
  1246. GL_OUTPUT_TEXTURE_COORD11_EXT = $87A8;
  1247. GL_OUTPUT_TEXTURE_COORD12_EXT = $87A9;
  1248. GL_OUTPUT_TEXTURE_COORD13_EXT = $87AA;
  1249. GL_OUTPUT_TEXTURE_COORD14_EXT = $87AB;
  1250. GL_OUTPUT_TEXTURE_COORD15_EXT = $87AC;
  1251. GL_OUTPUT_TEXTURE_COORD16_EXT = $87AD;
  1252. GL_OUTPUT_TEXTURE_COORD17_EXT = $87AE;
  1253. GL_OUTPUT_TEXTURE_COORD18_EXT = $87AF;
  1254. GL_OUTPUT_TEXTURE_COORD19_EXT = $87B0;
  1255. GL_OUTPUT_TEXTURE_COORD20_EXT = $87B1;
  1256. GL_OUTPUT_TEXTURE_COORD21_EXT = $87B2;
  1257. GL_OUTPUT_TEXTURE_COORD22_EXT = $87B3;
  1258. GL_OUTPUT_TEXTURE_COORD23_EXT = $87B4;
  1259. GL_OUTPUT_TEXTURE_COORD24_EXT = $87B5;
  1260. GL_OUTPUT_TEXTURE_COORD25_EXT = $87B6;
  1261. GL_OUTPUT_TEXTURE_COORD26_EXT = $87B7;
  1262. GL_OUTPUT_TEXTURE_COORD27_EXT = $87B8;
  1263. GL_OUTPUT_TEXTURE_COORD28_EXT = $87B9;
  1264. GL_OUTPUT_TEXTURE_COORD29_EXT = $87BA;
  1265. GL_OUTPUT_TEXTURE_COORD30_EXT = $87BB;
  1266. GL_OUTPUT_TEXTURE_COORD31_EXT = $87BC;
  1267. GL_OUTPUT_FOG_EXT = $87BD;
  1268. GL_SCALAR_EXT = $87BE;
  1269. GL_VECTOR_EXT = $87BF;
  1270. GL_MATRIX_EXT = $87C0;
  1271. GL_VARIANT_EXT = $87C1;
  1272. GL_INVARIANT_EXT = $87C2;
  1273. GL_LOCAL_CONSTANT_EXT = $87C3;
  1274. GL_LOCAL_EXT = $87C4;
  1275. GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT = $87C5;
  1276. GL_MAX_VERTEX_SHADER_VARIANTS_EXT = $87C6;
  1277. GL_MAX_VERTEX_SHADER_INVARIANTS_EXT = $87C7;
  1278. GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = $87C8;
  1279. GL_MAX_VERTEX_SHADER_LOCALS_EXT = $87C9;
  1280. GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT = $87CA;
  1281. GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT = $87CB;
  1282. GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = $87CC;
  1283. GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT = $87CD;
  1284. GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT = $87CE;
  1285. GL_VERTEX_SHADER_INSTRUCTIONS_EXT = $87CF;
  1286. GL_VERTEX_SHADER_VARIANTS_EXT = $87D0;
  1287. GL_VERTEX_SHADER_INVARIANTS_EXT = $87D1;
  1288. GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = $87D2;
  1289. GL_VERTEX_SHADER_LOCALS_EXT = $87D3;
  1290. GL_VERTEX_SHADER_BINDING_EXT = $8781;
  1291. GL_VERTEX_SHADER_OPTIMIZED_EXT = $87D4;
  1292. GL_X_EXT = $87D5;
  1293. GL_Y_EXT = $87D6;
  1294. GL_Z_EXT = $87D7;
  1295. GL_W_EXT = $87D8;
  1296. GL_NEGATIVE_X_EXT = $87D9;
  1297. GL_NEGATIVE_Y_EXT = $87DA;
  1298. GL_NEGATIVE_Z_EXT = $87DB;
  1299. GL_NEGATIVE_W_EXT = $87DC;
  1300. GL_ZERO_EXT = $87DD;
  1301. GL_ONE_EXT = $87DE;
  1302. GL_NEGATIVE_ONE_EXT = $87DF;
  1303. GL_NORMALIZED_RANGE_EXT = $87E0;
  1304. GL_FULL_RANGE_EXT = $87E1;
  1305. GL_CURRENT_VERTEX_EXT = $87E2;
  1306. GL_MVP_MATRIX_EXT = $87E3;
  1307. var
  1308. glBeginVertexShaderEXT: procedure(); extdecl;
  1309. glEndVertexShaderEXT: procedure(); extdecl;
  1310. glBindVertexShaderEXT: procedure(id: GLuint); extdecl;
  1311. glGenVertexShadersEXT: function(range: GLuint): GLuint; extdecl;
  1312. glDeleteVertexShaderEXT: procedure(id: GLuint); extdecl;
  1313. glShaderOp1EXT: procedure(op: GLenum; res: GLuint; arg1: GLuint); extdecl;
  1314. glShaderOp2EXT: procedure(op: GLenum; res: GLuint; arg1: GLuint; arg2: GLuint); extdecl;
  1315. glShaderOp3EXT: procedure(op: GLenum; res: GLuint; arg1: GLuint; arg2: GLuint; arg3: GLuint); extdecl;
  1316. glSwizzleEXT: procedure(res: GLuint; _in: GLuint; outX: GLenum; outY: GLenum; outZ: GLenum; outW: GLenum); extdecl;
  1317. glWriteMaskEXT: procedure(res: GLuint; _in: GLuint; outX: GLenum; outY: GLenum; outZ: GLenum; outW: GLenum); extdecl;
  1318. glInsertComponentEXT: procedure(res: GLuint; src: GLuint; num: GLuint); extdecl;
  1319. glExtractComponentEXT: procedure(res: GLuint; src: GLuint; num: GLuint); extdecl;
  1320. glGenSymbolsEXT: function(datatype: GLenum; storagetype: GLenum; range: GLenum; components: GLuint): GLuint; extdecl;
  1321. glSetInvariantEXT: procedure(id: GLuint; _type: GLenum; addr: PGLvoid); extdecl;
  1322. glSetLocalConstantEXT: procedure(id: GLuint; _type: GLenum; addr: PGLvoid); extdecl;
  1323. glVariantbvEXT: procedure(id: GLuint; addr: PGLbyte); extdecl;
  1324. glVariantsvEXT: procedure(id: GLuint; addr: PGLshort); extdecl;
  1325. glVariantivEXT: procedure(id: GLuint; addr: PGLint); extdecl;
  1326. glVariantfvEXT: procedure(id: GLuint; addr: PGLfloat); extdecl;
  1327. glVariantdvEXT: procedure(id: GLuint; addr: PGLdouble); extdecl;
  1328. glVariantubvEXT: procedure(id: GLuint; addr: PGLubyte); extdecl;
  1329. glVariantusvEXT: procedure(id: GLuint; addr: PGLushort); extdecl;
  1330. glVariantuivEXT: procedure(id: GLuint; addr: PGLuint); extdecl;
  1331. glVariantPointerEXT: procedure(id: GLuint; _type: GLenum; stride: GLuint; addr: PGLvoid); extdecl;
  1332. glEnableVariantClientStateEXT: procedure(id: GLuint); extdecl;
  1333. glDisableVariantClientStateEXT: procedure(id: GLuint); extdecl;
  1334. glBindLightParameterEXT: function(light: GLenum; value: GLenum): GLuint; extdecl;
  1335. glBindMaterialParameterEXT: function(face: GLenum; value: GLenum): GLuint; extdecl;
  1336. glBindTexGenParameterEXT: function(_unit: GLenum; coord: GLenum; value: GLenum): GLuint; extdecl;
  1337. glBindTextureUnitParameterEXT: function(_unit: GLenum; value: GLenum): GLuint; extdecl;
  1338. glBindParameterEXT: function(value: GLenum): GLuint; extdecl;
  1339. glIsVariantEnabledEXT: function(id: GLuint; cap: GLenum): GLboolean; extdecl;
  1340. glGetVariantBooleanvEXT: procedure(id: GLuint; value: GLenum; data: PGLboolean); extdecl;
  1341. glGetVariantIntegervEXT: procedure(id: GLuint; value: GLenum; data: PGLint); extdecl;
  1342. glGetVariantFloatvEXT: procedure(id: GLuint; value: GLenum; data: PGLfloat); extdecl;
  1343. glGetVariantPointervEXT: procedure(id: GLuint; value: GLenum; data: PGLvoid); extdecl;
  1344. glGetInvariantBooleanvEXT: procedure(id: GLuint; value: GLenum; data: PGLboolean); extdecl;
  1345. glGetInvariantIntegervEXT: procedure(id: GLuint; value: GLenum; data: PGLint); extdecl;
  1346. glGetInvariantFloatvEXT: procedure(id: GLuint; value: GLenum; data: PGLfloat); extdecl;
  1347. glGetLocalConstantBooleanvEXT: procedure(id: GLuint; value: GLenum; data: PGLboolean); extdecl;
  1348. glGetLocalConstantIntegervEXT: procedure(id: GLuint; value: GLenum; data: PGLint); extdecl;
  1349. glGetLocalConstantFloatvEXT: procedure(id: GLuint; value: GLenum; data: PGLfloat); extdecl;
  1350. function Load_GL_EXT_vertex_shader: Boolean;
  1351. //***** GL_EXT_vertex_weighting *****//
  1352. const
  1353. GL_VERTEX_WEIGHTING_EXT = $8509;
  1354. GL_MODELVIEW0_EXT = $1700;
  1355. GL_MODELVIEW1_EXT = $850A;
  1356. GL_MODELVIEW0_MATRIX_EXT = $0BA6;
  1357. GL_MODELVIEW1_MATRIX_EXT = $8506;
  1358. GL_CURRENT_VERTEX_WEIGHT_EXT = $850B;
  1359. GL_VERTEX_WEIGHT_ARRAY_EXT = $850C;
  1360. GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT = $850D;
  1361. GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT = $850E;
  1362. GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT = $850F;
  1363. GL_MODELVIEW0_STACK_DEPTH_EXT = $0BA3;
  1364. GL_MODELVIEW1_STACK_DEPTH_EXT = $8502;
  1365. GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT = $8510;
  1366. var
  1367. glVertexWeightfEXT: procedure(weight: GLfloat); extdecl;
  1368. glVertexWeightfvEXT: procedure(weight: PGLfloat); extdecl;
  1369. glVertexWeightPointerEXT: procedure(size: GLint; _type: GLenum; stride: GLsizei; pointer: PGLvoid); extdecl;
  1370. function Load_GL_EXT_vertex_weighting: Boolean;
  1371. //***** GL_HP_occlusion_test *****//
  1372. const
  1373. GL_OCCLUSION_TEST_HP = $8165;
  1374. GL_OCCLUSION_TEST_RESULT_HP = $8166;
  1375. function Load_GL_HP_occlusion_test: Boolean;
  1376. //***** GL_NV_blend_square *****//
  1377. function Load_GL_NV_blend_square: Boolean;
  1378. //***** GL_NV_copy_depth_to_color *****//
  1379. const
  1380. GL_DEPTH_STENCIL_TO_RGBA_NV = $886E;
  1381. GL_DEPTH_STENCIL_TO_BGRA_NV = $886F;
  1382. function Load_GL_NV_copy_depth_to_color: Boolean;
  1383. //***** GL_NV_depth_clamp *****//
  1384. const
  1385. GL_DEPTH_CLAMP_NV = $864F;
  1386. function Load_GL_NV_depth_clamp: Boolean;
  1387. //***** GL_NV_evaluators *****//
  1388. const
  1389. GL_EVAL_2D_NV = $86C0;
  1390. GL_EVAL_TRIANGULAR_2D_NV = $86C1;
  1391. GL_MAP_TESSELLATION_NV = $86C2;
  1392. GL_MAP_ATTRIB_U_ORDER_NV = $86C3;
  1393. GL_MAP_ATTRIB_V_ORDER_NV = $86C4;
  1394. GL_EVAL_FRACTIONAL_TESSELLATION_NV = $86C5;
  1395. GL_EVAL_VERTEX_ATTRIB0_NV = $86C6;
  1396. GL_EVAL_VERTEX_ATTRIB1_NV = $86C7;
  1397. GL_EVAL_VERTEX_ATTRIB2_NV = $86C8;
  1398. GL_EVAL_VERTEX_ATTRIB3_NV = $86C9;
  1399. GL_EVAL_VERTEX_ATTRIB4_NV = $86CA;
  1400. GL_EVAL_VERTEX_ATTRIB5_NV = $86CB;
  1401. GL_EVAL_VERTEX_ATTRIB6_NV = $86CC;
  1402. GL_EVAL_VERTEX_ATTRIB7_NV = $86CD;
  1403. GL_EVAL_VERTEX_ATTRIB8_NV = $86CE;
  1404. GL_EVAL_VERTEX_ATTRIB9_NV = $86CF;
  1405. GL_EVAL_VERTEX_ATTRIB10_NV = $86D0;
  1406. GL_EVAL_VERTEX_ATTRIB11_NV = $86D1;
  1407. GL_EVAL_VERTEX_ATTRIB12_NV = $86D2;
  1408. GL_EVAL_VERTEX_ATTRIB13_NV = $86D3;
  1409. GL_EVAL_VERTEX_ATTRIB14_NV = $86D4;
  1410. GL_EVAL_VERTEX_ATTRIB15_NV = $86D5;
  1411. GL_MAX_MAP_TESSELLATION_NV = $86D6;
  1412. GL_MAX_RATIONAL_EVAL_ORDER_NV = $86D7;
  1413. var
  1414. glMapControlPointsNV: procedure(target: GLenum; index: GLuint; _type: GLenum; ustride: GLsizei; vstride: GLsizei; uorder: GLint; vorder: GLint; _packed: GLboolean; const points: PGLvoid); extdecl;
  1415. glMapParameterivNV: procedure(target: GLenum; pname: GLenum; const params: PGLint); extdecl;
  1416. glMapParameterfvNV: procedure(target: GLenum; pname: GLenum; const params: PGLfloat); extdecl;
  1417. glGetMapControlPointsNV: procedure(target: GLenum; index: GLuint; _type: GLenum; ustride: GLsizei; vstride: GLsizei; _packed: GLboolean; points: PGLvoid); extdecl;
  1418. glGetMapParameterivNV: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  1419. glGetMapParameterfvNV: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  1420. glGetMapAttribParameterivNV: procedure(target: GLenum; index: GLuint; pname: GLenum; params: PGLint); extdecl;
  1421. glGetMapAttribParameterfvNV: procedure(target: GLenum; index: GLuint; pname: GLenum; params: PGLfloat); extdecl;
  1422. glEvalMapsNV: procedure(target: GLenum; mode: GLenum); extdecl;
  1423. function Load_GL_NV_evaluators: Boolean;
  1424. //***** GL_NV_fence *****//
  1425. const
  1426. GL_ALL_COMPLETED_NV = $84F2;
  1427. GL_FENCE_STATUS_NV = $84F3;
  1428. GL_FENCE_CONDITION_NV = $84F4;
  1429. var
  1430. glGenFencesNV: procedure(n: GLsizei; fences: PGLuint); extdecl;
  1431. glDeleteFencesNV: procedure(n: GLsizei; const fences: PGLuint); extdecl;
  1432. glSetFenceNV: procedure(fence: GLuint; condition: GLenum); extdecl;
  1433. glTestFenceNV: function(fence: GLuint): GLboolean; extdecl;
  1434. glFinishFenceNV: procedure(fence: GLuint); extdecl;
  1435. glIsFenceNV: function(fence: GLuint): GLboolean; extdecl;
  1436. glGetFenceivNV: procedure(fence: GLuint; pname: GLenum; params: PGLint); extdecl;
  1437. function Load_GL_NV_fence: Boolean;
  1438. //***** GL_NV_fog_distance *****//
  1439. const
  1440. GL_FOG_DISTANCE_MODE_NV = $855A;
  1441. GL_EYE_RADIAL_NV = $855B;
  1442. GL_EYE_PLANE_ABSOLUTE_NV = $855C;
  1443. function Load_GL_NV_fog_distance: Boolean;
  1444. //***** GL_NV_light_max_exponent *****//
  1445. const
  1446. GL_MAX_SHININESS_NV = $8504;
  1447. GL_MAX_SPOT_EXPONENT_NV = $8505;
  1448. function Load_GL_NV_light_max_exponent: Boolean;
  1449. //***** GL_NV_multisample_filter_hint *****//
  1450. const
  1451. GL_MULTISAMPLE_FILTER_HINT_NV = $8534;
  1452. function Load_GL_NV_multisample_filter_hint: Boolean;
  1453. //***** GL_NV_occlusion_query *****//
  1454. // GL_OCCLUSION_TEST_HP { already defined }
  1455. // GL_OCCLUSION_TEST_RESULT_HP { already defined }
  1456. const
  1457. GL_PIXEL_COUNTER_BITS_NV = $8864;
  1458. GL_CURRENT_OCCLUSION_QUERY_ID_NV = $8865;
  1459. GL_PIXEL_COUNT_NV = $8866;
  1460. GL_PIXEL_COUNT_AVAILABLE_NV = $8867;
  1461. var
  1462. glGenOcclusionQueriesNV: procedure(n: GLsizei; ids: PGLuint); extdecl;
  1463. glDeleteOcclusionQueriesNV: procedure(n: GLsizei; const ids: PGLuint); extdecl;
  1464. glIsOcclusionQueryNV: function(id: GLuint): GLboolean; extdecl;
  1465. glBeginOcclusionQueryNV: procedure(id: GLuint); extdecl;
  1466. glEndOcclusionQueryNV: procedure(); extdecl;
  1467. glGetOcclusionQueryivNV: procedure(id: GLuint; pname: GLenum; params: PGLint); extdecl;
  1468. glGetOcclusionQueryuivNV: procedure(id: GLuint; pname: GLenum; params: PGLuint); extdecl;
  1469. function Load_GL_NV_occlusion_query: Boolean;
  1470. //***** GL_NV_packed_depth_stencil *****//
  1471. const
  1472. GL_DEPTH_STENCIL_NV = $84F9;
  1473. GL_UNSIGNED_INT_24_8_NV = $84FA;
  1474. function Load_GL_NV_packed_depth_stencil: Boolean;
  1475. //***** GL_NV_point_sprite *****//
  1476. const
  1477. GL_POINT_SPRITE_NV = $8861;
  1478. GL_COORD_REPLACE_NV = $8862;
  1479. GL_POINT_SPRITE_R_MODE_NV = $8863;
  1480. var
  1481. glPointParameteriNV: procedure(pname: GLenum; param: GLint); extdecl;
  1482. glPointParameterivNV: procedure(pname: GLenum; const params: PGLint); extdecl;
  1483. function Load_GL_NV_point_sprite: Boolean;
  1484. //***** GL_NV_register_combiners *****//
  1485. const
  1486. GL_REGISTER_COMBINERS_NV = $8522;
  1487. GL_COMBINER0_NV = $8550;
  1488. GL_COMBINER1_NV = $8551;
  1489. GL_COMBINER2_NV = $8552;
  1490. GL_COMBINER3_NV = $8553;
  1491. GL_COMBINER4_NV = $8554;
  1492. GL_COMBINER5_NV = $8555;
  1493. GL_COMBINER6_NV = $8556;
  1494. GL_COMBINER7_NV = $8557;
  1495. GL_VARIABLE_A_NV = $8523;
  1496. GL_VARIABLE_B_NV = $8524;
  1497. GL_VARIABLE_C_NV = $8525;
  1498. GL_VARIABLE_D_NV = $8526;
  1499. GL_VARIABLE_E_NV = $8527;
  1500. GL_VARIABLE_F_NV = $8528;
  1501. GL_VARIABLE_G_NV = $8529;
  1502. GL_CONSTANT_COLOR0_NV = $852A;
  1503. GL_CONSTANT_COLOR1_NV = $852B;
  1504. GL_PRIMARY_COLOR_NV = $852C;
  1505. GL_SECONDARY_COLOR_NV = $852D;
  1506. GL_SPARE0_NV = $852E;
  1507. GL_SPARE1_NV = $852F;
  1508. GL_UNSIGNED_IDENTITY_NV = $8536;
  1509. GL_UNSIGNED_INVERT_NV = $8537;
  1510. GL_EXPAND_NORMAL_NV = $8538;
  1511. GL_EXPAND_NEGATE_NV = $8539;
  1512. GL_HALF_BIAS_NORMAL_NV = $853A;
  1513. GL_HALF_BIAS_NEGATE_NV = $853B;
  1514. GL_SIGNED_IDENTITY_NV = $853C;
  1515. GL_SIGNED_NEGATE_NV = $853D;
  1516. GL_E_TIMES_F_NV = $8531;
  1517. GL_SPARE0_PLUS_SECONDARY_COLOR_NV = $8532;
  1518. GL_SCALE_BY_TWO_NV = $853E;
  1519. GL_SCALE_BY_FOUR_NV = $853F;
  1520. GL_SCALE_BY_ONE_HALF_NV = $8540;
  1521. GL_BIAS_BY_NEGATIVE_ONE_HALF_NV = $8541;
  1522. GL_DISCARD_NV = $8530;
  1523. GL_COMBINER_INPUT_NV = $8542;
  1524. GL_COMBINER_MAPPING_NV = $8543;
  1525. GL_COMBINER_COMPONENT_USAGE_NV = $8544;
  1526. GL_COMBINER_AB_DOT_PRODUCT_NV = $8545;
  1527. GL_COMBINER_CD_DOT_PRODUCT_NV = $8546;
  1528. GL_COMBINER_MUX_SUM_NV = $8547;
  1529. GL_COMBINER_SCALE_NV = $8548;
  1530. GL_COMBINER_BIAS_NV = $8549;
  1531. GL_COMBINER_AB_OUTPUT_NV = $854A;
  1532. GL_COMBINER_CD_OUTPUT_NV = $854B;
  1533. GL_COMBINER_SUM_OUTPUT_NV = $854C;
  1534. GL_NUM_GENERAL_COMBINERS_NV = $854E;
  1535. GL_COLOR_SUM_CLAMP_NV = $854F;
  1536. GL_MAX_GENERAL_COMBINERS_NV = $854D;
  1537. var
  1538. glCombinerParameterfvNV: procedure(pname: GLenum; const params: PGLfloat); extdecl;
  1539. glCombinerParameterivNV: procedure(pname: GLenum; const params: PGLint); extdecl;
  1540. glCombinerParameterfNV: procedure(pname: GLenum; param: GLfloat); extdecl;
  1541. glCombinerParameteriNV: procedure(pname: GLenum; param: GLint); extdecl;
  1542. glCombinerInputNV: procedure(stage: GLenum; portion: GLenum; variable: GLenum; input: GLenum; mapping: GLenum; componentUsage: GLenum); extdecl;
  1543. glCombinerOutputNV: procedure(stage: GLenum; portion: GLenum; abOutput: GLenum; cdOutput: GLenum; sumOutput: GLenum; scale: GLenum; bias: GLenum; abDotProduct: GLboolean; cdDotProduct: GLboolean; muxSum: GLboolean); extdecl;
  1544. glFinalCombinerInputNV: procedure(variable: GLenum; input: GLenum; mapping: GLenum; componentUsage: GLenum); extdecl;
  1545. glGetCombinerInputParameterfvNV: procedure(stage: GLenum; portion: GLenum; variable: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  1546. glGetCombinerInputParameterivNV: procedure(stage: GLenum; portion: GLenum; variable: GLenum; pname: GLenum; params: PGLint); extdecl;
  1547. glGetCombinerOutputParameterfvNV: procedure(stage: GLenum; portion: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  1548. glGetCombinerOutputParameterivNV: procedure(stage: GLenum; portion: GLenum; pname: GLenum; params: PGLint); extdecl;
  1549. glGetFinalCombinerInputParameterfvNV: procedure(variable: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  1550. glGetFinalCombinerInputParameterivNV: procedure(variable: GLenum; pname: GLenum; params: PGLint); extdecl;
  1551. function Load_GL_NV_register_combiners: Boolean;
  1552. //***** GL_NV_register_combiners2 *****//
  1553. const
  1554. GL_PER_STAGE_CONSTANTS_NV = $8535;
  1555. var
  1556. glCombinerStageParameterfvNV: procedure(stage: GLenum; pname: GLenum; const params: PGLfloat); extdecl;
  1557. glGetCombinerStageParameterfvNV: procedure(stage: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  1558. function Load_GL_NV_register_combiners2: Boolean;
  1559. //***** GL_NV_texgen_emboss *****//
  1560. const
  1561. GL_EMBOSS_MAP_NV = $855F;
  1562. GL_EMBOSS_LIGHT_NV = $855D;
  1563. GL_EMBOSS_CONSTANT_NV = $855E;
  1564. function Load_GL_NV_texgen_emboss: Boolean;
  1565. //***** GL_NV_texgen_reflection *****//
  1566. const
  1567. GL_NORMAL_MAP_NV = $8511;
  1568. GL_REFLECTION_MAP_NV = $8512;
  1569. function Load_GL_NV_texgen_reflection: Boolean;
  1570. //***** GL_NV_texture_compression_vtc *****//
  1571. // GL_COMPRESSED_RGB_S3TC_DXT1_EXT { already defined }
  1572. // GL_COMPRESSED_RGBA_S3TC_DXT1_EXT { already defined }
  1573. // GL_COMPRESSED_RGBA_S3TC_DXT3_EXT { already defined }
  1574. // GL_COMPRESSED_RGBA_S3TC_DXT5_EXT { already defined }
  1575. function Load_GL_NV_texture_compression_vtc: Boolean;
  1576. //***** GL_NV_texture_env_combine4 *****//
  1577. const
  1578. GL_COMBINE4_NV = $8503;
  1579. GL_SOURCE3_RGB_NV = $8583;
  1580. GL_SOURCE3_ALPHA_NV = $858B;
  1581. GL_OPERAND3_RGB_NV = $8593;
  1582. GL_OPERAND3_ALPHA_NV = $859B;
  1583. function Load_GL_NV_texture_env_combine4: Boolean;
  1584. //***** GL_NV_texture_rectangle *****//
  1585. const
  1586. GL_TEXTURE_RECTANGLE_NV = $84F5;
  1587. GL_TEXTURE_BINDING_RECTANGLE_NV = $84F6;
  1588. GL_PROXY_TEXTURE_RECTANGLE_NV = $84F7;
  1589. GL_MAX_RECTANGLE_TEXTURE_SIZE_NV = $84F8;
  1590. function Load_GL_NV_texture_rectangle: Boolean;
  1591. //***** GL_NV_texture_shader *****//
  1592. const
  1593. GL_TEXTURE_SHADER_NV = $86DE;
  1594. GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV = $86D9;
  1595. GL_SHADER_OPERATION_NV = $86DF;
  1596. GL_CULL_MODES_NV = $86E0;
  1597. GL_OFFSET_TEXTURE_MATRIX_NV = $86E1;
  1598. GL_OFFSET_TEXTURE_SCALE_NV = $86E2;
  1599. GL_OFFSET_TEXTURE_BIAS_NV = $86E3;
  1600. GL_PREVIOUS_TEXTURE_INPUT_NV = $86E4;
  1601. GL_CONST_EYE_NV = $86E5;
  1602. GL_SHADER_CONSISTENT_NV = $86DD;
  1603. GL_PASS_THROUGH_NV = $86E6;
  1604. GL_CULL_FRAGMENT_NV = $86E7;
  1605. GL_OFFSET_TEXTURE_2D_NV = $86E8;
  1606. GL_OFFSET_TEXTURE_RECTANGLE_NV = $864C;
  1607. GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV = $864D;
  1608. GL_DEPENDENT_AR_TEXTURE_2D_NV = $86E9;
  1609. GL_DEPENDENT_GB_TEXTURE_2D_NV = $86EA;
  1610. GL_DOT_PRODUCT_NV = $86EC;
  1611. GL_DOT_PRODUCT_DEPTH_REPLACE_NV = $86ED;
  1612. GL_DOT_PRODUCT_TEXTURE_2D_NV = $86EE;
  1613. GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV = $864E;
  1614. GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV = $86F0;
  1615. GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV = $86F1;
  1616. GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV = $86F2;
  1617. GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV = $86F3;
  1618. GL_HILO_NV = $86F4;
  1619. GL_DSDT_NV = $86F5;
  1620. GL_DSDT_MAG_NV = $86F6;
  1621. GL_DSDT_MAG_VIB_NV = $86F7;
  1622. GL_UNSIGNED_INT_S8_S8_8_8_NV = $86DA;
  1623. GL_UNSIGNED_INT_8_8_S8_S8_REV_NV = $86DB;
  1624. GL_SIGNED_RGBA_NV = $86FB;
  1625. GL_SIGNED_RGBA8_NV = $86FC;
  1626. GL_SIGNED_RGB_NV = $86FE;
  1627. GL_SIGNED_RGB8_NV = $86FF;
  1628. GL_SIGNED_LUMINANCE_NV = $8701;
  1629. GL_SIGNED_LUMINANCE8_NV = $8702;
  1630. GL_SIGNED_LUMINANCE_ALPHA_NV = $8703;
  1631. GL_SIGNED_LUMINANCE8_ALPHA8_NV = $8704;
  1632. GL_SIGNED_ALPHA_NV = $8705;
  1633. GL_SIGNED_ALPHA8_NV = $8706;
  1634. GL_SIGNED_INTENSITY_NV = $8707;
  1635. GL_SIGNED_INTENSITY8_NV = $8708;
  1636. GL_SIGNED_RGB_UNSIGNED_ALPHA_NV = $870C;
  1637. GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV = $870D;
  1638. GL_HILO16_NV = $86F8;
  1639. GL_SIGNED_HILO_NV = $86F9;
  1640. GL_SIGNED_HILO16_NV = $86FA;
  1641. GL_DSDT8_NV = $8709;
  1642. GL_DSDT8_MAG8_NV = $870A;
  1643. GL_DSDT_MAG_INTENSITY_NV = $86DC;
  1644. GL_DSDT8_MAG8_INTENSITY8_NV = $870B;
  1645. GL_HI_SCALE_NV = $870E;
  1646. GL_LO_SCALE_NV = $870F;
  1647. GL_DS_SCALE_NV = $8710;
  1648. GL_DT_SCALE_NV = $8711;
  1649. GL_MAGNITUDE_SCALE_NV = $8712;
  1650. GL_VIBRANCE_SCALE_NV = $8713;
  1651. GL_HI_BIAS_NV = $8714;
  1652. GL_LO_BIAS_NV = $8715;
  1653. GL_DS_BIAS_NV = $8716;
  1654. GL_DT_BIAS_NV = $8717;
  1655. GL_MAGNITUDE_BIAS_NV = $8718;
  1656. GL_VIBRANCE_BIAS_NV = $8719;
  1657. GL_TEXTURE_BORDER_VALUES_NV = $871A;
  1658. GL_TEXTURE_HI_SIZE_NV = $871B;
  1659. GL_TEXTURE_LO_SIZE_NV = $871C;
  1660. GL_TEXTURE_DS_SIZE_NV = $871D;
  1661. GL_TEXTURE_DT_SIZE_NV = $871E;
  1662. GL_TEXTURE_MAG_SIZE_NV = $871F;
  1663. function Load_GL_NV_texture_shader: Boolean;
  1664. //***** GL_NV_texture_shader2 *****//
  1665. const
  1666. GL_DOT_PRODUCT_TEXTURE_3D_NV = $86EF;
  1667. // GL_HILO_NV { already defined }
  1668. // GL_DSDT_NV { already defined }
  1669. // GL_DSDT_MAG_NV { already defined }
  1670. // GL_DSDT_MAG_VIB_NV { already defined }
  1671. // GL_UNSIGNED_INT_S8_S8_8_8_NV { already defined }
  1672. // GL_UNSIGNED_INT_8_8_S8_S8_REV_NV { already defined }
  1673. // GL_SIGNED_RGBA_NV { already defined }
  1674. // GL_SIGNED_RGBA8_NV { already defined }
  1675. // GL_SIGNED_RGB_NV { already defined }
  1676. // GL_SIGNED_RGB8_NV { already defined }
  1677. // GL_SIGNED_LUMINANCE_NV { already defined }
  1678. // GL_SIGNED_LUMINANCE8_NV { already defined }
  1679. // GL_SIGNED_LUMINANCE_ALPHA_NV { already defined }
  1680. // GL_SIGNED_LUMINANCE8_ALPHA8_NV { already defined }
  1681. // GL_SIGNED_ALPHA_NV { already defined }
  1682. // GL_SIGNED_ALPHA8_NV { already defined }
  1683. // GL_SIGNED_INTENSITY_NV { already defined }
  1684. // GL_SIGNED_INTENSITY8_NV { already defined }
  1685. // GL_SIGNED_RGB_UNSIGNED_ALPHA_NV { already defined }
  1686. // GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV { already defined }
  1687. // GL_HILO16_NV { already defined }
  1688. // GL_SIGNED_HILO_NV { already defined }
  1689. // GL_SIGNED_HILO16_NV { already defined }
  1690. // GL_DSDT8_NV { already defined }
  1691. // GL_DSDT8_MAG8_NV { already defined }
  1692. // GL_DSDT_MAG_INTENSITY_NV { already defined }
  1693. // GL_DSDT8_MAG8_INTENSITY8_NV { already defined }
  1694. function Load_GL_NV_texture_shader2: Boolean;
  1695. //***** GL_NV_texture_shader3 *****//
  1696. const
  1697. GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV = $8850;
  1698. GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV = $8851;
  1699. GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV = $8852;
  1700. GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV = $8853;
  1701. GL_OFFSET_HILO_TEXTURE_2D_NV = $8854;
  1702. GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV = $8855;
  1703. GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV = $8856;
  1704. GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV = $8857;
  1705. GL_DEPENDENT_HILO_TEXTURE_2D_NV = $8858;
  1706. GL_DEPENDENT_RGB_TEXTURE_3D_NV = $8859;
  1707. GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV = $885A;
  1708. GL_DOT_PRODUCT_PASS_THROUGH_NV = $885B;
  1709. GL_DOT_PRODUCT_TEXTURE_1D_NV = $885C;
  1710. GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV = $885D;
  1711. GL_HILO8_NV = $885E;
  1712. GL_SIGNED_HILO8_NV = $885F;
  1713. GL_FORCE_BLUE_TO_ONE_NV = $8860;
  1714. function Load_GL_NV_texture_shader3: Boolean;
  1715. //***** GL_NV_vertex_array_range *****//
  1716. const
  1717. GL_VERTEX_ARRAY_RANGE_NV = $851D;
  1718. GL_VERTEX_ARRAY_RANGE_LENGTH_NV = $851E;
  1719. GL_VERTEX_ARRAY_RANGE_VALID_NV = $851F;
  1720. GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV = $8520;
  1721. GL_VERTEX_ARRAY_RANGE_POINTER_NV = $8521;
  1722. var
  1723. glVertexArrayRangeNV: procedure(length: GLsizei; pointer: PGLvoid); extdecl;
  1724. glFlushVertexArrayRangeNV: procedure(); extdecl;
  1725. {$IFDEF Win32}
  1726. wglAllocateMemoryNV: function(size: GLsizei; readFrequency: GLfloat; writeFrequency: GLfloat; priority: GLfloat): PGLvoid; extdecl;
  1727. wglFreeMemoryNV: procedure(pointer: PGLvoid); extdecl;
  1728. {$ENDIF}
  1729. function Load_GL_NV_vertex_array_range: Boolean;
  1730. //***** GL_NV_vertex_array_range2 *****//
  1731. const
  1732. GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV = $8533;
  1733. function Load_GL_NV_vertex_array_range2: Boolean;
  1734. //***** GL_NV_vertex_program *****//
  1735. const
  1736. GL_VERTEX_PROGRAM_NV = $8620;
  1737. GL_VERTEX_PROGRAM_POINT_SIZE_NV = $8642;
  1738. GL_VERTEX_PROGRAM_TWO_SIDE_NV = $8643;
  1739. GL_VERTEX_STATE_PROGRAM_NV = $8621;
  1740. GL_ATTRIB_ARRAY_SIZE_NV = $8623;
  1741. GL_ATTRIB_ARRAY_STRIDE_NV = $8624;
  1742. GL_ATTRIB_ARRAY_TYPE_NV = $8625;
  1743. GL_CURRENT_ATTRIB_NV = $8626;
  1744. GL_PROGRAM_PARAMETER_NV = $8644;
  1745. GL_ATTRIB_ARRAY_POINTER_NV = $8645;
  1746. GL_PROGRAM_TARGET_NV = $8646;
  1747. GL_PROGRAM_LENGTH_NV = $8627;
  1748. GL_PROGRAM_RESIDENT_NV = $8647;
  1749. GL_PROGRAM_STRING_NV = $8628;
  1750. GL_TRACK_MATRIX_NV = $8648;
  1751. GL_TRACK_MATRIX_TRANSFORM_NV = $8649;
  1752. GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV = $862E;
  1753. GL_MAX_TRACK_MATRICES_NV = $862F;
  1754. GL_CURRENT_MATRIX_STACK_DEPTH_NV = $8640;
  1755. GL_CURRENT_MATRIX_NV = $8641;
  1756. GL_VERTEX_PROGRAM_BINDING_NV = $864A;
  1757. GL_PROGRAM_ERROR_POSITION_NV = $864B;
  1758. GL_MODELVIEW_PROJECTION_NV = $8629;
  1759. GL_MATRIX0_NV = $8630;
  1760. GL_MATRIX1_NV = $8631;
  1761. GL_MATRIX2_NV = $8632;
  1762. GL_MATRIX3_NV = $8633;
  1763. GL_MATRIX4_NV = $8634;
  1764. GL_MATRIX5_NV = $8635;
  1765. GL_MATRIX6_NV = $8636;
  1766. GL_MATRIX7_NV = $8637;
  1767. GL_IDENTITY_NV = $862A;
  1768. GL_INVERSE_NV = $862B;
  1769. GL_TRANSPOSE_NV = $862C;
  1770. GL_INVERSE_TRANSPOSE_NV = $862D;
  1771. GL_VERTEX_ATTRIB_ARRAY0_NV = $8650;
  1772. GL_VERTEX_ATTRIB_ARRAY1_NV = $8651;
  1773. GL_VERTEX_ATTRIB_ARRAY2_NV = $8652;
  1774. GL_VERTEX_ATTRIB_ARRAY3_NV = $8653;
  1775. GL_VERTEX_ATTRIB_ARRAY4_NV = $8654;
  1776. GL_VERTEX_ATTRIB_ARRAY5_NV = $8655;
  1777. GL_VERTEX_ATTRIB_ARRAY6_NV = $8656;
  1778. GL_VERTEX_ATTRIB_ARRAY7_NV = $8657;
  1779. GL_VERTEX_ATTRIB_ARRAY8_NV = $8658;
  1780. GL_VERTEX_ATTRIB_ARRAY9_NV = $8659;
  1781. GL_VERTEX_ATTRIB_ARRAY10_NV = $865A;
  1782. GL_VERTEX_ATTRIB_ARRAY11_NV = $865B;
  1783. GL_VERTEX_ATTRIB_ARRAY12_NV = $865C;
  1784. GL_VERTEX_ATTRIB_ARRAY13_NV = $865D;
  1785. GL_VERTEX_ATTRIB_ARRAY14_NV = $865E;
  1786. GL_VERTEX_ATTRIB_ARRAY15_NV = $865F;
  1787. GL_MAP1_VERTEX_ATTRIB0_4_NV = $8660;
  1788. GL_MAP1_VERTEX_ATTRIB1_4_NV = $8661;
  1789. GL_MAP1_VERTEX_ATTRIB2_4_NV = $8662;
  1790. GL_MAP1_VERTEX_ATTRIB3_4_NV = $8663;
  1791. GL_MAP1_VERTEX_ATTRIB4_4_NV = $8664;
  1792. GL_MAP1_VERTEX_ATTRIB5_4_NV = $8665;
  1793. GL_MAP1_VERTEX_ATTRIB6_4_NV = $8666;
  1794. GL_MAP1_VERTEX_ATTRIB7_4_NV = $8667;
  1795. GL_MAP1_VERTEX_ATTRIB8_4_NV = $8668;
  1796. GL_MAP1_VERTEX_ATTRIB9_4_NV = $8669;
  1797. GL_MAP1_VERTEX_ATTRIB10_4_NV = $866A;
  1798. GL_MAP1_VERTEX_ATTRIB11_4_NV = $866B;
  1799. GL_MAP1_VERTEX_ATTRIB12_4_NV = $866C;
  1800. GL_MAP1_VERTEX_ATTRIB13_4_NV = $866D;
  1801. GL_MAP1_VERTEX_ATTRIB14_4_NV = $866E;
  1802. GL_MAP1_VERTEX_ATTRIB15_4_NV = $866F;
  1803. GL_MAP2_VERTEX_ATTRIB0_4_NV = $8670;
  1804. GL_MAP2_VERTEX_ATTRIB1_4_NV = $8671;
  1805. GL_MAP2_VERTEX_ATTRIB2_4_NV = $8672;
  1806. GL_MAP2_VERTEX_ATTRIB3_4_NV = $8673;
  1807. GL_MAP2_VERTEX_ATTRIB4_4_NV = $8674;
  1808. GL_MAP2_VERTEX_ATTRIB5_4_NV = $8675;
  1809. GL_MAP2_VERTEX_ATTRIB6_4_NV = $8676;
  1810. GL_MAP2_VERTEX_ATTRIB7_4_NV = $8677;
  1811. GL_MAP2_VERTEX_ATTRIB8_4_NV = $8678;
  1812. GL_MAP2_VERTEX_ATTRIB9_4_NV = $8679;
  1813. GL_MAP2_VERTEX_ATTRIB10_4_NV = $867A;
  1814. GL_MAP2_VERTEX_ATTRIB11_4_NV = $867B;
  1815. GL_MAP2_VERTEX_ATTRIB12_4_NV = $867C;
  1816. GL_MAP2_VERTEX_ATTRIB13_4_NV = $867D;
  1817. GL_MAP2_VERTEX_ATTRIB14_4_NV = $867E;
  1818. GL_MAP2_VERTEX_ATTRIB15_4_NV = $867F;
  1819. var
  1820. glBindProgramNV: procedure(target: GLenum; id: GLuint); extdecl;
  1821. glDeleteProgramsNV: procedure(n: GLsizei; const ids: PGLuint); extdecl;
  1822. glExecuteProgramNV: procedure(target: GLenum; id: GLuint; const params: PGLfloat); extdecl;
  1823. glGenProgramsNV: procedure(n: GLsizei; ids: PGLuint); extdecl;
  1824. glAreProgramsResidentNV: function(n: GLsizei; const ids: PGLuint; residences: PGLboolean): GLboolean; extdecl;
  1825. glRequestResidentProgramsNV: procedure(n: GLsizei; ids: PGLuint); extdecl;
  1826. glGetProgramParameterfvNV: procedure(target: GLenum; index: GLuint; pname: GLenum; params: PGLfloat); extdecl;
  1827. glGetProgramParameterdvNV: procedure(target: GLenum; index: GLuint; pname: GLenum; params: PGLdouble); extdecl;
  1828. glGetProgramivNV: procedure(id: GLuint; pname: GLenum; params: PGLint); extdecl;
  1829. glGetProgramStringNV: procedure(id: GLuint; pname: GLenum; _program: PGLubyte); extdecl;
  1830. glGetTrackMatrixivNV: procedure(target: GLenum; address: GLuint; pname: GLenum; params: PGLint); extdecl;
  1831. glGetVertexAttribdvNV: procedure(index: GLuint; pname: GLenum; params: PGLdouble); extdecl;
  1832. glGetVertexAttribfvNV: procedure(index: GLuint; pname: GLenum; params: PGLfloat); extdecl;
  1833. glGetVertexAttribivNV: procedure(index: GLuint; pname: GLenum; params: PGLint); extdecl;
  1834. glGetVertexAttribPointervNV: procedure(index: GLuint; pname: GLenum; pointer: PGLvoid); extdecl;
  1835. glIsProgramNV: function(id: GLuint): GLboolean; extdecl;
  1836. glLoadProgramNV: procedure(target: GLenum; id: GLuint; len: GLsizei; const _program: PGLubyte); extdecl;
  1837. glProgramParameter4fNV: procedure(target: GLenum; index: GLuint; x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); extdecl;
  1838. glProgramParameter4fvNV: procedure(target: GLenum; index: GLuint; const params: PGLfloat); extdecl;
  1839. glProgramParameters4dvNV: procedure(target: GLenum; index: GLuint; num: GLuint; const params: PGLdouble); extdecl;
  1840. glProgramParameters4fvNV: procedure(target: GLenum; index: GLuint; num: GLuint; const params: PGLfloat); extdecl;
  1841. glTrackMatrixNV: procedure(target: GLenum; address: GLuint; matrix: GLenum; transform: GLenum); extdecl;
  1842. glVertexAttribPointerNV: procedure(index: GLuint; size: GLint; _type: GLenum; stride: GLsizei; const pointer: PGLvoid); extdecl;
  1843. glVertexAttrib1sNV: procedure(index: GLuint; x: GLshort); extdecl;
  1844. glVertexAttrib1fNV: procedure(index: GLuint; x: GLfloat); extdecl;
  1845. glVertexAttrib1dNV: procedure(index: GLuint; x: GLdouble); extdecl;
  1846. glVertexAttrib2sNV: procedure(index: GLuint; x: GLshort; y: GLshort); extdecl;
  1847. glVertexAttrib2fNV: procedure(index: GLuint; x: GLfloat; y: GLfloat); extdecl;
  1848. glVertexAttrib2dNV: procedure(index: GLuint; x: GLdouble; y: GLdouble); extdecl;
  1849. glVertexAttrib3sNV: procedure(index: GLuint; x: GLshort; y: GLshort; z: GLshort); extdecl;
  1850. glVertexAttrib3fNV: procedure(index: GLuint; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  1851. glVertexAttrib3dNV: procedure(index: GLuint; x: GLdouble; y: GLdouble; z: GLdouble); extdecl;
  1852. glVertexAttrib4sNV: procedure(index: GLuint; x: GLshort; y: GLshort; z: GLshort; w: GLshort); extdecl;
  1853. glVertexAttrib4fNV: procedure(index: GLuint; x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); extdecl;
  1854. glVertexAttrib4dNV: procedure(index: GLuint; x: GLdouble; y: GLdouble; z: GLdouble; w: GLdouble); extdecl;
  1855. glVertexAttrib4ubNV: procedure(index: GLuint; x: GLubyte; y: GLubyte; z: GLubyte; w: GLubyte); extdecl;
  1856. glVertexAttrib1svNV: procedure(index: GLuint; const v: PGLshort); extdecl;
  1857. glVertexAttrib1fvNV: procedure(index: GLuint; const v: PGLfloat); extdecl;
  1858. glVertexAttrib1dvNV: procedure(index: GLuint; const v: PGLdouble); extdecl;
  1859. glVertexAttrib2svNV: procedure(index: GLuint; const v: PGLshort); extdecl;
  1860. glVertexAttrib2fvNV: procedure(index: GLuint; const v: PGLfloat); extdecl;
  1861. glVertexAttrib2dvNV: procedure(index: GLuint; const v: PGLdouble); extdecl;
  1862. glVertexAttrib3svNV: procedure(index: GLuint; const v: PGLshort); extdecl;
  1863. glVertexAttrib3fvNV: procedure(index: GLuint; const v: PGLfloat); extdecl;
  1864. glVertexAttrib3dvNV: procedure(index: GLuint; const v: PGLdouble); extdecl;
  1865. glVertexAttrib4svNV: procedure(index: GLuint; const v: PGLshort); extdecl;
  1866. glVertexAttrib4fvNV: procedure(index: GLuint; const v: PGLfloat); extdecl;
  1867. glVertexAttrib4dvNV: procedure(index: GLuint; const v: PGLdouble); extdecl;
  1868. glVertexAttrib4ubvNV: procedure(index: GLuint; const v: PGLubyte); extdecl;
  1869. glVertexAttribs1svNV: procedure(index: GLuint; n: GLsizei; const v: PGLshort); extdecl;
  1870. glVertexAttribs1fvNV: procedure(index: GLuint; n: GLsizei; const v: PGLfloat); extdecl;
  1871. glVertexAttribs1dvNV: procedure(index: GLuint; n: GLsizei; const v: PGLdouble); extdecl;
  1872. glVertexAttribs2svNV: procedure(index: GLuint; n: GLsizei; const v: PGLshort); extdecl;
  1873. glVertexAttribs2fvNV: procedure(index: GLuint; n: GLsizei; const v: PGLfloat); extdecl;
  1874. glVertexAttribs2dvNV: procedure(index: GLuint; n: GLsizei; const v: PGLdouble); extdecl;
  1875. glVertexAttribs3svNV: procedure(index: GLuint; n: GLsizei; const v: PGLshort); extdecl;
  1876. glVertexAttribs3fvNV: procedure(index: GLuint; n: GLsizei; const v: PGLfloat); extdecl;
  1877. glVertexAttribs3dvNV: procedure(index: GLuint; n: GLsizei; const v: PGLdouble); extdecl;
  1878. glVertexAttribs4svNV: procedure(index: GLuint; n: GLsizei; const v: PGLshort); extdecl;
  1879. glVertexAttribs4fvNV: procedure(index: GLuint; n: GLsizei; const v: PGLfloat); extdecl;
  1880. glVertexAttribs4dvNV: procedure(index: GLuint; n: GLsizei; const v: PGLdouble); extdecl;
  1881. glVertexAttribs4ubvNV: procedure(index: GLuint; n: GLsizei; const v: PGLubyte); extdecl;
  1882. function Load_GL_NV_vertex_program: Boolean;
  1883. //***** GL_NV_vertex_program1_1 *****//
  1884. function Load_GL_NV_vertex_program1_1: Boolean;
  1885. //***** GL_ATI_element_array *****//
  1886. const
  1887. GL_ELEMENT_ARRAY_ATI = $8768;
  1888. GL_ELEMENT_ARRAY_TYPE_ATI = $8769;
  1889. GL_ELEMENT_ARRAY_POINTER_ATI = $876A;
  1890. var
  1891. glElementPointerATI: procedure(_type: GLenum; const pointer: PGLvoid); extdecl;
  1892. glDrawElementArrayATI: procedure(mode: GLenum; count: GLsizei); extdecl;
  1893. glDrawRangeElementArrayATI: procedure(mode: GLenum; start: GLuint; _end: GLuint; count: GLsizei); extdecl;
  1894. function Load_GL_ATI_element_array: Boolean;
  1895. //***** GL_ATI_envmap_bumpmap *****//
  1896. const
  1897. GL_BUMP_ROT_MATRIX_ATI = $8775;
  1898. GL_BUMP_ROT_MATRIX_SIZE_ATI = $8776;
  1899. GL_BUMP_NUM_TEX_UNITS_ATI = $8777;
  1900. GL_BUMP_TEX_UNITS_ATI = $8778;
  1901. GL_DUDV_ATI = $8779;
  1902. GL_DU8DV8_ATI = $877A;
  1903. GL_BUMP_ENVMAP_ATI = $877B;
  1904. GL_BUMP_TARGET_ATI = $877C;
  1905. var
  1906. glTexBumpParameterivATI: procedure(pname: GLenum; param: PGLint); extdecl;
  1907. glTexBumpParameterfvATI: procedure(pname: GLenum; param: PGLfloat); extdecl;
  1908. glGetTexBumpParameterivATI: procedure(pname: GLenum; param: PGLint); extdecl;
  1909. glGetTexBumpParameterfvATI: procedure(pname: GLenum; param: PGLfloat); extdecl;
  1910. function Load_GL_ATI_envmap_bumpmap: Boolean;
  1911. //***** GL_ATI_fragment_shader *****//
  1912. const
  1913. GL_FRAGMENT_SHADER_ATI = $8920;
  1914. GL_REG_0_ATI = $8921;
  1915. GL_REG_1_ATI = $8922;
  1916. GL_REG_2_ATI = $8923;
  1917. GL_REG_3_ATI = $8924;
  1918. GL_REG_4_ATI = $8925;
  1919. GL_REG_5_ATI = $8926;
  1920. GL_CON_0_ATI = $8941;
  1921. GL_CON_1_ATI = $8942;
  1922. GL_CON_2_ATI = $8943;
  1923. GL_CON_3_ATI = $8944;
  1924. GL_CON_4_ATI = $8945;
  1925. GL_CON_5_ATI = $8946;
  1926. GL_CON_6_ATI = $8947;
  1927. GL_CON_7_ATI = $8948;
  1928. GL_MOV_ATI = $8961;
  1929. GL_ADD_ATI = $8963;
  1930. GL_MUL_ATI = $8964;
  1931. GL_SUB_ATI = $8965;
  1932. GL_DOT3_ATI = $8966;
  1933. GL_DOT4_ATI = $8967;
  1934. GL_MAD_ATI = $8968;
  1935. GL_LERP_ATI = $8969;
  1936. GL_CND_ATI = $896A;
  1937. GL_CND0_ATI = $896B;
  1938. GL_DOT2_ADD_ATI = $896C;
  1939. GL_SECONDARY_INTERPOLATOR_ATI = $896D;
  1940. GL_SWIZZLE_STR_ATI = $8976;
  1941. GL_SWIZZLE_STQ_ATI = $8977;
  1942. GL_SWIZZLE_STR_DR_ATI = $8978;
  1943. GL_SWIZZLE_STQ_DQ_ATI = $8979;
  1944. GL_RED_BIT_ATI = $0001;
  1945. GL_GREEN_BIT_ATI = $0002;
  1946. GL_BLUE_BIT_ATI = $0004;
  1947. GL_2X_BIT_ATI = $0001;
  1948. GL_4X_BIT_ATI = $0002;
  1949. GL_8X_BIT_ATI = $0004;
  1950. GL_HALF_BIT_ATI = $0008;
  1951. GL_QUARTER_BIT_ATI = $0010;
  1952. GL_EIGHTH_BIT_ATI = $0020;
  1953. GL_SATURATE_BIT_ATI = $0040;
  1954. // GL_2X_BIT_ATI { already defined }
  1955. GL_COMP_BIT_ATI = $0002;
  1956. GL_NEGATE_BIT_ATI = $0004;
  1957. GL_BIAS_BIT_ATI = $0008;
  1958. var
  1959. glGenFragmentShadersATI: function(range: GLuint): GLuint; extdecl;
  1960. glBindFragmentShaderATI: procedure(id: GLuint); extdecl;
  1961. glDeleteFragmentShaderATI: procedure(id: GLuint); extdecl;
  1962. glBeginFragmentShaderATI: procedure(); extdecl;
  1963. glEndFragmentShaderATI: procedure(); extdecl;
  1964. glPassTexCoordATI: procedure(dst: GLuint; coord: GLuint; swizzle: GLenum); extdecl;
  1965. glSampleMapATI: procedure(dst: GLuint; interp: GLuint; swizzle: GLenum); extdecl;
  1966. glColorFragmentOp1ATI: procedure(op: GLenum; dst: GLuint; dstMask: GLuint; dstMod: GLuint; arg1: GLuint; arg1Rep: GLuint; arg1Mod: GLuint); extdecl;
  1967. glColorFragmentOp2ATI: procedure(op: GLenum; dst: GLuint; dstMask: GLuint; dstMod: GLuint; arg1: GLuint; arg1Rep: GLuint; arg1Mod: GLuint; arg2: GLuint; arg2Rep: GLuint; arg2Mod: GLuint); extdecl;
  1968. glColorFragmentOp3ATI: procedure(op: GLenum; dst: GLuint; dstMask: GLuint; dstMod: GLuint; arg1: GLuint; arg1Rep: GLuint; arg1Mod: GLuint; arg2: GLuint; arg2Rep: GLuint; arg2Mod: GLuint; arg3: GLuint; arg3Rep: GLuint; arg3Mod: GLuint); extdecl;
  1969. glAlphaFragmentOp1ATI: procedure(op: GLenum; dst: GLuint; dstMod: GLuint; arg1: GLuint; arg1Rep: GLuint; arg1Mod: GLuint); extdecl;
  1970. glAlphaFragmentOp2ATI: procedure(op: GLenum; dst: GLuint; dstMod: GLuint; arg1: GLuint; arg1Rep: GLuint; arg1Mod: GLuint; arg2: GLuint; arg2Rep: GLuint; arg2Mod: GLuint); extdecl;
  1971. glAlphaFragmentOp3ATI: procedure(op: GLenum; dst: GLuint; dstMod: GLuint; arg1: GLuint; arg1Rep: GLuint; arg1Mod: GLuint; arg2: GLuint; arg2Rep: GLuint; arg2Mod: GLuint; arg3: GLuint; arg3Rep: GLuint; arg3Mod: GLuint); extdecl;
  1972. glSetFragmentShaderConstantATI: procedure(dst: GLuint; const value: PGLfloat); extdecl;
  1973. function Load_GL_ATI_fragment_shader: Boolean;
  1974. //***** GL_ATI_pn_triangles *****//
  1975. const
  1976. GL_PN_TRIANGLES_ATI = $87F0;
  1977. GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI = $87F1;
  1978. GL_PN_TRIANGLES_POINT_MODE_ATI = $87F2;
  1979. GL_PN_TRIANGLES_NORMAL_MODE_ATI = $87F3;
  1980. GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI = $87F4;
  1981. GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI = $87F5;
  1982. GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI = $87F6;
  1983. GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI = $87F7;
  1984. GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI = $87F8;
  1985. var
  1986. glPNTrianglesiATI: procedure(pname: GLenum; param: GLint); extdecl;
  1987. glPNTrianglesfATI: procedure(pname: GLenum; param: GLfloat); extdecl;
  1988. function Load_GL_ATI_pn_triangles: Boolean;
  1989. //***** GL_ATI_texture_mirror_once *****//
  1990. const
  1991. GL_MIRROR_CLAMP_ATI = $8742;
  1992. GL_MIRROR_CLAMP_TO_EDGE_ATI = $8743;
  1993. function Load_GL_ATI_texture_mirror_once: Boolean;
  1994. //***** GL_ATI_vertex_array_object *****//
  1995. const
  1996. GL_STATIC_ATI = $8760;
  1997. GL_DYNAMIC_ATI = $8761;
  1998. GL_PRESERVE_ATI = $8762;
  1999. GL_DISCARD_ATI = $8763;
  2000. GL_OBJECT_BUFFER_SIZE_ATI = $8764;
  2001. GL_OBJECT_BUFFER_USAGE_ATI = $8765;
  2002. GL_ARRAY_OBJECT_BUFFER_ATI = $8766;
  2003. GL_ARRAY_OBJECT_OFFSET_ATI = $8767;
  2004. var
  2005. glNewObjectBufferATI: function(size: GLsizei; const pointer: PGLvoid; usage: GLenum): GLuint; extdecl;
  2006. glIsObjectBufferATI: function(buffer: GLuint): GLboolean; extdecl;
  2007. glUpdateObjectBufferATI: procedure(buffer: GLuint; offset: GLuint; size: GLsizei; const pointer: PGLvoid; preserve: GLenum); extdecl;
  2008. glGetObjectBufferfvATI: procedure(buffer: GLuint; pname: GLenum; params: PGLfloat); extdecl;
  2009. glGetObjectBufferivATI: procedure(buffer: GLuint; pname: GLenum; params: PGLint); extdecl;
  2010. glDeleteObjectBufferATI: procedure(buffer: GLuint); extdecl;
  2011. glArrayObjectATI: procedure(_array: GLenum; size: GLint; _type: GLenum; stride: GLsizei; buffer: GLuint; offset: GLuint); extdecl;
  2012. glGetArrayObjectfvATI: procedure(_array: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  2013. glGetArrayObjectivATI: procedure(_array: GLenum; pname: GLenum; params: PGLint); extdecl;
  2014. glVariantArrayObjectATI: procedure(id: GLuint; _type: GLenum; stride: GLsizei; buffer: GLuint; offset: GLuint); extdecl;
  2015. glGetVariantArrayObjectfvATI: procedure(id: GLuint; pname: GLenum; params: PGLfloat); extdecl;
  2016. glGetVariantArrayObjectivATI: procedure(id: GLuint; pname: GLenum; params: PGLint); extdecl;
  2017. function Load_GL_ATI_vertex_array_object: Boolean;
  2018. //***** GL_ATI_vertex_streams *****//
  2019. const
  2020. GL_MAX_VERTEX_STREAMS_ATI = $876B;
  2021. GL_VERTEX_STREAM0_ATI = $876C;
  2022. GL_VERTEX_STREAM1_ATI = $876D;
  2023. GL_VERTEX_STREAM2_ATI = $876E;
  2024. GL_VERTEX_STREAM3_ATI = $876F;
  2025. GL_VERTEX_STREAM4_ATI = $8770;
  2026. GL_VERTEX_STREAM5_ATI = $8771;
  2027. GL_VERTEX_STREAM6_ATI = $8772;
  2028. GL_VERTEX_STREAM7_ATI = $8773;
  2029. GL_VERTEX_SOURCE_ATI = $8774;
  2030. var
  2031. glVertexStream1s: procedure(stream: GLenum; coords: GLshort); extdecl;
  2032. glVertexStream1i: procedure(stream: GLenum; coords: GLint); extdecl;
  2033. glVertexStream1f: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2034. glVertexStream1d: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2035. glVertexStream1sv: procedure(stream: GLenum; coords: GLshort); extdecl;
  2036. glVertexStream1iv: procedure(stream: GLenum; coords: GLint); extdecl;
  2037. glVertexStream1fv: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2038. glVertexStream1dv: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2039. glVertexStream2s: procedure(stream: GLenum; coords: GLshort); extdecl;
  2040. glVertexStream2i: procedure(stream: GLenum; coords: GLint); extdecl;
  2041. glVertexStream2f: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2042. glVertexStream2d: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2043. glVertexStream2sv: procedure(stream: GLenum; coords: GLshort); extdecl;
  2044. glVertexStream2iv: procedure(stream: GLenum; coords: GLint); extdecl;
  2045. glVertexStream2fv: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2046. glVertexStream2dv: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2047. glVertexStream3s: procedure(stream: GLenum; coords: GLshort); extdecl;
  2048. glVertexStream3i: procedure(stream: GLenum; coords: GLint); extdecl;
  2049. glVertexStream3f: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2050. glVertexStream3d: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2051. glVertexStream3sv: procedure(stream: GLenum; coords: GLshort); extdecl;
  2052. glVertexStream3iv: procedure(stream: GLenum; coords: GLint); extdecl;
  2053. glVertexStream3fv: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2054. glVertexStream3dv: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2055. glVertexStream4s: procedure(stream: GLenum; coords: GLshort); extdecl;
  2056. glVertexStream4i: procedure(stream: GLenum; coords: GLint); extdecl;
  2057. glVertexStream4f: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2058. glVertexStream4d: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2059. glVertexStream4sv: procedure(stream: GLenum; coords: GLshort); extdecl;
  2060. glVertexStream4iv: procedure(stream: GLenum; coords: GLint); extdecl;
  2061. glVertexStream4fv: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2062. glVertexStream4dv: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2063. glNormalStream3b: procedure(stream: GLenum; coords: GLbyte); extdecl;
  2064. glNormalStream3s: procedure(stream: GLenum; coords: GLshort); extdecl;
  2065. glNormalStream3i: procedure(stream: GLenum; coords: GLint); extdecl;
  2066. glNormalStream3f: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2067. glNormalStream3d: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2068. glNormalStream3bv: procedure(stream: GLenum; coords: GLbyte); extdecl;
  2069. glNormalStream3sv: procedure(stream: GLenum; coords: GLshort); extdecl;
  2070. glNormalStream3iv: procedure(stream: GLenum; coords: GLint); extdecl;
  2071. glNormalStream3fv: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2072. glNormalStream3dv: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2073. glClientActiveVertexStream: procedure(stream: GLenum); extdecl;
  2074. glVertexBlendEnvi: procedure(pname: GLenum; param: GLint); extdecl;
  2075. glVertexBlendEnvf: procedure(pname: GLenum; param: GLfloat); extdecl;
  2076. function Load_GL_ATI_vertex_streams: Boolean;
  2077. {$IFDEF Win32}
  2078. //***** WGL_I3D_image_buffer *****//
  2079. const
  2080. WGL_IMAGE_BUFFER_MIN_ACCESS_I3D = $0001;
  2081. WGL_IMAGE_BUFFER_LOCK_I3D = $0002;
  2082. var
  2083. wglCreateImageBufferI3D: function(hDC: HDC; dwSize: DWORD; uFlags: UINT): PGLvoid; extdecl;
  2084. wglDestroyImageBufferI3D: function(hDC: HDC; pAddress: PGLvoid): BOOL; extdecl;
  2085. wglAssociateImageBufferEventsI3D: function(hdc: HDC; pEvent: PHandle; pAddress: PGLvoid; pSize: PDWORD; count: UINT): BOOL; extdecl;
  2086. wglReleaseImageBufferEventsI3D: function(hdc: HDC; pAddress: PGLvoid; count: UINT): BOOL; extdecl;
  2087. function Load_WGL_I3D_image_buffer: Boolean;
  2088. //***** WGL_I3D_swap_frame_lock *****//
  2089. var
  2090. wglEnableFrameLockI3D: function(): BOOL; extdecl;
  2091. wglDisableFrameLockI3D: function(): BOOL; extdecl;
  2092. wglIsEnabledFrameLockI3D: function(pFlag: PBOOL): BOOL; extdecl;
  2093. wglQueryFrameLockMasterI3D: function(pFlag: PBOOL): BOOL; extdecl;
  2094. function Load_WGL_I3D_swap_frame_lock: Boolean;
  2095. //***** WGL_I3D_swap_frame_usage *****//
  2096. var
  2097. wglGetFrameUsageI3D: function(pUsage: PGLfloat): BOOL; extdecl;
  2098. wglBeginFrameTrackingI3D: function(): BOOL; extdecl;
  2099. wglEndFrameTrackingI3D: function(): BOOL; extdecl;
  2100. wglQueryFrameTrackingI3D: function(pFrameCount: PDWORD; pMissedFrames: PDWORD; pLastMissedUsage: PGLfloat): BOOL; extdecl;
  2101. function Load_WGL_I3D_swap_frame_usage: Boolean;
  2102. {$ENDIF}
  2103. //***** GL_3DFX_texture_compression_FXT1 *****//
  2104. const
  2105. GL_COMPRESSED_RGB_FXT1_3DFX = $86B0;
  2106. GL_COMPRESSED_RGBA_FXT1_3DFX = $86B1;
  2107. function Load_GL_3DFX_texture_compression_FXT1: Boolean;
  2108. //***** GL_IBM_cull_vertex *****//
  2109. const
  2110. GL_CULL_VERTEX_IBM = $1928A;
  2111. function Load_GL_IBM_cull_vertex: Boolean;
  2112. //***** GL_IBM_multimode_draw_arrays *****//
  2113. var
  2114. glMultiModeDrawArraysIBM: procedure(mode: PGLenum; first: PGLint; count: PGLsizei; primcount: GLsizei; modestride: GLint); extdecl;
  2115. glMultiModeDrawElementsIBM: procedure(mode: PGLenum; count: PGLsizei; _type: GLenum; const indices: PGLvoid; primcount: GLsizei; modestride: GLint); extdecl;
  2116. function Load_GL_IBM_multimode_draw_arrays: Boolean;
  2117. //***** GL_IBM_raster_pos_clip *****//
  2118. const
  2119. GL_RASTER_POSITION_UNCLIPPED_IBM = $19262;
  2120. function Load_GL_IBM_raster_pos_clip: Boolean;
  2121. //***** GL_IBM_texture_mirrored_repeat *****//
  2122. const
  2123. GL_MIRRORED_REPEAT_IBM = $8370;
  2124. function Load_GL_IBM_texture_mirrored_repeat: Boolean;
  2125. //***** GL_IBM_vertex_array_lists *****//
  2126. const
  2127. GL_VERTEX_ARRAY_LIST_IBM = $1929E;
  2128. GL_NORMAL_ARRAY_LIST_IBM = $1929F;
  2129. GL_COLOR_ARRAY_LIST_IBM = $192A0;
  2130. GL_INDEX_ARRAY_LIST_IBM = $192A1;
  2131. GL_TEXTURE_COORD_ARRAY_LIST_IBM = $192A2;
  2132. GL_EDGE_FLAG_ARRAY_LIST_IBM = $192A3;
  2133. GL_FOG_COORDINATE_ARRAY_LIST_IBM = $192A4;
  2134. GL_SECONDARY_COLOR_ARRAY_LIST_IBM = $192A5;
  2135. GL_VERTEX_ARRAY_LIST_STRIDE_IBM = $192A8;
  2136. GL_NORMAL_ARRAY_LIST_STRIDE_IBM = $192A9;
  2137. GL_COLOR_ARRAY_LIST_STRIDE_IBM = $192AA;
  2138. GL_INDEX_ARRAY_LIST_STRIDE_IBM = $192AB;
  2139. GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM = $192AC;
  2140. GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM = $192AD;
  2141. GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM = $192AE;
  2142. GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM = $192AF;
  2143. var
  2144. glColorPointerListIBM: procedure(size: GLint; _type: GLenum; stride: GLint; const pointer: PGLvoid; ptrstride: GLint); extdecl;
  2145. glSecondaryColorPointerListIBM: procedure(size: GLint; _type: GLenum; stride: GLint; const pointer: PGLvoid; ptrstride: GLint); extdecl;
  2146. glEdgeFlagPointerListIBM: procedure(stride: GLint; const pointer: PGLboolean; ptrstride: GLint); extdecl;
  2147. glFogCoordPointerListIBM: procedure(_type: GLenum; stride: GLint; const pointer: PGLvoid; ptrstride: GLint); extdecl;
  2148. glNormalPointerListIBM: procedure(_type: GLenum; stride: GLint; const pointer: PGLvoid; ptrstride: GLint); extdecl;
  2149. glTexCoordPointerListIBM: procedure(size: GLint; _type: GLenum; stride: GLint; const pointer: PGLvoid; ptrstride: GLint); extdecl;
  2150. glVertexPointerListIBM: procedure(size: GLint; _type: GLenum; stride: GLint; const pointer: PGLvoid; ptrstride: GLint); extdecl;
  2151. function Load_GL_IBM_vertex_array_lists: Boolean;
  2152. //***** GL_MESA_resize_buffers *****//
  2153. var
  2154. glResizeBuffersMESA: procedure(); extdecl;
  2155. function Load_GL_MESA_resize_buffers: Boolean;
  2156. //***** GL_MESA_window_pos *****//
  2157. var
  2158. glWindowPos2dMESA: procedure(x: GLdouble; y: GLdouble); extdecl;
  2159. glWindowPos2fMESA: procedure(x: GLfloat; y: GLfloat); extdecl;
  2160. glWindowPos2iMESA: procedure(x: GLint; y: GLint); extdecl;
  2161. glWindowPos2sMESA: procedure(x: GLshort; y: GLshort); extdecl;
  2162. glWindowPos2ivMESA: procedure(const p: PGLint); extdecl;
  2163. glWindowPos2svMESA: procedure(const p: PGLshort); extdecl;
  2164. glWindowPos2fvMESA: procedure(const p: PGLfloat); extdecl;
  2165. glWindowPos2dvMESA: procedure(const p: PGLdouble); extdecl;
  2166. glWindowPos3iMESA: procedure(x: GLint; y: GLint; z: GLint); extdecl;
  2167. glWindowPos3sMESA: procedure(x: GLshort; y: GLshort; z: GLshort); extdecl;
  2168. glWindowPos3fMESA: procedure(x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2169. glWindowPos3dMESA: procedure(x: GLdouble; y: GLdouble; z: GLdouble); extdecl;
  2170. glWindowPos3ivMESA: procedure(const p: PGLint); extdecl;
  2171. glWindowPos3svMESA: procedure(const p: PGLshort); extdecl;
  2172. glWindowPos3fvMESA: procedure(const p: PGLfloat); extdecl;
  2173. glWindowPos3dvMESA: procedure(const p: PGLdouble); extdecl;
  2174. glWindowPos4iMESA: procedure(x: GLint; y: GLint; z: GLint; w: GLint); extdecl;
  2175. glWindowPos4sMESA: procedure(x: GLshort; y: GLshort; z: GLshort; w: GLshort); extdecl;
  2176. glWindowPos4fMESA: procedure(x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); extdecl;
  2177. glWindowPos4dMESA: procedure(x: GLdouble; y: GLdouble; z: GLdouble; w: GLdouble); extdecl;
  2178. glWindowPos4ivMESA: procedure(const p: PGLint); extdecl;
  2179. glWindowPos4svMESA: procedure(const p: PGLshort); extdecl;
  2180. glWindowPos4fvMESA: procedure(const p: PGLfloat); extdecl;
  2181. glWindowPos4dvMESA: procedure(const p: PGLdouble); extdecl;
  2182. function Load_GL_MESA_window_pos: Boolean;
  2183. //***** GL_OML_interlace *****//
  2184. const
  2185. GL_INTERLACE_OML = $8980;
  2186. GL_INTERLACE_READ_OML = $8981;
  2187. function Load_GL_OML_interlace: Boolean;
  2188. //***** GL_OML_resample *****//
  2189. const
  2190. GL_PACK_RESAMPLE_OML = $8984;
  2191. GL_UNPACK_RESAMPLE_OML = $8985;
  2192. GL_RESAMPLE_REPLICATE_OML = $8986;
  2193. GL_RESAMPLE_ZERO_FILL_OML = $8987;
  2194. GL_RESAMPLE_AVERAGE_OML = $8988;
  2195. GL_RESAMPLE_DECIMATE_OML = $8989;
  2196. // GL_RESAMPLE_AVERAGE_OML { already defined }
  2197. function Load_GL_OML_resample: Boolean;
  2198. //***** GL_OML_subsample *****//
  2199. const
  2200. GL_FORMAT_SUBSAMPLE_24_24_OML = $8982;
  2201. GL_FORMAT_SUBSAMPLE_244_244_OML = $8983;
  2202. function Load_GL_OML_subsample: Boolean;
  2203. //***** GL_SGIS_generate_mipmap *****//
  2204. const
  2205. GL_GENERATE_MIPMAP_SGIS = $8191;
  2206. GL_GENERATE_MIPMAP_HINT_SGIS = $8192;
  2207. function Load_GL_SGIS_generate_mipmap: Boolean;
  2208. //***** GL_SGIS_multisample *****//
  2209. const
  2210. GLX_SAMPLE_BUFFERS_SGIS = $186A0;
  2211. GLX_SAMPLES_SGIS = $186A1;
  2212. GL_MULTISAMPLE_SGIS = $809D;
  2213. GL_SAMPLE_ALPHA_TO_MASK_SGIS = $809E;
  2214. GL_SAMPLE_ALPHA_TO_ONE_SGIS = $809F;
  2215. GL_SAMPLE_MASK_SGIS = $80A0;
  2216. GL_MULTISAMPLE_BIT_EXT = $20000000;
  2217. GL_1PASS_SGIS = $80A1;
  2218. GL_2PASS_0_SGIS = $80A2;
  2219. GL_2PASS_1_SGIS = $80A3;
  2220. GL_4PASS_0_SGIS = $80A4;
  2221. GL_4PASS_1_SGIS = $80A5;
  2222. GL_4PASS_2_SGIS = $80A6;
  2223. GL_4PASS_3_SGIS = $80A7;
  2224. GL_SAMPLE_BUFFERS_SGIS = $80A8;
  2225. GL_SAMPLES_SGIS = $80A9;
  2226. GL_SAMPLE_MASK_VALUE_SGIS = $80AA;
  2227. GL_SAMPLE_MASK_INVERT_SGIS = $80AB;
  2228. GL_SAMPLE_PATTERN_SGIS = $80AC;
  2229. var
  2230. glSampleMaskSGIS: procedure(value: GLclampf; invert: GLboolean); extdecl;
  2231. glSamplePatternSGIS: procedure(pattern: GLenum); extdecl;
  2232. function Load_GL_SGIS_multisample: Boolean;
  2233. //***** GL_SGIS_pixel_texture *****//
  2234. const
  2235. GL_PIXEL_TEXTURE_SGIS = $8353;
  2236. GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS = $8354;
  2237. GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS = $8355;
  2238. GL_PIXEL_GROUP_COLOR_SGIS = $8356;
  2239. var
  2240. glPixelTexGenParameteriSGIS: procedure(pname: GLenum; param: GLint); extdecl;
  2241. glPixelTexGenParameterfSGIS: procedure(pname: GLenum; param: GLfloat); extdecl;
  2242. glGetPixelTexGenParameterivSGIS: procedure(pname: GLenum; params: GLint); extdecl;
  2243. glGetPixelTexGenParameterfvSGIS: procedure(pname: GLenum; params: GLfloat); extdecl;
  2244. function Load_GL_SGIS_pixel_texture: Boolean;
  2245. //***** GL_SGIS_texture_border_clamp *****//
  2246. // GL_CLAMP_TO_BORDER_SGIS { already defined }
  2247. function Load_GL_SGIS_texture_border_clamp: Boolean;
  2248. //***** GL_SGIS_texture_color_mask *****//
  2249. const
  2250. GL_TEXTURE_COLOR_WRITEMASK_SGIS = $81EF;
  2251. var
  2252. glTextureColorMaskSGIS: procedure(r: GLboolean; g: GLboolean; b: GLboolean; a: GLboolean); extdecl;
  2253. function Load_GL_SGIS_texture_color_mask: Boolean;
  2254. //***** GL_SGIS_texture_edge_clamp *****//
  2255. const
  2256. GL_CLAMP_TO_EDGE_SGIS = $812F;
  2257. function Load_GL_SGIS_texture_edge_clamp: Boolean;
  2258. //***** GL_SGIS_texture_lod *****//
  2259. const
  2260. GL_TEXTURE_MIN_LOD_SGIS = $813A;
  2261. GL_TEXTURE_MAX_LOD_SGIS = $813B;
  2262. GL_TEXTURE_BASE_LEVEL_SGIS = $813C;
  2263. GL_TEXTURE_MAX_LEVEL_SGIS = $813D;
  2264. function Load_GL_SGIS_texture_lod: Boolean;
  2265. //***** GL_SGIS_depth_texture *****//
  2266. const
  2267. GL_DEPTH_COMPONENT16_SGIX = $81A5;
  2268. GL_DEPTH_COMPONENT24_SGIX = $81A6;
  2269. GL_DEPTH_COMPONENT32_SGIX = $81A7;
  2270. function Load_GL_SGIS_depth_texture: Boolean;
  2271. //***** GL_SGIX_fog_offset *****//
  2272. const
  2273. GL_FOG_OFFSET_SGIX = $8198;
  2274. GL_FOG_OFFSET_VALUE_SGIX = $8199;
  2275. function Load_GL_SGIX_fog_offset: Boolean;
  2276. //***** GL_SGIX_interlace *****//
  2277. const
  2278. GL_INTERLACE_SGIX = $8094;
  2279. function Load_GL_SGIX_interlace: Boolean;
  2280. //***** GL_SGIX_shadow_ambient *****//
  2281. const
  2282. GL_SHADOW_AMBIENT_SGIX = $80BF;
  2283. function Load_GL_SGIX_shadow_ambient: Boolean;
  2284. //***** GL_SGI_color_matrix *****//
  2285. const
  2286. GL_COLOR_MATRIX_SGI = $80B1;
  2287. GL_COLOR_MATRIX_STACK_DEPTH_SGI = $80B2;
  2288. GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI = $80B3;
  2289. GL_POST_COLOR_MATRIX_RED_SCALE_SGI = $80B4;
  2290. GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI = $80B5;
  2291. GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI = $80B6;
  2292. GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI = $80B7;
  2293. GL_POST_COLOR_MATRIX_RED_BIAS_SGI = $80B8;
  2294. GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI = $80B9;
  2295. GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI = $80BA;
  2296. GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI = $80BB;
  2297. function Load_GL_SGI_color_matrix: Boolean;
  2298. //***** GL_SGI_color_table *****//
  2299. const
  2300. GL_COLOR_TABLE_SGI = $80D0;
  2301. GL_POST_CONVOLUTION_COLOR_TABLE_SGI = $80D1;
  2302. GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI = $80D2;
  2303. GL_PROXY_COLOR_TABLE_SGI = $80D3;
  2304. GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI = $80D4;
  2305. GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI = $80D5;
  2306. GL_COLOR_TABLE_SCALE_SGI = $80D6;
  2307. GL_COLOR_TABLE_BIAS_SGI = $80D7;
  2308. GL_COLOR_TABLE_FORMAT_SGI = $80D8;
  2309. GL_COLOR_TABLE_WIDTH_SGI = $80D9;
  2310. GL_COLOR_TABLE_RED_SIZE_SGI = $80DA;
  2311. GL_COLOR_TABLE_GREEN_SIZE_SGI = $80DB;
  2312. GL_COLOR_TABLE_BLUE_SIZE_SGI = $80DC;
  2313. GL_COLOR_TABLE_ALPHA_SIZE_SGI = $80DD;
  2314. GL_COLOR_TABLE_LUMINANCE_SIZE_SGI = $80DE;
  2315. GL_COLOR_TABLE_INTENSITY_SIZE_SGI = $80DF;
  2316. var
  2317. glColorTableSGI: procedure(target: GLenum; internalformat: GLenum; width: GLsizei; format: GLenum; _type: GLenum; const table: PGLvoid); extdecl;
  2318. glCopyColorTableSGI: procedure(target: GLenum; internalformat: GLenum; x: GLint; y: GLint; width: GLsizei); extdecl;
  2319. glColorTableParameterivSGI: procedure(target: GLenum; pname: GLenum; const params: PGLint); extdecl;
  2320. glColorTableParameterfvSGI: procedure(target: GLenum; pname: GLenum; const params: PGLfloat); extdecl;
  2321. glGetColorTableSGI: procedure(target: GLenum; format: GLenum; _type: GLenum; table: PGLvoid); extdecl;
  2322. glGetColorTableParameterivSGI: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  2323. glGetColorTableParameterfvSGI: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  2324. function Load_GL_SGI_color_table: Boolean;
  2325. //***** GL_SGI_texture_color_table *****//
  2326. const
  2327. GL_TEXTURE_COLOR_TABLE_SGI = $80BC;
  2328. GL_PROXY_TEXTURE_COLOR_TABLE_SGI = $80BD;
  2329. function Load_GL_SGI_texture_color_table: Boolean;
  2330. //***** GL_SUN_vertex *****//
  2331. var
  2332. glColor4ubVertex2fSUN: procedure(r: GLubyte; g: GLubyte; b: GLubyte; a: GLubyte; x: GLfloat; y: GLfloat); extdecl;
  2333. glColor4ubVertex2fvSUN: procedure(const c: PGLubyte; const v: PGLfloat); extdecl;
  2334. glColor4ubVertex3fSUN: procedure(r: GLubyte; g: GLubyte; b: GLubyte; a: GLubyte; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2335. glColor4ubVertex3fvSUN: procedure(const c: PGLubyte; const v: PGLfloat); extdecl;
  2336. glColor3fVertex3fSUN: procedure(r: GLfloat; g: GLfloat; b: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2337. glColor3fVertex3fvSUN: procedure(const c: PGLfloat; const v: PGLfloat); extdecl;
  2338. glNormal3fVertex3fSUN: procedure(nx: GLfloat; ny: GLfloat; nz: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2339. glNormal3fVertex3fvSUN: procedure(const n: PGLfloat; const v: PGLfloat); extdecl;
  2340. glColor4fNormal3fVertex3fSUN: procedure(r: GLfloat; g: GLfloat; b: GLfloat; a: GLfloat; nx: GLfloat; ny: GLfloat; nz: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2341. glColor4fNormal3fVertex3fvSUN: procedure(const c: PGLfloat; const n: PGLfloat; const v: PGLfloat); extdecl;
  2342. glTexCoord2fVertex3fSUN: procedure(s: GLfloat; t: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2343. glTexCoord2fVertex3fvSUN: procedure(const tc: PGLfloat; const v: PGLfloat); extdecl;
  2344. glTexCoord4fVertex4fSUN: procedure(s: GLfloat; t: GLfloat; p: GLfloat; q: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); extdecl;
  2345. glTexCoord4fVertex4fvSUN: procedure(const tc: PGLfloat; const v: PGLfloat); extdecl;
  2346. glTexCoord2fColor4ubVertex3fSUN: procedure(s: GLfloat; t: GLfloat; r: GLubyte; g: GLubyte; b: GLubyte; a: GLubyte; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2347. glTexCoord2fColor4ubVertex3fvSUN: procedure(const tc: PGLfloat; const c: PGLubyte; const v: PGLfloat); extdecl;
  2348. glTexCoord2fColor3fVertex3fSUN: procedure(s: GLfloat; t: GLfloat; r: GLfloat; g: GLfloat; b: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2349. glTexCoord2fColor3fVertex3fvSUN: procedure(const tc: PGLfloat; const c: PGLfloat; const v: PGLfloat); extdecl;
  2350. glTexCoord2fNormal3fVertex3fSUN: procedure(s: GLfloat; t: GLfloat; nx: GLfloat; ny: GLfloat; nz: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2351. glTexCoord2fNormal3fVertex3fvSUN: procedure(const tc: PGLfloat; const n: PGLfloat; const v: PGLfloat); extdecl;
  2352. glTexCoord2fColor4fNormal3fVertex3fSUN: procedure(s: GLfloat; t: GLfloat; r: GLfloat; g: GLfloat; b: GLfloat; a: GLfloat; nx: GLfloat; ny: GLfloat; nz: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2353. glTexCoord2fColor4fNormal3fVertex3fvSUN: procedure(const tc: PGLfloat; const c: PGLfloat; const n: PGLfloat; const v: PGLfloat); extdecl;
  2354. glTexCoord4fColor4fNormal3fVertex4fSUN: procedure(s: GLfloat; t: GLfloat; p: GLfloat; q: GLfloat; r: GLfloat; g: GLfloat; b: GLfloat; a: GLfloat; nx: GLfloat; ny: GLfloat; nz: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); extdecl;
  2355. glTexCoord4fColor4fNormal3fVertex4fvSUN: procedure(const tc: PGLfloat; const c: PGLfloat; const n: PGLfloat; const v: PGLfloat); extdecl;
  2356. glReplacementCodeuiVertex3fSUN: procedure(rc: GLuint; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2357. glReplacementCodeuiVertex3fvSUN: procedure(const rc: PGLuint; const v: PGLfloat); extdecl;
  2358. glReplacementCodeuiColor4ubVertex3fSUN: procedure(rc: GLuint; r: GLubyte; g: GLubyte; b: GLubyte; a: GLubyte; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2359. glReplacementCodeuiColor4ubVertex3fvSUN: procedure(const rc: PGLuint; const c: PGLubyte; const v: PGLfloat); extdecl;
  2360. glReplacementCodeuiColor3fVertex3fSUN: procedure(rc: GLuint; r: GLfloat; g: GLfloat; b: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2361. glReplacementCodeuiColor3fVertex3fvSUN: procedure(const rc: PGLuint; const c: PGLfloat; const v: PGLfloat); extdecl;
  2362. glReplacementCodeuiNormal3fVertex3fSUN: procedure(rc: GLuint; nx: GLfloat; ny: GLfloat; nz: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2363. glReplacementCodeuiNormal3fVertex3fvSUN: procedure(const rc: PGLuint; const n: PGLfloat; const v: PGLfloat); extdecl;
  2364. glReplacementCodeuiColor4fNormal3fVertex3fSUN: procedure(rc: GLuint; r: GLfloat; g: GLfloat; b: GLfloat; a: GLfloat; nx: GLfloat; ny: GLfloat; nz: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2365. glReplacementCodeuiColor4fNormal3fVertex3fvSUN: procedure(const rc: PGLuint; const c: PGLfloat; const n: PGLfloat; const v: PGLfloat); extdecl;
  2366. glReplacementCodeuiTexCoord2fVertex3fSUN: procedure(rc: GLuint; s: GLfloat; t: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2367. glReplacementCodeuiTexCoord2fVertex3fvSUN: procedure(const rc: PGLuint; const tc: PGLfloat; const v: PGLfloat); extdecl;
  2368. glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN: procedure(rc: GLuint; s: GLfloat; t: GLfloat; nx: GLfloat; ny: GLfloat; nz: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2369. glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN: procedure(const rc: PGLuint; const tc: PGLfloat; const n: PGLfloat; const v: PGLfloat); extdecl;
  2370. glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN: procedure(rc: GLuint; s: GLfloat; t: GLfloat; r: GLfloat; g: GLfloat; b: GLfloat; a: GLfloat; nx: GLfloat; ny: GLfloat; nz: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2371. glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN: procedure(const rc: PGLuint; const tc: PGLfloat; const c: PGLfloat; const n: PGLfloat; const v: PGLfloat); extdecl;
  2372. function Load_GL_SUN_vertex: Boolean;
  2373. //***** GL_ARB_fragment_program *****//
  2374. const
  2375. GL_FRAGMENT_PROGRAM_ARB = $8804;
  2376. // GL_PROGRAM_FORMAT_ASCII_ARB { already defined }
  2377. // GL_PROGRAM_LENGTH_ARB { already defined }
  2378. // GL_PROGRAM_FORMAT_ARB { already defined }
  2379. // GL_PROGRAM_BINDING_ARB { already defined }
  2380. // GL_PROGRAM_INSTRUCTIONS_ARB { already defined }
  2381. // GL_MAX_PROGRAM_INSTRUCTIONS_ARB { already defined }
  2382. // GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB { already defined }
  2383. // GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB { already defined }
  2384. // GL_PROGRAM_TEMPORARIES_ARB { already defined }
  2385. // GL_MAX_PROGRAM_TEMPORARIES_ARB { already defined }
  2386. // GL_PROGRAM_NATIVE_TEMPORARIES_ARB { already defined }
  2387. // GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB { already defined }
  2388. // GL_PROGRAM_PARAMETERS_ARB { already defined }
  2389. // GL_MAX_PROGRAM_PARAMETERS_ARB { already defined }
  2390. // GL_PROGRAM_NATIVE_PARAMETERS_ARB { already defined }
  2391. // GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB { already defined }
  2392. // GL_PROGRAM_ATTRIBS_ARB { already defined }
  2393. // GL_MAX_PROGRAM_ATTRIBS_ARB { already defined }
  2394. // GL_PROGRAM_NATIVE_ATTRIBS_ARB { already defined }
  2395. // GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB { already defined }
  2396. // GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB { already defined }
  2397. // GL_MAX_PROGRAM_ENV_PARAMETERS_ARB { already defined }
  2398. // GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB { already defined }
  2399. GL_PROGRAM_ALU_INSTRUCTIONS_ARB = $8805;
  2400. GL_PROGRAM_TEX_INSTRUCTIONS_ARB = $8806;
  2401. GL_PROGRAM_TEX_INDIRECTIONS_ARB = $8807;
  2402. GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB = $8808;
  2403. GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB = $8809;
  2404. GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB = $880A;
  2405. GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB = $880B;
  2406. GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB = $880C;
  2407. GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB = $880D;
  2408. GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB = $880E;
  2409. GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB = $880F;
  2410. GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB = $8810;
  2411. // GL_PROGRAM_STRING_ARB { already defined }
  2412. // GL_PROGRAM_ERROR_POSITION_ARB { already defined }
  2413. // GL_CURRENT_MATRIX_ARB { already defined }
  2414. // GL_TRANSPOSE_CURRENT_MATRIX_ARB { already defined }
  2415. // GL_CURRENT_MATRIX_STACK_DEPTH_ARB { already defined }
  2416. // GL_MAX_PROGRAM_MATRICES_ARB { already defined }
  2417. // GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB { already defined }
  2418. GL_MAX_TEXTURE_COORDS_ARB = $8871;
  2419. GL_MAX_TEXTURE_IMAGE_UNITS_ARB = $8872;
  2420. // GL_PROGRAM_ERROR_STRING_ARB { already defined }
  2421. // GL_MATRIX0_ARB { already defined }
  2422. // GL_MATRIX1_ARB { already defined }
  2423. // GL_MATRIX2_ARB { already defined }
  2424. // GL_MATRIX3_ARB { already defined }
  2425. // GL_MATRIX4_ARB { already defined }
  2426. // GL_MATRIX5_ARB { already defined }
  2427. // GL_MATRIX6_ARB { already defined }
  2428. // GL_MATRIX7_ARB { already defined }
  2429. // GL_MATRIX8_ARB { already defined }
  2430. // GL_MATRIX9_ARB { already defined }
  2431. // GL_MATRIX10_ARB { already defined }
  2432. // GL_MATRIX11_ARB { already defined }
  2433. // GL_MATRIX12_ARB { already defined }
  2434. // GL_MATRIX13_ARB { already defined }
  2435. // GL_MATRIX14_ARB { already defined }
  2436. // GL_MATRIX15_ARB { already defined }
  2437. // GL_MATRIX16_ARB { already defined }
  2438. // GL_MATRIX17_ARB { already defined }
  2439. // GL_MATRIX18_ARB { already defined }
  2440. // GL_MATRIX19_ARB { already defined }
  2441. // GL_MATRIX20_ARB { already defined }
  2442. // GL_MATRIX21_ARB { already defined }
  2443. // GL_MATRIX22_ARB { already defined }
  2444. // GL_MATRIX23_ARB { already defined }
  2445. // GL_MATRIX24_ARB { already defined }
  2446. // GL_MATRIX25_ARB { already defined }
  2447. // GL_MATRIX26_ARB { already defined }
  2448. // GL_MATRIX27_ARB { already defined }
  2449. // GL_MATRIX28_ARB { already defined }
  2450. // GL_MATRIX29_ARB { already defined }
  2451. // GL_MATRIX30_ARB { already defined }
  2452. // GL_MATRIX31_ARB { already defined }
  2453. // glProgramStringARB { already defined }
  2454. // glBindProgramARB { already defined }
  2455. // glDeleteProgramsARB { already defined }
  2456. // glGenProgramsARB { already defined }
  2457. // glProgramEnvParameter4dARB { already defined }
  2458. // glProgramEnvParameter4dvARB { already defined }
  2459. // glProgramEnvParameter4fARB { already defined }
  2460. // glProgramEnvParameter4fvARB { already defined }
  2461. // glProgramLocalParameter4dARB { already defined }
  2462. // glProgramLocalParameter4dvARB { already defined }
  2463. // glProgramLocalParameter4fARB { already defined }
  2464. // glProgramLocalParameter4fvARB { already defined }
  2465. // glGetProgramEnvParameterdvARB { already defined }
  2466. // glGetProgramEnvParameterfvARB { already defined }
  2467. // glGetProgramLocalParameterdvARB { already defined }
  2468. // glGetProgramLocalParameterfvARB { already defined }
  2469. // glGetProgramivARB { already defined }
  2470. // glGetProgramStringARB { already defined }
  2471. // glIsProgramARB { already defined }
  2472. function Load_GL_ARB_fragment_program: Boolean;
  2473. //***** GL_ATI_text_fragment_shader *****//
  2474. const
  2475. GL_TEXT_FRAGMENT_SHADER_ATI = $8200;
  2476. function Load_GL_ATI_text_fragment_shader: Boolean;
  2477. //***** GL_APPLE_client_storage *****//
  2478. const
  2479. GL_UNPACK_CLIENT_STORAGE_APPLE = $85B2;
  2480. function Load_GL_APPLE_client_storage: Boolean;
  2481. //***** GL_APPLE_element_array *****//
  2482. const
  2483. GL_ELEMENT_ARRAY_APPLE = $8768;
  2484. GL_ELEMENT_ARRAY_TYPE_APPLE = $8769;
  2485. GL_ELEMENT_ARRAY_POINTER_APPLE = $876A;
  2486. var
  2487. glElementPointerAPPLE: procedure(_type: GLenum; const pointer: PGLvoid); extdecl;
  2488. glDrawElementArrayAPPLE: procedure(mode: GLenum; first: GLint; count: GLsizei); extdecl;
  2489. glDrawRangeElementArrayAPPLE: procedure(mode: GLenum; start: GLuint; _end: GLuint; first: GLint; count: GLsizei); extdecl;
  2490. glMultiDrawElementArrayAPPLE: procedure(mode: GLenum; const first: PGLint; const count: PGLsizei; primcount: GLsizei); extdecl;
  2491. glMultiDrawRangeElementArrayAPPLE: procedure(mode: GLenum; start: GLuint; _end: GLuint; const first: PGLint; const count: PGLsizei; primcount: GLsizei); extdecl;
  2492. function Load_GL_APPLE_element_array: Boolean;
  2493. //***** GL_APPLE_fence *****//
  2494. const
  2495. GL_DRAW_PIXELS_APPLE = $8A0A;
  2496. GL_FENCE_APPLE = $8A0B;
  2497. var
  2498. glGenFencesAPPLE: procedure(n: GLsizei; fences: PGLuint); extdecl;
  2499. glDeleteFencesAPPLE: procedure(n: GLsizei; const fences: PGLuint); extdecl;
  2500. glSetFenceAPPLE: procedure(fence: GLuint); extdecl;
  2501. glIsFenceAPPLE: function(fence: GLuint): GLboolean; extdecl;
  2502. glTestFenceAPPLE: function(fence: GLuint): GLboolean; extdecl;
  2503. glFinishFenceAPPLE: procedure(fence: GLuint); extdecl;
  2504. glTestObjectAPPLE: function(_object: GLenum; name: GLuint): GLboolean; extdecl;
  2505. glFinishObjectAPPLE: procedure(_object: GLenum; name: GLint); extdecl;
  2506. function Load_GL_APPLE_fence: Boolean;
  2507. //***** GL_APPLE_vertex_array_object *****//
  2508. const
  2509. GL_VERTEX_ARRAY_BINDING_APPLE = $85B5;
  2510. var
  2511. glBindVertexArrayAPPLE: procedure(_array: GLuint); extdecl;
  2512. glDeleteVertexArraysAPPLE: procedure(n: GLsizei; const arrays: PGLuint); extdecl;
  2513. glGenVertexArraysAPPLE: procedure(n: GLsizei; const arrays: PGLuint); extdecl;
  2514. glIsVertexArrayAPPLE: function(_array: GLuint): GLboolean; extdecl;
  2515. function Load_GL_APPLE_vertex_array_object: Boolean;
  2516. //***** GL_APPLE_vertex_array_range *****//
  2517. const
  2518. GL_VERTEX_ARRAY_RANGE_APPLE = $851D;
  2519. GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE = $851E;
  2520. GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_APPLE = $8520;
  2521. GL_VERTEX_ARRAY_RANGE_POINTER_APPLE = $8521;
  2522. GL_VERTEX_ARRAY_STORAGE_HINT_APPLE = $851F;
  2523. GL_STORAGE_CACHED_APPLE = $85BE;
  2524. GL_STORAGE_SHARED_APPLE = $85BF;
  2525. var
  2526. glVertexArrayRangeAPPLE: procedure(length: GLsizei; pointer: PGLvoid); extdecl;
  2527. glFlushVertexArrayRangeAPPLE: procedure(length: GLsizei; pointer: PGLvoid); extdecl;
  2528. glVertexArrayParameteriAPPLE: procedure(pname: GLenum; param: GLint); extdecl;
  2529. function Load_GL_APPLE_vertex_array_range: Boolean;
  2530. {$IFDEF Win32}
  2531. //***** WGL_ARB_pixel_format *****//
  2532. const
  2533. WGL_NUMBER_PIXEL_FORMATS_ARB = $2000;
  2534. WGL_DRAW_TO_WINDOW_ARB = $2001;
  2535. WGL_DRAW_TO_BITMAP_ARB = $2002;
  2536. WGL_ACCELERATION_ARB = $2003;
  2537. WGL_NEED_PALETTE_ARB = $2004;
  2538. WGL_NEED_SYSTEM_PALETTE_ARB = $2005;
  2539. WGL_SWAP_LAYER_BUFFERS_ARB = $2006;
  2540. WGL_SWAP_METHOD_ARB = $2007;
  2541. WGL_NUMBER_OVERLAYS_ARB = $2008;
  2542. WGL_NUMBER_UNDERLAYS_ARB = $2009;
  2543. WGL_TRANSPARENT_ARB = $200A;
  2544. WGL_TRANSPARENT_RED_VALUE_ARB = $2037;
  2545. WGL_TRANSPARENT_GREEN_VALUE_ARB = $2038;
  2546. WGL_TRANSPARENT_BLUE_VALUE_ARB = $2039;
  2547. WGL_TRANSPARENT_ALPHA_VALUE_ARB = $203A;
  2548. WGL_TRANSPARENT_INDEX_VALUE_ARB = $203B;
  2549. WGL_SHARE_DEPTH_ARB = $200C;
  2550. WGL_SHARE_STENCIL_ARB = $200D;
  2551. WGL_SHARE_ACCUM_ARB = $200E;
  2552. WGL_SUPPORT_GDI_ARB = $200F;
  2553. WGL_SUPPORT_OPENGL_ARB = $2010;
  2554. WGL_DOUBLE_BUFFER_ARB = $2011;
  2555. WGL_STEREO_ARB = $2012;
  2556. WGL_PIXEL_TYPE_ARB = $2013;
  2557. WGL_COLOR_BITS_ARB = $2014;
  2558. WGL_RED_BITS_ARB = $2015;
  2559. WGL_RED_SHIFT_ARB = $2016;
  2560. WGL_GREEN_BITS_ARB = $2017;
  2561. WGL_GREEN_SHIFT_ARB = $2018;
  2562. WGL_BLUE_BITS_ARB = $2019;
  2563. WGL_BLUE_SHIFT_ARB = $201A;
  2564. WGL_ALPHA_BITS_ARB = $201B;
  2565. WGL_ALPHA_SHIFT_ARB = $201C;
  2566. WGL_ACCUM_BITS_ARB = $201D;
  2567. WGL_ACCUM_RED_BITS_ARB = $201E;
  2568. WGL_ACCUM_GREEN_BITS_ARB = $201F;
  2569. WGL_ACCUM_BLUE_BITS_ARB = $2020;
  2570. WGL_ACCUM_ALPHA_BITS_ARB = $2021;
  2571. WGL_DEPTH_BITS_ARB = $2022;
  2572. WGL_STENCIL_BITS_ARB = $2023;
  2573. WGL_AUX_BUFFERS_ARB = $2024;
  2574. WGL_NO_ACCELERATION_ARB = $2025;
  2575. WGL_GENERIC_ACCELERATION_ARB = $2026;
  2576. WGL_FULL_ACCELERATION_ARB = $2027;
  2577. WGL_SWAP_EXCHANGE_ARB = $2028;
  2578. WGL_SWAP_COPY_ARB = $2029;
  2579. WGL_SWAP_UNDEFINED_ARB = $202A;
  2580. WGL_TYPE_RGBA_ARB = $202B;
  2581. WGL_TYPE_COLORINDEX_ARB = $202C;
  2582. var
  2583. wglGetPixelFormatAttribivARB: function(hdc: HDC; iPixelFormat: GLint; iLayerPlane: GLint; nAttributes: GLuint; const piAttributes: PGLint; piValues: PGLint): BOOL; extdecl;
  2584. wglGetPixelFormatAttribfvARB: function(hdc: HDC; iPixelFormat: GLint; iLayerPlane: GLint; nAttributes: GLuint; const piAttributes: PGLint; pfValues: PGLfloat): BOOL; extdecl;
  2585. wglChoosePixelFormatARB: function(hdc: HDC; const piAttribIList: PGLint; const pfAttribFList: PGLfloat; nMaxFormats: GLuint; piFormats: PGLint; nNumFormats: PGLuint): BOOL; extdecl;
  2586. function Load_WGL_ARB_pixel_format: Boolean;
  2587. //***** WGL_ARB_make_current_read *****//
  2588. const
  2589. WGL_ERROR_INVALID_PIXEL_TYPE_ARB = $2043;
  2590. WGL_ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB = $2054;
  2591. var
  2592. wglMakeContextCurrentARB: function(hDrawDC: HDC; hReadDC: HDC; hglrc: HGLRC): BOOL; extdecl;
  2593. wglGetCurrentReadDCARB: function(): HDC; extdecl;
  2594. function Load_WGL_ARB_make_current_read: Boolean;
  2595. //***** WGL_ARB_pbuffer *****//
  2596. const
  2597. WGL_DRAW_TO_PBUFFER_ARB = $202D;
  2598. // WGL_DRAW_TO_PBUFFER_ARB { already defined }
  2599. WGL_MAX_PBUFFER_PIXELS_ARB = $202E;
  2600. WGL_MAX_PBUFFER_WIDTH_ARB = $202F;
  2601. WGL_MAX_PBUFFER_HEIGHT_ARB = $2030;
  2602. WGL_PBUFFER_LARGEST_ARB = $2033;
  2603. WGL_PBUFFER_WIDTH_ARB = $2034;
  2604. WGL_PBUFFER_HEIGHT_ARB = $2035;
  2605. WGL_PBUFFER_LOST_ARB = $2036;
  2606. var
  2607. wglCreatePbufferARB: function(hDC: HDC; iPixelFormat: GLint; iWidth: GLint; iHeight: GLint; const piAttribList: PGLint): THandle; extdecl;
  2608. wglGetPbufferDCARB: function(hPbuffer: THandle): HDC; extdecl;
  2609. wglReleasePbufferDCARB: function(hPbuffer: THandle; hDC: HDC): GLint; extdecl;
  2610. wglDestroyPbufferARB: function(hPbuffer: THandle): BOOL; extdecl;
  2611. wglQueryPbufferARB: function(hPbuffer: THandle; iAttribute: GLint; piValue: PGLint): BOOL; extdecl;
  2612. function Load_WGL_ARB_pbuffer: Boolean;
  2613. //***** WGL_EXT_swap_control *****//
  2614. var
  2615. wglSwapIntervalEXT: function(interval: GLint): BOOL; extdecl;
  2616. wglGetSwapIntervalEXT: function(): GLint; extdecl;
  2617. function Load_WGL_EXT_swap_control: Boolean;
  2618. //***** WGL_ARB_render_texture *****//
  2619. const
  2620. WGL_BIND_TO_TEXTURE_RGB_ARB = $2070;
  2621. WGL_BIND_TO_TEXTURE_RGBA_ARB = $2071;
  2622. WGL_TEXTURE_FORMAT_ARB = $2072;
  2623. WGL_TEXTURE_TARGET_ARB = $2073;
  2624. WGL_MIPMAP_TEXTURE_ARB = $2074;
  2625. WGL_TEXTURE_RGB_ARB = $2075;
  2626. WGL_TEXTURE_RGBA_ARB = $2076;
  2627. WGL_NO_TEXTURE_ARB = $2077;
  2628. WGL_TEXTURE_CUBE_MAP_ARB = $2078;
  2629. WGL_TEXTURE_1D_ARB = $2079;
  2630. WGL_TEXTURE_2D_ARB = $207A;
  2631. // WGL_NO_TEXTURE_ARB { already defined }
  2632. WGL_MIPMAP_LEVEL_ARB = $207B;
  2633. WGL_CUBE_MAP_FACE_ARB = $207C;
  2634. WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB = $207D;
  2635. WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB = $207E;
  2636. WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB = $207F;
  2637. WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB = $2080;
  2638. WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB = $2081;
  2639. WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB = $2082;
  2640. WGL_FRONT_LEFT_ARB = $2083;
  2641. WGL_FRONT_RIGHT_ARB = $2084;
  2642. WGL_BACK_LEFT_ARB = $2085;
  2643. WGL_BACK_RIGHT_ARB = $2086;
  2644. WGL_AUX0_ARB = $2087;
  2645. WGL_AUX1_ARB = $2088;
  2646. WGL_AUX2_ARB = $2089;
  2647. WGL_AUX3_ARB = $208A;
  2648. WGL_AUX4_ARB = $208B;
  2649. WGL_AUX5_ARB = $208C;
  2650. WGL_AUX6_ARB = $208D;
  2651. WGL_AUX7_ARB = $208E;
  2652. WGL_AUX8_ARB = $208F;
  2653. WGL_AUX9_ARB = $2090;
  2654. var
  2655. wglBindTexImageARB: function(hPbuffer: THandle; iBuffer: GLint): BOOL; extdecl;
  2656. wglReleaseTexImageARB: function(hPbuffer: THandle; iBuffer: GLint): BOOL; extdecl;
  2657. wglSetPbufferAttribARB: function(hPbuffer: THandle; const piAttribList: PGLint): BOOL; extdecl;
  2658. function Load_WGL_ARB_render_texture: Boolean;
  2659. //***** WGL_EXT_extensions_string *****//
  2660. var
  2661. wglGetExtensionsStringEXT: function(): Pchar; extdecl;
  2662. function Load_WGL_EXT_extensions_string: Boolean;
  2663. //***** WGL_EXT_make_current_read *****//
  2664. var
  2665. wglMakeContextCurrentEXT: function(hDrawDC: HDC; hReadDC: HDC; hglrc: HGLRC): BOOL; extdecl;
  2666. wglGetCurrentReadDCEXT: function(): HDC; extdecl;
  2667. function Load_WGL_EXT_make_current_read: Boolean;
  2668. //***** WGL_EXT_pbuffer *****//
  2669. const
  2670. WGL_DRAW_TO_PBUFFER_EXT = $202D;
  2671. WGL_MAX_PBUFFER_PIXELS_EXT = $202E;
  2672. WGL_MAX_PBUFFER_WIDTH_EXT = $202F;
  2673. WGL_MAX_PBUFFER_HEIGHT_EXT = $2030;
  2674. WGL_OPTIMAL_PBUFFER_WIDTH_EXT = $2031;
  2675. WGL_OPTIMAL_PBUFFER_HEIGHT_EXT = $2032;
  2676. WGL_PBUFFER_LARGEST_EXT = $2033;
  2677. WGL_PBUFFER_WIDTH_EXT = $2034;
  2678. WGL_PBUFFER_HEIGHT_EXT = $2035;
  2679. var
  2680. wglCreatePbufferEXT: function(hDC: HDC; iPixelFormat: GLint; iWidth: GLint; iHeight: GLint; const piAttribList: PGLint): THandle; extdecl;
  2681. wglGetPbufferDCEXT: function(hPbuffer: THandle): HDC; extdecl;
  2682. wglReleasePbufferDCEXT: function(hPbuffer: THandle; hDC: HDC): GLint; extdecl;
  2683. wglDestroyPbufferEXT: function(hPbuffer: THandle): BOOL; extdecl;
  2684. wglQueryPbufferEXT: function(hPbuffer: THandle; iAttribute: GLint; piValue: PGLint): BOOL; extdecl;
  2685. function Load_WGL_EXT_pbuffer: Boolean;
  2686. //***** WGL_EXT_pixel_format *****//
  2687. const
  2688. WGL_NUMBER_PIXEL_FORMATS_EXT = $2000;
  2689. WGL_DRAW_TO_WINDOW_EXT = $2001;
  2690. WGL_DRAW_TO_BITMAP_EXT = $2002;
  2691. WGL_ACCELERATION_EXT = $2003;
  2692. WGL_NEED_PALETTE_EXT = $2004;
  2693. WGL_NEED_SYSTEM_PALETTE_EXT = $2005;
  2694. WGL_SWAP_LAYER_BUFFERS_EXT = $2006;
  2695. WGL_SWAP_METHOD_EXT = $2007;
  2696. WGL_NUMBER_OVERLAYS_EXT = $2008;
  2697. WGL_NUMBER_UNDERLAYS_EXT = $2009;
  2698. WGL_TRANSPARENT_EXT = $200A;
  2699. WGL_TRANSPARENT_VALUE_EXT = $200B;
  2700. WGL_SHARE_DEPTH_EXT = $200C;
  2701. WGL_SHARE_STENCIL_EXT = $200D;
  2702. WGL_SHARE_ACCUM_EXT = $200E;
  2703. WGL_SUPPORT_GDI_EXT = $200F;
  2704. WGL_SUPPORT_OPENGL_EXT = $2010;
  2705. WGL_DOUBLE_BUFFER_EXT = $2011;
  2706. WGL_STEREO_EXT = $2012;
  2707. WGL_PIXEL_TYPE_EXT = $2013;
  2708. WGL_COLOR_BITS_EXT = $2014;
  2709. WGL_RED_BITS_EXT = $2015;
  2710. WGL_RED_SHIFT_EXT = $2016;
  2711. WGL_GREEN_BITS_EXT = $2017;
  2712. WGL_GREEN_SHIFT_EXT = $2018;
  2713. WGL_BLUE_BITS_EXT = $2019;
  2714. WGL_BLUE_SHIFT_EXT = $201A;
  2715. WGL_ALPHA_BITS_EXT = $201B;
  2716. WGL_ALPHA_SHIFT_EXT = $201C;
  2717. WGL_ACCUM_BITS_EXT = $201D;
  2718. WGL_ACCUM_RED_BITS_EXT = $201E;
  2719. WGL_ACCUM_GREEN_BITS_EXT = $201F;
  2720. WGL_ACCUM_BLUE_BITS_EXT = $2020;
  2721. WGL_ACCUM_ALPHA_BITS_EXT = $2021;
  2722. WGL_DEPTH_BITS_EXT = $2022;
  2723. WGL_STENCIL_BITS_EXT = $2023;
  2724. WGL_AUX_BUFFERS_EXT = $2024;
  2725. WGL_NO_ACCELERATION_EXT = $2025;
  2726. WGL_GENERIC_ACCELERATION_EXT = $2026;
  2727. WGL_FULL_ACCELERATION_EXT = $2027;
  2728. WGL_SWAP_EXCHANGE_EXT = $2028;
  2729. WGL_SWAP_COPY_EXT = $2029;
  2730. WGL_SWAP_UNDEFINED_EXT = $202A;
  2731. WGL_TYPE_RGBA_EXT = $202B;
  2732. WGL_TYPE_COLORINDEX_EXT = $202C;
  2733. var
  2734. wglGetPixelFormatAttribivEXT: function(hdc: HDC; iPixelFormat: GLint; iLayerPlane: GLint; nAttributes: GLuint; piAttributes: PGLint; piValues: PGLint): BOOL; extdecl;
  2735. wglGetPixelFormatAttribfvEXT: function(hdc: HDC; iPixelFormat: GLint; iLayerPlane: GLint; nAttributes: GLuint; piAttributes: PGLint; pfValues: PGLfloat): BOOL; extdecl;
  2736. wglChoosePixelFormatEXT: function(hdc: HDC; const piAttribIList: PGLint; const pfAttribFList: PGLfloat; nMaxFormats: GLuint; piFormats: PGLint; nNumFormats: PGLuint): BOOL; extdecl;
  2737. function Load_WGL_EXT_pixel_format: Boolean;
  2738. //***** WGL_I3D_digital_video_control *****//
  2739. const
  2740. WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D = $2050;
  2741. WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D = $2051;
  2742. WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D = $2052;
  2743. WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D = $2053;
  2744. var
  2745. wglGetDigitalVideoParametersI3D: function(hDC: HDC; iAttribute: GLint; piValue: PGLint): BOOL; extdecl;
  2746. wglSetDigitalVideoParametersI3D: function(hDC: HDC; iAttribute: GLint; const piValue: PGLint): BOOL; extdecl;
  2747. function Load_WGL_I3D_digital_video_control: Boolean;
  2748. //***** WGL_I3D_gamma *****//
  2749. const
  2750. WGL_GAMMA_TABLE_SIZE_I3D = $204E;
  2751. WGL_GAMMA_EXCLUDE_DESKTOP_I3D = $204F;
  2752. // WGL_GAMMA_EXCLUDE_DESKTOP_I3D { already defined }
  2753. var
  2754. wglGetGammaTableParametersI3D: function(hDC: HDC; iAttribute: GLint; piValue: PGLint): BOOL; extdecl;
  2755. wglSetGammaTableParametersI3D: function(hDC: HDC; iAttribute: GLint; const piValue: PGLint): BOOL; extdecl;
  2756. wglGetGammaTableI3D: function(hDC: HDC; iEntries: GLint; puRed: PGLUSHORT; puGreen: PGLUSHORT; puBlue: PGLUSHORT): BOOL; extdecl;
  2757. wglSetGammaTableI3D: function(hDC: HDC; iEntries: GLint; const puRed: PGLUSHORT; const puGreen: PGLUSHORT; const puBlue: PGLUSHORT): BOOL; extdecl;
  2758. function Load_WGL_I3D_gamma: Boolean;
  2759. //***** WGL_I3D_genlock *****//
  2760. const
  2761. WGL_GENLOCK_SOURCE_MULTIVIEW_I3D = $2044;
  2762. WGL_GENLOCK_SOURCE_EXTERNAL_SYNC_I3D = $2045;
  2763. WGL_GENLOCK_SOURCE_EXTERNAL_FIELD_I3D = $2046;
  2764. WGL_GENLOCK_SOURCE_EXTERNAL_TTL_I3D = $2047;
  2765. WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D = $2048;
  2766. WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D = $2049;
  2767. WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D = $204A;
  2768. WGL_GENLOCK_SOURCE_EDGE_RISING_I3D = $204B;
  2769. WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D = $204C;
  2770. var
  2771. wglEnableGenlockI3D: function(hDC: HDC): BOOL; extdecl;
  2772. wglDisableGenlockI3D: function(hDC: HDC): BOOL; extdecl;
  2773. wglIsEnabledGenlockI3D: function(hDC: HDC; pFlag: PBOOL): BOOL; extdecl;
  2774. wglGenlockSourceI3D: function(hDC: HDC; uSource: GLUINT): BOOL; extdecl;
  2775. wglGetGenlockSourceI3D: function(hDC: HDC; uSource: PGLUINT): BOOL; extdecl;
  2776. wglGenlockSourceEdgeI3D: function(hDC: HDC; uEdge: GLUINT): BOOL; extdecl;
  2777. wglGetGenlockSourceEdgeI3D: function(hDC: HDC; uEdge: PGLUINT): BOOL; extdecl;
  2778. wglGenlockSampleRateI3D: function(hDC: HDC; uRate: GLUINT): BOOL; extdecl;
  2779. wglGetGenlockSampleRateI3D: function(hDC: HDC; uRate: PGLUINT): BOOL; extdecl;
  2780. wglGenlockSourceDelayI3D: function(hDC: HDC; uDelay: GLUINT): BOOL; extdecl;
  2781. wglGetGenlockSourceDelayI3D: function(hDC: HDC; uDelay: PGLUINT): BOOL; extdecl;
  2782. wglQueryGenlockMaxSourceDelayI3D: function(hDC: HDC; uMaxLineDelay: PGLUINT; uMaxPixelDelay: PGLUINT): BOOL; extdecl;
  2783. function Load_WGL_I3D_genlock: Boolean;
  2784. {$ENDIF}
  2785. //***** GL_ARB_matrix_palette *****//
  2786. const
  2787. GL_MATRIX_PALETTE_ARB = $8840;
  2788. GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB = $8841;
  2789. GL_MAX_PALETTE_MATRICES_ARB = $8842;
  2790. GL_CURRENT_PALETTE_MATRIX_ARB = $8843;
  2791. GL_MATRIX_INDEX_ARRAY_ARB = $8844;
  2792. GL_CURRENT_MATRIX_INDEX_ARB = $8845;
  2793. GL_MATRIX_INDEX_ARRAY_SIZE_ARB = $8846;
  2794. GL_MATRIX_INDEX_ARRAY_TYPE_ARB = $8847;
  2795. GL_MATRIX_INDEX_ARRAY_STRIDE_ARB = $8848;
  2796. GL_MATRIX_INDEX_ARRAY_POINTER_ARB = $8849;
  2797. var
  2798. glCurrentPaletteMatrixARB: procedure(index: GLint); extdecl;
  2799. glMatrixIndexubvARB: procedure(size: GLint; indices: PGLubyte); extdecl;
  2800. glMatrixIndexusvARB: procedure(size: GLint; indices: PGLushort); extdecl;
  2801. glMatrixIndexuivARB: procedure(size: GLint; indices: PGLuint); extdecl;
  2802. glMatrixIndexPointerARB: procedure(size: GLint; _type: GLenum; stride: GLsizei; pointer: PGLvoid); extdecl;
  2803. function Load_GL_ARB_matrix_palette: Boolean;
  2804. //***** GL_NV_element_array *****//
  2805. const
  2806. GL_ELEMENT_ARRAY_TYPE_NV = $8769;
  2807. GL_ELEMENT_ARRAY_POINTER_NV = $876A;
  2808. var
  2809. glElementPointerNV: procedure(_type: GLenum; const pointer: PGLvoid); extdecl;
  2810. glDrawElementArrayNV: procedure(mode: GLenum; first: GLint; count: GLsizei); extdecl;
  2811. glDrawRangeElementArrayNV: procedure(mode: GLenum; start: GLuint; _end: GLuint; first: GLint; count: GLsizei); extdecl;
  2812. glMultiDrawElementArrayNV: procedure(mode: GLenum; const first: PGLint; const count: PGLsizei; primcount: GLsizei); extdecl;
  2813. glMultiDrawRangeElementArrayNV: procedure(mode: GLenum; start: GLuint; _end: GLuint; const first: PGLint; const count: PGLsizei; primcount: GLsizei); extdecl;
  2814. function Load_GL_NV_element_array: Boolean;
  2815. //***** GL_NV_float_buffer *****//
  2816. const
  2817. GL_FLOAT_R_NV = $8880;
  2818. GL_FLOAT_RG_NV = $8881;
  2819. GL_FLOAT_RGB_NV = $8882;
  2820. GL_FLOAT_RGBA_NV = $8883;
  2821. GL_FLOAT_R16_NV = $8884;
  2822. GL_FLOAT_R32_NV = $8885;
  2823. GL_FLOAT_RG16_NV = $8886;
  2824. GL_FLOAT_RG32_NV = $8887;
  2825. GL_FLOAT_RGB16_NV = $8888;
  2826. GL_FLOAT_RGB32_NV = $8889;
  2827. GL_FLOAT_RGBA16_NV = $888A;
  2828. GL_FLOAT_RGBA32_NV = $888B;
  2829. GL_TEXTURE_FLOAT_COMPONENTS_NV = $888C;
  2830. GL_FLOAT_CLEAR_COLOR_VALUE_NV = $888D;
  2831. GL_FLOAT_RGBA_MODE_NV = $888E;
  2832. {$IFDEF Win32}
  2833. WGL_FLOAT_COMPONENTS_NV = $20B0;
  2834. WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV = $20B1;
  2835. WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV = $20B2;
  2836. WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV = $20B3;
  2837. WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV = $20B4;
  2838. WGL_TEXTURE_FLOAT_R_NV = $20B5;
  2839. WGL_TEXTURE_FLOAT_RG_NV = $20B6;
  2840. WGL_TEXTURE_FLOAT_RGB_NV = $20B7;
  2841. WGL_TEXTURE_FLOAT_RGBA_NV = $20B8;
  2842. {$ENDIF}
  2843. function Load_GL_NV_float_buffer: Boolean;
  2844. //***** GL_NV_fragment_program *****//
  2845. const
  2846. GL_FRAGMENT_PROGRAM_NV = $8870;
  2847. GL_MAX_TEXTURE_COORDS_NV = $8871;
  2848. GL_MAX_TEXTURE_IMAGE_UNITS_NV = $8872;
  2849. GL_FRAGMENT_PROGRAM_BINDING_NV = $8873;
  2850. GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV = $8868;
  2851. GL_PROGRAM_ERROR_STRING_NV = $8874;
  2852. var
  2853. glProgramNamedParameter4fNV: procedure(id: GLuint; len: GLsizei; const name: PGLubyte; x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); extdecl;
  2854. glProgramNamedParameter4dNV: procedure(id: GLuint; len: GLsizei; const name: PGLubyte; x: GLdouble; y: GLdouble; z: GLdouble; w: GLdouble); extdecl;
  2855. glGetProgramNamedParameterfvNV: procedure(id: GLuint; len: GLsizei; const name: PGLubyte; params: PGLfloat); extdecl;
  2856. glGetProgramNamedParameterdvNV: procedure(id: GLuint; len: GLsizei; const name: PGLubyte; params: PGLdouble); extdecl;
  2857. // glProgramLocalParameter4dARB { already defined }
  2858. // glProgramLocalParameter4dvARB { already defined }
  2859. // glProgramLocalParameter4fARB { already defined }
  2860. // glProgramLocalParameter4fvARB { already defined }
  2861. // glGetProgramLocalParameterdvARB { already defined }
  2862. // glGetProgramLocalParameterfvARB { already defined }
  2863. function Load_GL_NV_fragment_program: Boolean;
  2864. //***** GL_NV_primitive_restart *****//
  2865. const
  2866. GL_PRIMITIVE_RESTART_NV = $8558;
  2867. GL_PRIMITIVE_RESTART_INDEX_NV = $8559;
  2868. var
  2869. glPrimitiveRestartNV: procedure(); extdecl;
  2870. glPrimitiveRestartIndexNV: procedure(index: GLuint); extdecl;
  2871. function Load_GL_NV_primitive_restart: Boolean;
  2872. //***** GL_NV_vertex_program2 *****//
  2873. function Load_GL_NV_vertex_program2: Boolean;
  2874. implementation
  2875. {$IFNDEF Win32}
  2876. function wglGetProcAddress(proc: PChar): Pointer;
  2877. begin
  2878. Result := GetProcAddress(LibGL, proc);
  2879. end;
  2880. {$ENDIF}
  2881. function glext_ExtensionSupported(const extension: String; const searchIn: String): Boolean;
  2882. var
  2883. extensions: PChar;
  2884. start: PChar;
  2885. where, terminator: PChar;
  2886. begin
  2887. if (Pos(' ', extension) <> 0) or (extension = '') then
  2888. begin
  2889. Result := FALSE;
  2890. Exit;
  2891. end;
  2892. if searchIn = '' then extensions := PChar(glGetString(GL_EXTENSIONS))
  2893. else extensions := PChar(searchIn);
  2894. start := extensions;
  2895. while TRUE do
  2896. begin
  2897. where := StrPos(start, PChar(extension));
  2898. if where = nil then Break;
  2899. terminator := Pointer(Integer(where) + Length(extension));
  2900. if (where = start) or (PChar(Integer(where) - 1)^ = ' ') then
  2901. begin
  2902. if (terminator^ = ' ') or (terminator^ = #0) then
  2903. begin
  2904. Result := TRUE;
  2905. Exit;
  2906. end;
  2907. end;
  2908. start := terminator;
  2909. end;
  2910. Result := FALSE;
  2911. end;
  2912. function Load_GL_version_1_2: Boolean;
  2913. var
  2914. extstring: String;
  2915. begin
  2916. Result := FALSE;
  2917. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  2918. glBlendColor := wglGetProcAddress('glBlendColor');
  2919. if not Assigned(glBlendColor) then Exit;
  2920. glBlendEquation := wglGetProcAddress('glBlendEquation');
  2921. if not Assigned(glBlendEquation) then Exit;
  2922. glDrawRangeElements := wglGetProcAddress('glDrawRangeElements');
  2923. if not Assigned(glDrawRangeElements) then Exit;
  2924. glColorTable := wglGetProcAddress('glColorTable');
  2925. if not Assigned(glColorTable) then Exit;
  2926. glColorTableParameterfv := wglGetProcAddress('glColorTableParameterfv');
  2927. if not Assigned(glColorTableParameterfv) then Exit;
  2928. glColorTableParameteriv := wglGetProcAddress('glColorTableParameteriv');
  2929. if not Assigned(glColorTableParameteriv) then Exit;
  2930. glCopyColorTable := wglGetProcAddress('glCopyColorTable');
  2931. if not Assigned(glCopyColorTable) then Exit;
  2932. glGetColorTable := wglGetProcAddress('glGetColorTable');
  2933. if not Assigned(glGetColorTable) then Exit;
  2934. glGetColorTableParameterfv := wglGetProcAddress('glGetColorTableParameterfv');
  2935. if not Assigned(glGetColorTableParameterfv) then Exit;
  2936. glGetColorTableParameteriv := wglGetProcAddress('glGetColorTableParameteriv');
  2937. if not Assigned(glGetColorTableParameteriv) then Exit;
  2938. glColorSubTable := wglGetProcAddress('glColorSubTable');
  2939. if not Assigned(glColorSubTable) then Exit;
  2940. glCopyColorSubTable := wglGetProcAddress('glCopyColorSubTable');
  2941. if not Assigned(glCopyColorSubTable) then Exit;
  2942. glConvolutionFilter1D := wglGetProcAddress('glConvolutionFilter1D');
  2943. if not Assigned(glConvolutionFilter1D) then Exit;
  2944. glConvolutionFilter2D := wglGetProcAddress('glConvolutionFilter2D');
  2945. if not Assigned(glConvolutionFilter2D) then Exit;
  2946. glConvolutionParameterf := wglGetProcAddress('glConvolutionParameterf');
  2947. if not Assigned(glConvolutionParameterf) then Exit;
  2948. glConvolutionParameterfv := wglGetProcAddress('glConvolutionParameterfv');
  2949. if not Assigned(glConvolutionParameterfv) then Exit;
  2950. glConvolutionParameteri := wglGetProcAddress('glConvolutionParameteri');
  2951. if not Assigned(glConvolutionParameteri) then Exit;
  2952. glConvolutionParameteriv := wglGetProcAddress('glConvolutionParameteriv');
  2953. if not Assigned(glConvolutionParameteriv) then Exit;
  2954. glCopyConvolutionFilter1D := wglGetProcAddress('glCopyConvolutionFilter1D');
  2955. if not Assigned(glCopyConvolutionFilter1D) then Exit;
  2956. glCopyConvolutionFilter2D := wglGetProcAddress('glCopyConvolutionFilter2D');
  2957. if not Assigned(glCopyConvolutionFilter2D) then Exit;
  2958. glGetConvolutionFilter := wglGetProcAddress('glGetConvolutionFilter');
  2959. if not Assigned(glGetConvolutionFilter) then Exit;
  2960. glGetConvolutionParameterfv := wglGetProcAddress('glGetConvolutionParameterfv');
  2961. if not Assigned(glGetConvolutionParameterfv) then Exit;
  2962. glGetConvolutionParameteriv := wglGetProcAddress('glGetConvolutionParameteriv');
  2963. if not Assigned(glGetConvolutionParameteriv) then Exit;
  2964. glGetSeparableFilter := wglGetProcAddress('glGetSeparableFilter');
  2965. if not Assigned(glGetSeparableFilter) then Exit;
  2966. glSeparableFilter2D := wglGetProcAddress('glSeparableFilter2D');
  2967. if not Assigned(glSeparableFilter2D) then Exit;
  2968. glGetHistogram := wglGetProcAddress('glGetHistogram');
  2969. if not Assigned(glGetHistogram) then Exit;
  2970. glGetHistogramParameterfv := wglGetProcAddress('glGetHistogramParameterfv');
  2971. if not Assigned(glGetHistogramParameterfv) then Exit;
  2972. glGetHistogramParameteriv := wglGetProcAddress('glGetHistogramParameteriv');
  2973. if not Assigned(glGetHistogramParameteriv) then Exit;
  2974. glGetMinmax := wglGetProcAddress('glGetMinmax');
  2975. if not Assigned(glGetMinmax) then Exit;
  2976. glGetMinmaxParameterfv := wglGetProcAddress('glGetMinmaxParameterfv');
  2977. if not Assigned(glGetMinmaxParameterfv) then Exit;
  2978. glGetMinmaxParameteriv := wglGetProcAddress('glGetMinmaxParameteriv');
  2979. if not Assigned(glGetMinmaxParameteriv) then Exit;
  2980. glHistogram := wglGetProcAddress('glHistogram');
  2981. if not Assigned(glHistogram) then Exit;
  2982. glMinmax := wglGetProcAddress('glMinmax');
  2983. if not Assigned(glMinmax) then Exit;
  2984. glResetHistogram := wglGetProcAddress('glResetHistogram');
  2985. if not Assigned(glResetHistogram) then Exit;
  2986. glResetMinmax := wglGetProcAddress('glResetMinmax');
  2987. if not Assigned(glResetMinmax) then Exit;
  2988. glTexImage3D := wglGetProcAddress('glTexImage3D');
  2989. if not Assigned(glTexImage3D) then Exit;
  2990. glTexSubImage3D := wglGetProcAddress('glTexSubImage3D');
  2991. if not Assigned(glTexSubImage3D) then Exit;
  2992. glCopyTexSubImage3D := wglGetProcAddress('glCopyTexSubImage3D');
  2993. if not Assigned(glCopyTexSubImage3D) then Exit;
  2994. Result := TRUE;
  2995. end;
  2996. function Load_GL_ARB_imaging: Boolean;
  2997. var
  2998. extstring: String;
  2999. begin
  3000. Result := FALSE;
  3001. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3002. if glext_ExtensionSupported('GL_ARB_imaging', extstring) then
  3003. begin
  3004. Result := TRUE;
  3005. end;
  3006. end;
  3007. function Load_GL_version_1_3: Boolean;
  3008. var
  3009. extstring: String;
  3010. begin
  3011. Result := FALSE;
  3012. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3013. glActiveTexture := wglGetProcAddress('glActiveTexture');
  3014. if not Assigned(glActiveTexture) then Exit;
  3015. glClientActiveTexture := wglGetProcAddress('glClientActiveTexture');
  3016. if not Assigned(glClientActiveTexture) then Exit;
  3017. glMultiTexCoord1d := wglGetProcAddress('glMultiTexCoord1d');
  3018. if not Assigned(glMultiTexCoord1d) then Exit;
  3019. glMultiTexCoord1dv := wglGetProcAddress('glMultiTexCoord1dv');
  3020. if not Assigned(glMultiTexCoord1dv) then Exit;
  3021. glMultiTexCoord1f := wglGetProcAddress('glMultiTexCoord1f');
  3022. if not Assigned(glMultiTexCoord1f) then Exit;
  3023. glMultiTexCoord1fv := wglGetProcAddress('glMultiTexCoord1fv');
  3024. if not Assigned(glMultiTexCoord1fv) then Exit;
  3025. glMultiTexCoord1i := wglGetProcAddress('glMultiTexCoord1i');
  3026. if not Assigned(glMultiTexCoord1i) then Exit;
  3027. glMultiTexCoord1iv := wglGetProcAddress('glMultiTexCoord1iv');
  3028. if not Assigned(glMultiTexCoord1iv) then Exit;
  3029. glMultiTexCoord1s := wglGetProcAddress('glMultiTexCoord1s');
  3030. if not Assigned(glMultiTexCoord1s) then Exit;
  3031. glMultiTexCoord1sv := wglGetProcAddress('glMultiTexCoord1sv');
  3032. if not Assigned(glMultiTexCoord1sv) then Exit;
  3033. glMultiTexCoord2d := wglGetProcAddress('glMultiTexCoord2d');
  3034. if not Assigned(glMultiTexCoord2d) then Exit;
  3035. glMultiTexCoord2dv := wglGetProcAddress('glMultiTexCoord2dv');
  3036. if not Assigned(glMultiTexCoord2dv) then Exit;
  3037. glMultiTexCoord2f := wglGetProcAddress('glMultiTexCoord2f');
  3038. if not Assigned(glMultiTexCoord2f) then Exit;
  3039. glMultiTexCoord2fv := wglGetProcAddress('glMultiTexCoord2fv');
  3040. if not Assigned(glMultiTexCoord2fv) then Exit;
  3041. glMultiTexCoord2i := wglGetProcAddress('glMultiTexCoord2i');
  3042. if not Assigned(glMultiTexCoord2i) then Exit;
  3043. glMultiTexCoord2iv := wglGetProcAddress('glMultiTexCoord2iv');
  3044. if not Assigned(glMultiTexCoord2iv) then Exit;
  3045. glMultiTexCoord2s := wglGetProcAddress('glMultiTexCoord2s');
  3046. if not Assigned(glMultiTexCoord2s) then Exit;
  3047. glMultiTexCoord2sv := wglGetProcAddress('glMultiTexCoord2sv');
  3048. if not Assigned(glMultiTexCoord2sv) then Exit;
  3049. glMultiTexCoord3d := wglGetProcAddress('glMultiTexCoord3d');
  3050. if not Assigned(glMultiTexCoord3d) then Exit;
  3051. glMultiTexCoord3dv := wglGetProcAddress('glMultiTexCoord3dv');
  3052. if not Assigned(glMultiTexCoord3dv) then Exit;
  3053. glMultiTexCoord3f := wglGetProcAddress('glMultiTexCoord3f');
  3054. if not Assigned(glMultiTexCoord3f) then Exit;
  3055. glMultiTexCoord3fv := wglGetProcAddress('glMultiTexCoord3fv');
  3056. if not Assigned(glMultiTexCoord3fv) then Exit;
  3057. glMultiTexCoord3i := wglGetProcAddress('glMultiTexCoord3i');
  3058. if not Assigned(glMultiTexCoord3i) then Exit;
  3059. glMultiTexCoord3iv := wglGetProcAddress('glMultiTexCoord3iv');
  3060. if not Assigned(glMultiTexCoord3iv) then Exit;
  3061. glMultiTexCoord3s := wglGetProcAddress('glMultiTexCoord3s');
  3062. if not Assigned(glMultiTexCoord3s) then Exit;
  3063. glMultiTexCoord3sv := wglGetProcAddress('glMultiTexCoord3sv');
  3064. if not Assigned(glMultiTexCoord3sv) then Exit;
  3065. glMultiTexCoord4d := wglGetProcAddress('glMultiTexCoord4d');
  3066. if not Assigned(glMultiTexCoord4d) then Exit;
  3067. glMultiTexCoord4dv := wglGetProcAddress('glMultiTexCoord4dv');
  3068. if not Assigned(glMultiTexCoord4dv) then Exit;
  3069. glMultiTexCoord4f := wglGetProcAddress('glMultiTexCoord4f');
  3070. if not Assigned(glMultiTexCoord4f) then Exit;
  3071. glMultiTexCoord4fv := wglGetProcAddress('glMultiTexCoord4fv');
  3072. if not Assigned(glMultiTexCoord4fv) then Exit;
  3073. glMultiTexCoord4i := wglGetProcAddress('glMultiTexCoord4i');
  3074. if not Assigned(glMultiTexCoord4i) then Exit;
  3075. glMultiTexCoord4iv := wglGetProcAddress('glMultiTexCoord4iv');
  3076. if not Assigned(glMultiTexCoord4iv) then Exit;
  3077. glMultiTexCoord4s := wglGetProcAddress('glMultiTexCoord4s');
  3078. if not Assigned(glMultiTexCoord4s) then Exit;
  3079. glMultiTexCoord4sv := wglGetProcAddress('glMultiTexCoord4sv');
  3080. if not Assigned(glMultiTexCoord4sv) then Exit;
  3081. glLoadTransposeMatrixf := wglGetProcAddress('glLoadTransposeMatrixf');
  3082. if not Assigned(glLoadTransposeMatrixf) then Exit;
  3083. glLoadTransposeMatrixd := wglGetProcAddress('glLoadTransposeMatrixd');
  3084. if not Assigned(glLoadTransposeMatrixd) then Exit;
  3085. glMultTransposeMatrixf := wglGetProcAddress('glMultTransposeMatrixf');
  3086. if not Assigned(glMultTransposeMatrixf) then Exit;
  3087. glMultTransposeMatrixd := wglGetProcAddress('glMultTransposeMatrixd');
  3088. if not Assigned(glMultTransposeMatrixd) then Exit;
  3089. glSampleCoverage := wglGetProcAddress('glSampleCoverage');
  3090. if not Assigned(glSampleCoverage) then Exit;
  3091. glCompressedTexImage3D := wglGetProcAddress('glCompressedTexImage3D');
  3092. if not Assigned(glCompressedTexImage3D) then Exit;
  3093. glCompressedTexImage2D := wglGetProcAddress('glCompressedTexImage2D');
  3094. if not Assigned(glCompressedTexImage2D) then Exit;
  3095. glCompressedTexImage1D := wglGetProcAddress('glCompressedTexImage1D');
  3096. if not Assigned(glCompressedTexImage1D) then Exit;
  3097. glCompressedTexSubImage3D := wglGetProcAddress('glCompressedTexSubImage3D');
  3098. if not Assigned(glCompressedTexSubImage3D) then Exit;
  3099. glCompressedTexSubImage2D := wglGetProcAddress('glCompressedTexSubImage2D');
  3100. if not Assigned(glCompressedTexSubImage2D) then Exit;
  3101. glCompressedTexSubImage1D := wglGetProcAddress('glCompressedTexSubImage1D');
  3102. if not Assigned(glCompressedTexSubImage1D) then Exit;
  3103. glGetCompressedTexImage := wglGetProcAddress('glGetCompressedTexImage');
  3104. if not Assigned(glGetCompressedTexImage) then Exit;
  3105. Result := TRUE;
  3106. end;
  3107. function Load_GL_ARB_multitexture: Boolean;
  3108. var
  3109. extstring: String;
  3110. begin
  3111. Result := FALSE;
  3112. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3113. if glext_ExtensionSupported('GL_ARB_multitexture', extstring) then
  3114. begin
  3115. glActiveTextureARB := wglGetProcAddress('glActiveTextureARB');
  3116. if not Assigned(glActiveTextureARB) then Exit;
  3117. glClientActiveTextureARB := wglGetProcAddress('glClientActiveTextureARB');
  3118. if not Assigned(glClientActiveTextureARB) then Exit;
  3119. glMultiTexCoord1dARB := wglGetProcAddress('glMultiTexCoord1dARB');
  3120. if not Assigned(glMultiTexCoord1dARB) then Exit;
  3121. glMultiTexCoord1dvARB := wglGetProcAddress('glMultiTexCoord1dvARB');
  3122. if not Assigned(glMultiTexCoord1dvARB) then Exit;
  3123. glMultiTexCoord1fARB := wglGetProcAddress('glMultiTexCoord1fARB');
  3124. if not Assigned(glMultiTexCoord1fARB) then Exit;
  3125. glMultiTexCoord1fvARB := wglGetProcAddress('glMultiTexCoord1fvARB');
  3126. if not Assigned(glMultiTexCoord1fvARB) then Exit;
  3127. glMultiTexCoord1iARB := wglGetProcAddress('glMultiTexCoord1iARB');
  3128. if not Assigned(glMultiTexCoord1iARB) then Exit;
  3129. glMultiTexCoord1ivARB := wglGetProcAddress('glMultiTexCoord1ivARB');
  3130. if not Assigned(glMultiTexCoord1ivARB) then Exit;
  3131. glMultiTexCoord1sARB := wglGetProcAddress('glMultiTexCoord1sARB');
  3132. if not Assigned(glMultiTexCoord1sARB) then Exit;
  3133. glMultiTexCoord1svARB := wglGetProcAddress('glMultiTexCoord1svARB');
  3134. if not Assigned(glMultiTexCoord1svARB) then Exit;
  3135. glMultiTexCoord2dARB := wglGetProcAddress('glMultiTexCoord2dARB');
  3136. if not Assigned(glMultiTexCoord2dARB) then Exit;
  3137. glMultiTexCoord2dvARB := wglGetProcAddress('glMultiTexCoord2dvARB');
  3138. if not Assigned(glMultiTexCoord2dvARB) then Exit;
  3139. glMultiTexCoord2fARB := wglGetProcAddress('glMultiTexCoord2fARB');
  3140. if not Assigned(glMultiTexCoord2fARB) then Exit;
  3141. glMultiTexCoord2fvARB := wglGetProcAddress('glMultiTexCoord2fvARB');
  3142. if not Assigned(glMultiTexCoord2fvARB) then Exit;
  3143. glMultiTexCoord2iARB := wglGetProcAddress('glMultiTexCoord2iARB');
  3144. if not Assigned(glMultiTexCoord2iARB) then Exit;
  3145. glMultiTexCoord2ivARB := wglGetProcAddress('glMultiTexCoord2ivARB');
  3146. if not Assigned(glMultiTexCoord2ivARB) then Exit;
  3147. glMultiTexCoord2sARB := wglGetProcAddress('glMultiTexCoord2sARB');
  3148. if not Assigned(glMultiTexCoord2sARB) then Exit;
  3149. glMultiTexCoord2svARB := wglGetProcAddress('glMultiTexCoord2svARB');
  3150. if not Assigned(glMultiTexCoord2svARB) then Exit;
  3151. glMultiTexCoord3dARB := wglGetProcAddress('glMultiTexCoord3dARB');
  3152. if not Assigned(glMultiTexCoord3dARB) then Exit;
  3153. glMultiTexCoord3dvARB := wglGetProcAddress('glMultiTexCoord3dvARB');
  3154. if not Assigned(glMultiTexCoord3dvARB) then Exit;
  3155. glMultiTexCoord3fARB := wglGetProcAddress('glMultiTexCoord3fARB');
  3156. if not Assigned(glMultiTexCoord3fARB) then Exit;
  3157. glMultiTexCoord3fvARB := wglGetProcAddress('glMultiTexCoord3fvARB');
  3158. if not Assigned(glMultiTexCoord3fvARB) then Exit;
  3159. glMultiTexCoord3iARB := wglGetProcAddress('glMultiTexCoord3iARB');
  3160. if not Assigned(glMultiTexCoord3iARB) then Exit;
  3161. glMultiTexCoord3ivARB := wglGetProcAddress('glMultiTexCoord3ivARB');
  3162. if not Assigned(glMultiTexCoord3ivARB) then Exit;
  3163. glMultiTexCoord3sARB := wglGetProcAddress('glMultiTexCoord3sARB');
  3164. if not Assigned(glMultiTexCoord3sARB) then Exit;
  3165. glMultiTexCoord3svARB := wglGetProcAddress('glMultiTexCoord3svARB');
  3166. if not Assigned(glMultiTexCoord3svARB) then Exit;
  3167. glMultiTexCoord4dARB := wglGetProcAddress('glMultiTexCoord4dARB');
  3168. if not Assigned(glMultiTexCoord4dARB) then Exit;
  3169. glMultiTexCoord4dvARB := wglGetProcAddress('glMultiTexCoord4dvARB');
  3170. if not Assigned(glMultiTexCoord4dvARB) then Exit;
  3171. glMultiTexCoord4fARB := wglGetProcAddress('glMultiTexCoord4fARB');
  3172. if not Assigned(glMultiTexCoord4fARB) then Exit;
  3173. glMultiTexCoord4fvARB := wglGetProcAddress('glMultiTexCoord4fvARB');
  3174. if not Assigned(glMultiTexCoord4fvARB) then Exit;
  3175. glMultiTexCoord4iARB := wglGetProcAddress('glMultiTexCoord4iARB');
  3176. if not Assigned(glMultiTexCoord4iARB) then Exit;
  3177. glMultiTexCoord4ivARB := wglGetProcAddress('glMultiTexCoord4ivARB');
  3178. if not Assigned(glMultiTexCoord4ivARB) then Exit;
  3179. glMultiTexCoord4sARB := wglGetProcAddress('glMultiTexCoord4sARB');
  3180. if not Assigned(glMultiTexCoord4sARB) then Exit;
  3181. glMultiTexCoord4svARB := wglGetProcAddress('glMultiTexCoord4svARB');
  3182. if not Assigned(glMultiTexCoord4svARB) then Exit;
  3183. Result := TRUE;
  3184. end;
  3185. end;
  3186. function Load_GL_ARB_transpose_matrix: Boolean;
  3187. var
  3188. extstring: String;
  3189. begin
  3190. Result := FALSE;
  3191. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3192. if glext_ExtensionSupported('GL_ARB_transpose_matrix', extstring) then
  3193. begin
  3194. glLoadTransposeMatrixfARB := wglGetProcAddress('glLoadTransposeMatrixfARB');
  3195. if not Assigned(glLoadTransposeMatrixfARB) then Exit;
  3196. glLoadTransposeMatrixdARB := wglGetProcAddress('glLoadTransposeMatrixdARB');
  3197. if not Assigned(glLoadTransposeMatrixdARB) then Exit;
  3198. glMultTransposeMatrixfARB := wglGetProcAddress('glMultTransposeMatrixfARB');
  3199. if not Assigned(glMultTransposeMatrixfARB) then Exit;
  3200. glMultTransposeMatrixdARB := wglGetProcAddress('glMultTransposeMatrixdARB');
  3201. if not Assigned(glMultTransposeMatrixdARB) then Exit;
  3202. Result := TRUE;
  3203. end;
  3204. end;
  3205. function Load_GL_ARB_multisample: Boolean;
  3206. var
  3207. extstring: String;
  3208. begin
  3209. Result := FALSE;
  3210. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3211. if glext_ExtensionSupported('GL_ARB_multisample', extstring) then
  3212. begin
  3213. glSampleCoverageARB := wglGetProcAddress('glSampleCoverageARB');
  3214. if not Assigned(glSampleCoverageARB) then Exit;
  3215. Result := TRUE;
  3216. end;
  3217. end;
  3218. function Load_GL_ARB_texture_env_add: Boolean;
  3219. var
  3220. extstring: String;
  3221. begin
  3222. Result := FALSE;
  3223. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3224. if glext_ExtensionSupported('GL_ARB_texture_env_add', extstring) then
  3225. begin
  3226. Result := TRUE;
  3227. end;
  3228. end;
  3229. {$IFDEF Win32}
  3230. function Load_WGL_ARB_extensions_string: Boolean;
  3231. var
  3232. extstring: String;
  3233. begin
  3234. Result := FALSE;
  3235. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  3236. if not Assigned(wglGetExtensionsStringARB) then Exit;
  3237. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  3238. if glext_ExtensionSupported('WGL_ARB_extensions_string', extstring) then
  3239. begin
  3240. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  3241. if not Assigned(wglGetExtensionsStringARB) then Exit;
  3242. Result := TRUE;
  3243. end;
  3244. end;
  3245. function Load_WGL_ARB_buffer_region: Boolean;
  3246. var
  3247. extstring: String;
  3248. begin
  3249. Result := FALSE;
  3250. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  3251. if not Assigned(wglGetExtensionsStringARB) then Exit;
  3252. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  3253. if glext_ExtensionSupported('WGL_ARB_buffer_region', extstring) then
  3254. begin
  3255. wglCreateBufferRegionARB := wglGetProcAddress('wglCreateBufferRegionARB');
  3256. if not Assigned(wglCreateBufferRegionARB) then Exit;
  3257. wglDeleteBufferRegionARB := wglGetProcAddress('wglDeleteBufferRegionARB');
  3258. if not Assigned(wglDeleteBufferRegionARB) then Exit;
  3259. wglSaveBufferRegionARB := wglGetProcAddress('wglSaveBufferRegionARB');
  3260. if not Assigned(wglSaveBufferRegionARB) then Exit;
  3261. wglRestoreBufferRegionARB := wglGetProcAddress('wglRestoreBufferRegionARB');
  3262. if not Assigned(wglRestoreBufferRegionARB) then Exit;
  3263. Result := TRUE;
  3264. end;
  3265. end;
  3266. {$ENDIF}
  3267. function Load_GL_ARB_texture_cube_map: Boolean;
  3268. var
  3269. extstring: String;
  3270. begin
  3271. Result := FALSE;
  3272. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3273. if glext_ExtensionSupported('GL_ARB_texture_cube_map', extstring) then
  3274. begin
  3275. Result := TRUE;
  3276. end;
  3277. end;
  3278. function Load_GL_ARB_depth_texture: Boolean;
  3279. var
  3280. extstring: String;
  3281. begin
  3282. Result := FALSE;
  3283. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3284. if glext_ExtensionSupported('GL_ARB_depth_texture', extstring) then
  3285. begin
  3286. Result := TRUE;
  3287. end;
  3288. end;
  3289. function Load_GL_ARB_point_parameters: Boolean;
  3290. var
  3291. extstring: String;
  3292. begin
  3293. Result := FALSE;
  3294. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3295. if glext_ExtensionSupported('GL_ARB_point_parameters', extstring) then
  3296. begin
  3297. glPointParameterfARB := wglGetProcAddress('glPointParameterfARB');
  3298. if not Assigned(glPointParameterfARB) then Exit;
  3299. glPointParameterfvARB := wglGetProcAddress('glPointParameterfvARB');
  3300. if not Assigned(glPointParameterfvARB) then Exit;
  3301. Result := TRUE;
  3302. end;
  3303. end;
  3304. function Load_GL_ARB_shadow: Boolean;
  3305. var
  3306. extstring: String;
  3307. begin
  3308. Result := FALSE;
  3309. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3310. if glext_ExtensionSupported('GL_ARB_shadow', extstring) then
  3311. begin
  3312. Result := TRUE;
  3313. end;
  3314. end;
  3315. function Load_GL_ARB_shadow_ambient: Boolean;
  3316. var
  3317. extstring: String;
  3318. begin
  3319. Result := FALSE;
  3320. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3321. if glext_ExtensionSupported('GL_ARB_shadow_ambient', extstring) then
  3322. begin
  3323. Result := TRUE;
  3324. end;
  3325. end;
  3326. function Load_GL_ARB_texture_border_clamp: Boolean;
  3327. var
  3328. extstring: String;
  3329. begin
  3330. Result := FALSE;
  3331. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3332. if glext_ExtensionSupported('GL_ARB_texture_border_clamp', extstring) then
  3333. begin
  3334. Result := TRUE;
  3335. end;
  3336. end;
  3337. function Load_GL_ARB_texture_compression: Boolean;
  3338. var
  3339. extstring: String;
  3340. begin
  3341. Result := FALSE;
  3342. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3343. if glext_ExtensionSupported('GL_ARB_texture_compression', extstring) then
  3344. begin
  3345. glCompressedTexImage3DARB := wglGetProcAddress('glCompressedTexImage3DARB');
  3346. if not Assigned(glCompressedTexImage3DARB) then Exit;
  3347. glCompressedTexImage2DARB := wglGetProcAddress('glCompressedTexImage2DARB');
  3348. if not Assigned(glCompressedTexImage2DARB) then Exit;
  3349. glCompressedTexImage1DARB := wglGetProcAddress('glCompressedTexImage1DARB');
  3350. if not Assigned(glCompressedTexImage1DARB) then Exit;
  3351. glCompressedTexSubImage3DARB := wglGetProcAddress('glCompressedTexSubImage3DARB');
  3352. if not Assigned(glCompressedTexSubImage3DARB) then Exit;
  3353. glCompressedTexSubImage2DARB := wglGetProcAddress('glCompressedTexSubImage2DARB');
  3354. if not Assigned(glCompressedTexSubImage2DARB) then Exit;
  3355. glCompressedTexSubImage1DARB := wglGetProcAddress('glCompressedTexSubImage1DARB');
  3356. if not Assigned(glCompressedTexSubImage1DARB) then Exit;
  3357. glGetCompressedTexImageARB := wglGetProcAddress('glGetCompressedTexImageARB');
  3358. if not Assigned(glGetCompressedTexImageARB) then Exit;
  3359. Result := TRUE;
  3360. end;
  3361. end;
  3362. function Load_GL_ARB_texture_env_combine: Boolean;
  3363. var
  3364. extstring: String;
  3365. begin
  3366. Result := FALSE;
  3367. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3368. if glext_ExtensionSupported('GL_ARB_texture_env_combine', extstring) then
  3369. begin
  3370. Result := TRUE;
  3371. end;
  3372. end;
  3373. function Load_GL_ARB_texture_env_crossbar: Boolean;
  3374. var
  3375. extstring: String;
  3376. begin
  3377. Result := FALSE;
  3378. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3379. if glext_ExtensionSupported('GL_ARB_texture_env_crossbar', extstring) then
  3380. begin
  3381. Result := TRUE;
  3382. end;
  3383. end;
  3384. function Load_GL_ARB_texture_env_dot3: Boolean;
  3385. var
  3386. extstring: String;
  3387. begin
  3388. Result := FALSE;
  3389. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3390. if glext_ExtensionSupported('GL_ARB_texture_env_dot3', extstring) then
  3391. begin
  3392. Result := TRUE;
  3393. end;
  3394. end;
  3395. function Load_GL_ARB_texture_mirrored_repeat: Boolean;
  3396. var
  3397. extstring: String;
  3398. begin
  3399. Result := FALSE;
  3400. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3401. if glext_ExtensionSupported('GL_ARB_texture_mirrored_repeat', extstring) then
  3402. begin
  3403. Result := TRUE;
  3404. end;
  3405. end;
  3406. function Load_GL_ARB_vertex_blend: Boolean;
  3407. var
  3408. extstring: String;
  3409. begin
  3410. Result := FALSE;
  3411. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3412. if glext_ExtensionSupported('GL_ARB_vertex_blend', extstring) then
  3413. begin
  3414. glWeightbvARB := wglGetProcAddress('glWeightbvARB');
  3415. if not Assigned(glWeightbvARB) then Exit;
  3416. glWeightsvARB := wglGetProcAddress('glWeightsvARB');
  3417. if not Assigned(glWeightsvARB) then Exit;
  3418. glWeightivARB := wglGetProcAddress('glWeightivARB');
  3419. if not Assigned(glWeightivARB) then Exit;
  3420. glWeightfvARB := wglGetProcAddress('glWeightfvARB');
  3421. if not Assigned(glWeightfvARB) then Exit;
  3422. glWeightdvARB := wglGetProcAddress('glWeightdvARB');
  3423. if not Assigned(glWeightdvARB) then Exit;
  3424. glWeightvARB := wglGetProcAddress('glWeightvARB');
  3425. if not Assigned(glWeightvARB) then Exit;
  3426. glWeightubvARB := wglGetProcAddress('glWeightubvARB');
  3427. if not Assigned(glWeightubvARB) then Exit;
  3428. glWeightusvARB := wglGetProcAddress('glWeightusvARB');
  3429. if not Assigned(glWeightusvARB) then Exit;
  3430. glWeightuivARB := wglGetProcAddress('glWeightuivARB');
  3431. if not Assigned(glWeightuivARB) then Exit;
  3432. glWeightPointerARB := wglGetProcAddress('glWeightPointerARB');
  3433. if not Assigned(glWeightPointerARB) then Exit;
  3434. glVertexBlendARB := wglGetProcAddress('glVertexBlendARB');
  3435. if not Assigned(glVertexBlendARB) then Exit;
  3436. Result := TRUE;
  3437. end;
  3438. end;
  3439. function Load_GL_ARB_vertex_program: Boolean;
  3440. var
  3441. extstring: String;
  3442. begin
  3443. Result := FALSE;
  3444. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3445. if glext_ExtensionSupported('GL_ARB_vertex_program', extstring) then
  3446. begin
  3447. glVertexAttrib1sARB := wglGetProcAddress('glVertexAttrib1sARB');
  3448. if not Assigned(glVertexAttrib1sARB) then Exit;
  3449. glVertexAttrib1fARB := wglGetProcAddress('glVertexAttrib1fARB');
  3450. if not Assigned(glVertexAttrib1fARB) then Exit;
  3451. glVertexAttrib1dARB := wglGetProcAddress('glVertexAttrib1dARB');
  3452. if not Assigned(glVertexAttrib1dARB) then Exit;
  3453. glVertexAttrib2sARB := wglGetProcAddress('glVertexAttrib2sARB');
  3454. if not Assigned(glVertexAttrib2sARB) then Exit;
  3455. glVertexAttrib2fARB := wglGetProcAddress('glVertexAttrib2fARB');
  3456. if not Assigned(glVertexAttrib2fARB) then Exit;
  3457. glVertexAttrib2dARB := wglGetProcAddress('glVertexAttrib2dARB');
  3458. if not Assigned(glVertexAttrib2dARB) then Exit;
  3459. glVertexAttrib3sARB := wglGetProcAddress('glVertexAttrib3sARB');
  3460. if not Assigned(glVertexAttrib3sARB) then Exit;
  3461. glVertexAttrib3fARB := wglGetProcAddress('glVertexAttrib3fARB');
  3462. if not Assigned(glVertexAttrib3fARB) then Exit;
  3463. glVertexAttrib3dARB := wglGetProcAddress('glVertexAttrib3dARB');
  3464. if not Assigned(glVertexAttrib3dARB) then Exit;
  3465. glVertexAttrib4sARB := wglGetProcAddress('glVertexAttrib4sARB');
  3466. if not Assigned(glVertexAttrib4sARB) then Exit;
  3467. glVertexAttrib4fARB := wglGetProcAddress('glVertexAttrib4fARB');
  3468. if not Assigned(glVertexAttrib4fARB) then Exit;
  3469. glVertexAttrib4dARB := wglGetProcAddress('glVertexAttrib4dARB');
  3470. if not Assigned(glVertexAttrib4dARB) then Exit;
  3471. glVertexAttrib4NubARB := wglGetProcAddress('glVertexAttrib4NubARB');
  3472. if not Assigned(glVertexAttrib4NubARB) then Exit;
  3473. glVertexAttrib1svARB := wglGetProcAddress('glVertexAttrib1svARB');
  3474. if not Assigned(glVertexAttrib1svARB) then Exit;
  3475. glVertexAttrib1fvARB := wglGetProcAddress('glVertexAttrib1fvARB');
  3476. if not Assigned(glVertexAttrib1fvARB) then Exit;
  3477. glVertexAttrib1dvARB := wglGetProcAddress('glVertexAttrib1dvARB');
  3478. if not Assigned(glVertexAttrib1dvARB) then Exit;
  3479. glVertexAttrib2svARB := wglGetProcAddress('glVertexAttrib2svARB');
  3480. if not Assigned(glVertexAttrib2svARB) then Exit;
  3481. glVertexAttrib2fvARB := wglGetProcAddress('glVertexAttrib2fvARB');
  3482. if not Assigned(glVertexAttrib2fvARB) then Exit;
  3483. glVertexAttrib2dvARB := wglGetProcAddress('glVertexAttrib2dvARB');
  3484. if not Assigned(glVertexAttrib2dvARB) then Exit;
  3485. glVertexAttrib3svARB := wglGetProcAddress('glVertexAttrib3svARB');
  3486. if not Assigned(glVertexAttrib3svARB) then Exit;
  3487. glVertexAttrib3fvARB := wglGetProcAddress('glVertexAttrib3fvARB');
  3488. if not Assigned(glVertexAttrib3fvARB) then Exit;
  3489. glVertexAttrib3dvARB := wglGetProcAddress('glVertexAttrib3dvARB');
  3490. if not Assigned(glVertexAttrib3dvARB) then Exit;
  3491. glVertexAttrib4bvARB := wglGetProcAddress('glVertexAttrib4bvARB');
  3492. if not Assigned(glVertexAttrib4bvARB) then Exit;
  3493. glVertexAttrib4svARB := wglGetProcAddress('glVertexAttrib4svARB');
  3494. if not Assigned(glVertexAttrib4svARB) then Exit;
  3495. glVertexAttrib4ivARB := wglGetProcAddress('glVertexAttrib4ivARB');
  3496. if not Assigned(glVertexAttrib4ivARB) then Exit;
  3497. glVertexAttrib4ubvARB := wglGetProcAddress('glVertexAttrib4ubvARB');
  3498. if not Assigned(glVertexAttrib4ubvARB) then Exit;
  3499. glVertexAttrib4usvARB := wglGetProcAddress('glVertexAttrib4usvARB');
  3500. if not Assigned(glVertexAttrib4usvARB) then Exit;
  3501. glVertexAttrib4uivARB := wglGetProcAddress('glVertexAttrib4uivARB');
  3502. if not Assigned(glVertexAttrib4uivARB) then Exit;
  3503. glVertexAttrib4fvARB := wglGetProcAddress('glVertexAttrib4fvARB');
  3504. if not Assigned(glVertexAttrib4fvARB) then Exit;
  3505. glVertexAttrib4dvARB := wglGetProcAddress('glVertexAttrib4dvARB');
  3506. if not Assigned(glVertexAttrib4dvARB) then Exit;
  3507. glVertexAttrib4NbvARB := wglGetProcAddress('glVertexAttrib4NbvARB');
  3508. if not Assigned(glVertexAttrib4NbvARB) then Exit;
  3509. glVertexAttrib4NsvARB := wglGetProcAddress('glVertexAttrib4NsvARB');
  3510. if not Assigned(glVertexAttrib4NsvARB) then Exit;
  3511. glVertexAttrib4NivARB := wglGetProcAddress('glVertexAttrib4NivARB');
  3512. if not Assigned(glVertexAttrib4NivARB) then Exit;
  3513. glVertexAttrib4NubvARB := wglGetProcAddress('glVertexAttrib4NubvARB');
  3514. if not Assigned(glVertexAttrib4NubvARB) then Exit;
  3515. glVertexAttrib4NusvARB := wglGetProcAddress('glVertexAttrib4NusvARB');
  3516. if not Assigned(glVertexAttrib4NusvARB) then Exit;
  3517. glVertexAttrib4NuivARB := wglGetProcAddress('glVertexAttrib4NuivARB');
  3518. if not Assigned(glVertexAttrib4NuivARB) then Exit;
  3519. glVertexAttribPointerARB := wglGetProcAddress('glVertexAttribPointerARB');
  3520. if not Assigned(glVertexAttribPointerARB) then Exit;
  3521. glEnableVertexAttribArrayARB := wglGetProcAddress('glEnableVertexAttribArrayARB');
  3522. if not Assigned(glEnableVertexAttribArrayARB) then Exit;
  3523. glDisableVertexAttribArrayARB := wglGetProcAddress('glDisableVertexAttribArrayARB');
  3524. if not Assigned(glDisableVertexAttribArrayARB) then Exit;
  3525. glProgramStringARB := wglGetProcAddress('glProgramStringARB');
  3526. if not Assigned(glProgramStringARB) then Exit;
  3527. glBindProgramARB := wglGetProcAddress('glBindProgramARB');
  3528. if not Assigned(glBindProgramARB) then Exit;
  3529. glDeleteProgramsARB := wglGetProcAddress('glDeleteProgramsARB');
  3530. if not Assigned(glDeleteProgramsARB) then Exit;
  3531. glGenProgramsARB := wglGetProcAddress('glGenProgramsARB');
  3532. if not Assigned(glGenProgramsARB) then Exit;
  3533. glProgramEnvParameter4dARB := wglGetProcAddress('glProgramEnvParameter4dARB');
  3534. if not Assigned(glProgramEnvParameter4dARB) then Exit;
  3535. glProgramEnvParameter4dvARB := wglGetProcAddress('glProgramEnvParameter4dvARB');
  3536. if not Assigned(glProgramEnvParameter4dvARB) then Exit;
  3537. glProgramEnvParameter4fARB := wglGetProcAddress('glProgramEnvParameter4fARB');
  3538. if not Assigned(glProgramEnvParameter4fARB) then Exit;
  3539. glProgramEnvParameter4fvARB := wglGetProcAddress('glProgramEnvParameter4fvARB');
  3540. if not Assigned(glProgramEnvParameter4fvARB) then Exit;
  3541. glProgramLocalParameter4dARB := wglGetProcAddress('glProgramLocalParameter4dARB');
  3542. if not Assigned(glProgramLocalParameter4dARB) then Exit;
  3543. glProgramLocalParameter4dvARB := wglGetProcAddress('glProgramLocalParameter4dvARB');
  3544. if not Assigned(glProgramLocalParameter4dvARB) then Exit;
  3545. glProgramLocalParameter4fARB := wglGetProcAddress('glProgramLocalParameter4fARB');
  3546. if not Assigned(glProgramLocalParameter4fARB) then Exit;
  3547. glProgramLocalParameter4fvARB := wglGetProcAddress('glProgramLocalParameter4fvARB');
  3548. if not Assigned(glProgramLocalParameter4fvARB) then Exit;
  3549. glGetProgramEnvParameterdvARB := wglGetProcAddress('glGetProgramEnvParameterdvARB');
  3550. if not Assigned(glGetProgramEnvParameterdvARB) then Exit;
  3551. glGetProgramEnvParameterfvARB := wglGetProcAddress('glGetProgramEnvParameterfvARB');
  3552. if not Assigned(glGetProgramEnvParameterfvARB) then Exit;
  3553. glGetProgramLocalParameterdvARB := wglGetProcAddress('glGetProgramLocalParameterdvARB');
  3554. if not Assigned(glGetProgramLocalParameterdvARB) then Exit;
  3555. glGetProgramLocalParameterfvARB := wglGetProcAddress('glGetProgramLocalParameterfvARB');
  3556. if not Assigned(glGetProgramLocalParameterfvARB) then Exit;
  3557. glGetProgramivARB := wglGetProcAddress('glGetProgramivARB');
  3558. if not Assigned(glGetProgramivARB) then Exit;
  3559. glGetProgramStringARB := wglGetProcAddress('glGetProgramStringARB');
  3560. if not Assigned(glGetProgramStringARB) then Exit;
  3561. glGetVertexAttribdvARB := wglGetProcAddress('glGetVertexAttribdvARB');
  3562. if not Assigned(glGetVertexAttribdvARB) then Exit;
  3563. glGetVertexAttribfvARB := wglGetProcAddress('glGetVertexAttribfvARB');
  3564. if not Assigned(glGetVertexAttribfvARB) then Exit;
  3565. glGetVertexAttribivARB := wglGetProcAddress('glGetVertexAttribivARB');
  3566. if not Assigned(glGetVertexAttribivARB) then Exit;
  3567. glGetVertexAttribPointervARB := wglGetProcAddress('glGetVertexAttribPointervARB');
  3568. if not Assigned(glGetVertexAttribPointervARB) then Exit;
  3569. glIsProgramARB := wglGetProcAddress('glIsProgramARB');
  3570. if not Assigned(glIsProgramARB) then Exit;
  3571. Result := TRUE;
  3572. end;
  3573. end;
  3574. function Load_GL_ARB_window_pos: Boolean;
  3575. var
  3576. extstring: String;
  3577. begin
  3578. Result := FALSE;
  3579. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3580. if glext_ExtensionSupported('GL_ARB_window_pos', extstring) then
  3581. begin
  3582. glWindowPos2dARB := wglGetProcAddress('glWindowPos2dARB');
  3583. if not Assigned(glWindowPos2dARB) then Exit;
  3584. glWindowPos2fARB := wglGetProcAddress('glWindowPos2fARB');
  3585. if not Assigned(glWindowPos2fARB) then Exit;
  3586. glWindowPos2iARB := wglGetProcAddress('glWindowPos2iARB');
  3587. if not Assigned(glWindowPos2iARB) then Exit;
  3588. glWindowPos2sARB := wglGetProcAddress('glWindowPos2sARB');
  3589. if not Assigned(glWindowPos2sARB) then Exit;
  3590. glWindowPos2dvARB := wglGetProcAddress('glWindowPos2dvARB');
  3591. if not Assigned(glWindowPos2dvARB) then Exit;
  3592. glWindowPos2fvARB := wglGetProcAddress('glWindowPos2fvARB');
  3593. if not Assigned(glWindowPos2fvARB) then Exit;
  3594. glWindowPos2ivARB := wglGetProcAddress('glWindowPos2ivARB');
  3595. if not Assigned(glWindowPos2ivARB) then Exit;
  3596. glWindowPos2svARB := wglGetProcAddress('glWindowPos2svARB');
  3597. if not Assigned(glWindowPos2svARB) then Exit;
  3598. glWindowPos3dARB := wglGetProcAddress('glWindowPos3dARB');
  3599. if not Assigned(glWindowPos3dARB) then Exit;
  3600. glWindowPos3fARB := wglGetProcAddress('glWindowPos3fARB');
  3601. if not Assigned(glWindowPos3fARB) then Exit;
  3602. glWindowPos3iARB := wglGetProcAddress('glWindowPos3iARB');
  3603. if not Assigned(glWindowPos3iARB) then Exit;
  3604. glWindowPos3sARB := wglGetProcAddress('glWindowPos3sARB');
  3605. if not Assigned(glWindowPos3sARB) then Exit;
  3606. glWindowPos3dvARB := wglGetProcAddress('glWindowPos3dvARB');
  3607. if not Assigned(glWindowPos3dvARB) then Exit;
  3608. glWindowPos3fvARB := wglGetProcAddress('glWindowPos3fvARB');
  3609. if not Assigned(glWindowPos3fvARB) then Exit;
  3610. glWindowPos3ivARB := wglGetProcAddress('glWindowPos3ivARB');
  3611. if not Assigned(glWindowPos3ivARB) then Exit;
  3612. glWindowPos3svARB := wglGetProcAddress('glWindowPos3svARB');
  3613. if not Assigned(glWindowPos3svARB) then Exit;
  3614. Result := TRUE;
  3615. end;
  3616. end;
  3617. function Load_GL_EXT_422_pixels: Boolean;
  3618. var
  3619. extstring: String;
  3620. begin
  3621. Result := FALSE;
  3622. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3623. if glext_ExtensionSupported('GL_EXT_422_pixels', extstring) then
  3624. begin
  3625. Result := TRUE;
  3626. end;
  3627. end;
  3628. function Load_GL_EXT_abgr: Boolean;
  3629. var
  3630. extstring: String;
  3631. begin
  3632. Result := FALSE;
  3633. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3634. if glext_ExtensionSupported('GL_EXT_abgr', extstring) then
  3635. begin
  3636. Result := TRUE;
  3637. end;
  3638. end;
  3639. function Load_GL_EXT_bgra: Boolean;
  3640. var
  3641. extstring: String;
  3642. begin
  3643. Result := FALSE;
  3644. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3645. if glext_ExtensionSupported('GL_EXT_bgra', extstring) then
  3646. begin
  3647. Result := TRUE;
  3648. end;
  3649. end;
  3650. function Load_GL_EXT_blend_color: Boolean;
  3651. var
  3652. extstring: String;
  3653. begin
  3654. Result := FALSE;
  3655. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3656. if glext_ExtensionSupported('GL_EXT_blend_color', extstring) then
  3657. begin
  3658. glBlendColorEXT := wglGetProcAddress('glBlendColorEXT');
  3659. if not Assigned(glBlendColorEXT) then Exit;
  3660. Result := TRUE;
  3661. end;
  3662. end;
  3663. function Load_GL_EXT_blend_func_separate: Boolean;
  3664. var
  3665. extstring: String;
  3666. begin
  3667. Result := FALSE;
  3668. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3669. if glext_ExtensionSupported('GL_EXT_blend_func_separate', extstring) then
  3670. begin
  3671. glBlendFuncSeparateEXT := wglGetProcAddress('glBlendFuncSeparateEXT');
  3672. if not Assigned(glBlendFuncSeparateEXT) then Exit;
  3673. Result := TRUE;
  3674. end;
  3675. end;
  3676. function Load_GL_EXT_blend_logic_op: Boolean;
  3677. var
  3678. extstring: String;
  3679. begin
  3680. Result := FALSE;
  3681. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3682. if glext_ExtensionSupported('GL_EXT_blend_logic_op', extstring) then
  3683. begin
  3684. Result := TRUE;
  3685. end;
  3686. end;
  3687. function Load_GL_EXT_blend_minmax: Boolean;
  3688. var
  3689. extstring: String;
  3690. begin
  3691. Result := FALSE;
  3692. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3693. if glext_ExtensionSupported('GL_EXT_blend_minmax', extstring) then
  3694. begin
  3695. glBlendEquationEXT := wglGetProcAddress('glBlendEquationEXT');
  3696. if not Assigned(glBlendEquationEXT) then Exit;
  3697. Result := TRUE;
  3698. end;
  3699. end;
  3700. function Load_GL_EXT_blend_subtract: Boolean;
  3701. var
  3702. extstring: String;
  3703. begin
  3704. Result := FALSE;
  3705. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3706. if glext_ExtensionSupported('GL_EXT_blend_subtract', extstring) then
  3707. begin
  3708. Result := TRUE;
  3709. end;
  3710. end;
  3711. function Load_GL_EXT_clip_volume_hint: Boolean;
  3712. var
  3713. extstring: String;
  3714. begin
  3715. Result := FALSE;
  3716. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3717. if glext_ExtensionSupported('GL_EXT_clip_volume_hint', extstring) then
  3718. begin
  3719. Result := TRUE;
  3720. end;
  3721. end;
  3722. function Load_GL_EXT_color_subtable: Boolean;
  3723. var
  3724. extstring: String;
  3725. begin
  3726. Result := FALSE;
  3727. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3728. if glext_ExtensionSupported('GL_EXT_color_subtable', extstring) then
  3729. begin
  3730. glColorSubTableEXT := wglGetProcAddress('glColorSubTableEXT');
  3731. if not Assigned(glColorSubTableEXT) then Exit;
  3732. glCopyColorSubTableEXT := wglGetProcAddress('glCopyColorSubTableEXT');
  3733. if not Assigned(glCopyColorSubTableEXT) then Exit;
  3734. Result := TRUE;
  3735. end;
  3736. end;
  3737. function Load_GL_EXT_compiled_vertex_array: Boolean;
  3738. var
  3739. extstring: String;
  3740. begin
  3741. Result := FALSE;
  3742. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3743. if glext_ExtensionSupported('GL_EXT_compiled_vertex_array', extstring) then
  3744. begin
  3745. glLockArraysEXT := wglGetProcAddress('glLockArraysEXT');
  3746. if not Assigned(glLockArraysEXT) then Exit;
  3747. glUnlockArraysEXT := wglGetProcAddress('glUnlockArraysEXT');
  3748. if not Assigned(glUnlockArraysEXT) then Exit;
  3749. Result := TRUE;
  3750. end;
  3751. end;
  3752. function Load_GL_EXT_convolution: Boolean;
  3753. var
  3754. extstring: String;
  3755. begin
  3756. Result := FALSE;
  3757. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3758. if glext_ExtensionSupported('GL_EXT_convolution', extstring) then
  3759. begin
  3760. glConvolutionFilter1DEXT := wglGetProcAddress('glConvolutionFilter1DEXT');
  3761. if not Assigned(glConvolutionFilter1DEXT) then Exit;
  3762. glConvolutionFilter2DEXT := wglGetProcAddress('glConvolutionFilter2DEXT');
  3763. if not Assigned(glConvolutionFilter2DEXT) then Exit;
  3764. glCopyConvolutionFilter1DEXT := wglGetProcAddress('glCopyConvolutionFilter1DEXT');
  3765. if not Assigned(glCopyConvolutionFilter1DEXT) then Exit;
  3766. glCopyConvolutionFilter2DEXT := wglGetProcAddress('glCopyConvolutionFilter2DEXT');
  3767. if not Assigned(glCopyConvolutionFilter2DEXT) then Exit;
  3768. glGetConvolutionFilterEXT := wglGetProcAddress('glGetConvolutionFilterEXT');
  3769. if not Assigned(glGetConvolutionFilterEXT) then Exit;
  3770. glSeparableFilter2DEXT := wglGetProcAddress('glSeparableFilter2DEXT');
  3771. if not Assigned(glSeparableFilter2DEXT) then Exit;
  3772. glGetSeparableFilterEXT := wglGetProcAddress('glGetSeparableFilterEXT');
  3773. if not Assigned(glGetSeparableFilterEXT) then Exit;
  3774. glConvolutionParameteriEXT := wglGetProcAddress('glConvolutionParameteriEXT');
  3775. if not Assigned(glConvolutionParameteriEXT) then Exit;
  3776. glConvolutionParameterivEXT := wglGetProcAddress('glConvolutionParameterivEXT');
  3777. if not Assigned(glConvolutionParameterivEXT) then Exit;
  3778. glConvolutionParameterfEXT := wglGetProcAddress('glConvolutionParameterfEXT');
  3779. if not Assigned(glConvolutionParameterfEXT) then Exit;
  3780. glConvolutionParameterfvEXT := wglGetProcAddress('glConvolutionParameterfvEXT');
  3781. if not Assigned(glConvolutionParameterfvEXT) then Exit;
  3782. glGetConvolutionParameterivEXT := wglGetProcAddress('glGetConvolutionParameterivEXT');
  3783. if not Assigned(glGetConvolutionParameterivEXT) then Exit;
  3784. glGetConvolutionParameterfvEXT := wglGetProcAddress('glGetConvolutionParameterfvEXT');
  3785. if not Assigned(glGetConvolutionParameterfvEXT) then Exit;
  3786. Result := TRUE;
  3787. end;
  3788. end;
  3789. function Load_GL_EXT_fog_coord: Boolean;
  3790. var
  3791. extstring: String;
  3792. begin
  3793. Result := FALSE;
  3794. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3795. if glext_ExtensionSupported('GL_EXT_fog_coord', extstring) then
  3796. begin
  3797. glFogCoordfEXfloat := wglGetProcAddress('glFogCoordfEXfloat');
  3798. if not Assigned(glFogCoordfEXfloat) then Exit;
  3799. glFogCoorddEXdouble := wglGetProcAddress('glFogCoorddEXdouble');
  3800. if not Assigned(glFogCoorddEXdouble) then Exit;
  3801. glFogCoordfvEXfloat := wglGetProcAddress('glFogCoordfvEXfloat');
  3802. if not Assigned(glFogCoordfvEXfloat) then Exit;
  3803. glFogCoorddvEXdouble := wglGetProcAddress('glFogCoorddvEXdouble');
  3804. if not Assigned(glFogCoorddvEXdouble) then Exit;
  3805. glFogCoordPointerEXT := wglGetProcAddress('glFogCoordPointerEXT');
  3806. if not Assigned(glFogCoordPointerEXT) then Exit;
  3807. Result := TRUE;
  3808. end;
  3809. end;
  3810. function Load_GL_EXT_histogram: Boolean;
  3811. var
  3812. extstring: String;
  3813. begin
  3814. Result := FALSE;
  3815. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3816. if glext_ExtensionSupported('GL_EXT_histogram', extstring) then
  3817. begin
  3818. glHistogramEXT := wglGetProcAddress('glHistogramEXT');
  3819. if not Assigned(glHistogramEXT) then Exit;
  3820. glResetHistogramEXT := wglGetProcAddress('glResetHistogramEXT');
  3821. if not Assigned(glResetHistogramEXT) then Exit;
  3822. glGetHistogramEXT := wglGetProcAddress('glGetHistogramEXT');
  3823. if not Assigned(glGetHistogramEXT) then Exit;
  3824. glGetHistogramParameterivEXT := wglGetProcAddress('glGetHistogramParameterivEXT');
  3825. if not Assigned(glGetHistogramParameterivEXT) then Exit;
  3826. glGetHistogramParameterfvEXT := wglGetProcAddress('glGetHistogramParameterfvEXT');
  3827. if not Assigned(glGetHistogramParameterfvEXT) then Exit;
  3828. glMinmaxEXT := wglGetProcAddress('glMinmaxEXT');
  3829. if not Assigned(glMinmaxEXT) then Exit;
  3830. glResetMinmaxEXT := wglGetProcAddress('glResetMinmaxEXT');
  3831. if not Assigned(glResetMinmaxEXT) then Exit;
  3832. glGetMinmaxEXT := wglGetProcAddress('glGetMinmaxEXT');
  3833. if not Assigned(glGetMinmaxEXT) then Exit;
  3834. glGetMinmaxParameterivEXT := wglGetProcAddress('glGetMinmaxParameterivEXT');
  3835. if not Assigned(glGetMinmaxParameterivEXT) then Exit;
  3836. glGetMinmaxParameterfvEXT := wglGetProcAddress('glGetMinmaxParameterfvEXT');
  3837. if not Assigned(glGetMinmaxParameterfvEXT) then Exit;
  3838. Result := TRUE;
  3839. end;
  3840. end;
  3841. function Load_GL_EXT_multi_draw_arrays: Boolean;
  3842. var
  3843. extstring: String;
  3844. begin
  3845. Result := FALSE;
  3846. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3847. if glext_ExtensionSupported('GL_EXT_multi_draw_arrays', extstring) then
  3848. begin
  3849. glMultiDrawArraysEXT := wglGetProcAddress('glMultiDrawArraysEXT');
  3850. if not Assigned(glMultiDrawArraysEXT) then Exit;
  3851. glMultiDrawElementsEXT := wglGetProcAddress('glMultiDrawElementsEXT');
  3852. if not Assigned(glMultiDrawElementsEXT) then Exit;
  3853. Result := TRUE;
  3854. end;
  3855. end;
  3856. function Load_GL_EXT_packed_pixels: Boolean;
  3857. var
  3858. extstring: String;
  3859. begin
  3860. Result := FALSE;
  3861. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3862. if glext_ExtensionSupported('GL_EXT_packed_pixels', extstring) then
  3863. begin
  3864. Result := TRUE;
  3865. end;
  3866. end;
  3867. function Load_GL_EXT_paletted_texture: Boolean;
  3868. var
  3869. extstring: String;
  3870. begin
  3871. Result := FALSE;
  3872. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3873. if glext_ExtensionSupported('GL_EXT_paletted_texture', extstring) then
  3874. begin
  3875. glColorTableEXT := wglGetProcAddress('glColorTableEXT');
  3876. if not Assigned(glColorTableEXT) then Exit;
  3877. glColorSubTableEXT := wglGetProcAddress('glColorSubTableEXT');
  3878. if not Assigned(glColorSubTableEXT) then Exit;
  3879. glGetColorTableEXT := wglGetProcAddress('glGetColorTableEXT');
  3880. if not Assigned(glGetColorTableEXT) then Exit;
  3881. glGetColorTableParameterivEXT := wglGetProcAddress('glGetColorTableParameterivEXT');
  3882. if not Assigned(glGetColorTableParameterivEXT) then Exit;
  3883. glGetColorTableParameterfvEXT := wglGetProcAddress('glGetColorTableParameterfvEXT');
  3884. if not Assigned(glGetColorTableParameterfvEXT) then Exit;
  3885. Result := TRUE;
  3886. end;
  3887. end;
  3888. function Load_GL_EXT_point_parameters: Boolean;
  3889. var
  3890. extstring: String;
  3891. begin
  3892. Result := FALSE;
  3893. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3894. if glext_ExtensionSupported('GL_EXT_point_parameters', extstring) then
  3895. begin
  3896. glPointParameterfEXT := wglGetProcAddress('glPointParameterfEXT');
  3897. if not Assigned(glPointParameterfEXT) then Exit;
  3898. glPointParameterfvEXT := wglGetProcAddress('glPointParameterfvEXT');
  3899. if not Assigned(glPointParameterfvEXT) then Exit;
  3900. Result := TRUE;
  3901. end;
  3902. end;
  3903. function Load_GL_EXT_polygon_offset: Boolean;
  3904. var
  3905. extstring: String;
  3906. begin
  3907. Result := FALSE;
  3908. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3909. if glext_ExtensionSupported('GL_EXT_polygon_offset', extstring) then
  3910. begin
  3911. glPolygonOffsetEXT := wglGetProcAddress('glPolygonOffsetEXT');
  3912. if not Assigned(glPolygonOffsetEXT) then Exit;
  3913. Result := TRUE;
  3914. end;
  3915. end;
  3916. function Load_GL_EXT_secondary_color: Boolean;
  3917. var
  3918. extstring: String;
  3919. begin
  3920. Result := FALSE;
  3921. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3922. if glext_ExtensionSupported('GL_EXT_secondary_color', extstring) then
  3923. begin
  3924. glSecondaryColor3bEXT := wglGetProcAddress('glSecondaryColor3bEXT');
  3925. if not Assigned(glSecondaryColor3bEXT) then Exit;
  3926. glSecondaryColor3sEXT := wglGetProcAddress('glSecondaryColor3sEXT');
  3927. if not Assigned(glSecondaryColor3sEXT) then Exit;
  3928. glSecondaryColor3iEXT := wglGetProcAddress('glSecondaryColor3iEXT');
  3929. if not Assigned(glSecondaryColor3iEXT) then Exit;
  3930. glSecondaryColor3fEXT := wglGetProcAddress('glSecondaryColor3fEXT');
  3931. if not Assigned(glSecondaryColor3fEXT) then Exit;
  3932. glSecondaryColor3dEXT := wglGetProcAddress('glSecondaryColor3dEXT');
  3933. if not Assigned(glSecondaryColor3dEXT) then Exit;
  3934. glSecondaryColor3ubEXT := wglGetProcAddress('glSecondaryColor3ubEXT');
  3935. if not Assigned(glSecondaryColor3ubEXT) then Exit;
  3936. glSecondaryColor3usEXT := wglGetProcAddress('glSecondaryColor3usEXT');
  3937. if not Assigned(glSecondaryColor3usEXT) then Exit;
  3938. glSecondaryColor3uiEXT := wglGetProcAddress('glSecondaryColor3uiEXT');
  3939. if not Assigned(glSecondaryColor3uiEXT) then Exit;
  3940. glSecondaryColor3bvEXT := wglGetProcAddress('glSecondaryColor3bvEXT');
  3941. if not Assigned(glSecondaryColor3bvEXT) then Exit;
  3942. glSecondaryColor3svEXT := wglGetProcAddress('glSecondaryColor3svEXT');
  3943. if not Assigned(glSecondaryColor3svEXT) then Exit;
  3944. glSecondaryColor3ivEXT := wglGetProcAddress('glSecondaryColor3ivEXT');
  3945. if not Assigned(glSecondaryColor3ivEXT) then Exit;
  3946. glSecondaryColor3fvEXT := wglGetProcAddress('glSecondaryColor3fvEXT');
  3947. if not Assigned(glSecondaryColor3fvEXT) then Exit;
  3948. glSecondaryColor3dvEXT := wglGetProcAddress('glSecondaryColor3dvEXT');
  3949. if not Assigned(glSecondaryColor3dvEXT) then Exit;
  3950. glSecondaryColor3ubvEXT := wglGetProcAddress('glSecondaryColor3ubvEXT');
  3951. if not Assigned(glSecondaryColor3ubvEXT) then Exit;
  3952. glSecondaryColor3usvEXT := wglGetProcAddress('glSecondaryColor3usvEXT');
  3953. if not Assigned(glSecondaryColor3usvEXT) then Exit;
  3954. glSecondaryColor3uivEXT := wglGetProcAddress('glSecondaryColor3uivEXT');
  3955. if not Assigned(glSecondaryColor3uivEXT) then Exit;
  3956. glSecondaryColorPointerEXT := wglGetProcAddress('glSecondaryColorPointerEXT');
  3957. if not Assigned(glSecondaryColorPointerEXT) then Exit;
  3958. Result := TRUE;
  3959. end;
  3960. end;
  3961. function Load_GL_EXT_separate_specular_color: Boolean;
  3962. var
  3963. extstring: String;
  3964. begin
  3965. Result := FALSE;
  3966. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3967. if glext_ExtensionSupported('GL_EXT_separate_specular_color', extstring) then
  3968. begin
  3969. Result := TRUE;
  3970. end;
  3971. end;
  3972. function Load_GL_EXT_shadow_funcs: Boolean;
  3973. var
  3974. extstring: String;
  3975. begin
  3976. Result := FALSE;
  3977. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3978. if glext_ExtensionSupported('GL_EXT_shadow_funcs', extstring) then
  3979. begin
  3980. Result := TRUE;
  3981. end;
  3982. end;
  3983. function Load_GL_EXT_shared_texture_palette: Boolean;
  3984. var
  3985. extstring: String;
  3986. begin
  3987. Result := FALSE;
  3988. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3989. if glext_ExtensionSupported('GL_EXT_shared_texture_palette', extstring) then
  3990. begin
  3991. Result := TRUE;
  3992. end;
  3993. end;
  3994. function Load_GL_EXT_stencil_two_side: Boolean;
  3995. var
  3996. extstring: String;
  3997. begin
  3998. Result := FALSE;
  3999. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4000. if glext_ExtensionSupported('GL_EXT_stencil_two_side', extstring) then
  4001. begin
  4002. glActiveStencilFaceEXT := wglGetProcAddress('glActiveStencilFaceEXT');
  4003. if not Assigned(glActiveStencilFaceEXT) then Exit;
  4004. Result := TRUE;
  4005. end;
  4006. end;
  4007. function Load_GL_EXT_stencil_wrap: Boolean;
  4008. var
  4009. extstring: String;
  4010. begin
  4011. Result := FALSE;
  4012. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4013. if glext_ExtensionSupported('GL_EXT_stencil_wrap', extstring) then
  4014. begin
  4015. Result := TRUE;
  4016. end;
  4017. end;
  4018. function Load_GL_EXT_subtexture: Boolean;
  4019. var
  4020. extstring: String;
  4021. begin
  4022. Result := FALSE;
  4023. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4024. if glext_ExtensionSupported('GL_EXT_subtexture', extstring) then
  4025. begin
  4026. glTexSubImage1DEXT := wglGetProcAddress('glTexSubImage1DEXT');
  4027. if not Assigned(glTexSubImage1DEXT) then Exit;
  4028. glTexSubImage2DEXT := wglGetProcAddress('glTexSubImage2DEXT');
  4029. if not Assigned(glTexSubImage2DEXT) then Exit;
  4030. glTexSubImage3DEXT := wglGetProcAddress('glTexSubImage3DEXT');
  4031. if not Assigned(glTexSubImage3DEXT) then Exit;
  4032. Result := TRUE;
  4033. end;
  4034. end;
  4035. function Load_GL_EXT_texture3D: Boolean;
  4036. var
  4037. extstring: String;
  4038. begin
  4039. Result := FALSE;
  4040. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4041. if glext_ExtensionSupported('GL_EXT_texture3D', extstring) then
  4042. begin
  4043. glTexImage3DEXT := wglGetProcAddress('glTexImage3DEXT');
  4044. if not Assigned(glTexImage3DEXT) then Exit;
  4045. Result := TRUE;
  4046. end;
  4047. end;
  4048. function Load_GL_EXT_texture_compression_s3tc: Boolean;
  4049. var
  4050. extstring: String;
  4051. begin
  4052. Result := FALSE;
  4053. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4054. if glext_ExtensionSupported('GL_EXT_texture_compression_s3tc', extstring) then
  4055. begin
  4056. Result := TRUE;
  4057. end;
  4058. end;
  4059. function Load_GL_EXT_texture_env_add: Boolean;
  4060. var
  4061. extstring: String;
  4062. begin
  4063. Result := FALSE;
  4064. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4065. if glext_ExtensionSupported('GL_EXT_texture_env_add', extstring) then
  4066. begin
  4067. Result := TRUE;
  4068. end;
  4069. end;
  4070. function Load_GL_EXT_texture_env_combine: Boolean;
  4071. var
  4072. extstring: String;
  4073. begin
  4074. Result := FALSE;
  4075. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4076. if glext_ExtensionSupported('GL_EXT_texture_env_combine', extstring) then
  4077. begin
  4078. Result := TRUE;
  4079. end;
  4080. end;
  4081. function Load_GL_EXT_texture_env_dot3: Boolean;
  4082. var
  4083. extstring: String;
  4084. begin
  4085. Result := FALSE;
  4086. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4087. if glext_ExtensionSupported('GL_EXT_texture_env_dot3', extstring) then
  4088. begin
  4089. Result := TRUE;
  4090. end;
  4091. end;
  4092. function Load_GL_EXT_texture_filter_anisotropic: Boolean;
  4093. var
  4094. extstring: String;
  4095. begin
  4096. Result := FALSE;
  4097. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4098. if glext_ExtensionSupported('GL_EXT_texture_filter_anisotropic', extstring) then
  4099. begin
  4100. Result := TRUE;
  4101. end;
  4102. end;
  4103. function Load_GL_EXT_texture_lod_bias: Boolean;
  4104. var
  4105. extstring: String;
  4106. begin
  4107. Result := FALSE;
  4108. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4109. if glext_ExtensionSupported('GL_EXT_texture_lod_bias', extstring) then
  4110. begin
  4111. Result := TRUE;
  4112. end;
  4113. end;
  4114. function Load_GL_EXT_texture_object: Boolean;
  4115. var
  4116. extstring: String;
  4117. begin
  4118. Result := FALSE;
  4119. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4120. if glext_ExtensionSupported('GL_EXT_texture_object', extstring) then
  4121. begin
  4122. glGenTexturesEXT := wglGetProcAddress('glGenTexturesEXT');
  4123. if not Assigned(glGenTexturesEXT) then Exit;
  4124. glDeleteTexturesEXT := wglGetProcAddress('glDeleteTexturesEXT');
  4125. if not Assigned(glDeleteTexturesEXT) then Exit;
  4126. glBindTextureEXT := wglGetProcAddress('glBindTextureEXT');
  4127. if not Assigned(glBindTextureEXT) then Exit;
  4128. glPrioritizeTexturesEXT := wglGetProcAddress('glPrioritizeTexturesEXT');
  4129. if not Assigned(glPrioritizeTexturesEXT) then Exit;
  4130. glAreTexturesResidentEXT := wglGetProcAddress('glAreTexturesResidentEXT');
  4131. if not Assigned(glAreTexturesResidentEXT) then Exit;
  4132. glIsTextureEXT := wglGetProcAddress('glIsTextureEXT');
  4133. if not Assigned(glIsTextureEXT) then Exit;
  4134. Result := TRUE;
  4135. end;
  4136. end;
  4137. function Load_GL_EXT_vertex_array: Boolean;
  4138. var
  4139. extstring: String;
  4140. begin
  4141. Result := FALSE;
  4142. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4143. if glext_ExtensionSupported('GL_EXT_vertex_array', extstring) then
  4144. begin
  4145. glArrayElementEXT := wglGetProcAddress('glArrayElementEXT');
  4146. if not Assigned(glArrayElementEXT) then Exit;
  4147. glDrawArraysEXT := wglGetProcAddress('glDrawArraysEXT');
  4148. if not Assigned(glDrawArraysEXT) then Exit;
  4149. glVertexPointerEXT := wglGetProcAddress('glVertexPointerEXT');
  4150. if not Assigned(glVertexPointerEXT) then Exit;
  4151. glNormalPointerEXT := wglGetProcAddress('glNormalPointerEXT');
  4152. if not Assigned(glNormalPointerEXT) then Exit;
  4153. glColorPointerEXT := wglGetProcAddress('glColorPointerEXT');
  4154. if not Assigned(glColorPointerEXT) then Exit;
  4155. glIndexPointerEXT := wglGetProcAddress('glIndexPointerEXT');
  4156. if not Assigned(glIndexPointerEXT) then Exit;
  4157. glTexCoordPointerEXT := wglGetProcAddress('glTexCoordPointerEXT');
  4158. if not Assigned(glTexCoordPointerEXT) then Exit;
  4159. glEdgeFlagPointerEXT := wglGetProcAddress('glEdgeFlagPointerEXT');
  4160. if not Assigned(glEdgeFlagPointerEXT) then Exit;
  4161. glGetPointervEXT := wglGetProcAddress('glGetPointervEXT');
  4162. if not Assigned(glGetPointervEXT) then Exit;
  4163. Result := TRUE;
  4164. end;
  4165. end;
  4166. function Load_GL_EXT_vertex_shader: Boolean;
  4167. var
  4168. extstring: String;
  4169. begin
  4170. Result := FALSE;
  4171. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4172. if glext_ExtensionSupported('GL_EXT_vertex_shader', extstring) then
  4173. begin
  4174. glBeginVertexShaderEXT := wglGetProcAddress('glBeginVertexShaderEXT');
  4175. if not Assigned(glBeginVertexShaderEXT) then Exit;
  4176. glEndVertexShaderEXT := wglGetProcAddress('glEndVertexShaderEXT');
  4177. if not Assigned(glEndVertexShaderEXT) then Exit;
  4178. glBindVertexShaderEXT := wglGetProcAddress('glBindVertexShaderEXT');
  4179. if not Assigned(glBindVertexShaderEXT) then Exit;
  4180. glGenVertexShadersEXT := wglGetProcAddress('glGenVertexShadersEXT');
  4181. if not Assigned(glGenVertexShadersEXT) then Exit;
  4182. glDeleteVertexShaderEXT := wglGetProcAddress('glDeleteVertexShaderEXT');
  4183. if not Assigned(glDeleteVertexShaderEXT) then Exit;
  4184. glShaderOp1EXT := wglGetProcAddress('glShaderOp1EXT');
  4185. if not Assigned(glShaderOp1EXT) then Exit;
  4186. glShaderOp2EXT := wglGetProcAddress('glShaderOp2EXT');
  4187. if not Assigned(glShaderOp2EXT) then Exit;
  4188. glShaderOp3EXT := wglGetProcAddress('glShaderOp3EXT');
  4189. if not Assigned(glShaderOp3EXT) then Exit;
  4190. glSwizzleEXT := wglGetProcAddress('glSwizzleEXT');
  4191. if not Assigned(glSwizzleEXT) then Exit;
  4192. glWriteMaskEXT := wglGetProcAddress('glWriteMaskEXT');
  4193. if not Assigned(glWriteMaskEXT) then Exit;
  4194. glInsertComponentEXT := wglGetProcAddress('glInsertComponentEXT');
  4195. if not Assigned(glInsertComponentEXT) then Exit;
  4196. glExtractComponentEXT := wglGetProcAddress('glExtractComponentEXT');
  4197. if not Assigned(glExtractComponentEXT) then Exit;
  4198. glGenSymbolsEXT := wglGetProcAddress('glGenSymbolsEXT');
  4199. if not Assigned(glGenSymbolsEXT) then Exit;
  4200. glSetInvariantEXT := wglGetProcAddress('glSetInvariantEXT');
  4201. if not Assigned(glSetInvariantEXT) then Exit;
  4202. glSetLocalConstantEXT := wglGetProcAddress('glSetLocalConstantEXT');
  4203. if not Assigned(glSetLocalConstantEXT) then Exit;
  4204. glVariantbvEXT := wglGetProcAddress('glVariantbvEXT');
  4205. if not Assigned(glVariantbvEXT) then Exit;
  4206. glVariantsvEXT := wglGetProcAddress('glVariantsvEXT');
  4207. if not Assigned(glVariantsvEXT) then Exit;
  4208. glVariantivEXT := wglGetProcAddress('glVariantivEXT');
  4209. if not Assigned(glVariantivEXT) then Exit;
  4210. glVariantfvEXT := wglGetProcAddress('glVariantfvEXT');
  4211. if not Assigned(glVariantfvEXT) then Exit;
  4212. glVariantdvEXT := wglGetProcAddress('glVariantdvEXT');
  4213. if not Assigned(glVariantdvEXT) then Exit;
  4214. glVariantubvEXT := wglGetProcAddress('glVariantubvEXT');
  4215. if not Assigned(glVariantubvEXT) then Exit;
  4216. glVariantusvEXT := wglGetProcAddress('glVariantusvEXT');
  4217. if not Assigned(glVariantusvEXT) then Exit;
  4218. glVariantuivEXT := wglGetProcAddress('glVariantuivEXT');
  4219. if not Assigned(glVariantuivEXT) then Exit;
  4220. glVariantPointerEXT := wglGetProcAddress('glVariantPointerEXT');
  4221. if not Assigned(glVariantPointerEXT) then Exit;
  4222. glEnableVariantClientStateEXT := wglGetProcAddress('glEnableVariantClientStateEXT');
  4223. if not Assigned(glEnableVariantClientStateEXT) then Exit;
  4224. glDisableVariantClientStateEXT := wglGetProcAddress('glDisableVariantClientStateEXT');
  4225. if not Assigned(glDisableVariantClientStateEXT) then Exit;
  4226. glBindLightParameterEXT := wglGetProcAddress('glBindLightParameterEXT');
  4227. if not Assigned(glBindLightParameterEXT) then Exit;
  4228. glBindMaterialParameterEXT := wglGetProcAddress('glBindMaterialParameterEXT');
  4229. if not Assigned(glBindMaterialParameterEXT) then Exit;
  4230. glBindTexGenParameterEXT := wglGetProcAddress('glBindTexGenParameterEXT');
  4231. if not Assigned(glBindTexGenParameterEXT) then Exit;
  4232. glBindTextureUnitParameterEXT := wglGetProcAddress('glBindTextureUnitParameterEXT');
  4233. if not Assigned(glBindTextureUnitParameterEXT) then Exit;
  4234. glBindParameterEXT := wglGetProcAddress('glBindParameterEXT');
  4235. if not Assigned(glBindParameterEXT) then Exit;
  4236. glIsVariantEnabledEXT := wglGetProcAddress('glIsVariantEnabledEXT');
  4237. if not Assigned(glIsVariantEnabledEXT) then Exit;
  4238. glGetVariantBooleanvEXT := wglGetProcAddress('glGetVariantBooleanvEXT');
  4239. if not Assigned(glGetVariantBooleanvEXT) then Exit;
  4240. glGetVariantIntegervEXT := wglGetProcAddress('glGetVariantIntegervEXT');
  4241. if not Assigned(glGetVariantIntegervEXT) then Exit;
  4242. glGetVariantFloatvEXT := wglGetProcAddress('glGetVariantFloatvEXT');
  4243. if not Assigned(glGetVariantFloatvEXT) then Exit;
  4244. glGetVariantPointervEXT := wglGetProcAddress('glGetVariantPointervEXT');
  4245. if not Assigned(glGetVariantPointervEXT) then Exit;
  4246. glGetInvariantBooleanvEXT := wglGetProcAddress('glGetInvariantBooleanvEXT');
  4247. if not Assigned(glGetInvariantBooleanvEXT) then Exit;
  4248. glGetInvariantIntegervEXT := wglGetProcAddress('glGetInvariantIntegervEXT');
  4249. if not Assigned(glGetInvariantIntegervEXT) then Exit;
  4250. glGetInvariantFloatvEXT := wglGetProcAddress('glGetInvariantFloatvEXT');
  4251. if not Assigned(glGetInvariantFloatvEXT) then Exit;
  4252. glGetLocalConstantBooleanvEXT := wglGetProcAddress('glGetLocalConstantBooleanvEXT');
  4253. if not Assigned(glGetLocalConstantBooleanvEXT) then Exit;
  4254. glGetLocalConstantIntegervEXT := wglGetProcAddress('glGetLocalConstantIntegervEXT');
  4255. if not Assigned(glGetLocalConstantIntegervEXT) then Exit;
  4256. glGetLocalConstantFloatvEXT := wglGetProcAddress('glGetLocalConstantFloatvEXT');
  4257. if not Assigned(glGetLocalConstantFloatvEXT) then Exit;
  4258. Result := TRUE;
  4259. end;
  4260. end;
  4261. function Load_GL_EXT_vertex_weighting: Boolean;
  4262. var
  4263. extstring: String;
  4264. begin
  4265. Result := FALSE;
  4266. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4267. if glext_ExtensionSupported('GL_EXT_vertex_weighting', extstring) then
  4268. begin
  4269. glVertexWeightfEXT := wglGetProcAddress('glVertexWeightfEXT');
  4270. if not Assigned(glVertexWeightfEXT) then Exit;
  4271. glVertexWeightfvEXT := wglGetProcAddress('glVertexWeightfvEXT');
  4272. if not Assigned(glVertexWeightfvEXT) then Exit;
  4273. glVertexWeightPointerEXT := wglGetProcAddress('glVertexWeightPointerEXT');
  4274. if not Assigned(glVertexWeightPointerEXT) then Exit;
  4275. Result := TRUE;
  4276. end;
  4277. end;
  4278. function Load_GL_HP_occlusion_test: Boolean;
  4279. var
  4280. extstring: String;
  4281. begin
  4282. Result := FALSE;
  4283. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4284. if glext_ExtensionSupported('GL_HP_occlusion_test', extstring) then
  4285. begin
  4286. Result := TRUE;
  4287. end;
  4288. end;
  4289. function Load_GL_NV_blend_square: Boolean;
  4290. var
  4291. extstring: String;
  4292. begin
  4293. Result := FALSE;
  4294. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4295. if glext_ExtensionSupported('GL_NV_blend_square', extstring) then
  4296. begin
  4297. Result := TRUE;
  4298. end;
  4299. end;
  4300. function Load_GL_NV_copy_depth_to_color: Boolean;
  4301. var
  4302. extstring: String;
  4303. begin
  4304. Result := FALSE;
  4305. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4306. if glext_ExtensionSupported('GL_NV_copy_depth_to_color', extstring) then
  4307. begin
  4308. Result := TRUE;
  4309. end;
  4310. end;
  4311. function Load_GL_NV_depth_clamp: Boolean;
  4312. var
  4313. extstring: String;
  4314. begin
  4315. Result := FALSE;
  4316. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4317. if glext_ExtensionSupported('GL_NV_depth_clamp', extstring) then
  4318. begin
  4319. Result := TRUE;
  4320. end;
  4321. end;
  4322. function Load_GL_NV_evaluators: Boolean;
  4323. var
  4324. extstring: String;
  4325. begin
  4326. Result := FALSE;
  4327. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4328. if glext_ExtensionSupported('GL_NV_evaluators', extstring) then
  4329. begin
  4330. glMapControlPointsNV := wglGetProcAddress('glMapControlPointsNV');
  4331. if not Assigned(glMapControlPointsNV) then Exit;
  4332. glMapParameterivNV := wglGetProcAddress('glMapParameterivNV');
  4333. if not Assigned(glMapParameterivNV) then Exit;
  4334. glMapParameterfvNV := wglGetProcAddress('glMapParameterfvNV');
  4335. if not Assigned(glMapParameterfvNV) then Exit;
  4336. glGetMapControlPointsNV := wglGetProcAddress('glGetMapControlPointsNV');
  4337. if not Assigned(glGetMapControlPointsNV) then Exit;
  4338. glGetMapParameterivNV := wglGetProcAddress('glGetMapParameterivNV');
  4339. if not Assigned(glGetMapParameterivNV) then Exit;
  4340. glGetMapParameterfvNV := wglGetProcAddress('glGetMapParameterfvNV');
  4341. if not Assigned(glGetMapParameterfvNV) then Exit;
  4342. glGetMapAttribParameterivNV := wglGetProcAddress('glGetMapAttribParameterivNV');
  4343. if not Assigned(glGetMapAttribParameterivNV) then Exit;
  4344. glGetMapAttribParameterfvNV := wglGetProcAddress('glGetMapAttribParameterfvNV');
  4345. if not Assigned(glGetMapAttribParameterfvNV) then Exit;
  4346. glEvalMapsNV := wglGetProcAddress('glEvalMapsNV');
  4347. if not Assigned(glEvalMapsNV) then Exit;
  4348. Result := TRUE;
  4349. end;
  4350. end;
  4351. function Load_GL_NV_fence: Boolean;
  4352. var
  4353. extstring: String;
  4354. begin
  4355. Result := FALSE;
  4356. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4357. if glext_ExtensionSupported('GL_NV_fence', extstring) then
  4358. begin
  4359. glGenFencesNV := wglGetProcAddress('glGenFencesNV');
  4360. if not Assigned(glGenFencesNV) then Exit;
  4361. glDeleteFencesNV := wglGetProcAddress('glDeleteFencesNV');
  4362. if not Assigned(glDeleteFencesNV) then Exit;
  4363. glSetFenceNV := wglGetProcAddress('glSetFenceNV');
  4364. if not Assigned(glSetFenceNV) then Exit;
  4365. glTestFenceNV := wglGetProcAddress('glTestFenceNV');
  4366. if not Assigned(glTestFenceNV) then Exit;
  4367. glFinishFenceNV := wglGetProcAddress('glFinishFenceNV');
  4368. if not Assigned(glFinishFenceNV) then Exit;
  4369. glIsFenceNV := wglGetProcAddress('glIsFenceNV');
  4370. if not Assigned(glIsFenceNV) then Exit;
  4371. glGetFenceivNV := wglGetProcAddress('glGetFenceivNV');
  4372. if not Assigned(glGetFenceivNV) then Exit;
  4373. Result := TRUE;
  4374. end;
  4375. end;
  4376. function Load_GL_NV_fog_distance: Boolean;
  4377. var
  4378. extstring: String;
  4379. begin
  4380. Result := FALSE;
  4381. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4382. if glext_ExtensionSupported('GL_NV_fog_distance', extstring) then
  4383. begin
  4384. Result := TRUE;
  4385. end;
  4386. end;
  4387. function Load_GL_NV_light_max_exponent: Boolean;
  4388. var
  4389. extstring: String;
  4390. begin
  4391. Result := FALSE;
  4392. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4393. if glext_ExtensionSupported('GL_NV_light_max_exponent', extstring) then
  4394. begin
  4395. Result := TRUE;
  4396. end;
  4397. end;
  4398. function Load_GL_NV_multisample_filter_hint: Boolean;
  4399. var
  4400. extstring: String;
  4401. begin
  4402. Result := FALSE;
  4403. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4404. if glext_ExtensionSupported('GL_NV_multisample_filter_hint', extstring) then
  4405. begin
  4406. Result := TRUE;
  4407. end;
  4408. end;
  4409. function Load_GL_NV_occlusion_query: Boolean;
  4410. var
  4411. extstring: String;
  4412. begin
  4413. Result := FALSE;
  4414. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4415. if glext_ExtensionSupported('GL_NV_occlusion_query', extstring) then
  4416. begin
  4417. glGenOcclusionQueriesNV := wglGetProcAddress('glGenOcclusionQueriesNV');
  4418. if not Assigned(glGenOcclusionQueriesNV) then Exit;
  4419. glDeleteOcclusionQueriesNV := wglGetProcAddress('glDeleteOcclusionQueriesNV');
  4420. if not Assigned(glDeleteOcclusionQueriesNV) then Exit;
  4421. glIsOcclusionQueryNV := wglGetProcAddress('glIsOcclusionQueryNV');
  4422. if not Assigned(glIsOcclusionQueryNV) then Exit;
  4423. glBeginOcclusionQueryNV := wglGetProcAddress('glBeginOcclusionQueryNV');
  4424. if not Assigned(glBeginOcclusionQueryNV) then Exit;
  4425. glEndOcclusionQueryNV := wglGetProcAddress('glEndOcclusionQueryNV');
  4426. if not Assigned(glEndOcclusionQueryNV) then Exit;
  4427. glGetOcclusionQueryivNV := wglGetProcAddress('glGetOcclusionQueryivNV');
  4428. if not Assigned(glGetOcclusionQueryivNV) then Exit;
  4429. glGetOcclusionQueryuivNV := wglGetProcAddress('glGetOcclusionQueryuivNV');
  4430. if not Assigned(glGetOcclusionQueryuivNV) then Exit;
  4431. Result := TRUE;
  4432. end;
  4433. end;
  4434. function Load_GL_NV_packed_depth_stencil: Boolean;
  4435. var
  4436. extstring: String;
  4437. begin
  4438. Result := FALSE;
  4439. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4440. if glext_ExtensionSupported('GL_NV_packed_depth_stencil', extstring) then
  4441. begin
  4442. Result := TRUE;
  4443. end;
  4444. end;
  4445. function Load_GL_NV_point_sprite: Boolean;
  4446. var
  4447. extstring: String;
  4448. begin
  4449. Result := FALSE;
  4450. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4451. if glext_ExtensionSupported('GL_NV_point_sprite', extstring) then
  4452. begin
  4453. glPointParameteriNV := wglGetProcAddress('glPointParameteriNV');
  4454. if not Assigned(glPointParameteriNV) then Exit;
  4455. glPointParameterivNV := wglGetProcAddress('glPointParameterivNV');
  4456. if not Assigned(glPointParameterivNV) then Exit;
  4457. Result := TRUE;
  4458. end;
  4459. end;
  4460. function Load_GL_NV_register_combiners: Boolean;
  4461. var
  4462. extstring: String;
  4463. begin
  4464. Result := FALSE;
  4465. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4466. if glext_ExtensionSupported('GL_NV_register_combiners', extstring) then
  4467. begin
  4468. glCombinerParameterfvNV := wglGetProcAddress('glCombinerParameterfvNV');
  4469. if not Assigned(glCombinerParameterfvNV) then Exit;
  4470. glCombinerParameterivNV := wglGetProcAddress('glCombinerParameterivNV');
  4471. if not Assigned(glCombinerParameterivNV) then Exit;
  4472. glCombinerParameterfNV := wglGetProcAddress('glCombinerParameterfNV');
  4473. if not Assigned(glCombinerParameterfNV) then Exit;
  4474. glCombinerParameteriNV := wglGetProcAddress('glCombinerParameteriNV');
  4475. if not Assigned(glCombinerParameteriNV) then Exit;
  4476. glCombinerInputNV := wglGetProcAddress('glCombinerInputNV');
  4477. if not Assigned(glCombinerInputNV) then Exit;
  4478. glCombinerOutputNV := wglGetProcAddress('glCombinerOutputNV');
  4479. if not Assigned(glCombinerOutputNV) then Exit;
  4480. glFinalCombinerInputNV := wglGetProcAddress('glFinalCombinerInputNV');
  4481. if not Assigned(glFinalCombinerInputNV) then Exit;
  4482. glGetCombinerInputParameterfvNV := wglGetProcAddress('glGetCombinerInputParameterfvNV');
  4483. if not Assigned(glGetCombinerInputParameterfvNV) then Exit;
  4484. glGetCombinerInputParameterivNV := wglGetProcAddress('glGetCombinerInputParameterivNV');
  4485. if not Assigned(glGetCombinerInputParameterivNV) then Exit;
  4486. glGetCombinerOutputParameterfvNV := wglGetProcAddress('glGetCombinerOutputParameterfvNV');
  4487. if not Assigned(glGetCombinerOutputParameterfvNV) then Exit;
  4488. glGetCombinerOutputParameterivNV := wglGetProcAddress('glGetCombinerOutputParameterivNV');
  4489. if not Assigned(glGetCombinerOutputParameterivNV) then Exit;
  4490. glGetFinalCombinerInputParameterfvNV := wglGetProcAddress('glGetFinalCombinerInputParameterfvNV');
  4491. if not Assigned(glGetFinalCombinerInputParameterfvNV) then Exit;
  4492. glGetFinalCombinerInputParameterivNV := wglGetProcAddress('glGetFinalCombinerInputParameterivNV');
  4493. if not Assigned(glGetFinalCombinerInputParameterivNV) then Exit;
  4494. Result := TRUE;
  4495. end;
  4496. end;
  4497. function Load_GL_NV_register_combiners2: Boolean;
  4498. var
  4499. extstring: String;
  4500. begin
  4501. Result := FALSE;
  4502. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4503. if glext_ExtensionSupported('GL_NV_register_combiners2', extstring) then
  4504. begin
  4505. glCombinerStageParameterfvNV := wglGetProcAddress('glCombinerStageParameterfvNV');
  4506. if not Assigned(glCombinerStageParameterfvNV) then Exit;
  4507. glGetCombinerStageParameterfvNV := wglGetProcAddress('glGetCombinerStageParameterfvNV');
  4508. if not Assigned(glGetCombinerStageParameterfvNV) then Exit;
  4509. Result := TRUE;
  4510. end;
  4511. end;
  4512. function Load_GL_NV_texgen_emboss: Boolean;
  4513. var
  4514. extstring: String;
  4515. begin
  4516. Result := FALSE;
  4517. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4518. if glext_ExtensionSupported('GL_NV_texgen_emboss', extstring) then
  4519. begin
  4520. Result := TRUE;
  4521. end;
  4522. end;
  4523. function Load_GL_NV_texgen_reflection: Boolean;
  4524. var
  4525. extstring: String;
  4526. begin
  4527. Result := FALSE;
  4528. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4529. if glext_ExtensionSupported('GL_NV_texgen_reflection', extstring) then
  4530. begin
  4531. Result := TRUE;
  4532. end;
  4533. end;
  4534. function Load_GL_NV_texture_compression_vtc: Boolean;
  4535. var
  4536. extstring: String;
  4537. begin
  4538. Result := FALSE;
  4539. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4540. if glext_ExtensionSupported('GL_NV_texture_compression_vtc', extstring) then
  4541. begin
  4542. Result := TRUE;
  4543. end;
  4544. end;
  4545. function Load_GL_NV_texture_env_combine4: Boolean;
  4546. var
  4547. extstring: String;
  4548. begin
  4549. Result := FALSE;
  4550. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4551. if glext_ExtensionSupported('GL_NV_texture_env_combine4', extstring) then
  4552. begin
  4553. Result := TRUE;
  4554. end;
  4555. end;
  4556. function Load_GL_NV_texture_rectangle: Boolean;
  4557. var
  4558. extstring: String;
  4559. begin
  4560. Result := FALSE;
  4561. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4562. if glext_ExtensionSupported('GL_NV_texture_rectangle', extstring) then
  4563. begin
  4564. Result := TRUE;
  4565. end;
  4566. end;
  4567. function Load_GL_NV_texture_shader: Boolean;
  4568. var
  4569. extstring: String;
  4570. begin
  4571. Result := FALSE;
  4572. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4573. if glext_ExtensionSupported('GL_NV_texture_shader', extstring) then
  4574. begin
  4575. Result := TRUE;
  4576. end;
  4577. end;
  4578. function Load_GL_NV_texture_shader2: Boolean;
  4579. var
  4580. extstring: String;
  4581. begin
  4582. Result := FALSE;
  4583. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4584. if glext_ExtensionSupported('GL_NV_texture_shader2', extstring) then
  4585. begin
  4586. Result := TRUE;
  4587. end;
  4588. end;
  4589. function Load_GL_NV_texture_shader3: Boolean;
  4590. var
  4591. extstring: String;
  4592. begin
  4593. Result := FALSE;
  4594. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4595. if glext_ExtensionSupported('GL_NV_texture_shader3', extstring) then
  4596. begin
  4597. Result := TRUE;
  4598. end;
  4599. end;
  4600. function Load_GL_NV_vertex_array_range: Boolean;
  4601. var
  4602. extstring: String;
  4603. begin
  4604. Result := FALSE;
  4605. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4606. if glext_ExtensionSupported('GL_NV_vertex_array_range', extstring) then
  4607. begin
  4608. glVertexArrayRangeNV := wglGetProcAddress('glVertexArrayRangeNV');
  4609. if not Assigned(glVertexArrayRangeNV) then Exit;
  4610. glFlushVertexArrayRangeNV := wglGetProcAddress('glFlushVertexArrayRangeNV');
  4611. if not Assigned(glFlushVertexArrayRangeNV) then Exit;
  4612. {$IFDEF Win32}
  4613. wglAllocateMemoryNV := wglGetProcAddress('wglAllocateMemoryNV');
  4614. if not Assigned(wglAllocateMemoryNV) then Exit;
  4615. wglFreeMemoryNV := wglGetProcAddress('wglFreeMemoryNV');
  4616. if not Assigned(wglFreeMemoryNV) then Exit;
  4617. {$ENDIF}
  4618. Result := TRUE;
  4619. end;
  4620. end;
  4621. function Load_GL_NV_vertex_array_range2: Boolean;
  4622. var
  4623. extstring: String;
  4624. begin
  4625. Result := FALSE;
  4626. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4627. if glext_ExtensionSupported('GL_NV_vertex_array_range2', extstring) then
  4628. begin
  4629. Result := TRUE;
  4630. end;
  4631. end;
  4632. function Load_GL_NV_vertex_program: Boolean;
  4633. var
  4634. extstring: String;
  4635. begin
  4636. Result := FALSE;
  4637. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4638. if glext_ExtensionSupported('GL_NV_vertex_program', extstring) then
  4639. begin
  4640. glBindProgramNV := wglGetProcAddress('glBindProgramNV');
  4641. if not Assigned(glBindProgramNV) then Exit;
  4642. glDeleteProgramsNV := wglGetProcAddress('glDeleteProgramsNV');
  4643. if not Assigned(glDeleteProgramsNV) then Exit;
  4644. glExecuteProgramNV := wglGetProcAddress('glExecuteProgramNV');
  4645. if not Assigned(glExecuteProgramNV) then Exit;
  4646. glGenProgramsNV := wglGetProcAddress('glGenProgramsNV');
  4647. if not Assigned(glGenProgramsNV) then Exit;
  4648. glAreProgramsResidentNV := wglGetProcAddress('glAreProgramsResidentNV');
  4649. if not Assigned(glAreProgramsResidentNV) then Exit;
  4650. glRequestResidentProgramsNV := wglGetProcAddress('glRequestResidentProgramsNV');
  4651. if not Assigned(glRequestResidentProgramsNV) then Exit;
  4652. glGetProgramParameterfvNV := wglGetProcAddress('glGetProgramParameterfvNV');
  4653. if not Assigned(glGetProgramParameterfvNV) then Exit;
  4654. glGetProgramParameterdvNV := wglGetProcAddress('glGetProgramParameterdvNV');
  4655. if not Assigned(glGetProgramParameterdvNV) then Exit;
  4656. glGetProgramivNV := wglGetProcAddress('glGetProgramivNV');
  4657. if not Assigned(glGetProgramivNV) then Exit;
  4658. glGetProgramStringNV := wglGetProcAddress('glGetProgramStringNV');
  4659. if not Assigned(glGetProgramStringNV) then Exit;
  4660. glGetTrackMatrixivNV := wglGetProcAddress('glGetTrackMatrixivNV');
  4661. if not Assigned(glGetTrackMatrixivNV) then Exit;
  4662. glGetVertexAttribdvNV := wglGetProcAddress('glGetVertexAttribdvNV');
  4663. if not Assigned(glGetVertexAttribdvNV) then Exit;
  4664. glGetVertexAttribfvNV := wglGetProcAddress('glGetVertexAttribfvNV');
  4665. if not Assigned(glGetVertexAttribfvNV) then Exit;
  4666. glGetVertexAttribivNV := wglGetProcAddress('glGetVertexAttribivNV');
  4667. if not Assigned(glGetVertexAttribivNV) then Exit;
  4668. glGetVertexAttribPointervNV := wglGetProcAddress('glGetVertexAttribPointervNV');
  4669. if not Assigned(glGetVertexAttribPointervNV) then Exit;
  4670. glIsProgramNV := wglGetProcAddress('glIsProgramNV');
  4671. if not Assigned(glIsProgramNV) then Exit;
  4672. glLoadProgramNV := wglGetProcAddress('glLoadProgramNV');
  4673. if not Assigned(glLoadProgramNV) then Exit;
  4674. glProgramParameter4fNV := wglGetProcAddress('glProgramParameter4fNV');
  4675. if not Assigned(glProgramParameter4fNV) then Exit;
  4676. glProgramParameter4fvNV := wglGetProcAddress('glProgramParameter4fvNV');
  4677. if not Assigned(glProgramParameter4fvNV) then Exit;
  4678. glProgramParameters4dvNV := wglGetProcAddress('glProgramParameters4dvNV');
  4679. if not Assigned(glProgramParameters4dvNV) then Exit;
  4680. glProgramParameters4fvNV := wglGetProcAddress('glProgramParameters4fvNV');
  4681. if not Assigned(glProgramParameters4fvNV) then Exit;
  4682. glTrackMatrixNV := wglGetProcAddress('glTrackMatrixNV');
  4683. if not Assigned(glTrackMatrixNV) then Exit;
  4684. glVertexAttribPointerNV := wglGetProcAddress('glVertexAttribPointerNV');
  4685. if not Assigned(glVertexAttribPointerNV) then Exit;
  4686. glVertexAttrib1sNV := wglGetProcAddress('glVertexAttrib1sNV');
  4687. if not Assigned(glVertexAttrib1sNV) then Exit;
  4688. glVertexAttrib1fNV := wglGetProcAddress('glVertexAttrib1fNV');
  4689. if not Assigned(glVertexAttrib1fNV) then Exit;
  4690. glVertexAttrib1dNV := wglGetProcAddress('glVertexAttrib1dNV');
  4691. if not Assigned(glVertexAttrib1dNV) then Exit;
  4692. glVertexAttrib2sNV := wglGetProcAddress('glVertexAttrib2sNV');
  4693. if not Assigned(glVertexAttrib2sNV) then Exit;
  4694. glVertexAttrib2fNV := wglGetProcAddress('glVertexAttrib2fNV');
  4695. if not Assigned(glVertexAttrib2fNV) then Exit;
  4696. glVertexAttrib2dNV := wglGetProcAddress('glVertexAttrib2dNV');
  4697. if not Assigned(glVertexAttrib2dNV) then Exit;
  4698. glVertexAttrib3sNV := wglGetProcAddress('glVertexAttrib3sNV');
  4699. if not Assigned(glVertexAttrib3sNV) then Exit;
  4700. glVertexAttrib3fNV := wglGetProcAddress('glVertexAttrib3fNV');
  4701. if not Assigned(glVertexAttrib3fNV) then Exit;
  4702. glVertexAttrib3dNV := wglGetProcAddress('glVertexAttrib3dNV');
  4703. if not Assigned(glVertexAttrib3dNV) then Exit;
  4704. glVertexAttrib4sNV := wglGetProcAddress('glVertexAttrib4sNV');
  4705. if not Assigned(glVertexAttrib4sNV) then Exit;
  4706. glVertexAttrib4fNV := wglGetProcAddress('glVertexAttrib4fNV');
  4707. if not Assigned(glVertexAttrib4fNV) then Exit;
  4708. glVertexAttrib4dNV := wglGetProcAddress('glVertexAttrib4dNV');
  4709. if not Assigned(glVertexAttrib4dNV) then Exit;
  4710. glVertexAttrib4ubNV := wglGetProcAddress('glVertexAttrib4ubNV');
  4711. if not Assigned(glVertexAttrib4ubNV) then Exit;
  4712. glVertexAttrib1svNV := wglGetProcAddress('glVertexAttrib1svNV');
  4713. if not Assigned(glVertexAttrib1svNV) then Exit;
  4714. glVertexAttrib1fvNV := wglGetProcAddress('glVertexAttrib1fvNV');
  4715. if not Assigned(glVertexAttrib1fvNV) then Exit;
  4716. glVertexAttrib1dvNV := wglGetProcAddress('glVertexAttrib1dvNV');
  4717. if not Assigned(glVertexAttrib1dvNV) then Exit;
  4718. glVertexAttrib2svNV := wglGetProcAddress('glVertexAttrib2svNV');
  4719. if not Assigned(glVertexAttrib2svNV) then Exit;
  4720. glVertexAttrib2fvNV := wglGetProcAddress('glVertexAttrib2fvNV');
  4721. if not Assigned(glVertexAttrib2fvNV) then Exit;
  4722. glVertexAttrib2dvNV := wglGetProcAddress('glVertexAttrib2dvNV');
  4723. if not Assigned(glVertexAttrib2dvNV) then Exit;
  4724. glVertexAttrib3svNV := wglGetProcAddress('glVertexAttrib3svNV');
  4725. if not Assigned(glVertexAttrib3svNV) then Exit;
  4726. glVertexAttrib3fvNV := wglGetProcAddress('glVertexAttrib3fvNV');
  4727. if not Assigned(glVertexAttrib3fvNV) then Exit;
  4728. glVertexAttrib3dvNV := wglGetProcAddress('glVertexAttrib3dvNV');
  4729. if not Assigned(glVertexAttrib3dvNV) then Exit;
  4730. glVertexAttrib4svNV := wglGetProcAddress('glVertexAttrib4svNV');
  4731. if not Assigned(glVertexAttrib4svNV) then Exit;
  4732. glVertexAttrib4fvNV := wglGetProcAddress('glVertexAttrib4fvNV');
  4733. if not Assigned(glVertexAttrib4fvNV) then Exit;
  4734. glVertexAttrib4dvNV := wglGetProcAddress('glVertexAttrib4dvNV');
  4735. if not Assigned(glVertexAttrib4dvNV) then Exit;
  4736. glVertexAttrib4ubvNV := wglGetProcAddress('glVertexAttrib4ubvNV');
  4737. if not Assigned(glVertexAttrib4ubvNV) then Exit;
  4738. glVertexAttribs1svNV := wglGetProcAddress('glVertexAttribs1svNV');
  4739. if not Assigned(glVertexAttribs1svNV) then Exit;
  4740. glVertexAttribs1fvNV := wglGetProcAddress('glVertexAttribs1fvNV');
  4741. if not Assigned(glVertexAttribs1fvNV) then Exit;
  4742. glVertexAttribs1dvNV := wglGetProcAddress('glVertexAttribs1dvNV');
  4743. if not Assigned(glVertexAttribs1dvNV) then Exit;
  4744. glVertexAttribs2svNV := wglGetProcAddress('glVertexAttribs2svNV');
  4745. if not Assigned(glVertexAttribs2svNV) then Exit;
  4746. glVertexAttribs2fvNV := wglGetProcAddress('glVertexAttribs2fvNV');
  4747. if not Assigned(glVertexAttribs2fvNV) then Exit;
  4748. glVertexAttribs2dvNV := wglGetProcAddress('glVertexAttribs2dvNV');
  4749. if not Assigned(glVertexAttribs2dvNV) then Exit;
  4750. glVertexAttribs3svNV := wglGetProcAddress('glVertexAttribs3svNV');
  4751. if not Assigned(glVertexAttribs3svNV) then Exit;
  4752. glVertexAttribs3fvNV := wglGetProcAddress('glVertexAttribs3fvNV');
  4753. if not Assigned(glVertexAttribs3fvNV) then Exit;
  4754. glVertexAttribs3dvNV := wglGetProcAddress('glVertexAttribs3dvNV');
  4755. if not Assigned(glVertexAttribs3dvNV) then Exit;
  4756. glVertexAttribs4svNV := wglGetProcAddress('glVertexAttribs4svNV');
  4757. if not Assigned(glVertexAttribs4svNV) then Exit;
  4758. glVertexAttribs4fvNV := wglGetProcAddress('glVertexAttribs4fvNV');
  4759. if not Assigned(glVertexAttribs4fvNV) then Exit;
  4760. glVertexAttribs4dvNV := wglGetProcAddress('glVertexAttribs4dvNV');
  4761. if not Assigned(glVertexAttribs4dvNV) then Exit;
  4762. glVertexAttribs4ubvNV := wglGetProcAddress('glVertexAttribs4ubvNV');
  4763. if not Assigned(glVertexAttribs4ubvNV) then Exit;
  4764. Result := TRUE;
  4765. end;
  4766. end;
  4767. function Load_GL_NV_vertex_program1_1: Boolean;
  4768. var
  4769. extstring: String;
  4770. begin
  4771. Result := FALSE;
  4772. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4773. if glext_ExtensionSupported('GL_NV_vertex_program1_1', extstring) then
  4774. begin
  4775. Result := TRUE;
  4776. end;
  4777. end;
  4778. function Load_GL_ATI_element_array: Boolean;
  4779. var
  4780. extstring: String;
  4781. begin
  4782. Result := FALSE;
  4783. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4784. if glext_ExtensionSupported('GL_ATI_element_array', extstring) then
  4785. begin
  4786. glElementPointerATI := wglGetProcAddress('glElementPointerATI');
  4787. if not Assigned(glElementPointerATI) then Exit;
  4788. glDrawElementArrayATI := wglGetProcAddress('glDrawElementArrayATI');
  4789. if not Assigned(glDrawElementArrayATI) then Exit;
  4790. glDrawRangeElementArrayATI := wglGetProcAddress('glDrawRangeElementArrayATI');
  4791. if not Assigned(glDrawRangeElementArrayATI) then Exit;
  4792. Result := TRUE;
  4793. end;
  4794. end;
  4795. function Load_GL_ATI_envmap_bumpmap: Boolean;
  4796. var
  4797. extstring: String;
  4798. begin
  4799. Result := FALSE;
  4800. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4801. if glext_ExtensionSupported('GL_ATI_envmap_bumpmap', extstring) then
  4802. begin
  4803. glTexBumpParameterivATI := wglGetProcAddress('glTexBumpParameterivATI');
  4804. if not Assigned(glTexBumpParameterivATI) then Exit;
  4805. glTexBumpParameterfvATI := wglGetProcAddress('glTexBumpParameterfvATI');
  4806. if not Assigned(glTexBumpParameterfvATI) then Exit;
  4807. glGetTexBumpParameterivATI := wglGetProcAddress('glGetTexBumpParameterivATI');
  4808. if not Assigned(glGetTexBumpParameterivATI) then Exit;
  4809. glGetTexBumpParameterfvATI := wglGetProcAddress('glGetTexBumpParameterfvATI');
  4810. if not Assigned(glGetTexBumpParameterfvATI) then Exit;
  4811. Result := TRUE;
  4812. end;
  4813. end;
  4814. function Load_GL_ATI_fragment_shader: Boolean;
  4815. var
  4816. extstring: String;
  4817. begin
  4818. Result := FALSE;
  4819. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4820. if glext_ExtensionSupported('GL_ATI_fragment_shader', extstring) then
  4821. begin
  4822. glGenFragmentShadersATI := wglGetProcAddress('glGenFragmentShadersATI');
  4823. if not Assigned(glGenFragmentShadersATI) then Exit;
  4824. glBindFragmentShaderATI := wglGetProcAddress('glBindFragmentShaderATI');
  4825. if not Assigned(glBindFragmentShaderATI) then Exit;
  4826. glDeleteFragmentShaderATI := wglGetProcAddress('glDeleteFragmentShaderATI');
  4827. if not Assigned(glDeleteFragmentShaderATI) then Exit;
  4828. glBeginFragmentShaderATI := wglGetProcAddress('glBeginFragmentShaderATI');
  4829. if not Assigned(glBeginFragmentShaderATI) then Exit;
  4830. glEndFragmentShaderATI := wglGetProcAddress('glEndFragmentShaderATI');
  4831. if not Assigned(glEndFragmentShaderATI) then Exit;
  4832. glPassTexCoordATI := wglGetProcAddress('glPassTexCoordATI');
  4833. if not Assigned(glPassTexCoordATI) then Exit;
  4834. glSampleMapATI := wglGetProcAddress('glSampleMapATI');
  4835. if not Assigned(glSampleMapATI) then Exit;
  4836. glColorFragmentOp1ATI := wglGetProcAddress('glColorFragmentOp1ATI');
  4837. if not Assigned(glColorFragmentOp1ATI) then Exit;
  4838. glColorFragmentOp2ATI := wglGetProcAddress('glColorFragmentOp2ATI');
  4839. if not Assigned(glColorFragmentOp2ATI) then Exit;
  4840. glColorFragmentOp3ATI := wglGetProcAddress('glColorFragmentOp3ATI');
  4841. if not Assigned(glColorFragmentOp3ATI) then Exit;
  4842. glAlphaFragmentOp1ATI := wglGetProcAddress('glAlphaFragmentOp1ATI');
  4843. if not Assigned(glAlphaFragmentOp1ATI) then Exit;
  4844. glAlphaFragmentOp2ATI := wglGetProcAddress('glAlphaFragmentOp2ATI');
  4845. if not Assigned(glAlphaFragmentOp2ATI) then Exit;
  4846. glAlphaFragmentOp3ATI := wglGetProcAddress('glAlphaFragmentOp3ATI');
  4847. if not Assigned(glAlphaFragmentOp3ATI) then Exit;
  4848. glSetFragmentShaderConstantATI := wglGetProcAddress('glSetFragmentShaderConstantATI');
  4849. if not Assigned(glSetFragmentShaderConstantATI) then Exit;
  4850. Result := TRUE;
  4851. end;
  4852. end;
  4853. function Load_GL_ATI_pn_triangles: Boolean;
  4854. var
  4855. extstring: String;
  4856. begin
  4857. Result := FALSE;
  4858. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4859. if glext_ExtensionSupported('GL_ATI_pn_triangles', extstring) then
  4860. begin
  4861. glPNTrianglesiATI := wglGetProcAddress('glPNTrianglesiATI');
  4862. if not Assigned(glPNTrianglesiATI) then Exit;
  4863. glPNTrianglesfATI := wglGetProcAddress('glPNTrianglesfATI');
  4864. if not Assigned(glPNTrianglesfATI) then Exit;
  4865. Result := TRUE;
  4866. end;
  4867. end;
  4868. function Load_GL_ATI_texture_mirror_once: Boolean;
  4869. var
  4870. extstring: String;
  4871. begin
  4872. Result := FALSE;
  4873. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4874. if glext_ExtensionSupported('GL_ATI_texture_mirror_once', extstring) then
  4875. begin
  4876. Result := TRUE;
  4877. end;
  4878. end;
  4879. function Load_GL_ATI_vertex_array_object: Boolean;
  4880. var
  4881. extstring: String;
  4882. begin
  4883. Result := FALSE;
  4884. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4885. if glext_ExtensionSupported('GL_ATI_vertex_array_object', extstring) then
  4886. begin
  4887. glNewObjectBufferATI := wglGetProcAddress('glNewObjectBufferATI');
  4888. if not Assigned(glNewObjectBufferATI) then Exit;
  4889. glIsObjectBufferATI := wglGetProcAddress('glIsObjectBufferATI');
  4890. if not Assigned(glIsObjectBufferATI) then Exit;
  4891. glUpdateObjectBufferATI := wglGetProcAddress('glUpdateObjectBufferATI');
  4892. if not Assigned(glUpdateObjectBufferATI) then Exit;
  4893. glGetObjectBufferfvATI := wglGetProcAddress('glGetObjectBufferfvATI');
  4894. if not Assigned(glGetObjectBufferfvATI) then Exit;
  4895. glGetObjectBufferivATI := wglGetProcAddress('glGetObjectBufferivATI');
  4896. if not Assigned(glGetObjectBufferivATI) then Exit;
  4897. glDeleteObjectBufferATI := wglGetProcAddress('glDeleteObjectBufferATI');
  4898. if not Assigned(glDeleteObjectBufferATI) then Exit;
  4899. glArrayObjectATI := wglGetProcAddress('glArrayObjectATI');
  4900. if not Assigned(glArrayObjectATI) then Exit;
  4901. glGetArrayObjectfvATI := wglGetProcAddress('glGetArrayObjectfvATI');
  4902. if not Assigned(glGetArrayObjectfvATI) then Exit;
  4903. glGetArrayObjectivATI := wglGetProcAddress('glGetArrayObjectivATI');
  4904. if not Assigned(glGetArrayObjectivATI) then Exit;
  4905. glVariantArrayObjectATI := wglGetProcAddress('glVariantArrayObjectATI');
  4906. if not Assigned(glVariantArrayObjectATI) then Exit;
  4907. glGetVariantArrayObjectfvATI := wglGetProcAddress('glGetVariantArrayObjectfvATI');
  4908. if not Assigned(glGetVariantArrayObjectfvATI) then Exit;
  4909. glGetVariantArrayObjectivATI := wglGetProcAddress('glGetVariantArrayObjectivATI');
  4910. if not Assigned(glGetVariantArrayObjectivATI) then Exit;
  4911. Result := TRUE;
  4912. end;
  4913. end;
  4914. function Load_GL_ATI_vertex_streams: Boolean;
  4915. var
  4916. extstring: String;
  4917. begin
  4918. Result := FALSE;
  4919. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4920. if glext_ExtensionSupported('GL_ATI_vertex_streams', extstring) then
  4921. begin
  4922. glVertexStream1s := wglGetProcAddress('glVertexStream1s');
  4923. if not Assigned(glVertexStream1s) then Exit;
  4924. glVertexStream1i := wglGetProcAddress('glVertexStream1i');
  4925. if not Assigned(glVertexStream1i) then Exit;
  4926. glVertexStream1f := wglGetProcAddress('glVertexStream1f');
  4927. if not Assigned(glVertexStream1f) then Exit;
  4928. glVertexStream1d := wglGetProcAddress('glVertexStream1d');
  4929. if not Assigned(glVertexStream1d) then Exit;
  4930. glVertexStream1sv := wglGetProcAddress('glVertexStream1sv');
  4931. if not Assigned(glVertexStream1sv) then Exit;
  4932. glVertexStream1iv := wglGetProcAddress('glVertexStream1iv');
  4933. if not Assigned(glVertexStream1iv) then Exit;
  4934. glVertexStream1fv := wglGetProcAddress('glVertexStream1fv');
  4935. if not Assigned(glVertexStream1fv) then Exit;
  4936. glVertexStream1dv := wglGetProcAddress('glVertexStream1dv');
  4937. if not Assigned(glVertexStream1dv) then Exit;
  4938. glVertexStream2s := wglGetProcAddress('glVertexStream2s');
  4939. if not Assigned(glVertexStream2s) then Exit;
  4940. glVertexStream2i := wglGetProcAddress('glVertexStream2i');
  4941. if not Assigned(glVertexStream2i) then Exit;
  4942. glVertexStream2f := wglGetProcAddress('glVertexStream2f');
  4943. if not Assigned(glVertexStream2f) then Exit;
  4944. glVertexStream2d := wglGetProcAddress('glVertexStream2d');
  4945. if not Assigned(glVertexStream2d) then Exit;
  4946. glVertexStream2sv := wglGetProcAddress('glVertexStream2sv');
  4947. if not Assigned(glVertexStream2sv) then Exit;
  4948. glVertexStream2iv := wglGetProcAddress('glVertexStream2iv');
  4949. if not Assigned(glVertexStream2iv) then Exit;
  4950. glVertexStream2fv := wglGetProcAddress('glVertexStream2fv');
  4951. if not Assigned(glVertexStream2fv) then Exit;
  4952. glVertexStream2dv := wglGetProcAddress('glVertexStream2dv');
  4953. if not Assigned(glVertexStream2dv) then Exit;
  4954. glVertexStream3s := wglGetProcAddress('glVertexStream3s');
  4955. if not Assigned(glVertexStream3s) then Exit;
  4956. glVertexStream3i := wglGetProcAddress('glVertexStream3i');
  4957. if not Assigned(glVertexStream3i) then Exit;
  4958. glVertexStream3f := wglGetProcAddress('glVertexStream3f');
  4959. if not Assigned(glVertexStream3f) then Exit;
  4960. glVertexStream3d := wglGetProcAddress('glVertexStream3d');
  4961. if not Assigned(glVertexStream3d) then Exit;
  4962. glVertexStream3sv := wglGetProcAddress('glVertexStream3sv');
  4963. if not Assigned(glVertexStream3sv) then Exit;
  4964. glVertexStream3iv := wglGetProcAddress('glVertexStream3iv');
  4965. if not Assigned(glVertexStream3iv) then Exit;
  4966. glVertexStream3fv := wglGetProcAddress('glVertexStream3fv');
  4967. if not Assigned(glVertexStream3fv) then Exit;
  4968. glVertexStream3dv := wglGetProcAddress('glVertexStream3dv');
  4969. if not Assigned(glVertexStream3dv) then Exit;
  4970. glVertexStream4s := wglGetProcAddress('glVertexStream4s');
  4971. if not Assigned(glVertexStream4s) then Exit;
  4972. glVertexStream4i := wglGetProcAddress('glVertexStream4i');
  4973. if not Assigned(glVertexStream4i) then Exit;
  4974. glVertexStream4f := wglGetProcAddress('glVertexStream4f');
  4975. if not Assigned(glVertexStream4f) then Exit;
  4976. glVertexStream4d := wglGetProcAddress('glVertexStream4d');
  4977. if not Assigned(glVertexStream4d) then Exit;
  4978. glVertexStream4sv := wglGetProcAddress('glVertexStream4sv');
  4979. if not Assigned(glVertexStream4sv) then Exit;
  4980. glVertexStream4iv := wglGetProcAddress('glVertexStream4iv');
  4981. if not Assigned(glVertexStream4iv) then Exit;
  4982. glVertexStream4fv := wglGetProcAddress('glVertexStream4fv');
  4983. if not Assigned(glVertexStream4fv) then Exit;
  4984. glVertexStream4dv := wglGetProcAddress('glVertexStream4dv');
  4985. if not Assigned(glVertexStream4dv) then Exit;
  4986. glNormalStream3b := wglGetProcAddress('glNormalStream3b');
  4987. if not Assigned(glNormalStream3b) then Exit;
  4988. glNormalStream3s := wglGetProcAddress('glNormalStream3s');
  4989. if not Assigned(glNormalStream3s) then Exit;
  4990. glNormalStream3i := wglGetProcAddress('glNormalStream3i');
  4991. if not Assigned(glNormalStream3i) then Exit;
  4992. glNormalStream3f := wglGetProcAddress('glNormalStream3f');
  4993. if not Assigned(glNormalStream3f) then Exit;
  4994. glNormalStream3d := wglGetProcAddress('glNormalStream3d');
  4995. if not Assigned(glNormalStream3d) then Exit;
  4996. glNormalStream3bv := wglGetProcAddress('glNormalStream3bv');
  4997. if not Assigned(glNormalStream3bv) then Exit;
  4998. glNormalStream3sv := wglGetProcAddress('glNormalStream3sv');
  4999. if not Assigned(glNormalStream3sv) then Exit;
  5000. glNormalStream3iv := wglGetProcAddress('glNormalStream3iv');
  5001. if not Assigned(glNormalStream3iv) then Exit;
  5002. glNormalStream3fv := wglGetProcAddress('glNormalStream3fv');
  5003. if not Assigned(glNormalStream3fv) then Exit;
  5004. glNormalStream3dv := wglGetProcAddress('glNormalStream3dv');
  5005. if not Assigned(glNormalStream3dv) then Exit;
  5006. glClientActiveVertexStream := wglGetProcAddress('glClientActiveVertexStream');
  5007. if not Assigned(glClientActiveVertexStream) then Exit;
  5008. glVertexBlendEnvi := wglGetProcAddress('glVertexBlendEnvi');
  5009. if not Assigned(glVertexBlendEnvi) then Exit;
  5010. glVertexBlendEnvf := wglGetProcAddress('glVertexBlendEnvf');
  5011. if not Assigned(glVertexBlendEnvf) then Exit;
  5012. Result := TRUE;
  5013. end;
  5014. end;
  5015. {$IFDEF Win32}
  5016. function Load_WGL_I3D_image_buffer: Boolean;
  5017. var
  5018. extstring: String;
  5019. begin
  5020. Result := FALSE;
  5021. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  5022. if not Assigned(wglGetExtensionsStringARB) then Exit;
  5023. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  5024. if glext_ExtensionSupported('WGL_I3D_image_buffer', extstring) then
  5025. begin
  5026. wglCreateImageBufferI3D := wglGetProcAddress('wglCreateImageBufferI3D');
  5027. if not Assigned(wglCreateImageBufferI3D) then Exit;
  5028. wglDestroyImageBufferI3D := wglGetProcAddress('wglDestroyImageBufferI3D');
  5029. if not Assigned(wglDestroyImageBufferI3D) then Exit;
  5030. wglAssociateImageBufferEventsI3D := wglGetProcAddress('wglAssociateImageBufferEventsI3D');
  5031. if not Assigned(wglAssociateImageBufferEventsI3D) then Exit;
  5032. wglReleaseImageBufferEventsI3D := wglGetProcAddress('wglReleaseImageBufferEventsI3D');
  5033. if not Assigned(wglReleaseImageBufferEventsI3D) then Exit;
  5034. Result := TRUE;
  5035. end;
  5036. end;
  5037. function Load_WGL_I3D_swap_frame_lock: Boolean;
  5038. var
  5039. extstring: String;
  5040. begin
  5041. Result := FALSE;
  5042. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  5043. if not Assigned(wglGetExtensionsStringARB) then Exit;
  5044. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  5045. if glext_ExtensionSupported('WGL_I3D_swap_frame_lock', extstring) then
  5046. begin
  5047. wglEnableFrameLockI3D := wglGetProcAddress('wglEnableFrameLockI3D');
  5048. if not Assigned(wglEnableFrameLockI3D) then Exit;
  5049. wglDisableFrameLockI3D := wglGetProcAddress('wglDisableFrameLockI3D');
  5050. if not Assigned(wglDisableFrameLockI3D) then Exit;
  5051. wglIsEnabledFrameLockI3D := wglGetProcAddress('wglIsEnabledFrameLockI3D');
  5052. if not Assigned(wglIsEnabledFrameLockI3D) then Exit;
  5053. wglQueryFrameLockMasterI3D := wglGetProcAddress('wglQueryFrameLockMasterI3D');
  5054. if not Assigned(wglQueryFrameLockMasterI3D) then Exit;
  5055. Result := TRUE;
  5056. end;
  5057. end;
  5058. function Load_WGL_I3D_swap_frame_usage: Boolean;
  5059. var
  5060. extstring: String;
  5061. begin
  5062. Result := FALSE;
  5063. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  5064. if not Assigned(wglGetExtensionsStringARB) then Exit;
  5065. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  5066. if glext_ExtensionSupported('WGL_I3D_swap_frame_usage', extstring) then
  5067. begin
  5068. wglGetFrameUsageI3D := wglGetProcAddress('wglGetFrameUsageI3D');
  5069. if not Assigned(wglGetFrameUsageI3D) then Exit;
  5070. wglBeginFrameTrackingI3D := wglGetProcAddress('wglBeginFrameTrackingI3D');
  5071. if not Assigned(wglBeginFrameTrackingI3D) then Exit;
  5072. wglEndFrameTrackingI3D := wglGetProcAddress('wglEndFrameTrackingI3D');
  5073. if not Assigned(wglEndFrameTrackingI3D) then Exit;
  5074. wglQueryFrameTrackingI3D := wglGetProcAddress('wglQueryFrameTrackingI3D');
  5075. if not Assigned(wglQueryFrameTrackingI3D) then Exit;
  5076. Result := TRUE;
  5077. end;
  5078. end;
  5079. {$ENDIF}
  5080. function Load_GL_3DFX_texture_compression_FXT1: Boolean;
  5081. var
  5082. extstring: String;
  5083. begin
  5084. Result := FALSE;
  5085. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5086. if glext_ExtensionSupported('GL_3DFX_texture_compression_FXT1', extstring) then
  5087. begin
  5088. Result := TRUE;
  5089. end;
  5090. end;
  5091. function Load_GL_IBM_cull_vertex: Boolean;
  5092. var
  5093. extstring: String;
  5094. begin
  5095. Result := FALSE;
  5096. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5097. if glext_ExtensionSupported('GL_IBM_cull_vertex', extstring) then
  5098. begin
  5099. Result := TRUE;
  5100. end;
  5101. end;
  5102. function Load_GL_IBM_multimode_draw_arrays: Boolean;
  5103. var
  5104. extstring: String;
  5105. begin
  5106. Result := FALSE;
  5107. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5108. if glext_ExtensionSupported('GL_IBM_multimode_draw_arrays', extstring) then
  5109. begin
  5110. glMultiModeDrawArraysIBM := wglGetProcAddress('glMultiModeDrawArraysIBM');
  5111. if not Assigned(glMultiModeDrawArraysIBM) then Exit;
  5112. glMultiModeDrawElementsIBM := wglGetProcAddress('glMultiModeDrawElementsIBM');
  5113. if not Assigned(glMultiModeDrawElementsIBM) then Exit;
  5114. Result := TRUE;
  5115. end;
  5116. end;
  5117. function Load_GL_IBM_raster_pos_clip: Boolean;
  5118. var
  5119. extstring: String;
  5120. begin
  5121. Result := FALSE;
  5122. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5123. if glext_ExtensionSupported('GL_IBM_raster_pos_clip', extstring) then
  5124. begin
  5125. Result := TRUE;
  5126. end;
  5127. end;
  5128. function Load_GL_IBM_texture_mirrored_repeat: Boolean;
  5129. var
  5130. extstring: String;
  5131. begin
  5132. Result := FALSE;
  5133. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5134. if glext_ExtensionSupported('GL_IBM_texture_mirrored_repeat', extstring) then
  5135. begin
  5136. Result := TRUE;
  5137. end;
  5138. end;
  5139. function Load_GL_IBM_vertex_array_lists: Boolean;
  5140. var
  5141. extstring: String;
  5142. begin
  5143. Result := FALSE;
  5144. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5145. if glext_ExtensionSupported('GL_IBM_vertex_array_lists', extstring) then
  5146. begin
  5147. glColorPointerListIBM := wglGetProcAddress('glColorPointerListIBM');
  5148. if not Assigned(glColorPointerListIBM) then Exit;
  5149. glSecondaryColorPointerListIBM := wglGetProcAddress('glSecondaryColorPointerListIBM');
  5150. if not Assigned(glSecondaryColorPointerListIBM) then Exit;
  5151. glEdgeFlagPointerListIBM := wglGetProcAddress('glEdgeFlagPointerListIBM');
  5152. if not Assigned(glEdgeFlagPointerListIBM) then Exit;
  5153. glFogCoordPointerListIBM := wglGetProcAddress('glFogCoordPointerListIBM');
  5154. if not Assigned(glFogCoordPointerListIBM) then Exit;
  5155. glNormalPointerListIBM := wglGetProcAddress('glNormalPointerListIBM');
  5156. if not Assigned(glNormalPointerListIBM) then Exit;
  5157. glTexCoordPointerListIBM := wglGetProcAddress('glTexCoordPointerListIBM');
  5158. if not Assigned(glTexCoordPointerListIBM) then Exit;
  5159. glVertexPointerListIBM := wglGetProcAddress('glVertexPointerListIBM');
  5160. if not Assigned(glVertexPointerListIBM) then Exit;
  5161. Result := TRUE;
  5162. end;
  5163. end;
  5164. function Load_GL_MESA_resize_buffers: Boolean;
  5165. var
  5166. extstring: String;
  5167. begin
  5168. Result := FALSE;
  5169. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5170. if glext_ExtensionSupported('GL_MESA_resize_buffers', extstring) then
  5171. begin
  5172. glResizeBuffersMESA := wglGetProcAddress('glResizeBuffersMESA');
  5173. if not Assigned(glResizeBuffersMESA) then Exit;
  5174. Result := TRUE;
  5175. end;
  5176. end;
  5177. function Load_GL_MESA_window_pos: Boolean;
  5178. var
  5179. extstring: String;
  5180. begin
  5181. Result := FALSE;
  5182. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5183. if glext_ExtensionSupported('GL_MESA_window_pos', extstring) then
  5184. begin
  5185. glWindowPos2dMESA := wglGetProcAddress('glWindowPos2dMESA');
  5186. if not Assigned(glWindowPos2dMESA) then Exit;
  5187. glWindowPos2fMESA := wglGetProcAddress('glWindowPos2fMESA');
  5188. if not Assigned(glWindowPos2fMESA) then Exit;
  5189. glWindowPos2iMESA := wglGetProcAddress('glWindowPos2iMESA');
  5190. if not Assigned(glWindowPos2iMESA) then Exit;
  5191. glWindowPos2sMESA := wglGetProcAddress('glWindowPos2sMESA');
  5192. if not Assigned(glWindowPos2sMESA) then Exit;
  5193. glWindowPos2ivMESA := wglGetProcAddress('glWindowPos2ivMESA');
  5194. if not Assigned(glWindowPos2ivMESA) then Exit;
  5195. glWindowPos2svMESA := wglGetProcAddress('glWindowPos2svMESA');
  5196. if not Assigned(glWindowPos2svMESA) then Exit;
  5197. glWindowPos2fvMESA := wglGetProcAddress('glWindowPos2fvMESA');
  5198. if not Assigned(glWindowPos2fvMESA) then Exit;
  5199. glWindowPos2dvMESA := wglGetProcAddress('glWindowPos2dvMESA');
  5200. if not Assigned(glWindowPos2dvMESA) then Exit;
  5201. glWindowPos3iMESA := wglGetProcAddress('glWindowPos3iMESA');
  5202. if not Assigned(glWindowPos3iMESA) then Exit;
  5203. glWindowPos3sMESA := wglGetProcAddress('glWindowPos3sMESA');
  5204. if not Assigned(glWindowPos3sMESA) then Exit;
  5205. glWindowPos3fMESA := wglGetProcAddress('glWindowPos3fMESA');
  5206. if not Assigned(glWindowPos3fMESA) then Exit;
  5207. glWindowPos3dMESA := wglGetProcAddress('glWindowPos3dMESA');
  5208. if not Assigned(glWindowPos3dMESA) then Exit;
  5209. glWindowPos3ivMESA := wglGetProcAddress('glWindowPos3ivMESA');
  5210. if not Assigned(glWindowPos3ivMESA) then Exit;
  5211. glWindowPos3svMESA := wglGetProcAddress('glWindowPos3svMESA');
  5212. if not Assigned(glWindowPos3svMESA) then Exit;
  5213. glWindowPos3fvMESA := wglGetProcAddress('glWindowPos3fvMESA');
  5214. if not Assigned(glWindowPos3fvMESA) then Exit;
  5215. glWindowPos3dvMESA := wglGetProcAddress('glWindowPos3dvMESA');
  5216. if not Assigned(glWindowPos3dvMESA) then Exit;
  5217. glWindowPos4iMESA := wglGetProcAddress('glWindowPos4iMESA');
  5218. if not Assigned(glWindowPos4iMESA) then Exit;
  5219. glWindowPos4sMESA := wglGetProcAddress('glWindowPos4sMESA');
  5220. if not Assigned(glWindowPos4sMESA) then Exit;
  5221. glWindowPos4fMESA := wglGetProcAddress('glWindowPos4fMESA');
  5222. if not Assigned(glWindowPos4fMESA) then Exit;
  5223. glWindowPos4dMESA := wglGetProcAddress('glWindowPos4dMESA');
  5224. if not Assigned(glWindowPos4dMESA) then Exit;
  5225. glWindowPos4ivMESA := wglGetProcAddress('glWindowPos4ivMESA');
  5226. if not Assigned(glWindowPos4ivMESA) then Exit;
  5227. glWindowPos4svMESA := wglGetProcAddress('glWindowPos4svMESA');
  5228. if not Assigned(glWindowPos4svMESA) then Exit;
  5229. glWindowPos4fvMESA := wglGetProcAddress('glWindowPos4fvMESA');
  5230. if not Assigned(glWindowPos4fvMESA) then Exit;
  5231. glWindowPos4dvMESA := wglGetProcAddress('glWindowPos4dvMESA');
  5232. if not Assigned(glWindowPos4dvMESA) then Exit;
  5233. Result := TRUE;
  5234. end;
  5235. end;
  5236. function Load_GL_OML_interlace: Boolean;
  5237. var
  5238. extstring: String;
  5239. begin
  5240. Result := FALSE;
  5241. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5242. if glext_ExtensionSupported('GL_OML_interlace', extstring) then
  5243. begin
  5244. Result := TRUE;
  5245. end;
  5246. end;
  5247. function Load_GL_OML_resample: Boolean;
  5248. var
  5249. extstring: String;
  5250. begin
  5251. Result := FALSE;
  5252. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5253. if glext_ExtensionSupported('GL_OML_resample', extstring) then
  5254. begin
  5255. Result := TRUE;
  5256. end;
  5257. end;
  5258. function Load_GL_OML_subsample: Boolean;
  5259. var
  5260. extstring: String;
  5261. begin
  5262. Result := FALSE;
  5263. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5264. if glext_ExtensionSupported('GL_OML_subsample', extstring) then
  5265. begin
  5266. Result := TRUE;
  5267. end;
  5268. end;
  5269. function Load_GL_SGIS_generate_mipmap: Boolean;
  5270. var
  5271. extstring: String;
  5272. begin
  5273. Result := FALSE;
  5274. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5275. if glext_ExtensionSupported('GL_SGIS_generate_mipmap', extstring) then
  5276. begin
  5277. Result := TRUE;
  5278. end;
  5279. end;
  5280. function Load_GL_SGIS_multisample: Boolean;
  5281. var
  5282. extstring: String;
  5283. begin
  5284. Result := FALSE;
  5285. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5286. if glext_ExtensionSupported('GL_SGIS_multisample', extstring) then
  5287. begin
  5288. glSampleMaskSGIS := wglGetProcAddress('glSampleMaskSGIS');
  5289. if not Assigned(glSampleMaskSGIS) then Exit;
  5290. glSamplePatternSGIS := wglGetProcAddress('glSamplePatternSGIS');
  5291. if not Assigned(glSamplePatternSGIS) then Exit;
  5292. Result := TRUE;
  5293. end;
  5294. end;
  5295. function Load_GL_SGIS_pixel_texture: Boolean;
  5296. var
  5297. extstring: String;
  5298. begin
  5299. Result := FALSE;
  5300. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5301. if glext_ExtensionSupported('GL_SGIS_pixel_texture', extstring) then
  5302. begin
  5303. glPixelTexGenParameteriSGIS := wglGetProcAddress('glPixelTexGenParameteriSGIS');
  5304. if not Assigned(glPixelTexGenParameteriSGIS) then Exit;
  5305. glPixelTexGenParameterfSGIS := wglGetProcAddress('glPixelTexGenParameterfSGIS');
  5306. if not Assigned(glPixelTexGenParameterfSGIS) then Exit;
  5307. glGetPixelTexGenParameterivSGIS := wglGetProcAddress('glGetPixelTexGenParameterivSGIS');
  5308. if not Assigned(glGetPixelTexGenParameterivSGIS) then Exit;
  5309. glGetPixelTexGenParameterfvSGIS := wglGetProcAddress('glGetPixelTexGenParameterfvSGIS');
  5310. if not Assigned(glGetPixelTexGenParameterfvSGIS) then Exit;
  5311. Result := TRUE;
  5312. end;
  5313. end;
  5314. function Load_GL_SGIS_texture_border_clamp: Boolean;
  5315. var
  5316. extstring: String;
  5317. begin
  5318. Result := FALSE;
  5319. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5320. if glext_ExtensionSupported('GL_SGIS_texture_border_clamp', extstring) then
  5321. begin
  5322. Result := TRUE;
  5323. end;
  5324. end;
  5325. function Load_GL_SGIS_texture_color_mask: Boolean;
  5326. var
  5327. extstring: String;
  5328. begin
  5329. Result := FALSE;
  5330. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5331. if glext_ExtensionSupported('GL_SGIS_texture_color_mask', extstring) then
  5332. begin
  5333. glTextureColorMaskSGIS := wglGetProcAddress('glTextureColorMaskSGIS');
  5334. if not Assigned(glTextureColorMaskSGIS) then Exit;
  5335. Result := TRUE;
  5336. end;
  5337. end;
  5338. function Load_GL_SGIS_texture_edge_clamp: Boolean;
  5339. var
  5340. extstring: String;
  5341. begin
  5342. Result := FALSE;
  5343. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5344. if glext_ExtensionSupported('GL_SGIS_texture_edge_clamp', extstring) then
  5345. begin
  5346. Result := TRUE;
  5347. end;
  5348. end;
  5349. function Load_GL_SGIS_texture_lod: Boolean;
  5350. var
  5351. extstring: String;
  5352. begin
  5353. Result := FALSE;
  5354. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5355. if glext_ExtensionSupported('GL_SGIS_texture_lod', extstring) then
  5356. begin
  5357. Result := TRUE;
  5358. end;
  5359. end;
  5360. function Load_GL_SGIS_depth_texture: Boolean;
  5361. var
  5362. extstring: String;
  5363. begin
  5364. Result := FALSE;
  5365. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5366. if glext_ExtensionSupported('GL_SGIS_depth_texture', extstring) then
  5367. begin
  5368. Result := TRUE;
  5369. end;
  5370. end;
  5371. function Load_GL_SGIX_fog_offset: Boolean;
  5372. var
  5373. extstring: String;
  5374. begin
  5375. Result := FALSE;
  5376. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5377. if glext_ExtensionSupported('GL_SGIX_fog_offset', extstring) then
  5378. begin
  5379. Result := TRUE;
  5380. end;
  5381. end;
  5382. function Load_GL_SGIX_interlace: Boolean;
  5383. var
  5384. extstring: String;
  5385. begin
  5386. Result := FALSE;
  5387. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5388. if glext_ExtensionSupported('GL_SGIX_interlace', extstring) then
  5389. begin
  5390. Result := TRUE;
  5391. end;
  5392. end;
  5393. function Load_GL_SGIX_shadow_ambient: Boolean;
  5394. var
  5395. extstring: String;
  5396. begin
  5397. Result := FALSE;
  5398. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5399. if glext_ExtensionSupported('GL_SGIX_shadow_ambient', extstring) then
  5400. begin
  5401. Result := TRUE;
  5402. end;
  5403. end;
  5404. function Load_GL_SGI_color_matrix: Boolean;
  5405. var
  5406. extstring: String;
  5407. begin
  5408. Result := FALSE;
  5409. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5410. if glext_ExtensionSupported('GL_SGI_color_matrix', extstring) then
  5411. begin
  5412. Result := TRUE;
  5413. end;
  5414. end;
  5415. function Load_GL_SGI_color_table: Boolean;
  5416. var
  5417. extstring: String;
  5418. begin
  5419. Result := FALSE;
  5420. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5421. if glext_ExtensionSupported('GL_SGI_color_table', extstring) then
  5422. begin
  5423. glColorTableSGI := wglGetProcAddress('glColorTableSGI');
  5424. if not Assigned(glColorTableSGI) then Exit;
  5425. glCopyColorTableSGI := wglGetProcAddress('glCopyColorTableSGI');
  5426. if not Assigned(glCopyColorTableSGI) then Exit;
  5427. glColorTableParameterivSGI := wglGetProcAddress('glColorTableParameterivSGI');
  5428. if not Assigned(glColorTableParameterivSGI) then Exit;
  5429. glColorTableParameterfvSGI := wglGetProcAddress('glColorTableParameterfvSGI');
  5430. if not Assigned(glColorTableParameterfvSGI) then Exit;
  5431. glGetColorTableSGI := wglGetProcAddress('glGetColorTableSGI');
  5432. if not Assigned(glGetColorTableSGI) then Exit;
  5433. glGetColorTableParameterivSGI := wglGetProcAddress('glGetColorTableParameterivSGI');
  5434. if not Assigned(glGetColorTableParameterivSGI) then Exit;
  5435. glGetColorTableParameterfvSGI := wglGetProcAddress('glGetColorTableParameterfvSGI');
  5436. if not Assigned(glGetColorTableParameterfvSGI) then Exit;
  5437. Result := TRUE;
  5438. end;
  5439. end;
  5440. function Load_GL_SGI_texture_color_table: Boolean;
  5441. var
  5442. extstring: String;
  5443. begin
  5444. Result := FALSE;
  5445. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5446. if glext_ExtensionSupported('GL_SGI_texture_color_table', extstring) then
  5447. begin
  5448. Result := TRUE;
  5449. end;
  5450. end;
  5451. function Load_GL_SUN_vertex: Boolean;
  5452. var
  5453. extstring: String;
  5454. begin
  5455. Result := FALSE;
  5456. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5457. if glext_ExtensionSupported('GL_SUN_vertex', extstring) then
  5458. begin
  5459. glColor4ubVertex2fSUN := wglGetProcAddress('glColor4ubVertex2fSUN');
  5460. if not Assigned(glColor4ubVertex2fSUN) then Exit;
  5461. glColor4ubVertex2fvSUN := wglGetProcAddress('glColor4ubVertex2fvSUN');
  5462. if not Assigned(glColor4ubVertex2fvSUN) then Exit;
  5463. glColor4ubVertex3fSUN := wglGetProcAddress('glColor4ubVertex3fSUN');
  5464. if not Assigned(glColor4ubVertex3fSUN) then Exit;
  5465. glColor4ubVertex3fvSUN := wglGetProcAddress('glColor4ubVertex3fvSUN');
  5466. if not Assigned(glColor4ubVertex3fvSUN) then Exit;
  5467. glColor3fVertex3fSUN := wglGetProcAddress('glColor3fVertex3fSUN');
  5468. if not Assigned(glColor3fVertex3fSUN) then Exit;
  5469. glColor3fVertex3fvSUN := wglGetProcAddress('glColor3fVertex3fvSUN');
  5470. if not Assigned(glColor3fVertex3fvSUN) then Exit;
  5471. glNormal3fVertex3fSUN := wglGetProcAddress('glNormal3fVertex3fSUN');
  5472. if not Assigned(glNormal3fVertex3fSUN) then Exit;
  5473. glNormal3fVertex3fvSUN := wglGetProcAddress('glNormal3fVertex3fvSUN');
  5474. if not Assigned(glNormal3fVertex3fvSUN) then Exit;
  5475. glColor4fNormal3fVertex3fSUN := wglGetProcAddress('glColor4fNormal3fVertex3fSUN');
  5476. if not Assigned(glColor4fNormal3fVertex3fSUN) then Exit;
  5477. glColor4fNormal3fVertex3fvSUN := wglGetProcAddress('glColor4fNormal3fVertex3fvSUN');
  5478. if not Assigned(glColor4fNormal3fVertex3fvSUN) then Exit;
  5479. glTexCoord2fVertex3fSUN := wglGetProcAddress('glTexCoord2fVertex3fSUN');
  5480. if not Assigned(glTexCoord2fVertex3fSUN) then Exit;
  5481. glTexCoord2fVertex3fvSUN := wglGetProcAddress('glTexCoord2fVertex3fvSUN');
  5482. if not Assigned(glTexCoord2fVertex3fvSUN) then Exit;
  5483. glTexCoord4fVertex4fSUN := wglGetProcAddress('glTexCoord4fVertex4fSUN');
  5484. if not Assigned(glTexCoord4fVertex4fSUN) then Exit;
  5485. glTexCoord4fVertex4fvSUN := wglGetProcAddress('glTexCoord4fVertex4fvSUN');
  5486. if not Assigned(glTexCoord4fVertex4fvSUN) then Exit;
  5487. glTexCoord2fColor4ubVertex3fSUN := wglGetProcAddress('glTexCoord2fColor4ubVertex3fSUN');
  5488. if not Assigned(glTexCoord2fColor4ubVertex3fSUN) then Exit;
  5489. glTexCoord2fColor4ubVertex3fvSUN := wglGetProcAddress('glTexCoord2fColor4ubVertex3fvSUN');
  5490. if not Assigned(glTexCoord2fColor4ubVertex3fvSUN) then Exit;
  5491. glTexCoord2fColor3fVertex3fSUN := wglGetProcAddress('glTexCoord2fColor3fVertex3fSUN');
  5492. if not Assigned(glTexCoord2fColor3fVertex3fSUN) then Exit;
  5493. glTexCoord2fColor3fVertex3fvSUN := wglGetProcAddress('glTexCoord2fColor3fVertex3fvSUN');
  5494. if not Assigned(glTexCoord2fColor3fVertex3fvSUN) then Exit;
  5495. glTexCoord2fNormal3fVertex3fSUN := wglGetProcAddress('glTexCoord2fNormal3fVertex3fSUN');
  5496. if not Assigned(glTexCoord2fNormal3fVertex3fSUN) then Exit;
  5497. glTexCoord2fNormal3fVertex3fvSUN := wglGetProcAddress('glTexCoord2fNormal3fVertex3fvSUN');
  5498. if not Assigned(glTexCoord2fNormal3fVertex3fvSUN) then Exit;
  5499. glTexCoord2fColor4fNormal3fVertex3fSUN := wglGetProcAddress('glTexCoord2fColor4fNormal3fVertex3fSUN');
  5500. if not Assigned(glTexCoord2fColor4fNormal3fVertex3fSUN) then Exit;
  5501. glTexCoord2fColor4fNormal3fVertex3fvSUN := wglGetProcAddress('glTexCoord2fColor4fNormal3fVertex3fvSUN');
  5502. if not Assigned(glTexCoord2fColor4fNormal3fVertex3fvSUN) then Exit;
  5503. glTexCoord4fColor4fNormal3fVertex4fSUN := wglGetProcAddress('glTexCoord4fColor4fNormal3fVertex4fSUN');
  5504. if not Assigned(glTexCoord4fColor4fNormal3fVertex4fSUN) then Exit;
  5505. glTexCoord4fColor4fNormal3fVertex4fvSUN := wglGetProcAddress('glTexCoord4fColor4fNormal3fVertex4fvSUN');
  5506. if not Assigned(glTexCoord4fColor4fNormal3fVertex4fvSUN) then Exit;
  5507. glReplacementCodeuiVertex3fSUN := wglGetProcAddress('glReplacementCodeuiVertex3fSUN');
  5508. if not Assigned(glReplacementCodeuiVertex3fSUN) then Exit;
  5509. glReplacementCodeuiVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiVertex3fvSUN');
  5510. if not Assigned(glReplacementCodeuiVertex3fvSUN) then Exit;
  5511. glReplacementCodeuiColor4ubVertex3fSUN := wglGetProcAddress('glReplacementCodeuiColor4ubVertex3fSUN');
  5512. if not Assigned(glReplacementCodeuiColor4ubVertex3fSUN) then Exit;
  5513. glReplacementCodeuiColor4ubVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiColor4ubVertex3fvSUN');
  5514. if not Assigned(glReplacementCodeuiColor4ubVertex3fvSUN) then Exit;
  5515. glReplacementCodeuiColor3fVertex3fSUN := wglGetProcAddress('glReplacementCodeuiColor3fVertex3fSUN');
  5516. if not Assigned(glReplacementCodeuiColor3fVertex3fSUN) then Exit;
  5517. glReplacementCodeuiColor3fVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiColor3fVertex3fvSUN');
  5518. if not Assigned(glReplacementCodeuiColor3fVertex3fvSUN) then Exit;
  5519. glReplacementCodeuiNormal3fVertex3fSUN := wglGetProcAddress('glReplacementCodeuiNormal3fVertex3fSUN');
  5520. if not Assigned(glReplacementCodeuiNormal3fVertex3fSUN) then Exit;
  5521. glReplacementCodeuiNormal3fVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiNormal3fVertex3fvSUN');
  5522. if not Assigned(glReplacementCodeuiNormal3fVertex3fvSUN) then Exit;
  5523. glReplacementCodeuiColor4fNormal3fVertex3fSUN := wglGetProcAddress('glReplacementCodeuiColor4fNormal3fVertex3fSUN');
  5524. if not Assigned(glReplacementCodeuiColor4fNormal3fVertex3fSUN) then Exit;
  5525. glReplacementCodeuiColor4fNormal3fVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiColor4fNormal3fVertex3fvSUN');
  5526. if not Assigned(glReplacementCodeuiColor4fNormal3fVertex3fvSUN) then Exit;
  5527. glReplacementCodeuiTexCoord2fVertex3fSUN := wglGetProcAddress('glReplacementCodeuiTexCoord2fVertex3fSUN');
  5528. if not Assigned(glReplacementCodeuiTexCoord2fVertex3fSUN) then Exit;
  5529. glReplacementCodeuiTexCoord2fVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiTexCoord2fVertex3fvSUN');
  5530. if not Assigned(glReplacementCodeuiTexCoord2fVertex3fvSUN) then Exit;
  5531. glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN := wglGetProcAddress('glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN');
  5532. if not Assigned(glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN) then Exit;
  5533. glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN');
  5534. if not Assigned(glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN) then Exit;
  5535. glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN := wglGetProcAddress('glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN');
  5536. if not Assigned(glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN) then Exit;
  5537. glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN');
  5538. if not Assigned(glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN) then Exit;
  5539. Result := TRUE;
  5540. end;
  5541. end;
  5542. function Load_GL_ARB_fragment_program: Boolean;
  5543. var
  5544. extstring: String;
  5545. begin
  5546. Result := FALSE;
  5547. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5548. if glext_ExtensionSupported('GL_ARB_fragment_program', extstring) then
  5549. begin
  5550. glProgramStringARB := wglGetProcAddress('glProgramStringARB');
  5551. if not Assigned(glProgramStringARB) then Exit;
  5552. glBindProgramARB := wglGetProcAddress('glBindProgramARB');
  5553. if not Assigned(glBindProgramARB) then Exit;
  5554. glDeleteProgramsARB := wglGetProcAddress('glDeleteProgramsARB');
  5555. if not Assigned(glDeleteProgramsARB) then Exit;
  5556. glGenProgramsARB := wglGetProcAddress('glGenProgramsARB');
  5557. if not Assigned(glGenProgramsARB) then Exit;
  5558. glProgramEnvParameter4dARB := wglGetProcAddress('glProgramEnvParameter4dARB');
  5559. if not Assigned(glProgramEnvParameter4dARB) then Exit;
  5560. glProgramEnvParameter4dvARB := wglGetProcAddress('glProgramEnvParameter4dvARB');
  5561. if not Assigned(glProgramEnvParameter4dvARB) then Exit;
  5562. glProgramEnvParameter4fARB := wglGetProcAddress('glProgramEnvParameter4fARB');
  5563. if not Assigned(glProgramEnvParameter4fARB) then Exit;
  5564. glProgramEnvParameter4fvARB := wglGetProcAddress('glProgramEnvParameter4fvARB');
  5565. if not Assigned(glProgramEnvParameter4fvARB) then Exit;
  5566. glProgramLocalParameter4dARB := wglGetProcAddress('glProgramLocalParameter4dARB');
  5567. if not Assigned(glProgramLocalParameter4dARB) then Exit;
  5568. glProgramLocalParameter4dvARB := wglGetProcAddress('glProgramLocalParameter4dvARB');
  5569. if not Assigned(glProgramLocalParameter4dvARB) then Exit;
  5570. glProgramLocalParameter4fARB := wglGetProcAddress('glProgramLocalParameter4fARB');
  5571. if not Assigned(glProgramLocalParameter4fARB) then Exit;
  5572. glProgramLocalParameter4fvARB := wglGetProcAddress('glProgramLocalParameter4fvARB');
  5573. if not Assigned(glProgramLocalParameter4fvARB) then Exit;
  5574. glGetProgramEnvParameterdvARB := wglGetProcAddress('glGetProgramEnvParameterdvARB');
  5575. if not Assigned(glGetProgramEnvParameterdvARB) then Exit;
  5576. glGetProgramEnvParameterfvARB := wglGetProcAddress('glGetProgramEnvParameterfvARB');
  5577. if not Assigned(glGetProgramEnvParameterfvARB) then Exit;
  5578. glGetProgramLocalParameterdvARB := wglGetProcAddress('glGetProgramLocalParameterdvARB');
  5579. if not Assigned(glGetProgramLocalParameterdvARB) then Exit;
  5580. glGetProgramLocalParameterfvARB := wglGetProcAddress('glGetProgramLocalParameterfvARB');
  5581. if not Assigned(glGetProgramLocalParameterfvARB) then Exit;
  5582. glGetProgramivARB := wglGetProcAddress('glGetProgramivARB');
  5583. if not Assigned(glGetProgramivARB) then Exit;
  5584. glGetProgramStringARB := wglGetProcAddress('glGetProgramStringARB');
  5585. if not Assigned(glGetProgramStringARB) then Exit;
  5586. glIsProgramARB := wglGetProcAddress('glIsProgramARB');
  5587. if not Assigned(glIsProgramARB) then Exit;
  5588. Result := TRUE;
  5589. end;
  5590. end;
  5591. function Load_GL_ATI_text_fragment_shader: Boolean;
  5592. var
  5593. extstring: String;
  5594. begin
  5595. Result := FALSE;
  5596. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5597. if glext_ExtensionSupported('GL_ATI_text_fragment_shader', extstring) then
  5598. begin
  5599. Result := TRUE;
  5600. end;
  5601. end;
  5602. function Load_GL_APPLE_client_storage: Boolean;
  5603. var
  5604. extstring: String;
  5605. begin
  5606. Result := FALSE;
  5607. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5608. if glext_ExtensionSupported('GL_APPLE_client_storage', extstring) then
  5609. begin
  5610. Result := TRUE;
  5611. end;
  5612. end;
  5613. function Load_GL_APPLE_element_array: Boolean;
  5614. var
  5615. extstring: String;
  5616. begin
  5617. Result := FALSE;
  5618. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5619. if glext_ExtensionSupported('GL_APPLE_element_array', extstring) then
  5620. begin
  5621. glElementPointerAPPLE := wglGetProcAddress('glElementPointerAPPLE');
  5622. if not Assigned(glElementPointerAPPLE) then Exit;
  5623. glDrawElementArrayAPPLE := wglGetProcAddress('glDrawElementArrayAPPLE');
  5624. if not Assigned(glDrawElementArrayAPPLE) then Exit;
  5625. glDrawRangeElementArrayAPPLE := wglGetProcAddress('glDrawRangeElementArrayAPPLE');
  5626. if not Assigned(glDrawRangeElementArrayAPPLE) then Exit;
  5627. glMultiDrawElementArrayAPPLE := wglGetProcAddress('glMultiDrawElementArrayAPPLE');
  5628. if not Assigned(glMultiDrawElementArrayAPPLE) then Exit;
  5629. glMultiDrawRangeElementArrayAPPLE := wglGetProcAddress('glMultiDrawRangeElementArrayAPPLE');
  5630. if not Assigned(glMultiDrawRangeElementArrayAPPLE) then Exit;
  5631. Result := TRUE;
  5632. end;
  5633. end;
  5634. function Load_GL_APPLE_fence: Boolean;
  5635. var
  5636. extstring: String;
  5637. begin
  5638. Result := FALSE;
  5639. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5640. if glext_ExtensionSupported('GL_APPLE_fence', extstring) then
  5641. begin
  5642. glGenFencesAPPLE := wglGetProcAddress('glGenFencesAPPLE');
  5643. if not Assigned(glGenFencesAPPLE) then Exit;
  5644. glDeleteFencesAPPLE := wglGetProcAddress('glDeleteFencesAPPLE');
  5645. if not Assigned(glDeleteFencesAPPLE) then Exit;
  5646. glSetFenceAPPLE := wglGetProcAddress('glSetFenceAPPLE');
  5647. if not Assigned(glSetFenceAPPLE) then Exit;
  5648. glIsFenceAPPLE := wglGetProcAddress('glIsFenceAPPLE');
  5649. if not Assigned(glIsFenceAPPLE) then Exit;
  5650. glTestFenceAPPLE := wglGetProcAddress('glTestFenceAPPLE');
  5651. if not Assigned(glTestFenceAPPLE) then Exit;
  5652. glFinishFenceAPPLE := wglGetProcAddress('glFinishFenceAPPLE');
  5653. if not Assigned(glFinishFenceAPPLE) then Exit;
  5654. glTestObjectAPPLE := wglGetProcAddress('glTestObjectAPPLE');
  5655. if not Assigned(glTestObjectAPPLE) then Exit;
  5656. glFinishObjectAPPLE := wglGetProcAddress('glFinishObjectAPPLE');
  5657. if not Assigned(glFinishObjectAPPLE) then Exit;
  5658. Result := TRUE;
  5659. end;
  5660. end;
  5661. function Load_GL_APPLE_vertex_array_object: Boolean;
  5662. var
  5663. extstring: String;
  5664. begin
  5665. Result := FALSE;
  5666. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5667. if glext_ExtensionSupported('GL_APPLE_vertex_array_object', extstring) then
  5668. begin
  5669. glBindVertexArrayAPPLE := wglGetProcAddress('glBindVertexArrayAPPLE');
  5670. if not Assigned(glBindVertexArrayAPPLE) then Exit;
  5671. glDeleteVertexArraysAPPLE := wglGetProcAddress('glDeleteVertexArraysAPPLE');
  5672. if not Assigned(glDeleteVertexArraysAPPLE) then Exit;
  5673. glGenVertexArraysAPPLE := wglGetProcAddress('glGenVertexArraysAPPLE');
  5674. if not Assigned(glGenVertexArraysAPPLE) then Exit;
  5675. glIsVertexArrayAPPLE := wglGetProcAddress('glIsVertexArrayAPPLE');
  5676. if not Assigned(glIsVertexArrayAPPLE) then Exit;
  5677. Result := TRUE;
  5678. end;
  5679. end;
  5680. function Load_GL_APPLE_vertex_array_range: Boolean;
  5681. var
  5682. extstring: String;
  5683. begin
  5684. Result := FALSE;
  5685. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5686. if glext_ExtensionSupported('GL_APPLE_vertex_array_range', extstring) then
  5687. begin
  5688. glVertexArrayRangeAPPLE := wglGetProcAddress('glVertexArrayRangeAPPLE');
  5689. if not Assigned(glVertexArrayRangeAPPLE) then Exit;
  5690. glFlushVertexArrayRangeAPPLE := wglGetProcAddress('glFlushVertexArrayRangeAPPLE');
  5691. if not Assigned(glFlushVertexArrayRangeAPPLE) then Exit;
  5692. glVertexArrayParameteriAPPLE := wglGetProcAddress('glVertexArrayParameteriAPPLE');
  5693. if not Assigned(glVertexArrayParameteriAPPLE) then Exit;
  5694. Result := TRUE;
  5695. end;
  5696. end;
  5697. {$IFDEF Win32}
  5698. function Load_WGL_ARB_pixel_format: Boolean;
  5699. var
  5700. extstring: String;
  5701. begin
  5702. Result := FALSE;
  5703. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  5704. if not Assigned(wglGetExtensionsStringARB) then Exit;
  5705. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  5706. if glext_ExtensionSupported('WGL_ARB_pixel_format', extstring) then
  5707. begin
  5708. wglGetPixelFormatAttribivARB := wglGetProcAddress('wglGetPixelFormatAttribivARB');
  5709. if not Assigned(wglGetPixelFormatAttribivARB) then Exit;
  5710. wglGetPixelFormatAttribfvARB := wglGetProcAddress('wglGetPixelFormatAttribfvARB');
  5711. if not Assigned(wglGetPixelFormatAttribfvARB) then Exit;
  5712. wglChoosePixelFormatARB := wglGetProcAddress('wglChoosePixelFormatARB');
  5713. if not Assigned(wglChoosePixelFormatARB) then Exit;
  5714. Result := TRUE;
  5715. end;
  5716. end;
  5717. function Load_WGL_ARB_make_current_read: Boolean;
  5718. var
  5719. extstring: String;
  5720. begin
  5721. Result := FALSE;
  5722. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  5723. if not Assigned(wglGetExtensionsStringARB) then Exit;
  5724. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  5725. if glext_ExtensionSupported('WGL_ARB_make_current_read', extstring) then
  5726. begin
  5727. wglMakeContextCurrentARB := wglGetProcAddress('wglMakeContextCurrentARB');
  5728. if not Assigned(wglMakeContextCurrentARB) then Exit;
  5729. wglGetCurrentReadDCARB := wglGetProcAddress('wglGetCurrentReadDCARB');
  5730. if not Assigned(wglGetCurrentReadDCARB) then Exit;
  5731. Result := TRUE;
  5732. end;
  5733. end;
  5734. function Load_WGL_ARB_pbuffer: Boolean;
  5735. var
  5736. extstring: String;
  5737. begin
  5738. Result := FALSE;
  5739. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  5740. if not Assigned(wglGetExtensionsStringARB) then Exit;
  5741. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  5742. if glext_ExtensionSupported('WGL_ARB_pbuffer', extstring) then
  5743. begin
  5744. wglCreatePbufferARB := wglGetProcAddress('wglCreatePbufferARB');
  5745. if not Assigned(wglCreatePbufferARB) then Exit;
  5746. wglGetPbufferDCARB := wglGetProcAddress('wglGetPbufferDCARB');
  5747. if not Assigned(wglGetPbufferDCARB) then Exit;
  5748. wglReleasePbufferDCARB := wglGetProcAddress('wglReleasePbufferDCARB');
  5749. if not Assigned(wglReleasePbufferDCARB) then Exit;
  5750. wglDestroyPbufferARB := wglGetProcAddress('wglDestroyPbufferARB');
  5751. if not Assigned(wglDestroyPbufferARB) then Exit;
  5752. wglQueryPbufferARB := wglGetProcAddress('wglQueryPbufferARB');
  5753. if not Assigned(wglQueryPbufferARB) then Exit;
  5754. Result := TRUE;
  5755. end;
  5756. end;
  5757. function Load_WGL_EXT_swap_control: Boolean;
  5758. var
  5759. extstring: String;
  5760. begin
  5761. Result := FALSE;
  5762. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  5763. if not Assigned(wglGetExtensionsStringARB) then Exit;
  5764. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  5765. if glext_ExtensionSupported('WGL_EXT_swap_control', extstring) then
  5766. begin
  5767. wglSwapIntervalEXT := wglGetProcAddress('wglSwapIntervalEXT');
  5768. if not Assigned(wglSwapIntervalEXT) then Exit;
  5769. wglGetSwapIntervalEXT := wglGetProcAddress('wglGetSwapIntervalEXT');
  5770. if not Assigned(wglGetSwapIntervalEXT) then Exit;
  5771. Result := TRUE;
  5772. end;
  5773. end;
  5774. function Load_WGL_ARB_render_texture: Boolean;
  5775. var
  5776. extstring: String;
  5777. begin
  5778. Result := FALSE;
  5779. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  5780. if not Assigned(wglGetExtensionsStringARB) then Exit;
  5781. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  5782. if glext_ExtensionSupported('WGL_ARB_render_texture', extstring) then
  5783. begin
  5784. wglBindTexImageARB := wglGetProcAddress('wglBindTexImageARB');
  5785. if not Assigned(wglBindTexImageARB) then Exit;
  5786. wglReleaseTexImageARB := wglGetProcAddress('wglReleaseTexImageARB');
  5787. if not Assigned(wglReleaseTexImageARB) then Exit;
  5788. wglSetPbufferAttribARB := wglGetProcAddress('wglSetPbufferAttribARB');
  5789. if not Assigned(wglSetPbufferAttribARB) then Exit;
  5790. Result := TRUE;
  5791. end;
  5792. end;
  5793. function Load_WGL_EXT_extensions_string: Boolean;
  5794. var
  5795. extstring: String;
  5796. begin
  5797. Result := FALSE;
  5798. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  5799. if not Assigned(wglGetExtensionsStringARB) then Exit;
  5800. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  5801. if glext_ExtensionSupported('WGL_EXT_extensions_string', extstring) then
  5802. begin
  5803. wglGetExtensionsStringEXT := wglGetProcAddress('wglGetExtensionsStringEXT');
  5804. if not Assigned(wglGetExtensionsStringEXT) then Exit;
  5805. Result := TRUE;
  5806. end;
  5807. end;
  5808. function Load_WGL_EXT_make_current_read: Boolean;
  5809. var
  5810. extstring: String;
  5811. begin
  5812. Result := FALSE;
  5813. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  5814. if not Assigned(wglGetExtensionsStringARB) then Exit;
  5815. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  5816. if glext_ExtensionSupported('WGL_EXT_make_current_read', extstring) then
  5817. begin
  5818. wglMakeContextCurrentEXT := wglGetProcAddress('wglMakeContextCurrentEXT');
  5819. if not Assigned(wglMakeContextCurrentEXT) then Exit;
  5820. wglGetCurrentReadDCEXT := wglGetProcAddress('wglGetCurrentReadDCEXT');
  5821. if not Assigned(wglGetCurrentReadDCEXT) then Exit;
  5822. Result := TRUE;
  5823. end;
  5824. end;
  5825. function Load_WGL_EXT_pbuffer: Boolean;
  5826. var
  5827. extstring: String;
  5828. begin
  5829. Result := FALSE;
  5830. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  5831. if not Assigned(wglGetExtensionsStringARB) then Exit;
  5832. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  5833. if glext_ExtensionSupported('WGL_EXT_pbuffer', extstring) then
  5834. begin
  5835. wglCreatePbufferEXT := wglGetProcAddress('wglCreatePbufferEXT');
  5836. if not Assigned(wglCreatePbufferEXT) then Exit;
  5837. wglGetPbufferDCEXT := wglGetProcAddress('wglGetPbufferDCEXT');
  5838. if not Assigned(wglGetPbufferDCEXT) then Exit;
  5839. wglReleasePbufferDCEXT := wglGetProcAddress('wglReleasePbufferDCEXT');
  5840. if not Assigned(wglReleasePbufferDCEXT) then Exit;
  5841. wglDestroyPbufferEXT := wglGetProcAddress('wglDestroyPbufferEXT');
  5842. if not Assigned(wglDestroyPbufferEXT) then Exit;
  5843. wglQueryPbufferEXT := wglGetProcAddress('wglQueryPbufferEXT');
  5844. if not Assigned(wglQueryPbufferEXT) then Exit;
  5845. Result := TRUE;
  5846. end;
  5847. end;
  5848. function Load_WGL_EXT_pixel_format: Boolean;
  5849. var
  5850. extstring: String;
  5851. begin
  5852. Result := FALSE;
  5853. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  5854. if not Assigned(wglGetExtensionsStringARB) then Exit;
  5855. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  5856. if glext_ExtensionSupported('WGL_EXT_pixel_format', extstring) then
  5857. begin
  5858. wglGetPixelFormatAttribivEXT := wglGetProcAddress('wglGetPixelFormatAttribivEXT');
  5859. if not Assigned(wglGetPixelFormatAttribivEXT) then Exit;
  5860. wglGetPixelFormatAttribfvEXT := wglGetProcAddress('wglGetPixelFormatAttribfvEXT');
  5861. if not Assigned(wglGetPixelFormatAttribfvEXT) then Exit;
  5862. wglChoosePixelFormatEXT := wglGetProcAddress('wglChoosePixelFormatEXT');
  5863. if not Assigned(wglChoosePixelFormatEXT) then Exit;
  5864. Result := TRUE;
  5865. end;
  5866. end;
  5867. function Load_WGL_I3D_digital_video_control: Boolean;
  5868. var
  5869. extstring: String;
  5870. begin
  5871. Result := FALSE;
  5872. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  5873. if not Assigned(wglGetExtensionsStringARB) then Exit;
  5874. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  5875. if glext_ExtensionSupported('WGL_I3D_digital_video_control', extstring) then
  5876. begin
  5877. wglGetDigitalVideoParametersI3D := wglGetProcAddress('wglGetDigitalVideoParametersI3D');
  5878. if not Assigned(wglGetDigitalVideoParametersI3D) then Exit;
  5879. wglSetDigitalVideoParametersI3D := wglGetProcAddress('wglSetDigitalVideoParametersI3D');
  5880. if not Assigned(wglSetDigitalVideoParametersI3D) then Exit;
  5881. Result := TRUE;
  5882. end;
  5883. end;
  5884. function Load_WGL_I3D_gamma: Boolean;
  5885. var
  5886. extstring: String;
  5887. begin
  5888. Result := FALSE;
  5889. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  5890. if not Assigned(wglGetExtensionsStringARB) then Exit;
  5891. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  5892. if glext_ExtensionSupported('WGL_I3D_gamma', extstring) then
  5893. begin
  5894. wglGetGammaTableParametersI3D := wglGetProcAddress('wglGetGammaTableParametersI3D');
  5895. if not Assigned(wglGetGammaTableParametersI3D) then Exit;
  5896. wglSetGammaTableParametersI3D := wglGetProcAddress('wglSetGammaTableParametersI3D');
  5897. if not Assigned(wglSetGammaTableParametersI3D) then Exit;
  5898. wglGetGammaTableI3D := wglGetProcAddress('wglGetGammaTableI3D');
  5899. if not Assigned(wglGetGammaTableI3D) then Exit;
  5900. wglSetGammaTableI3D := wglGetProcAddress('wglSetGammaTableI3D');
  5901. if not Assigned(wglSetGammaTableI3D) then Exit;
  5902. Result := TRUE;
  5903. end;
  5904. end;
  5905. function Load_WGL_I3D_genlock: Boolean;
  5906. var
  5907. extstring: String;
  5908. begin
  5909. Result := FALSE;
  5910. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  5911. if not Assigned(wglGetExtensionsStringARB) then Exit;
  5912. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  5913. if glext_ExtensionSupported('WGL_I3D_genlock', extstring) then
  5914. begin
  5915. wglEnableGenlockI3D := wglGetProcAddress('wglEnableGenlockI3D');
  5916. if not Assigned(wglEnableGenlockI3D) then Exit;
  5917. wglDisableGenlockI3D := wglGetProcAddress('wglDisableGenlockI3D');
  5918. if not Assigned(wglDisableGenlockI3D) then Exit;
  5919. wglIsEnabledGenlockI3D := wglGetProcAddress('wglIsEnabledGenlockI3D');
  5920. if not Assigned(wglIsEnabledGenlockI3D) then Exit;
  5921. wglGenlockSourceI3D := wglGetProcAddress('wglGenlockSourceI3D');
  5922. if not Assigned(wglGenlockSourceI3D) then Exit;
  5923. wglGetGenlockSourceI3D := wglGetProcAddress('wglGetGenlockSourceI3D');
  5924. if not Assigned(wglGetGenlockSourceI3D) then Exit;
  5925. wglGenlockSourceEdgeI3D := wglGetProcAddress('wglGenlockSourceEdgeI3D');
  5926. if not Assigned(wglGenlockSourceEdgeI3D) then Exit;
  5927. wglGetGenlockSourceEdgeI3D := wglGetProcAddress('wglGetGenlockSourceEdgeI3D');
  5928. if not Assigned(wglGetGenlockSourceEdgeI3D) then Exit;
  5929. wglGenlockSampleRateI3D := wglGetProcAddress('wglGenlockSampleRateI3D');
  5930. if not Assigned(wglGenlockSampleRateI3D) then Exit;
  5931. wglGetGenlockSampleRateI3D := wglGetProcAddress('wglGetGenlockSampleRateI3D');
  5932. if not Assigned(wglGetGenlockSampleRateI3D) then Exit;
  5933. wglGenlockSourceDelayI3D := wglGetProcAddress('wglGenlockSourceDelayI3D');
  5934. if not Assigned(wglGenlockSourceDelayI3D) then Exit;
  5935. wglGetGenlockSourceDelayI3D := wglGetProcAddress('wglGetGenlockSourceDelayI3D');
  5936. if not Assigned(wglGetGenlockSourceDelayI3D) then Exit;
  5937. wglQueryGenlockMaxSourceDelayI3D := wglGetProcAddress('wglQueryGenlockMaxSourceDelayI3D');
  5938. if not Assigned(wglQueryGenlockMaxSourceDelayI3D) then Exit;
  5939. Result := TRUE;
  5940. end;
  5941. end;
  5942. {$ENDIF}
  5943. function Load_GL_ARB_matrix_palette: Boolean;
  5944. var
  5945. extstring: String;
  5946. begin
  5947. Result := FALSE;
  5948. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5949. if glext_ExtensionSupported('GL_ARB_matrix_palette', extstring) then
  5950. begin
  5951. glCurrentPaletteMatrixARB := wglGetProcAddress('glCurrentPaletteMatrixARB');
  5952. if not Assigned(glCurrentPaletteMatrixARB) then Exit;
  5953. glMatrixIndexubvARB := wglGetProcAddress('glMatrixIndexubvARB');
  5954. if not Assigned(glMatrixIndexubvARB) then Exit;
  5955. glMatrixIndexusvARB := wglGetProcAddress('glMatrixIndexusvARB');
  5956. if not Assigned(glMatrixIndexusvARB) then Exit;
  5957. glMatrixIndexuivARB := wglGetProcAddress('glMatrixIndexuivARB');
  5958. if not Assigned(glMatrixIndexuivARB) then Exit;
  5959. glMatrixIndexPointerARB := wglGetProcAddress('glMatrixIndexPointerARB');
  5960. if not Assigned(glMatrixIndexPointerARB) then Exit;
  5961. Result := TRUE;
  5962. end;
  5963. end;
  5964. function Load_GL_NV_element_array: Boolean;
  5965. var
  5966. extstring: String;
  5967. begin
  5968. Result := FALSE;
  5969. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5970. if glext_ExtensionSupported('GL_NV_element_array', extstring) then
  5971. begin
  5972. glElementPointerNV := wglGetProcAddress('glElementPointerNV');
  5973. if not Assigned(glElementPointerNV) then Exit;
  5974. glDrawElementArrayNV := wglGetProcAddress('glDrawElementArrayNV');
  5975. if not Assigned(glDrawElementArrayNV) then Exit;
  5976. glDrawRangeElementArrayNV := wglGetProcAddress('glDrawRangeElementArrayNV');
  5977. if not Assigned(glDrawRangeElementArrayNV) then Exit;
  5978. glMultiDrawElementArrayNV := wglGetProcAddress('glMultiDrawElementArrayNV');
  5979. if not Assigned(glMultiDrawElementArrayNV) then Exit;
  5980. glMultiDrawRangeElementArrayNV := wglGetProcAddress('glMultiDrawRangeElementArrayNV');
  5981. if not Assigned(glMultiDrawRangeElementArrayNV) then Exit;
  5982. Result := TRUE;
  5983. end;
  5984. end;
  5985. function Load_GL_NV_float_buffer: Boolean;
  5986. var
  5987. extstring: String;
  5988. begin
  5989. Result := FALSE;
  5990. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5991. if glext_ExtensionSupported('GL_NV_float_buffer', extstring) then
  5992. begin
  5993. Result := TRUE;
  5994. end;
  5995. end;
  5996. function Load_GL_NV_fragment_program: Boolean;
  5997. var
  5998. extstring: String;
  5999. begin
  6000. Result := FALSE;
  6001. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6002. if glext_ExtensionSupported('GL_NV_fragment_program', extstring) then
  6003. begin
  6004. glProgramNamedParameter4fNV := wglGetProcAddress('glProgramNamedParameter4fNV');
  6005. if not Assigned(glProgramNamedParameter4fNV) then Exit;
  6006. glProgramNamedParameter4dNV := wglGetProcAddress('glProgramNamedParameter4dNV');
  6007. if not Assigned(glProgramNamedParameter4dNV) then Exit;
  6008. glGetProgramNamedParameterfvNV := wglGetProcAddress('glGetProgramNamedParameterfvNV');
  6009. if not Assigned(glGetProgramNamedParameterfvNV) then Exit;
  6010. glGetProgramNamedParameterdvNV := wglGetProcAddress('glGetProgramNamedParameterdvNV');
  6011. if not Assigned(glGetProgramNamedParameterdvNV) then Exit;
  6012. glProgramLocalParameter4dARB := wglGetProcAddress('glProgramLocalParameter4dARB');
  6013. if not Assigned(glProgramLocalParameter4dARB) then Exit;
  6014. glProgramLocalParameter4dvARB := wglGetProcAddress('glProgramLocalParameter4dvARB');
  6015. if not Assigned(glProgramLocalParameter4dvARB) then Exit;
  6016. glProgramLocalParameter4fARB := wglGetProcAddress('glProgramLocalParameter4fARB');
  6017. if not Assigned(glProgramLocalParameter4fARB) then Exit;
  6018. glProgramLocalParameter4fvARB := wglGetProcAddress('glProgramLocalParameter4fvARB');
  6019. if not Assigned(glProgramLocalParameter4fvARB) then Exit;
  6020. glGetProgramLocalParameterdvARB := wglGetProcAddress('glGetProgramLocalParameterdvARB');
  6021. if not Assigned(glGetProgramLocalParameterdvARB) then Exit;
  6022. glGetProgramLocalParameterfvARB := wglGetProcAddress('glGetProgramLocalParameterfvARB');
  6023. if not Assigned(glGetProgramLocalParameterfvARB) then Exit;
  6024. Result := TRUE;
  6025. end;
  6026. end;
  6027. function Load_GL_NV_primitive_restart: Boolean;
  6028. var
  6029. extstring: String;
  6030. begin
  6031. Result := FALSE;
  6032. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6033. if glext_ExtensionSupported('GL_NV_primitive_restart', extstring) then
  6034. begin
  6035. glPrimitiveRestartNV := wglGetProcAddress('glPrimitiveRestartNV');
  6036. if not Assigned(glPrimitiveRestartNV) then Exit;
  6037. glPrimitiveRestartIndexNV := wglGetProcAddress('glPrimitiveRestartIndexNV');
  6038. if not Assigned(glPrimitiveRestartIndexNV) then Exit;
  6039. Result := TRUE;
  6040. end;
  6041. end;
  6042. function Load_GL_NV_vertex_program2: Boolean;
  6043. var
  6044. extstring: String;
  6045. begin
  6046. Result := FALSE;
  6047. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6048. if glext_ExtensionSupported('GL_NV_vertex_program2', extstring) then
  6049. begin
  6050. Result := TRUE;
  6051. end;
  6052. end;
  6053. function glext_LoadExtension(ext: String): Boolean;
  6054. begin
  6055. Result := FALSE;
  6056. if ext = 'GL_version_1_2' then Result := Load_GL_version_1_2
  6057. else if ext = 'GL_ARB_imaging' then Result := Load_GL_ARB_imaging
  6058. else if ext = 'GL_version_1_3' then Result := Load_GL_version_1_3
  6059. else if ext = 'GL_ARB_multitexture' then Result := Load_GL_ARB_multitexture
  6060. else if ext = 'GL_ARB_transpose_matrix' then Result := Load_GL_ARB_transpose_matrix
  6061. else if ext = 'GL_ARB_multisample' then Result := Load_GL_ARB_multisample
  6062. else if ext = 'GL_ARB_texture_env_add' then Result := Load_GL_ARB_texture_env_add
  6063. {$IFDEF Win32}
  6064. else if ext = 'WGL_ARB_extensions_string' then Result := Load_WGL_ARB_extensions_string
  6065. else if ext = 'WGL_ARB_buffer_region' then Result := Load_WGL_ARB_buffer_region
  6066. {$ENDIF}
  6067. else if ext = 'GL_ARB_texture_cube_map' then Result := Load_GL_ARB_texture_cube_map
  6068. else if ext = 'GL_ARB_depth_texture' then Result := Load_GL_ARB_depth_texture
  6069. else if ext = 'GL_ARB_point_parameters' then Result := Load_GL_ARB_point_parameters
  6070. else if ext = 'GL_ARB_shadow' then Result := Load_GL_ARB_shadow
  6071. else if ext = 'GL_ARB_shadow_ambient' then Result := Load_GL_ARB_shadow_ambient
  6072. else if ext = 'GL_ARB_texture_border_clamp' then Result := Load_GL_ARB_texture_border_clamp
  6073. else if ext = 'GL_ARB_texture_compression' then Result := Load_GL_ARB_texture_compression
  6074. else if ext = 'GL_ARB_texture_env_combine' then Result := Load_GL_ARB_texture_env_combine
  6075. else if ext = 'GL_ARB_texture_env_crossbar' then Result := Load_GL_ARB_texture_env_crossbar
  6076. else if ext = 'GL_ARB_texture_env_dot3' then Result := Load_GL_ARB_texture_env_dot3
  6077. else if ext = 'GL_ARB_texture_mirrored_repeat' then Result := Load_GL_ARB_texture_mirrored_repeat
  6078. else if ext = 'GL_ARB_vertex_blend' then Result := Load_GL_ARB_vertex_blend
  6079. else if ext = 'GL_ARB_vertex_program' then Result := Load_GL_ARB_vertex_program
  6080. else if ext = 'GL_ARB_window_pos' then Result := Load_GL_ARB_window_pos
  6081. else if ext = 'GL_EXT_422_pixels' then Result := Load_GL_EXT_422_pixels
  6082. else if ext = 'GL_EXT_abgr' then Result := Load_GL_EXT_abgr
  6083. else if ext = 'GL_EXT_bgra' then Result := Load_GL_EXT_bgra
  6084. else if ext = 'GL_EXT_blend_color' then Result := Load_GL_EXT_blend_color
  6085. else if ext = 'GL_EXT_blend_func_separate' then Result := Load_GL_EXT_blend_func_separate
  6086. else if ext = 'GL_EXT_blend_logic_op' then Result := Load_GL_EXT_blend_logic_op
  6087. else if ext = 'GL_EXT_blend_minmax' then Result := Load_GL_EXT_blend_minmax
  6088. else if ext = 'GL_EXT_blend_subtract' then Result := Load_GL_EXT_blend_subtract
  6089. else if ext = 'GL_EXT_clip_volume_hint' then Result := Load_GL_EXT_clip_volume_hint
  6090. else if ext = 'GL_EXT_color_subtable' then Result := Load_GL_EXT_color_subtable
  6091. else if ext = 'GL_EXT_compiled_vertex_array' then Result := Load_GL_EXT_compiled_vertex_array
  6092. else if ext = 'GL_EXT_convolution' then Result := Load_GL_EXT_convolution
  6093. else if ext = 'GL_EXT_fog_coord' then Result := Load_GL_EXT_fog_coord
  6094. else if ext = 'GL_EXT_histogram' then Result := Load_GL_EXT_histogram
  6095. else if ext = 'GL_EXT_multi_draw_arrays' then Result := Load_GL_EXT_multi_draw_arrays
  6096. else if ext = 'GL_EXT_packed_pixels' then Result := Load_GL_EXT_packed_pixels
  6097. else if ext = 'GL_EXT_paletted_texture' then Result := Load_GL_EXT_paletted_texture
  6098. else if ext = 'GL_EXT_point_parameters' then Result := Load_GL_EXT_point_parameters
  6099. else if ext = 'GL_EXT_polygon_offset' then Result := Load_GL_EXT_polygon_offset
  6100. else if ext = 'GL_EXT_secondary_color' then Result := Load_GL_EXT_secondary_color
  6101. else if ext = 'GL_EXT_separate_specular_color' then Result := Load_GL_EXT_separate_specular_color
  6102. else if ext = 'GL_EXT_shadow_funcs' then Result := Load_GL_EXT_shadow_funcs
  6103. else if ext = 'GL_EXT_shared_texture_palette' then Result := Load_GL_EXT_shared_texture_palette
  6104. else if ext = 'GL_EXT_stencil_two_side' then Result := Load_GL_EXT_stencil_two_side
  6105. else if ext = 'GL_EXT_stencil_wrap' then Result := Load_GL_EXT_stencil_wrap
  6106. else if ext = 'GL_EXT_subtexture' then Result := Load_GL_EXT_subtexture
  6107. else if ext = 'GL_EXT_texture3D' then Result := Load_GL_EXT_texture3D
  6108. else if ext = 'GL_EXT_texture_compression_s3tc' then Result := Load_GL_EXT_texture_compression_s3tc
  6109. else if ext = 'GL_EXT_texture_env_add' then Result := Load_GL_EXT_texture_env_add
  6110. else if ext = 'GL_EXT_texture_env_combine' then Result := Load_GL_EXT_texture_env_combine
  6111. else if ext = 'GL_EXT_texture_env_dot3' then Result := Load_GL_EXT_texture_env_dot3
  6112. else if ext = 'GL_EXT_texture_filter_anisotropic' then Result := Load_GL_EXT_texture_filter_anisotropic
  6113. else if ext = 'GL_EXT_texture_lod_bias' then Result := Load_GL_EXT_texture_lod_bias
  6114. else if ext = 'GL_EXT_texture_object' then Result := Load_GL_EXT_texture_object
  6115. else if ext = 'GL_EXT_vertex_array' then Result := Load_GL_EXT_vertex_array
  6116. else if ext = 'GL_EXT_vertex_shader' then Result := Load_GL_EXT_vertex_shader
  6117. else if ext = 'GL_EXT_vertex_weighting' then Result := Load_GL_EXT_vertex_weighting
  6118. else if ext = 'GL_HP_occlusion_test' then Result := Load_GL_HP_occlusion_test
  6119. else if ext = 'GL_NV_blend_square' then Result := Load_GL_NV_blend_square
  6120. else if ext = 'GL_NV_copy_depth_to_color' then Result := Load_GL_NV_copy_depth_to_color
  6121. else if ext = 'GL_NV_depth_clamp' then Result := Load_GL_NV_depth_clamp
  6122. else if ext = 'GL_NV_evaluators' then Result := Load_GL_NV_evaluators
  6123. else if ext = 'GL_NV_fence' then Result := Load_GL_NV_fence
  6124. else if ext = 'GL_NV_fog_distance' then Result := Load_GL_NV_fog_distance
  6125. else if ext = 'GL_NV_light_max_exponent' then Result := Load_GL_NV_light_max_exponent
  6126. else if ext = 'GL_NV_multisample_filter_hint' then Result := Load_GL_NV_multisample_filter_hint
  6127. else if ext = 'GL_NV_occlusion_query' then Result := Load_GL_NV_occlusion_query
  6128. else if ext = 'GL_NV_packed_depth_stencil' then Result := Load_GL_NV_packed_depth_stencil
  6129. else if ext = 'GL_NV_point_sprite' then Result := Load_GL_NV_point_sprite
  6130. else if ext = 'GL_NV_register_combiners' then Result := Load_GL_NV_register_combiners
  6131. else if ext = 'GL_NV_register_combiners2' then Result := Load_GL_NV_register_combiners2
  6132. else if ext = 'GL_NV_texgen_emboss' then Result := Load_GL_NV_texgen_emboss
  6133. else if ext = 'GL_NV_texgen_reflection' then Result := Load_GL_NV_texgen_reflection
  6134. else if ext = 'GL_NV_texture_compression_vtc' then Result := Load_GL_NV_texture_compression_vtc
  6135. else if ext = 'GL_NV_texture_env_combine4' then Result := Load_GL_NV_texture_env_combine4
  6136. else if ext = 'GL_NV_texture_rectangle' then Result := Load_GL_NV_texture_rectangle
  6137. else if ext = 'GL_NV_texture_shader' then Result := Load_GL_NV_texture_shader
  6138. else if ext = 'GL_NV_texture_shader2' then Result := Load_GL_NV_texture_shader2
  6139. else if ext = 'GL_NV_texture_shader3' then Result := Load_GL_NV_texture_shader3
  6140. else if ext = 'GL_NV_vertex_array_range' then Result := Load_GL_NV_vertex_array_range
  6141. else if ext = 'GL_NV_vertex_array_range2' then Result := Load_GL_NV_vertex_array_range2
  6142. else if ext = 'GL_NV_vertex_program' then Result := Load_GL_NV_vertex_program
  6143. else if ext = 'GL_NV_vertex_program1_1' then Result := Load_GL_NV_vertex_program1_1
  6144. else if ext = 'GL_ATI_element_array' then Result := Load_GL_ATI_element_array
  6145. else if ext = 'GL_ATI_envmap_bumpmap' then Result := Load_GL_ATI_envmap_bumpmap
  6146. else if ext = 'GL_ATI_fragment_shader' then Result := Load_GL_ATI_fragment_shader
  6147. else if ext = 'GL_ATI_pn_triangles' then Result := Load_GL_ATI_pn_triangles
  6148. else if ext = 'GL_ATI_texture_mirror_once' then Result := Load_GL_ATI_texture_mirror_once
  6149. else if ext = 'GL_ATI_vertex_array_object' then Result := Load_GL_ATI_vertex_array_object
  6150. else if ext = 'GL_ATI_vertex_streams' then Result := Load_GL_ATI_vertex_streams
  6151. {$IFDEF Win32}
  6152. else if ext = 'WGL_I3D_image_buffer' then Result := Load_WGL_I3D_image_buffer
  6153. else if ext = 'WGL_I3D_swap_frame_lock' then Result := Load_WGL_I3D_swap_frame_lock
  6154. else if ext = 'WGL_I3D_swap_frame_usage' then Result := Load_WGL_I3D_swap_frame_usage
  6155. {$ENDIF}
  6156. else if ext = 'GL_3DFX_texture_compression_FXT1' then Result := Load_GL_3DFX_texture_compression_FXT1
  6157. else if ext = 'GL_IBM_cull_vertex' then Result := Load_GL_IBM_cull_vertex
  6158. else if ext = 'GL_IBM_multimode_draw_arrays' then Result := Load_GL_IBM_multimode_draw_arrays
  6159. else if ext = 'GL_IBM_raster_pos_clip' then Result := Load_GL_IBM_raster_pos_clip
  6160. else if ext = 'GL_IBM_texture_mirrored_repeat' then Result := Load_GL_IBM_texture_mirrored_repeat
  6161. else if ext = 'GL_IBM_vertex_array_lists' then Result := Load_GL_IBM_vertex_array_lists
  6162. else if ext = 'GL_MESA_resize_buffers' then Result := Load_GL_MESA_resize_buffers
  6163. else if ext = 'GL_MESA_window_pos' then Result := Load_GL_MESA_window_pos
  6164. else if ext = 'GL_OML_interlace' then Result := Load_GL_OML_interlace
  6165. else if ext = 'GL_OML_resample' then Result := Load_GL_OML_resample
  6166. else if ext = 'GL_OML_subsample' then Result := Load_GL_OML_subsample
  6167. else if ext = 'GL_SGIS_generate_mipmap' then Result := Load_GL_SGIS_generate_mipmap
  6168. else if ext = 'GL_SGIS_multisample' then Result := Load_GL_SGIS_multisample
  6169. else if ext = 'GL_SGIS_pixel_texture' then Result := Load_GL_SGIS_pixel_texture
  6170. else if ext = 'GL_SGIS_texture_border_clamp' then Result := Load_GL_SGIS_texture_border_clamp
  6171. else if ext = 'GL_SGIS_texture_color_mask' then Result := Load_GL_SGIS_texture_color_mask
  6172. else if ext = 'GL_SGIS_texture_edge_clamp' then Result := Load_GL_SGIS_texture_edge_clamp
  6173. else if ext = 'GL_SGIS_texture_lod' then Result := Load_GL_SGIS_texture_lod
  6174. else if ext = 'GL_SGIS_depth_texture' then Result := Load_GL_SGIS_depth_texture
  6175. else if ext = 'GL_SGIX_fog_offset' then Result := Load_GL_SGIX_fog_offset
  6176. else if ext = 'GL_SGIX_interlace' then Result := Load_GL_SGIX_interlace
  6177. else if ext = 'GL_SGIX_shadow_ambient' then Result := Load_GL_SGIX_shadow_ambient
  6178. else if ext = 'GL_SGI_color_matrix' then Result := Load_GL_SGI_color_matrix
  6179. else if ext = 'GL_SGI_color_table' then Result := Load_GL_SGI_color_table
  6180. else if ext = 'GL_SGI_texture_color_table' then Result := Load_GL_SGI_texture_color_table
  6181. else if ext = 'GL_SUN_vertex' then Result := Load_GL_SUN_vertex
  6182. else if ext = 'GL_ARB_fragment_program' then Result := Load_GL_ARB_fragment_program
  6183. else if ext = 'GL_ATI_text_fragment_shader' then Result := Load_GL_ATI_text_fragment_shader
  6184. else if ext = 'GL_APPLE_client_storage' then Result := Load_GL_APPLE_client_storage
  6185. else if ext = 'GL_APPLE_element_array' then Result := Load_GL_APPLE_element_array
  6186. else if ext = 'GL_APPLE_fence' then Result := Load_GL_APPLE_fence
  6187. else if ext = 'GL_APPLE_vertex_array_object' then Result := Load_GL_APPLE_vertex_array_object
  6188. else if ext = 'GL_APPLE_vertex_array_range' then Result := Load_GL_APPLE_vertex_array_range
  6189. {$IFDEF Win32}
  6190. else if ext = 'WGL_ARB_pixel_format' then Result := Load_WGL_ARB_pixel_format
  6191. else if ext = 'WGL_ARB_make_current_read' then Result := Load_WGL_ARB_make_current_read
  6192. else if ext = 'WGL_ARB_pbuffer' then Result := Load_WGL_ARB_pbuffer
  6193. else if ext = 'WGL_EXT_swap_control' then Result := Load_WGL_EXT_swap_control
  6194. else if ext = 'WGL_ARB_render_texture' then Result := Load_WGL_ARB_render_texture
  6195. else if ext = 'WGL_EXT_extensions_string' then Result := Load_WGL_EXT_extensions_string
  6196. else if ext = 'WGL_EXT_make_current_read' then Result := Load_WGL_EXT_make_current_read
  6197. else if ext = 'WGL_EXT_pbuffer' then Result := Load_WGL_EXT_pbuffer
  6198. else if ext = 'WGL_EXT_pixel_format' then Result := Load_WGL_EXT_pixel_format
  6199. else if ext = 'WGL_I3D_digital_video_control' then Result := Load_WGL_I3D_digital_video_control
  6200. else if ext = 'WGL_I3D_gamma' then Result := Load_WGL_I3D_gamma
  6201. else if ext = 'WGL_I3D_genlock' then Result := Load_WGL_I3D_genlock
  6202. {$ENDIF}
  6203. else if ext = 'GL_ARB_matrix_palette' then Result := Load_GL_ARB_matrix_palette
  6204. else if ext = 'GL_NV_element_array' then Result := Load_GL_NV_element_array
  6205. else if ext = 'GL_NV_float_buffer' then Result := Load_GL_NV_float_buffer
  6206. else if ext = 'GL_NV_fragment_program' then Result := Load_GL_NV_fragment_program
  6207. else if ext = 'GL_NV_primitive_restart' then Result := Load_GL_NV_primitive_restart
  6208. else if ext = 'GL_NV_vertex_program2' then Result := Load_GL_NV_vertex_program2
  6209. end;
  6210. end.