glext.pp 285 KB

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