glext.pp 387 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544
  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 Windows}
  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 Windows}
  24. Windows,
  25. {$ELSE}
  26. dynlibs,
  27. {$ENDIF}
  28. GL;
  29. {$IFDEF Windows}
  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. type
  41. GLcharARB = Char;
  42. TGLcharARB = GLcharARB;
  43. PGLcharARB = ^GLcharARB;
  44. GLhandleARB = Cardinal;
  45. TGLhandleARB = GLhandleARB;
  46. PGLhandleARB = ^GLhandleARB;
  47. GLintptr = PtrInt;
  48. TGLintptr = GLintptr;
  49. PGLintptr = ^GLintptr;
  50. GLsizeiptr = PtrInt;
  51. TGLsizeiptr = GLsizeiptr;
  52. PGLsizeiptr = ^GLsizeiptr;
  53. GLchar = Char;
  54. TGLchar = GLchar;
  55. PGLchar = Pchar;
  56. //***** GL_version_1_2 *****//
  57. const
  58. GL_UNSIGNED_BYTE_3_3_2 = $8032;
  59. GL_UNSIGNED_SHORT_4_4_4_4 = $8033;
  60. GL_UNSIGNED_SHORT_5_5_5_1 = $8034;
  61. GL_UNSIGNED_INT_8_8_8_8 = $8035;
  62. GL_UNSIGNED_INT_10_10_10_2 = $8036;
  63. GL_RESCALE_NORMAL = $803A;
  64. GL_UNSIGNED_BYTE_2_3_3_REV = $8362;
  65. GL_UNSIGNED_SHORT_5_6_5 = $8363;
  66. GL_UNSIGNED_SHORT_5_6_5_REV = $8364;
  67. GL_UNSIGNED_SHORT_4_4_4_4_REV = $8365;
  68. GL_UNSIGNED_SHORT_1_5_5_5_REV = $8366;
  69. GL_UNSIGNED_INT_8_8_8_8_REV = $8367;
  70. GL_UNSIGNED_INT_2_10_10_10_REV = $8368;
  71. GL_BGR = $80E0;
  72. GL_BGRA = $80E1;
  73. GL_MAX_ELEMENTS_VERTICES = $80E8;
  74. GL_MAX_ELEMENTS_INDICES = $80E9;
  75. GL_CLAMP_TO_EDGE = $812F;
  76. GL_TEXTURE_MIN_LOD = $813A;
  77. GL_TEXTURE_MAX_LOD = $813B;
  78. GL_TEXTURE_BASE_LEVEL = $813C;
  79. GL_TEXTURE_MAX_LEVEL = $813D;
  80. GL_LIGHT_MODEL_COLOR_CONTROL = $81F8;
  81. GL_SINGLE_COLOR = $81F9;
  82. GL_SEPARATE_SPECULAR_COLOR = $81FA;
  83. GL_SMOOTH_POINT_SIZE_RANGE = $0B12;
  84. GL_SMOOTH_POINT_SIZE_GRANULARITY = $0B13;
  85. GL_SMOOTH_LINE_WIDTH_RANGE = $0B22;
  86. GL_SMOOTH_LINE_WIDTH_GRANULARITY = $0B23;
  87. GL_ALIASED_POINT_SIZE_RANGE = $846D;
  88. GL_ALIASED_LINE_WIDTH_RANGE = $846E;
  89. GL_PACK_SKIP_IMAGES = $806B;
  90. GL_PACK_IMAGE_HEIGHT = $806C;
  91. GL_UNPACK_SKIP_IMAGES = $806D;
  92. GL_UNPACK_IMAGE_HEIGHT = $806E;
  93. GL_TEXTURE_3D = $806F;
  94. GL_PROXY_TEXTURE_3D = $8070;
  95. GL_TEXTURE_DEPTH = $8071;
  96. GL_TEXTURE_WRAP_R = $8072;
  97. GL_MAX_3D_TEXTURE_SIZE = $8073;
  98. var
  99. glBlendColor: procedure(red: GLclampf; green: GLclampf; blue: GLclampf; alpha: GLclampf); extdecl;
  100. glBlendEquation: procedure(mode: GLenum); extdecl;
  101. glDrawRangeElements: procedure(mode: GLenum; start: GLuint; _end: GLuint; count: GLsizei; _type: GLenum; const indices: PGLvoid); extdecl;
  102. glColorTable: procedure(target: GLenum; internalformat: GLenum; width: GLsizei; format: GLenum; _type: GLenum; const table: PGLvoid); extdecl;
  103. glColorTableParameterfv: procedure(target: GLenum; pname: GLenum; const params: PGLfloat); extdecl;
  104. glColorTableParameteriv: procedure(target: GLenum; pname: GLenum; const params: PGLint); extdecl;
  105. glCopyColorTable: procedure(target: GLenum; internalformat: GLenum; x: GLint; y: GLint; width: GLsizei); extdecl;
  106. glGetColorTable: procedure(target: GLenum; format: GLenum; _type: GLenum; table: PGLvoid); extdecl;
  107. glGetColorTableParameterfv: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  108. glGetColorTableParameteriv: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  109. glColorSubTable: procedure(target: GLenum; start: GLsizei; count: GLsizei; format: GLenum; _type: GLenum; const data: PGLvoid); extdecl;
  110. glCopyColorSubTable: procedure(target: GLenum; start: GLsizei; x: GLint; y: GLint; width: GLsizei); extdecl;
  111. glConvolutionFilter1D: procedure(target: GLenum; internalformat: GLenum; width: GLsizei; format: GLenum; _type: GLenum; const image: PGLvoid); extdecl;
  112. glConvolutionFilter2D: procedure(target: GLenum; internalformat: GLenum; width: GLsizei; height: GLsizei; format: GLenum; _type: GLenum; const image: PGLvoid); extdecl;
  113. glConvolutionParameterf: procedure(target: GLenum; pname: GLenum; params: GLfloat); extdecl;
  114. glConvolutionParameterfv: procedure(target: GLenum; pname: GLenum; const params: PGLfloat); extdecl;
  115. glConvolutionParameteri: procedure(target: GLenum; pname: GLenum; params: GLint); extdecl;
  116. glConvolutionParameteriv: procedure(target: GLenum; pname: GLenum; const params: PGLint); extdecl;
  117. glCopyConvolutionFilter1D: procedure(target: GLenum; internalformat: GLenum; x: GLint; y: GLint; width: GLsizei); extdecl;
  118. glCopyConvolutionFilter2D: procedure(target: GLenum; internalformat: GLenum; x: GLint; y: GLint; width: GLsizei; height: GLsizei); extdecl;
  119. glGetConvolutionFilter: procedure(target: GLenum; format: GLenum; _type: GLenum; image: PGLvoid); extdecl;
  120. glGetConvolutionParameterfv: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  121. glGetConvolutionParameteriv: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  122. glGetSeparableFilter: procedure(target: GLenum; format: GLenum; _type: GLenum; row: PGLvoid; column: PGLvoid; span: PGLvoid); extdecl;
  123. glSeparableFilter2D: procedure(target: GLenum; internalformat: GLenum; width: GLsizei; height: GLsizei; format: GLenum; _type: GLenum; const row: PGLvoid; const column: PGLvoid); extdecl;
  124. glGetHistogram: procedure(target: GLenum; reset: GLboolean; format: GLenum; _type: GLenum; values: PGLvoid); extdecl;
  125. glGetHistogramParameterfv: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  126. glGetHistogramParameteriv: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  127. glGetMinmax: procedure(target: GLenum; reset: GLboolean; format: GLenum; _type: GLenum; values: PGLvoid); extdecl;
  128. glGetMinmaxParameterfv: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  129. glGetMinmaxParameteriv: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  130. glHistogram: procedure(target: GLenum; width: GLsizei; internalformat: GLenum; sink: GLboolean); extdecl;
  131. glMinmax: procedure(target: GLenum; internalformat: GLenum; sink: GLboolean); extdecl;
  132. glResetHistogram: procedure(target: GLenum); extdecl;
  133. glResetMinmax: procedure(target: GLenum); extdecl;
  134. glTexImage3D: procedure(target: GLenum; level: GLint; internalformat: GLint; width: GLsizei; height: GLsizei; depth: GLsizei; border: GLint; format: GLenum; _type: GLenum; const pixels: PGLvoid); extdecl;
  135. 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;
  136. glCopyTexSubImage3D: procedure(target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; zoffset: GLint; x: GLint; y: GLint; width: GLsizei; height: GLsizei); extdecl;
  137. function Load_GL_version_1_2: Boolean;
  138. //***** GL_ARB_imaging *****//
  139. const
  140. GL_CONSTANT_COLOR = $8001;
  141. GL_ONE_MINUS_CONSTANT_COLOR = $8002;
  142. GL_CONSTANT_ALPHA = $8003;
  143. GL_ONE_MINUS_CONSTANT_ALPHA = $8004;
  144. GL_BLEND_COLOR = $8005;
  145. GL_FUNC_ADD = $8006;
  146. GL_MIN = $8007;
  147. GL_MAX = $8008;
  148. GL_BLEND_EQUATION = $8009;
  149. GL_FUNC_SUBTRACT = $800A;
  150. GL_FUNC_REVERSE_SUBTRACT = $800B;
  151. GL_CONVOLUTION_1D = $8010;
  152. GL_CONVOLUTION_2D = $8011;
  153. GL_SEPARABLE_2D = $8012;
  154. GL_CONVOLUTION_BORDER_MODE = $8013;
  155. GL_CONVOLUTION_FILTER_SCALE = $8014;
  156. GL_CONVOLUTION_FILTER_BIAS = $8015;
  157. GL_REDUCE = $8016;
  158. GL_CONVOLUTION_FORMAT = $8017;
  159. GL_CONVOLUTION_WIDTH = $8018;
  160. GL_CONVOLUTION_HEIGHT = $8019;
  161. GL_MAX_CONVOLUTION_WIDTH = $801A;
  162. GL_MAX_CONVOLUTION_HEIGHT = $801B;
  163. GL_POST_CONVOLUTION_RED_SCALE = $801C;
  164. GL_POST_CONVOLUTION_GREEN_SCALE = $801D;
  165. GL_POST_CONVOLUTION_BLUE_SCALE = $801E;
  166. GL_POST_CONVOLUTION_ALPHA_SCALE = $801F;
  167. GL_POST_CONVOLUTION_RED_BIAS = $8020;
  168. GL_POST_CONVOLUTION_GREEN_BIAS = $8021;
  169. GL_POST_CONVOLUTION_BLUE_BIAS = $8022;
  170. GL_POST_CONVOLUTION_ALPHA_BIAS = $8023;
  171. GL_HISTOGRAM = $8024;
  172. GL_PROXY_HISTOGRAM = $8025;
  173. GL_HISTOGRAM_WIDTH = $8026;
  174. GL_HISTOGRAM_FORMAT = $8027;
  175. GL_HISTOGRAM_RED_SIZE = $8028;
  176. GL_HISTOGRAM_GREEN_SIZE = $8029;
  177. GL_HISTOGRAM_BLUE_SIZE = $802A;
  178. GL_HISTOGRAM_ALPHA_SIZE = $802B;
  179. GL_HISTOGRAM_LUMINANCE_SIZE = $802C;
  180. GL_HISTOGRAM_SINK = $802D;
  181. GL_MINMAX = $802E;
  182. GL_MINMAX_FORMAT = $802F;
  183. GL_MINMAX_SINK = $8030;
  184. GL_TABLE_TOO_LARGE = $8031;
  185. GL_COLOR_MATRIX = $80B1;
  186. GL_COLOR_MATRIX_STACK_DEPTH = $80B2;
  187. GL_MAX_COLOR_MATRIX_STACK_DEPTH = $80B3;
  188. GL_POST_COLOR_MATRIX_RED_SCALE = $80B4;
  189. GL_POST_COLOR_MATRIX_GREEN_SCALE = $80B5;
  190. GL_POST_COLOR_MATRIX_BLUE_SCALE = $80B6;
  191. GL_POST_COLOR_MATRIX_ALPHA_SCALE = $80B7;
  192. GL_POST_COLOR_MATRIX_RED_BIAS = $80B8;
  193. GL_POST_COLOR_MATRIX_GREEN_BIAS = $80B9;
  194. GL_POST_COLOR_MATRIX_BLUE_BIAS = $80BA;
  195. GL_POST_COLOR_MATIX_ALPHA_BIAS = $80BB;
  196. GL_COLOR_TABLE = $80D0;
  197. GL_POST_CONVOLUTION_COLOR_TABLE = $80D1;
  198. GL_POST_COLOR_MATRIX_COLOR_TABLE = $80D2;
  199. GL_PROXY_COLOR_TABLE = $80D3;
  200. GL_PROXY_POST_CONVOLUTION_COLOR_TABLE = $80D4;
  201. GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE = $80D5;
  202. GL_COLOR_TABLE_SCALE = $80D6;
  203. GL_COLOR_TABLE_BIAS = $80D7;
  204. GL_COLOR_TABLE_FORMAT = $80D8;
  205. GL_COLOR_TABLE_WIDTH = $80D9;
  206. GL_COLOR_TABLE_RED_SIZE = $80DA;
  207. GL_COLOR_TABLE_GREEN_SIZE = $80DB;
  208. GL_COLOR_TABLE_BLUE_SIZE = $80DC;
  209. GL_COLOR_TABLE_ALPHA_SIZE = $80DD;
  210. GL_COLOR_TABLE_LUMINANCE_SIZE = $80DE;
  211. GL_COLOR_TABLE_INTENSITY_SIZE = $80DF;
  212. GL_IGNORE_BORDER = $8150;
  213. GL_CONSTANT_BORDER = $8151;
  214. GL_WRAP_BORDER = $8152;
  215. GL_REPLICATE_BORDER = $8153;
  216. GL_CONVOLUTION_BORDER_COLOR = $8154;
  217. function Load_GL_ARB_imaging: Boolean;
  218. //***** GL_version_1_3 *****//
  219. const
  220. GL_TEXTURE0 = $84C0;
  221. GL_TEXTURE1 = $84C1;
  222. GL_TEXTURE2 = $84C2;
  223. GL_TEXTURE3 = $84C3;
  224. GL_TEXTURE4 = $84C4;
  225. GL_TEXTURE5 = $84C5;
  226. GL_TEXTURE6 = $84C6;
  227. GL_TEXTURE7 = $84C7;
  228. GL_TEXTURE8 = $84C8;
  229. GL_TEXTURE9 = $84C9;
  230. GL_TEXTURE10 = $84CA;
  231. GL_TEXTURE11 = $84CB;
  232. GL_TEXTURE12 = $84CC;
  233. GL_TEXTURE13 = $84CD;
  234. GL_TEXTURE14 = $84CE;
  235. GL_TEXTURE15 = $84CF;
  236. GL_TEXTURE16 = $84D0;
  237. GL_TEXTURE17 = $84D1;
  238. GL_TEXTURE18 = $84D2;
  239. GL_TEXTURE19 = $84D3;
  240. GL_TEXTURE20 = $84D4;
  241. GL_TEXTURE21 = $84D5;
  242. GL_TEXTURE22 = $84D6;
  243. GL_TEXTURE23 = $84D7;
  244. GL_TEXTURE24 = $84D8;
  245. GL_TEXTURE25 = $84D9;
  246. GL_TEXTURE26 = $84DA;
  247. GL_TEXTURE27 = $84DB;
  248. GL_TEXTURE28 = $84DC;
  249. GL_TEXTURE29 = $84DD;
  250. GL_TEXTURE30 = $84DE;
  251. GL_TEXTURE31 = $84DF;
  252. GL_ACTIVE_TEXTURE = $84E0;
  253. GL_CLIENT_ACTIVE_TEXTURE = $84E1;
  254. GL_MAX_TEXTURE_UNITS = $84E2;
  255. GL_TRANSPOSE_MODELVIEW_MATRIX = $84E3;
  256. GL_TRANSPOSE_PROJECTION_MATRIX = $84E4;
  257. GL_TRANSPOSE_TEXTURE_MATRIX = $84E5;
  258. GL_TRANSPOSE_COLOR_MATRIX = $84E6;
  259. GL_MULTISAMPLE = $809D;
  260. GL_SAMPLE_ALPHA_TO_COVERAGE = $809E;
  261. GL_SAMPLE_ALPHA_TO_ONE = $809F;
  262. GL_SAMPLE_COVERAGE = $80A0;
  263. GL_SAMPLE_BUFFERS = $80A8;
  264. GL_SAMPLES = $80A9;
  265. GL_SAMPLE_COVERAGE_VALUE = $80AA;
  266. GL_SAMPLE_COVERAGE_INVERT = $80AB;
  267. GL_MULTISAMPLE_BIT = $20000000;
  268. GL_NORMAL_MAP = $8511;
  269. GL_REFLECTION_MAP = $8512;
  270. GL_TEXTURE_CUBE_MAP = $8513;
  271. GL_TEXTURE_BINDING_CUBE_MAP = $8514;
  272. GL_TEXTURE_CUBE_MAP_POSITIVE_X = $8515;
  273. GL_TEXTURE_CUBE_MAP_NEGATIVE_X = $8516;
  274. GL_TEXTURE_CUBE_MAP_POSITIVE_Y = $8517;
  275. GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = $8518;
  276. GL_TEXTURE_CUBE_MAP_POSITIVE_Z = $8519;
  277. GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = $851A;
  278. GL_PROXY_TEXTURE_CUBE_MAP = $851B;
  279. GL_MAX_CUBE_MAP_TEXTURE_SIZE = $851C;
  280. GL_COMPRESSED_ALPHA = $84E9;
  281. GL_COMPRESSED_LUMINANCE = $84EA;
  282. GL_COMPRESSED_LUMINANCE_ALPHA = $84EB;
  283. GL_COMPRESSED_INTENSITY = $84EC;
  284. GL_COMPRESSED_RGB = $84ED;
  285. GL_COMPRESSED_RGBA = $84EE;
  286. GL_TEXTURE_COMPRESSION_HINT = $84EF;
  287. GL_TEXTURE_COMPRESSED_IMAGE_SIZE = $86A0;
  288. GL_TEXTURE_COMPRESSED = $86A1;
  289. GL_NUM_COMPRESSED_TEXTURE_FORMATS = $86A2;
  290. GL_COMPRESSED_TEXTURE_FORMATS = $86A3;
  291. GL_CLAMP_TO_BORDER = $812D;
  292. GL_CLAMP_TO_BORDER_SGIS = $812D;
  293. GL_COMBINE = $8570;
  294. GL_COMBINE_RGB = $8571;
  295. GL_COMBINE_ALPHA = $8572;
  296. GL_SOURCE0_RGB = $8580;
  297. GL_SOURCE1_RGB = $8581;
  298. GL_SOURCE2_RGB = $8582;
  299. GL_SOURCE0_ALPHA = $8588;
  300. GL_SOURCE1_ALPHA = $8589;
  301. GL_SOURCE2_ALPHA = $858A;
  302. GL_OPERAND0_RGB = $8590;
  303. GL_OPERAND1_RGB = $8591;
  304. GL_OPERAND2_RGB = $8592;
  305. GL_OPERAND0_ALPHA = $8598;
  306. GL_OPERAND1_ALPHA = $8599;
  307. GL_OPERAND2_ALPHA = $859A;
  308. GL_RGB_SCALE = $8573;
  309. GL_ADD_SIGNED = $8574;
  310. GL_INTERPOLATE = $8575;
  311. GL_SUBTRACT = $84E7;
  312. GL_CONSTANT = $8576;
  313. GL_PRIMARY_COLOR = $8577;
  314. GL_PREVIOUS = $8578;
  315. GL_DOT3_RGB = $86AE;
  316. GL_DOT3_RGBA = $86AF;
  317. var
  318. glActiveTexture: procedure(texture: GLenum); extdecl;
  319. glClientActiveTexture: procedure(texture: GLenum); extdecl;
  320. glMultiTexCoord1d: procedure(target: GLenum; s: GLdouble); extdecl;
  321. glMultiTexCoord1dv: procedure(target: GLenum; const v: PGLdouble); extdecl;
  322. glMultiTexCoord1f: procedure(target: GLenum; s: GLfloat); extdecl;
  323. glMultiTexCoord1fv: procedure(target: GLenum; const v: PGLfloat); extdecl;
  324. glMultiTexCoord1i: procedure(target: GLenum; s: GLint); extdecl;
  325. glMultiTexCoord1iv: procedure(target: GLenum; const v: PGLint); extdecl;
  326. glMultiTexCoord1s: procedure(target: GLenum; s: GLshort); extdecl;
  327. glMultiTexCoord1sv: procedure(target: GLenum; const v: PGLshort); extdecl;
  328. glMultiTexCoord2d: procedure(target: GLenum; s: GLdouble; t: GLdouble); extdecl;
  329. glMultiTexCoord2dv: procedure(target: GLenum; const v: PGLdouble); extdecl;
  330. glMultiTexCoord2f: procedure(target: GLenum; s: GLfloat; t: GLfloat); extdecl;
  331. glMultiTexCoord2fv: procedure(target: GLenum; const v: PGLfloat); extdecl;
  332. glMultiTexCoord2i: procedure(target: GLenum; s: GLint; t: GLint); extdecl;
  333. glMultiTexCoord2iv: procedure(target: GLenum; const v: PGLint); extdecl;
  334. glMultiTexCoord2s: procedure(target: GLenum; s: GLshort; t: GLshort); extdecl;
  335. glMultiTexCoord2sv: procedure(target: GLenum; const v: PGLshort); extdecl;
  336. glMultiTexCoord3d: procedure(target: GLenum; s: GLdouble; t: GLdouble; r: GLdouble); extdecl;
  337. glMultiTexCoord3dv: procedure(target: GLenum; const v: PGLdouble); extdecl;
  338. glMultiTexCoord3f: procedure(target: GLenum; s: GLfloat; t: GLfloat; r: GLfloat); extdecl;
  339. glMultiTexCoord3fv: procedure(target: GLenum; const v: PGLfloat); extdecl;
  340. glMultiTexCoord3i: procedure(target: GLenum; s: GLint; t: GLint; r: GLint); extdecl;
  341. glMultiTexCoord3iv: procedure(target: GLenum; const v: PGLint); extdecl;
  342. glMultiTexCoord3s: procedure(target: GLenum; s: GLshort; t: GLshort; r: GLshort); extdecl;
  343. glMultiTexCoord3sv: procedure(target: GLenum; const v: PGLshort); extdecl;
  344. glMultiTexCoord4d: procedure(target: GLenum; s: GLdouble; t: GLdouble; r: GLdouble; q: GLdouble); extdecl;
  345. glMultiTexCoord4dv: procedure(target: GLenum; const v: PGLdouble); extdecl;
  346. glMultiTexCoord4f: procedure(target: GLenum; s: GLfloat; t: GLfloat; r: GLfloat; q: GLfloat); extdecl;
  347. glMultiTexCoord4fv: procedure(target: GLenum; const v: PGLfloat); extdecl;
  348. glMultiTexCoord4i: procedure(target: GLenum; s: GLint; t: GLint; r: GLint; q: GLint); extdecl;
  349. glMultiTexCoord4iv: procedure(target: GLenum; const v: PGLint); extdecl;
  350. glMultiTexCoord4s: procedure(target: GLenum; s: GLshort; t: GLshort; r: GLshort; q: GLshort); extdecl;
  351. glMultiTexCoord4sv: procedure(target: GLenum; const v: PGLshort); extdecl;
  352. glLoadTransposeMatrixf: procedure(const m: PGLfloat); extdecl;
  353. glLoadTransposeMatrixd: procedure(const m: PGLdouble); extdecl;
  354. glMultTransposeMatrixf: procedure(const m: PGLfloat); extdecl;
  355. glMultTransposeMatrixd: procedure(const m: PGLdouble); extdecl;
  356. glSampleCoverage: procedure(value: GLclampf; invert: GLboolean); extdecl;
  357. glCompressedTexImage3D: procedure(target: GLenum; level: GLint; internalformat: GLenum; width: GLsizei; height: GLsizei; depth: GLsizei; border: GLint; imageSize: GLsizei; const data: PGLvoid); extdecl;
  358. glCompressedTexImage2D: procedure(target: GLenum; level: GLint; internalformat: GLenum; width: GLsizei; height: GLsizei; border: GLint; imageSize: GLsizei; const data: PGLvoid); extdecl;
  359. glCompressedTexImage1D: procedure(target: GLenum; level: GLint; internalformat: GLenum; width: GLsizei; border: GLint; imageSize: GLsizei; const data: PGLvoid); extdecl;
  360. 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;
  361. glCompressedTexSubImage2D: procedure(target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; width: GLsizei; height: GLsizei; format: GLenum; imageSize: GLsizei; const data: PGLvoid); extdecl;
  362. glCompressedTexSubImage1D: procedure(target: GLenum; level: GLint; xoffset: GLint; width: GLsizei; format: GLenum; imageSize: GLsizei; const data: PGLvoid); extdecl;
  363. glGetCompressedTexImage: procedure(target: GLenum; level: GLint; img: PGLvoid); extdecl;
  364. function Load_GL_version_1_3: Boolean;
  365. //***** GL_ARB_multitexture *****//
  366. const
  367. GL_TEXTURE0_ARB = $84C0;
  368. GL_TEXTURE1_ARB = $84C1;
  369. GL_TEXTURE2_ARB = $84C2;
  370. GL_TEXTURE3_ARB = $84C3;
  371. GL_TEXTURE4_ARB = $84C4;
  372. GL_TEXTURE5_ARB = $84C5;
  373. GL_TEXTURE6_ARB = $84C6;
  374. GL_TEXTURE7_ARB = $84C7;
  375. GL_TEXTURE8_ARB = $84C8;
  376. GL_TEXTURE9_ARB = $84C9;
  377. GL_TEXTURE10_ARB = $84CA;
  378. GL_TEXTURE11_ARB = $84CB;
  379. GL_TEXTURE12_ARB = $84CC;
  380. GL_TEXTURE13_ARB = $84CD;
  381. GL_TEXTURE14_ARB = $84CE;
  382. GL_TEXTURE15_ARB = $84CF;
  383. GL_TEXTURE16_ARB = $84D0;
  384. GL_TEXTURE17_ARB = $84D1;
  385. GL_TEXTURE18_ARB = $84D2;
  386. GL_TEXTURE19_ARB = $84D3;
  387. GL_TEXTURE20_ARB = $84D4;
  388. GL_TEXTURE21_ARB = $84D5;
  389. GL_TEXTURE22_ARB = $84D6;
  390. GL_TEXTURE23_ARB = $84D7;
  391. GL_TEXTURE24_ARB = $84D8;
  392. GL_TEXTURE25_ARB = $84D9;
  393. GL_TEXTURE26_ARB = $84DA;
  394. GL_TEXTURE27_ARB = $84DB;
  395. GL_TEXTURE28_ARB = $84DC;
  396. GL_TEXTURE29_ARB = $84DD;
  397. GL_TEXTURE30_ARB = $84DE;
  398. GL_TEXTURE31_ARB = $84DF;
  399. GL_ACTIVE_TEXTURE_ARB = $84E0;
  400. GL_CLIENT_ACTIVE_TEXTURE_ARB = $84E1;
  401. GL_MAX_TEXTURE_UNITS_ARB = $84E2;
  402. var
  403. glActiveTextureARB: procedure(texture: GLenum); extdecl;
  404. glClientActiveTextureARB: procedure(texture: GLenum); extdecl;
  405. glMultiTexCoord1dARB: procedure(target: GLenum; s: GLdouble); extdecl;
  406. glMultiTexCoord1dvARB: procedure(target: GLenum; const v: PGLdouble); extdecl;
  407. glMultiTexCoord1fARB: procedure(target: GLenum; s: GLfloat); extdecl;
  408. glMultiTexCoord1fvARB: procedure(target: GLenum; const v: PGLfloat); extdecl;
  409. glMultiTexCoord1iARB: procedure(target: GLenum; s: GLint); extdecl;
  410. glMultiTexCoord1ivARB: procedure(target: GLenum; const v: PGLint); extdecl;
  411. glMultiTexCoord1sARB: procedure(target: GLenum; s: GLshort); extdecl;
  412. glMultiTexCoord1svARB: procedure(target: GLenum; const v: PGLshort); extdecl;
  413. glMultiTexCoord2dARB: procedure(target: GLenum; s: GLdouble; t: GLdouble); extdecl;
  414. glMultiTexCoord2dvARB: procedure(target: GLenum; const v: PGLdouble); extdecl;
  415. glMultiTexCoord2fARB: procedure(target: GLenum; s: GLfloat; t: GLfloat); extdecl;
  416. glMultiTexCoord2fvARB: procedure(target: GLenum; const v: PGLfloat); extdecl;
  417. glMultiTexCoord2iARB: procedure(target: GLenum; s: GLint; t: GLint); extdecl;
  418. glMultiTexCoord2ivARB: procedure(target: GLenum; const v: PGLint); extdecl;
  419. glMultiTexCoord2sARB: procedure(target: GLenum; s: GLshort; t: GLshort); extdecl;
  420. glMultiTexCoord2svARB: procedure(target: GLenum; const v: PGLshort); extdecl;
  421. glMultiTexCoord3dARB: procedure(target: GLenum; s: GLdouble; t: GLdouble; r: GLdouble); extdecl;
  422. glMultiTexCoord3dvARB: procedure(target: GLenum; const v: PGLdouble); extdecl;
  423. glMultiTexCoord3fARB: procedure(target: GLenum; s: GLfloat; t: GLfloat; r: GLfloat); extdecl;
  424. glMultiTexCoord3fvARB: procedure(target: GLenum; const v: PGLfloat); extdecl;
  425. glMultiTexCoord3iARB: procedure(target: GLenum; s: GLint; t: GLint; r: GLint); extdecl;
  426. glMultiTexCoord3ivARB: procedure(target: GLenum; const v: PGLint); extdecl;
  427. glMultiTexCoord3sARB: procedure(target: GLenum; s: GLshort; t: GLshort; r: GLshort); extdecl;
  428. glMultiTexCoord3svARB: procedure(target: GLenum; const v: PGLshort); extdecl;
  429. glMultiTexCoord4dARB: procedure(target: GLenum; s: GLdouble; t: GLdouble; r: GLdouble; q: GLdouble); extdecl;
  430. glMultiTexCoord4dvARB: procedure(target: GLenum; const v: PGLdouble); extdecl;
  431. glMultiTexCoord4fARB: procedure(target: GLenum; s: GLfloat; t: GLfloat; r: GLfloat; q: GLfloat); extdecl;
  432. glMultiTexCoord4fvARB: procedure(target: GLenum; const v: PGLfloat); extdecl;
  433. glMultiTexCoord4iARB: procedure(target: GLenum; s: GLint; t: GLint; r: GLint; q: GLint); extdecl;
  434. glMultiTexCoord4ivARB: procedure(target: GLenum; const v: PGLint); extdecl;
  435. glMultiTexCoord4sARB: procedure(target: GLenum; s: GLshort; t: GLshort; r: GLshort; q: GLshort); extdecl;
  436. glMultiTexCoord4svARB: procedure(target: GLenum; const v: PGLshort); extdecl;
  437. function Load_GL_ARB_multitexture: Boolean;
  438. //***** GL_ARB_transpose_matrix *****//
  439. const
  440. GL_TRANSPOSE_MODELVIEW_MATRIX_ARB = $84E3;
  441. GL_TRANSPOSE_PROJECTION_MATRIX_ARB = $84E4;
  442. GL_TRANSPOSE_TEXTURE_MATRIX_ARB = $84E5;
  443. GL_TRANSPOSE_COLOR_MATRIX_ARB = $84E6;
  444. var
  445. glLoadTransposeMatrixfARB: procedure(m: PGLfloat); extdecl;
  446. glLoadTransposeMatrixdARB: procedure(m: PGLdouble); extdecl;
  447. glMultTransposeMatrixfARB: procedure(m: PGLfloat); extdecl;
  448. glMultTransposeMatrixdARB: procedure(m: PGLdouble); extdecl;
  449. function Load_GL_ARB_transpose_matrix: Boolean;
  450. //***** GL_ARB_multisample *****//
  451. const
  452. WGL_SAMPLE_BUFFERS_ARB = $2041;
  453. WGL_SAMPLES_ARB = $2042;
  454. GL_MULTISAMPLE_ARB = $809D;
  455. GL_SAMPLE_ALPHA_TO_COVERAGE_ARB = $809E;
  456. GL_SAMPLE_ALPHA_TO_ONE_ARB = $809F;
  457. GL_SAMPLE_COVERAGE_ARB = $80A0;
  458. GL_MULTISAMPLE_BIT_ARB = $20000000;
  459. GL_SAMPLE_BUFFERS_ARB = $80A8;
  460. GL_SAMPLES_ARB = $80A9;
  461. GL_SAMPLE_COVERAGE_VALUE_ARB = $80AA;
  462. GL_SAMPLE_COVERAGE_INVERT_ARB = $80AB;
  463. var
  464. glSampleCoverageARB: procedure(value: GLclampf; invert: GLboolean); extdecl;
  465. function Load_GL_ARB_multisample: Boolean;
  466. //***** GL_ARB_texture_env_add *****//
  467. function Load_GL_ARB_texture_env_add: Boolean;
  468. {$IFDEF Windows}
  469. //***** WGL_ARB_extensions_string *****//
  470. var
  471. wglGetExtensionsStringARB: function(hdc: HDC): Pchar; extdecl;
  472. function Load_WGL_ARB_extensions_string: Boolean;
  473. //***** WGL_ARB_buffer_region *****//
  474. const
  475. WGL_FRONT_COLOR_BUFFER_BIT_ARB = $0001;
  476. WGL_BACK_COLOR_BUFFER_BIT_ARB = $0002;
  477. WGL_DEPTH_BUFFER_BIT_ARB = $0004;
  478. WGL_STENCIL_BUFFER_BIT_ARB = $0008;
  479. var
  480. wglCreateBufferRegionARB: function(hDC: HDC; iLayerPlane: GLint; uType: GLuint): THandle; extdecl;
  481. wglDeleteBufferRegionARB: procedure(hRegion: THandle); extdecl;
  482. wglSaveBufferRegionARB: function(hRegion: THandle; x: GLint; y: GLint; width: GLint; height: GLint): BOOL; extdecl;
  483. wglRestoreBufferRegionARB: function(hRegion: THandle; x: GLint; y: GLint; width: GLint; height: GLint; xSrc: GLint; ySrc: GLint): BOOL; extdecl;
  484. function Load_WGL_ARB_buffer_region: Boolean;
  485. {$ENDIF}
  486. //***** GL_ARB_texture_cube_map *****//
  487. const
  488. GL_NORMAL_MAP_ARB = $8511;
  489. GL_REFLECTION_MAP_ARB = $8512;
  490. GL_TEXTURE_CUBE_MAP_ARB = $8513;
  491. GL_TEXTURE_BINDING_CUBE_MAP_ARB = $8514;
  492. GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB = $8515;
  493. GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB = $8516;
  494. GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB = $8517;
  495. GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB = $8518;
  496. GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB = $8519;
  497. GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB = $851A;
  498. GL_PROXY_TEXTURE_CUBE_MAP_ARB = $851B;
  499. GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB = $851C;
  500. function Load_GL_ARB_texture_cube_map: Boolean;
  501. //***** GL_ARB_depth_texture *****//
  502. const
  503. GL_DEPTH_COMPONENT16_ARB = $81A5;
  504. GL_DEPTH_COMPONENT24_ARB = $81A6;
  505. GL_DEPTH_COMPONENT32_ARB = $81A7;
  506. GL_TEXTURE_DEPTH_SIZE_ARB = $884A;
  507. GL_DEPTH_TEXTURE_MODE_ARB = $884B;
  508. function Load_GL_ARB_depth_texture: Boolean;
  509. //***** GL_ARB_point_parameters *****//
  510. const
  511. GL_POINT_SIZE_MIN_ARB = $8126;
  512. GL_POINT_SIZE_MAX_ARB = $8127;
  513. GL_POINT_FADE_THRESHOLD_SIZE_ARB = $8128;
  514. GL_POINT_DISTANCE_ATTENUATION_ARB = $8129;
  515. var
  516. glPointParameterfARB: procedure(pname: GLenum; param: GLfloat); extdecl;
  517. glPointParameterfvARB: procedure(pname: GLenum; params: PGLfloat); extdecl;
  518. function Load_GL_ARB_point_parameters: Boolean;
  519. //***** GL_ARB_shadow *****//
  520. const
  521. GL_TEXTURE_COMPARE_MODE_ARB = $884C;
  522. GL_TEXTURE_COMPARE_FUNC_ARB = $884D;
  523. GL_COMPARE_R_TO_TEXTURE_ARB = $884E;
  524. function Load_GL_ARB_shadow: Boolean;
  525. //***** GL_ARB_shadow_ambient *****//
  526. const
  527. GL_TEXTURE_COMPARE_FAIL_VALUE_ARB = $80BF;
  528. function Load_GL_ARB_shadow_ambient: Boolean;
  529. //***** GL_ARB_texture_border_clamp *****//
  530. const
  531. GL_CLAMP_TO_BORDER_ARB = $812D;
  532. function Load_GL_ARB_texture_border_clamp: Boolean;
  533. //***** GL_ARB_texture_compression *****//
  534. const
  535. GL_COMPRESSED_ALPHA_ARB = $84E9;
  536. GL_COMPRESSED_LUMINANCE_ARB = $84EA;
  537. GL_COMPRESSED_LUMINANCE_ALPHA_ARB = $84EB;
  538. GL_COMPRESSED_INTENSITY_ARB = $84EC;
  539. GL_COMPRESSED_RGB_ARB = $84ED;
  540. GL_COMPRESSED_RGBA_ARB = $84EE;
  541. GL_TEXTURE_COMPRESSION_HINT_ARB = $84EF;
  542. GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB = $86A0;
  543. GL_TEXTURE_COMPRESSED_ARB = $86A1;
  544. GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB = $86A2;
  545. GL_COMPRESSED_TEXTURE_FORMATS_ARB = $86A3;
  546. var
  547. glCompressedTexImage3DARB: procedure(target: GLenum; level: GLint; internalformat: GLenum; width: GLsizei; height: GLsizei; depth: GLsizei; border: GLint; imageSize: GLsizei; const data: PGLvoid); extdecl;
  548. glCompressedTexImage2DARB: procedure(target: GLenum; level: GLint; internalformat: GLenum; width: GLsizei; height: GLsizei; border: GLint; imageSize: GLsizei; const data: PGLvoid); extdecl;
  549. glCompressedTexImage1DARB: procedure(target: GLenum; level: GLint; internalformat: GLenum; width: GLsizei; border: GLint; imageSize: GLsizei; const data: PGLvoid); extdecl;
  550. 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;
  551. glCompressedTexSubImage2DARB: procedure(target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; width: GLsizei; height: GLsizei; format: GLenum; imageSize: GLsizei; const data: PGLvoid); extdecl;
  552. glCompressedTexSubImage1DARB: procedure(target: GLenum; level: GLint; xoffset: GLint; width: GLsizei; format: GLenum; imageSize: GLsizei; const data: PGLvoid); extdecl;
  553. glGetCompressedTexImageARB: procedure(target: GLenum; lod: GLint; img: PGLvoid); extdecl;
  554. function Load_GL_ARB_texture_compression: Boolean;
  555. //***** GL_ARB_texture_env_combine *****//
  556. const
  557. GL_COMBINE_ARB = $8570;
  558. GL_COMBINE_RGB_ARB = $8571;
  559. GL_COMBINE_ALPHA_ARB = $8572;
  560. GL_SOURCE0_RGB_ARB = $8580;
  561. GL_SOURCE1_RGB_ARB = $8581;
  562. GL_SOURCE2_RGB_ARB = $8582;
  563. GL_SOURCE0_ALPHA_ARB = $8588;
  564. GL_SOURCE1_ALPHA_ARB = $8589;
  565. GL_SOURCE2_ALPHA_ARB = $858A;
  566. GL_OPERAND0_RGB_ARB = $8590;
  567. GL_OPERAND1_RGB_ARB = $8591;
  568. GL_OPERAND2_RGB_ARB = $8592;
  569. GL_OPERAND0_ALPHA_ARB = $8598;
  570. GL_OPERAND1_ALPHA_ARB = $8599;
  571. GL_OPERAND2_ALPHA_ARB = $859A;
  572. GL_RGB_SCALE_ARB = $8573;
  573. GL_ADD_SIGNED_ARB = $8574;
  574. GL_INTERPOLATE_ARB = $8575;
  575. GL_SUBTRACT_ARB = $84E7;
  576. GL_CONSTANT_ARB = $8576;
  577. GL_PRIMARY_COLOR_ARB = $8577;
  578. GL_PREVIOUS_ARB = $8578;
  579. function Load_GL_ARB_texture_env_combine: Boolean;
  580. //***** GL_ARB_texture_env_crossbar *****//
  581. function Load_GL_ARB_texture_env_crossbar: Boolean;
  582. //***** GL_ARB_texture_env_dot3 *****//
  583. const
  584. GL_DOT3_RGB_ARB = $86AE;
  585. GL_DOT3_RGBA_ARB = $86AF;
  586. function Load_GL_ARB_texture_env_dot3: Boolean;
  587. //***** GL_ARB_texture_mirrored_repeat *****//
  588. const
  589. GL_MIRRORED_REPEAT_ARB = $8370;
  590. function Load_GL_ARB_texture_mirrored_repeat: Boolean;
  591. //***** GL_ARB_vertex_blend *****//
  592. const
  593. GL_MAX_VERTEX_UNITS_ARB = $86A4;
  594. GL_ACTIVE_VERTEX_UNITS_ARB = $86A5;
  595. GL_WEIGHT_SUM_UNITY_ARB = $86A6;
  596. GL_VERTEX_BLEND_ARB = $86A7;
  597. GL_MODELVIEW0_ARB = $1700;
  598. GL_MODELVIEW1_ARB = $850A;
  599. GL_MODELVIEW2_ARB = $8722;
  600. GL_MODELVIEW3_ARB = $8723;
  601. GL_MODELVIEW4_ARB = $8724;
  602. GL_MODELVIEW5_ARB = $8725;
  603. GL_MODELVIEW6_ARB = $8726;
  604. GL_MODELVIEW7_ARB = $8727;
  605. GL_MODELVIEW8_ARB = $8728;
  606. GL_MODELVIEW9_ARB = $8729;
  607. GL_MODELVIEW10_ARB = $872A;
  608. GL_MODELVIEW11_ARB = $872B;
  609. GL_MODELVIEW12_ARB = $872C;
  610. GL_MODELVIEW13_ARB = $872D;
  611. GL_MODELVIEW14_ARB = $872E;
  612. GL_MODELVIEW15_ARB = $872F;
  613. GL_MODELVIEW16_ARB = $8730;
  614. GL_MODELVIEW17_ARB = $8731;
  615. GL_MODELVIEW18_ARB = $8732;
  616. GL_MODELVIEW19_ARB = $8733;
  617. GL_MODELVIEW20_ARB = $8734;
  618. GL_MODELVIEW21_ARB = $8735;
  619. GL_MODELVIEW22_ARB = $8736;
  620. GL_MODELVIEW23_ARB = $8737;
  621. GL_MODELVIEW24_ARB = $8738;
  622. GL_MODELVIEW25_ARB = $8739;
  623. GL_MODELVIEW26_ARB = $873A;
  624. GL_MODELVIEW27_ARB = $873B;
  625. GL_MODELVIEW28_ARB = $873C;
  626. GL_MODELVIEW29_ARB = $873D;
  627. GL_MODELVIEW30_ARB = $873E;
  628. GL_MODELVIEW31_ARB = $873F;
  629. GL_CURRENT_WEIGHT_ARB = $86A8;
  630. GL_WEIGHT_ARRAY_TYPE_ARB = $86A9;
  631. GL_WEIGHT_ARRAY_STRIDE_ARB = $86AA;
  632. GL_WEIGHT_ARRAY_SIZE_ARB = $86AB;
  633. GL_WEIGHT_ARRAY_POINTER_ARB = $86AC;
  634. GL_WEIGHT_ARRAY_ARB = $86AD;
  635. var
  636. glWeightbvARB: procedure(size: GLint; weights: PGLbyte); extdecl;
  637. glWeightsvARB: procedure(size: GLint; weights: PGLshort); extdecl;
  638. glWeightivARB: procedure(size: GLint; weights: PGLint); extdecl;
  639. glWeightfvARB: procedure(size: GLint; weights: PGLfloat); extdecl;
  640. glWeightdvARB: procedure(size: GLint; weights: PGLdouble); extdecl;
  641. glWeightvARB: procedure(size: GLint; weights: PGLdouble); extdecl;
  642. glWeightubvARB: procedure(size: GLint; weights: PGLubyte); extdecl;
  643. glWeightusvARB: procedure(size: GLint; weights: PGLushort); extdecl;
  644. glWeightuivARB: procedure(size: GLint; weights: PGLuint); extdecl;
  645. glWeightPointerARB: procedure(size: GLint; _type: GLenum; stride: GLsizei; pointer: PGLvoid); extdecl;
  646. glVertexBlendARB: procedure(count: GLint); extdecl;
  647. function Load_GL_ARB_vertex_blend: Boolean;
  648. //***** GL_ARB_vertex_program *****//
  649. const
  650. GL_VERTEX_PROGRAM_ARB = $8620;
  651. GL_VERTEX_PROGRAM_POINT_SIZE_ARB = $8642;
  652. GL_VERTEX_PROGRAM_TWO_SIDE_ARB = $8643;
  653. GL_COLOR_SUM_ARB = $8458;
  654. GL_PROGRAM_FORMAT_ASCII_ARB = $8875;
  655. GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB = $8622;
  656. GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB = $8623;
  657. GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB = $8624;
  658. GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB = $8625;
  659. GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB = $886A;
  660. GL_CURRENT_VERTEX_ATTRIB_ARB = $8626;
  661. GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB = $8645;
  662. GL_PROGRAM_LENGTH_ARB = $8627;
  663. GL_PROGRAM_FORMAT_ARB = $8876;
  664. GL_PROGRAM_BINDING_ARB = $8677;
  665. GL_PROGRAM_INSTRUCTIONS_ARB = $88A0;
  666. GL_MAX_PROGRAM_INSTRUCTIONS_ARB = $88A1;
  667. GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB = $88A2;
  668. GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB = $88A3;
  669. GL_PROGRAM_TEMPORARIES_ARB = $88A4;
  670. GL_MAX_PROGRAM_TEMPORARIES_ARB = $88A5;
  671. GL_PROGRAM_NATIVE_TEMPORARIES_ARB = $88A6;
  672. GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB = $88A7;
  673. GL_PROGRAM_PARAMETERS_ARB = $88A8;
  674. GL_MAX_PROGRAM_PARAMETERS_ARB = $88A9;
  675. GL_PROGRAM_NATIVE_PARAMETERS_ARB = $88AA;
  676. GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB = $88AB;
  677. GL_PROGRAM_ATTRIBS_ARB = $88AC;
  678. GL_MAX_PROGRAM_ATTRIBS_ARB = $88AD;
  679. GL_PROGRAM_NATIVE_ATTRIBS_ARB = $88AE;
  680. GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB = $88AF;
  681. GL_PROGRAM_ADDRESS_REGISTERS_ARB = $88B0;
  682. GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB = $88B1;
  683. GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB = $88B2;
  684. GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB = $88B3;
  685. GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB = $88B4;
  686. GL_MAX_PROGRAM_ENV_PARAMETERS_ARB = $88B5;
  687. GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB = $88B6;
  688. GL_PROGRAM_STRING_ARB = $8628;
  689. GL_PROGRAM_ERROR_POSITION_ARB = $864B;
  690. GL_CURRENT_MATRIX_ARB = $8641;
  691. GL_TRANSPOSE_CURRENT_MATRIX_ARB = $88B7;
  692. GL_CURRENT_MATRIX_STACK_DEPTH_ARB = $8640;
  693. GL_MAX_VERTEX_ATTRIBS_ARB = $8869;
  694. GL_MAX_PROGRAM_MATRICES_ARB = $862F;
  695. GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB = $862E;
  696. GL_PROGRAM_ERROR_STRING_ARB = $8874;
  697. GL_MATRIX0_ARB = $88C0;
  698. GL_MATRIX1_ARB = $88C1;
  699. GL_MATRIX2_ARB = $88C2;
  700. GL_MATRIX3_ARB = $88C3;
  701. GL_MATRIX4_ARB = $88C4;
  702. GL_MATRIX5_ARB = $88C5;
  703. GL_MATRIX6_ARB = $88C6;
  704. GL_MATRIX7_ARB = $88C7;
  705. GL_MATRIX8_ARB = $88C8;
  706. GL_MATRIX9_ARB = $88C9;
  707. GL_MATRIX10_ARB = $88CA;
  708. GL_MATRIX11_ARB = $88CB;
  709. GL_MATRIX12_ARB = $88CC;
  710. GL_MATRIX13_ARB = $88CD;
  711. GL_MATRIX14_ARB = $88CE;
  712. GL_MATRIX15_ARB = $88CF;
  713. GL_MATRIX16_ARB = $88D0;
  714. GL_MATRIX17_ARB = $88D1;
  715. GL_MATRIX18_ARB = $88D2;
  716. GL_MATRIX19_ARB = $88D3;
  717. GL_MATRIX20_ARB = $88D4;
  718. GL_MATRIX21_ARB = $88D5;
  719. GL_MATRIX22_ARB = $88D6;
  720. GL_MATRIX23_ARB = $88D7;
  721. GL_MATRIX24_ARB = $88D8;
  722. GL_MATRIX25_ARB = $88D9;
  723. GL_MATRIX26_ARB = $88DA;
  724. GL_MATRIX27_ARB = $88DB;
  725. GL_MATRIX28_ARB = $88DC;
  726. GL_MATRIX29_ARB = $88DD;
  727. GL_MATRIX30_ARB = $88DE;
  728. GL_MATRIX31_ARB = $88DF;
  729. var
  730. glVertexAttrib1sARB: procedure(index: GLuint; x: GLshort); extdecl;
  731. glVertexAttrib1fARB: procedure(index: GLuint; x: GLfloat); extdecl;
  732. glVertexAttrib1dARB: procedure(index: GLuint; x: GLdouble); extdecl;
  733. glVertexAttrib2sARB: procedure(index: GLuint; x: GLshort; y: GLshort); extdecl;
  734. glVertexAttrib2fARB: procedure(index: GLuint; x: GLfloat; y: GLfloat); extdecl;
  735. glVertexAttrib2dARB: procedure(index: GLuint; x: GLdouble; y: GLdouble); extdecl;
  736. glVertexAttrib3sARB: procedure(index: GLuint; x: GLshort; y: GLshort; z: GLshort); extdecl;
  737. glVertexAttrib3fARB: procedure(index: GLuint; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  738. glVertexAttrib3dARB: procedure(index: GLuint; x: GLdouble; y: GLdouble; z: GLdouble); extdecl;
  739. glVertexAttrib4sARB: procedure(index: GLuint; x: GLshort; y: GLshort; z: GLshort; w: GLshort); extdecl;
  740. glVertexAttrib4fARB: procedure(index: GLuint; x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); extdecl;
  741. glVertexAttrib4dARB: procedure(index: GLuint; x: GLdouble; y: GLdouble; z: GLdouble; w: GLdouble); extdecl;
  742. glVertexAttrib4NubARB: procedure(index: GLuint; x: GLubyte; y: GLubyte; z: GLubyte; w: GLubyte); extdecl;
  743. glVertexAttrib1svARB: procedure(index: GLuint; const v: PGLshort); extdecl;
  744. glVertexAttrib1fvARB: procedure(index: GLuint; const v: PGLfloat); extdecl;
  745. glVertexAttrib1dvARB: procedure(index: GLuint; const v: PGLdouble); extdecl;
  746. glVertexAttrib2svARB: procedure(index: GLuint; const v: PGLshort); extdecl;
  747. glVertexAttrib2fvARB: procedure(index: GLuint; const v: PGLfloat); extdecl;
  748. glVertexAttrib2dvARB: procedure(index: GLuint; const v: PGLdouble); extdecl;
  749. glVertexAttrib3svARB: procedure(index: GLuint; const v: PGLshort); extdecl;
  750. glVertexAttrib3fvARB: procedure(index: GLuint; const v: PGLfloat); extdecl;
  751. glVertexAttrib3dvARB: procedure(index: GLuint; const v: PGLdouble); extdecl;
  752. glVertexAttrib4bvARB: procedure(index: GLuint; const v: PGLbyte); extdecl;
  753. glVertexAttrib4svARB: procedure(index: GLuint; const v: PGLshort); extdecl;
  754. glVertexAttrib4ivARB: procedure(index: GLuint; const v: PGLint); extdecl;
  755. glVertexAttrib4ubvARB: procedure(index: GLuint; const v: PGLubyte); extdecl;
  756. glVertexAttrib4usvARB: procedure(index: GLuint; const v: PGLushort); extdecl;
  757. glVertexAttrib4uivARB: procedure(index: GLuint; const v: PGLuint); extdecl;
  758. glVertexAttrib4fvARB: procedure(index: GLuint; const v: PGLfloat); extdecl;
  759. glVertexAttrib4dvARB: procedure(index: GLuint; const v: PGLdouble); extdecl;
  760. glVertexAttrib4NbvARB: procedure(index: GLuint; const v: PGLbyte); extdecl;
  761. glVertexAttrib4NsvARB: procedure(index: GLuint; const v: PGLshort); extdecl;
  762. glVertexAttrib4NivARB: procedure(index: GLuint; const v: PGLint); extdecl;
  763. glVertexAttrib4NubvARB: procedure(index: GLuint; const v: PGLubyte); extdecl;
  764. glVertexAttrib4NusvARB: procedure(index: GLuint; const v: PGLushort); extdecl;
  765. glVertexAttrib4NuivARB: procedure(index: GLuint; const v: PGLuint); extdecl;
  766. glVertexAttribPointerARB: procedure(index: GLuint; size: GLint; _type: GLenum; normalized: GLboolean; stride: GLsizei; const pointer: PGLvoid); extdecl;
  767. glEnableVertexAttribArrayARB: procedure(index: GLuint); extdecl;
  768. glDisableVertexAttribArrayARB: procedure(index: GLuint); extdecl;
  769. glProgramStringARB: procedure(target: GLenum; format: GLenum; len: GLsizei; const _string: PGLvoid); extdecl;
  770. glBindProgramARB: procedure(target: GLenum; _program: GLuint); extdecl;
  771. glDeleteProgramsARB: procedure(n: GLsizei; const programs: PGLuint); extdecl;
  772. glGenProgramsARB: procedure(n: GLsizei; programs: PGLuint); extdecl;
  773. glProgramEnvParameter4dARB: procedure(target: GLenum; index: GLuint; x: GLdouble; y: GLdouble; z: GLdouble; w: GLdouble); extdecl;
  774. glProgramEnvParameter4dvARB: procedure(target: GLenum; index: GLuint; const params: PGLdouble); extdecl;
  775. glProgramEnvParameter4fARB: procedure(target: GLenum; index: GLuint; x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); extdecl;
  776. glProgramEnvParameter4fvARB: procedure(target: GLenum; index: GLuint; const params: PGLfloat); extdecl;
  777. glProgramLocalParameter4dARB: procedure(target: GLenum; index: GLuint; x: GLdouble; y: GLdouble; z: GLdouble; w: GLdouble); extdecl;
  778. glProgramLocalParameter4dvARB: procedure(target: GLenum; index: GLuint; const params: PGLdouble); extdecl;
  779. glProgramLocalParameter4fARB: procedure(target: GLenum; index: GLuint; x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); extdecl;
  780. glProgramLocalParameter4fvARB: procedure(target: GLenum; index: GLuint; const params: PGLfloat); extdecl;
  781. glGetProgramEnvParameterdvARB: procedure(target: GLenum; index: GLuint; params: PGLdouble); extdecl;
  782. glGetProgramEnvParameterfvARB: procedure(target: GLenum; index: GLuint; params: PGLfloat); extdecl;
  783. glGetProgramLocalParameterdvARB: procedure(target: GLenum; index: GLuint; params: PGLdouble); extdecl;
  784. glGetProgramLocalParameterfvARB: procedure(target: GLenum; index: GLuint; params: PGLfloat); extdecl;
  785. glGetProgramivARB: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  786. glGetProgramStringARB: procedure(target: GLenum; pname: GLenum; _string: PGLvoid); extdecl;
  787. glGetVertexAttribdvARB: procedure(index: GLuint; pname: GLenum; params: PGLdouble); extdecl;
  788. glGetVertexAttribfvARB: procedure(index: GLuint; pname: GLenum; params: PGLfloat); extdecl;
  789. glGetVertexAttribivARB: procedure(index: GLuint; pname: GLenum; params: PGLint); extdecl;
  790. glGetVertexAttribPointervARB: procedure(index: GLuint; pname: GLenum; pointer: PGLvoid); extdecl;
  791. glIsProgramARB: function(_program: GLuint): GLboolean; extdecl;
  792. function Load_GL_ARB_vertex_program: Boolean;
  793. //***** GL_ARB_window_pos *****//
  794. var
  795. glWindowPos2dARB: procedure(x: GLdouble; y: GLdouble); extdecl;
  796. glWindowPos2fARB: procedure(x: GLfloat; y: GLfloat); extdecl;
  797. glWindowPos2iARB: procedure(x: GLint; y: GLint); extdecl;
  798. glWindowPos2sARB: procedure(x: GLshort; y: GLshort); extdecl;
  799. glWindowPos2dvARB: procedure(const p: PGLdouble); extdecl;
  800. glWindowPos2fvARB: procedure(const p: PGLfloat); extdecl;
  801. glWindowPos2ivARB: procedure(const p: PGLint); extdecl;
  802. glWindowPos2svARB: procedure(const p: PGLshort); extdecl;
  803. glWindowPos3dARB: procedure(x: GLdouble; y: GLdouble; z: GLdouble); extdecl;
  804. glWindowPos3fARB: procedure(x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  805. glWindowPos3iARB: procedure(x: GLint; y: GLint; z: GLint); extdecl;
  806. glWindowPos3sARB: procedure(x: GLshort; y: GLshort; z: GLshort); extdecl;
  807. glWindowPos3dvARB: procedure(const p: PGLdouble); extdecl;
  808. glWindowPos3fvARB: procedure(const p: PGLfloat); extdecl;
  809. glWindowPos3ivARB: procedure(const p: PGLint); extdecl;
  810. glWindowPos3svARB: procedure(const p: PGLshort); extdecl;
  811. function Load_GL_ARB_window_pos: Boolean;
  812. //***** GL_EXT_422_pixels *****//
  813. const
  814. GL_422_EXT = $80CC;
  815. GL_422_REV_EXT = $80CD;
  816. GL_422_AVERAGE_EXT = $80CE;
  817. GL_422_REV_AVERAGE_EXT = $80CF;
  818. function Load_GL_EXT_422_pixels: Boolean;
  819. //***** GL_EXT_abgr *****//
  820. const
  821. GL_ABGR_EXT = $8000;
  822. function Load_GL_EXT_abgr: Boolean;
  823. //***** GL_EXT_bgra *****//
  824. const
  825. GL_BGR_EXT = $80E0;
  826. GL_BGRA_EXT = $80E1;
  827. function Load_GL_EXT_bgra: Boolean;
  828. //***** GL_EXT_blend_color *****//
  829. const
  830. GL_CONSTANT_COLOR_EXT = $8001;
  831. GL_ONE_MINUS_CONSTANT_COLOR_EXT = $8002;
  832. GL_CONSTANT_ALPHA_EXT = $8003;
  833. GL_ONE_MINUS_CONSTANT_ALPHA_EXT = $8004;
  834. GL_BLEND_COLOR_EXT = $8005;
  835. var
  836. glBlendColorEXT: procedure(red: GLclampf; green: GLclampf; blue: GLclampf; alpha: GLclampf); extdecl;
  837. function Load_GL_EXT_blend_color: Boolean;
  838. //***** GL_EXT_blend_func_separate *****//
  839. const
  840. GL_BLEND_DST_RGB_EXT = $80C8;
  841. GL_BLEND_SRC_RGB_EXT = $80C9;
  842. GL_BLEND_DST_ALPHA_EXT = $80CA;
  843. GL_BLEND_SRC_ALPHA_EXT = $80CB;
  844. var
  845. glBlendFuncSeparateEXT: procedure(sfactorRGB: GLenum; dfactorRGB: GLenum; sfactorAlpha: GLenum; dfactorAlpha: GLenum); extdecl;
  846. function Load_GL_EXT_blend_func_separate: Boolean;
  847. //***** GL_EXT_blend_logic_op *****//
  848. function Load_GL_EXT_blend_logic_op: Boolean;
  849. //***** GL_EXT_blend_minmax *****//
  850. const
  851. GL_FUNC_ADD_EXT = $8006;
  852. GL_MIN_EXT = $8007;
  853. GL_MAX_EXT = $8008;
  854. GL_BLEND_EQUATION_EXT = $8009;
  855. var
  856. glBlendEquationEXT: procedure(mode: GLenum); extdecl;
  857. function Load_GL_EXT_blend_minmax: Boolean;
  858. //***** GL_EXT_blend_subtract *****//
  859. const
  860. GL_FUNC_SUBTRACT_EXT = $800A;
  861. GL_FUNC_REVERSE_SUBTRACT_EXT = $800B;
  862. function Load_GL_EXT_blend_subtract: Boolean;
  863. //***** GL_EXT_clip_volume_hint *****//
  864. const
  865. GL_CLIP_VOLUME_CLIPPING_HINT_EXT = $80F0;
  866. function Load_GL_EXT_clip_volume_hint: Boolean;
  867. //***** GL_EXT_color_subtable *****//
  868. var
  869. glColorSubTableEXT: procedure(target: GLenum; start: GLsizei; count: GLsizei; format: GLenum; _type: GLenum; const data: PGLvoid); extdecl;
  870. glCopyColorSubTableEXT: procedure(target: GLenum; start: GLsizei; x: GLint; y: GLint; width: GLsizei); extdecl;
  871. function Load_GL_EXT_color_subtable: Boolean;
  872. //***** GL_EXT_compiled_vertex_array *****//
  873. const
  874. GL_ARRAY_ELEMENT_LOCK_FIRST_EXT = $81A8;
  875. GL_ARRAY_ELEMENT_LOCK_COUNT_EXT = $81A9;
  876. var
  877. glLockArraysEXT: procedure(first: GLint; count: GLsizei); extdecl;
  878. glUnlockArraysEXT: procedure(); extdecl;
  879. function Load_GL_EXT_compiled_vertex_array: Boolean;
  880. //***** GL_EXT_convolution *****//
  881. const
  882. GL_CONVOLUTION_1D_EXT = $8010;
  883. GL_CONVOLUTION_2D_EXT = $8011;
  884. GL_SEPARABLE_2D_EXT = $8012;
  885. GL_CONVOLUTION_BORDER_MODE_EXT = $8013;
  886. GL_CONVOLUTION_FILTER_SCALE_EXT = $8014;
  887. GL_CONVOLUTION_FILTER_BIAS_EXT = $8015;
  888. GL_REDUCE_EXT = $8016;
  889. GL_CONVOLUTION_FORMAT_EXT = $8017;
  890. GL_CONVOLUTION_WIDTH_EXT = $8018;
  891. GL_CONVOLUTION_HEIGHT_EXT = $8019;
  892. GL_MAX_CONVOLUTION_WIDTH_EXT = $801A;
  893. GL_MAX_CONVOLUTION_HEIGHT_EXT = $801B;
  894. GL_POST_CONVOLUTION_RED_SCALE_EXT = $801C;
  895. GL_POST_CONVOLUTION_GREEN_SCALE_EXT = $801D;
  896. GL_POST_CONVOLUTION_BLUE_SCALE_EXT = $801E;
  897. GL_POST_CONVOLUTION_ALPHA_SCALE_EXT = $801F;
  898. GL_POST_CONVOLUTION_RED_BIAS_EXT = $8020;
  899. GL_POST_CONVOLUTION_GREEN_BIAS_EXT = $8021;
  900. GL_POST_CONVOLUTION_BLUE_BIAS_EXT = $8022;
  901. GL_POST_CONVOLUTION_ALPHA_BIAS_EXT = $8023;
  902. var
  903. glConvolutionFilter1DEXT: procedure(target: GLenum; internalformat: GLenum; width: GLsizei; format: GLenum; _type: GLenum; const image: PGLvoid); extdecl;
  904. glConvolutionFilter2DEXT: procedure(target: GLenum; internalformat: GLenum; width: GLsizei; height: GLsizei; format: GLenum; _type: GLenum; const image: PGLvoid); extdecl;
  905. glCopyConvolutionFilter1DEXT: procedure(target: GLenum; internalformat: GLenum; x: GLint; y: GLint; width: GLsizei); extdecl;
  906. glCopyConvolutionFilter2DEXT: procedure(target: GLenum; internalformat: GLenum; x: GLint; y: GLint; width: GLsizei; height: GLsizei); extdecl;
  907. glGetConvolutionFilterEXT: procedure(target: GLenum; format: GLenum; _type: GLenum; image: PGLvoid); extdecl;
  908. glSeparableFilter2DEXT: procedure(target: GLenum; internalformat: GLenum; width: GLsizei; height: GLsizei; format: GLenum; _type: GLenum; const row: PGLvoid; const column: PGLvoid); extdecl;
  909. glGetSeparableFilterEXT: procedure(target: GLenum; format: GLenum; _type: GLenum; row: PGLvoid; column: PGLvoid; span: PGLvoid); extdecl;
  910. glConvolutionParameteriEXT: procedure(target: GLenum; pname: GLenum; param: GLint); extdecl;
  911. glConvolutionParameterivEXT: procedure(target: GLenum; pname: GLenum; const params: PGLint); extdecl;
  912. glConvolutionParameterfEXT: procedure(target: GLenum; pname: GLenum; param: GLfloat); extdecl;
  913. glConvolutionParameterfvEXT: procedure(target: GLenum; pname: GLenum; const params: PGLfloat); extdecl;
  914. glGetConvolutionParameterivEXT: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  915. glGetConvolutionParameterfvEXT: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  916. function Load_GL_EXT_convolution: Boolean;
  917. //***** GL_EXT_fog_coord *****//
  918. const
  919. GL_FOG_COORDINATE_SOURCE_EXT = $8450;
  920. GL_FOG_COORDINATE_EXT = $8451;
  921. GL_FRAGMENT_DEPTH_EXT = $8452;
  922. GL_CURRENT_FOG_COORDINATE_EXT = $8453;
  923. GL_FOG_COORDINATE_ARRAY_TYPE_EXT = $8454;
  924. GL_FOG_COORDINATE_ARRAY_STRIDE_EXT = $8455;
  925. GL_FOG_COORDINATE_ARRAY_POINTER_EXT = $8456;
  926. GL_FOG_COORDINATE_ARRAY_EXT = $8457;
  927. var
  928. glFogCoordfEXT: procedure(coord: GLfloat); extdecl;
  929. glFogCoorddEXT: procedure(coord: GLdouble); extdecl;
  930. glFogCoordfvEXT: procedure(coord: PGLfloat); extdecl;
  931. glFogCoorddvEXT: procedure(coord: PGLdouble); extdecl;
  932. glFogCoordPointerEXT: procedure(_type: GLenum; stride: GLsizei; pointer: PGLvoid); extdecl;
  933. function Load_GL_EXT_fog_coord: Boolean;
  934. //***** GL_EXT_histogram *****//
  935. const
  936. GL_HISTOGRAM_EXT = $8024;
  937. GL_PROXY_HISTOGRAM_EXT = $8025;
  938. GL_HISTOGRAM_WIDTH_EXT = $8026;
  939. GL_HISTOGRAM_FORMAT_EXT = $8027;
  940. GL_HISTOGRAM_RED_SIZE_EXT = $8028;
  941. GL_HISTOGRAM_GREEN_SIZE_EXT = $8029;
  942. GL_HISTOGRAM_BLUE_SIZE_EXT = $802A;
  943. GL_HISTOGRAM_ALPHA_SIZE_EXT = $802B;
  944. GL_HISTOGRAM_LUMINANCE_SIZE_EXT = $802C;
  945. GL_HISTOGRAM_SINK_EXT = $802D;
  946. GL_MINMAX_EXT = $802E;
  947. GL_MINMAX_FORMAT_EXT = $802F;
  948. GL_MINMAX_SINK_EXT = $8030;
  949. var
  950. glHistogramEXT: procedure(target: GLenum; width: GLsizei; internalformat: GLenum; sink: GLboolean); extdecl;
  951. glResetHistogramEXT: procedure(target: GLenum); extdecl;
  952. glGetHistogramEXT: procedure(target: GLenum; reset: GLboolean; format: GLenum; _type: GLenum; values: PGLvoid); extdecl;
  953. glGetHistogramParameterivEXT: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  954. glGetHistogramParameterfvEXT: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  955. glMinmaxEXT: procedure(target: GLenum; internalformat: GLenum; sink: GLboolean); extdecl;
  956. glResetMinmaxEXT: procedure(target: GLenum); extdecl;
  957. glGetMinmaxEXT: procedure(target: GLenum; reset: GLboolean; format: GLenum; _type: GLenum; values: PGLvoid); extdecl;
  958. glGetMinmaxParameterivEXT: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  959. glGetMinmaxParameterfvEXT: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  960. function Load_GL_EXT_histogram: Boolean;
  961. //***** GL_EXT_multi_draw_arrays *****//
  962. var
  963. glMultiDrawArraysEXT: procedure(mode: GLenum; first: PGLint; count: PGLsizei; primcount: GLsizei); extdecl;
  964. glMultiDrawElementsEXT: procedure(mode: GLenum; count: PGLsizei; _type: GLenum; const indices: PGLvoid; primcount: GLsizei); extdecl;
  965. function Load_GL_EXT_multi_draw_arrays: Boolean;
  966. //***** GL_EXT_packed_pixels *****//
  967. const
  968. GL_UNSIGNED_BYTE_3_3_2_EXT = $8032;
  969. GL_UNSIGNED_SHORT_4_4_4_4_EXT = $8033;
  970. GL_UNSIGNED_SHORT_5_5_5_1_EXT = $8034;
  971. GL_UNSIGNED_INT_8_8_8_8_EXT = $8035;
  972. GL_UNSIGNED_INT_10_10_10_2_EXT = $8036;
  973. function Load_GL_EXT_packed_pixels: Boolean;
  974. //***** GL_EXT_paletted_texture *****//
  975. const
  976. GL_COLOR_INDEX1_EXT = $80E2;
  977. GL_COLOR_INDEX2_EXT = $80E3;
  978. GL_COLOR_INDEX4_EXT = $80E4;
  979. GL_COLOR_INDEX8_EXT = $80E5;
  980. GL_COLOR_INDEX12_EXT = $80E6;
  981. GL_COLOR_INDEX16_EXT = $80E7;
  982. GL_COLOR_TABLE_FORMAT_EXT = $80D8;
  983. GL_COLOR_TABLE_WIDTH_EXT = $80D9;
  984. GL_COLOR_TABLE_RED_SIZE_EXT = $80DA;
  985. GL_COLOR_TABLE_GREEN_SIZE_EXT = $80DB;
  986. GL_COLOR_TABLE_BLUE_SIZE_EXT = $80DC;
  987. GL_COLOR_TABLE_ALPHA_SIZE_EXT = $80DD;
  988. GL_COLOR_TABLE_LUMINANCE_SIZE_EXT = $80DE;
  989. GL_COLOR_TABLE_INTENSITY_SIZE_EXT = $80DF;
  990. GL_TEXTURE_INDEX_SIZE_EXT = $80ED;
  991. GL_TEXTURE_1D = $0DE0;
  992. GL_TEXTURE_2D = $0DE1;
  993. GL_TEXTURE_3D_EXT = $806F;
  994. // GL_TEXTURE_CUBE_MAP_ARB { already defined }
  995. GL_PROXY_TEXTURE_1D = $8063;
  996. GL_PROXY_TEXTURE_2D = $8064;
  997. GL_PROXY_TEXTURE_3D_EXT = $8070;
  998. // GL_PROXY_TEXTURE_CUBE_MAP_ARB { already defined }
  999. // GL_TEXTURE_1D { already defined }
  1000. // GL_TEXTURE_2D { already defined }
  1001. // GL_TEXTURE_3D_EXT { already defined }
  1002. // GL_TEXTURE_CUBE_MAP_ARB { already defined }
  1003. var
  1004. glColorTableEXT: procedure(target: GLenum; internalFormat: GLenum; width: GLsizei; format: GLenum; _type: GLenum; const data: PGLvoid); extdecl;
  1005. // glColorSubTableEXT { already defined }
  1006. glGetColorTableEXT: procedure(target: GLenum; format: GLenum; _type: GLenum; data: PGLvoid); extdecl;
  1007. glGetColorTableParameterivEXT: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  1008. glGetColorTableParameterfvEXT: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  1009. function Load_GL_EXT_paletted_texture: Boolean;
  1010. //***** GL_EXT_point_parameters *****//
  1011. const
  1012. GL_POINT_SIZE_MIN_EXT = $8126;
  1013. GL_POINT_SIZE_MAX_EXT = $8127;
  1014. GL_POINT_FADE_THRESHOLD_SIZE_EXT = $8128;
  1015. GL_DISTANCE_ATTENUATION_EXT = $8129;
  1016. var
  1017. glPointParameterfEXT: procedure(pname: GLenum; param: GLfloat); extdecl;
  1018. glPointParameterfvEXT: procedure(pname: GLenum; params: PGLfloat); extdecl;
  1019. function Load_GL_EXT_point_parameters: Boolean;
  1020. //***** GL_EXT_polygon_offset *****//
  1021. const
  1022. GL_POLYGON_OFFSET_EXT = $8037;
  1023. GL_POLYGON_OFFSET_FACTOR_EXT = $8038;
  1024. GL_POLYGON_OFFSET_BIAS_EXT = $8039;
  1025. var
  1026. glPolygonOffsetEXT: procedure(factor: GLfloat; bias: GLfloat); extdecl;
  1027. function Load_GL_EXT_polygon_offset: Boolean;
  1028. //***** GL_EXT_secondary_color *****//
  1029. const
  1030. GL_COLOR_SUM_EXT = $8458;
  1031. GL_CURRENT_SECONDARY_COLOR_EXT = $8459;
  1032. GL_SECONDARY_COLOR_ARRAY_SIZE_EXT = $845A;
  1033. GL_SECONDARY_COLOR_ARRAY_TYPE_EXT = $845B;
  1034. GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT = $845C;
  1035. GL_SECONDARY_COLOR_ARRAY_POINTER_EXT = $845D;
  1036. GL_SECONDARY_COLOR_ARRAY_EXT = $845E;
  1037. var
  1038. glSecondaryColor3bEXT: procedure(components: GLbyte); extdecl;
  1039. glSecondaryColor3sEXT: procedure(components: GLshort); extdecl;
  1040. glSecondaryColor3iEXT: procedure(components: GLint); extdecl;
  1041. glSecondaryColor3fEXT: procedure(components: GLfloat); extdecl;
  1042. glSecondaryColor3dEXT: procedure(components: GLdouble); extdecl;
  1043. glSecondaryColor3ubEXT: procedure(components: GLubyte); extdecl;
  1044. glSecondaryColor3usEXT: procedure(components: GLushort); extdecl;
  1045. glSecondaryColor3uiEXT: procedure(components: GLuint); extdecl;
  1046. glSecondaryColor3bvEXT: procedure(components: GLbyte); extdecl;
  1047. glSecondaryColor3svEXT: procedure(components: GLshort); extdecl;
  1048. glSecondaryColor3ivEXT: procedure(components: GLint); extdecl;
  1049. glSecondaryColor3fvEXT: procedure(components: GLfloat); extdecl;
  1050. glSecondaryColor3dvEXT: procedure(components: GLdouble); extdecl;
  1051. glSecondaryColor3ubvEXT: procedure(components: GLubyte); extdecl;
  1052. glSecondaryColor3usvEXT: procedure(components: GLushort); extdecl;
  1053. glSecondaryColor3uivEXT: procedure(components: GLuint); extdecl;
  1054. glSecondaryColorPointerEXT: procedure(size: GLint; _type: GLenum; stride: GLsizei; pointer: PGLvoid); extdecl;
  1055. function Load_GL_EXT_secondary_color: Boolean;
  1056. //***** GL_EXT_separate_specular_color *****//
  1057. const
  1058. GL_LIGHT_MODEL_COLOR_CONTROL_EXT = $81F8;
  1059. GL_SINGLE_COLOR_EXT = $81F9;
  1060. GL_SEPARATE_SPECULAR_COLOR_EXT = $81FA;
  1061. function Load_GL_EXT_separate_specular_color: Boolean;
  1062. //***** GL_EXT_shadow_funcs *****//
  1063. function Load_GL_EXT_shadow_funcs: Boolean;
  1064. //***** GL_EXT_shared_texture_palette *****//
  1065. const
  1066. GL_SHARED_TEXTURE_PALETTE_EXT = $81FB;
  1067. function Load_GL_EXT_shared_texture_palette: Boolean;
  1068. //***** GL_EXT_stencil_two_side *****//
  1069. const
  1070. GL_STENCIL_TEST_TWO_SIDE_EXT = $8910;
  1071. GL_ACTIVE_STENCIL_FACE_EXT = $8911;
  1072. var
  1073. glActiveStencilFaceEXT: procedure(face: GLenum); extdecl;
  1074. function Load_GL_EXT_stencil_two_side: Boolean;
  1075. //***** GL_EXT_stencil_wrap *****//
  1076. const
  1077. GL_INCR_WRAP_EXT = $8507;
  1078. GL_DECR_WRAP_EXT = $8508;
  1079. function Load_GL_EXT_stencil_wrap: Boolean;
  1080. //***** GL_EXT_subtexture *****//
  1081. var
  1082. glTexSubImage1DEXT: procedure(target: GLenum; level: GLint; xoffset: GLint; width: GLsizei; format: GLenum; _type: GLenum; const pixels: PGLvoid); extdecl;
  1083. glTexSubImage2DEXT: procedure(target: GLenum; level: GLint; xoffset: GLint; yoffset: GLint; width: GLsizei; height: GLsizei; format: GLenum; _type: GLenum; const pixels: PGLvoid); extdecl;
  1084. 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;
  1085. function Load_GL_EXT_subtexture: Boolean;
  1086. //***** GL_EXT_texture3D *****//
  1087. const
  1088. GL_PACK_SKIP_IMAGES_EXT = $806B;
  1089. GL_PACK_IMAGE_HEIGHT_EXT = $806C;
  1090. GL_UNPACK_SKIP_IMAGES_EXT = $806D;
  1091. GL_UNPACK_IMAGE_HEIGHT_EXT = $806E;
  1092. // GL_TEXTURE_3D_EXT { already defined }
  1093. // GL_PROXY_TEXTURE_3D_EXT { already defined }
  1094. GL_TEXTURE_DEPTH_EXT = $8071;
  1095. GL_TEXTURE_WRAP_R_EXT = $8072;
  1096. GL_MAX_3D_TEXTURE_SIZE_EXT = $8073;
  1097. var
  1098. glTexImage3DEXT: procedure(target: GLenum; level: GLint; internalformat: GLenum; width: GLsizei; height: GLsizei; depth: GLsizei; border: GLint; format: GLenum; _type: GLenum; const pixels: PGLvoid); extdecl;
  1099. function Load_GL_EXT_texture3D: Boolean;
  1100. //***** GL_EXT_texture_compression_s3tc *****//
  1101. const
  1102. GL_COMPRESSED_RGB_S3TC_DXT1_EXT = $83F0;
  1103. GL_COMPRESSED_RGBA_S3TC_DXT1_EXT = $83F1;
  1104. GL_COMPRESSED_RGBA_S3TC_DXT3_EXT = $83F2;
  1105. GL_COMPRESSED_RGBA_S3TC_DXT5_EXT = $83F3;
  1106. function Load_GL_EXT_texture_compression_s3tc: Boolean;
  1107. //***** GL_EXT_texture_env_add *****//
  1108. function Load_GL_EXT_texture_env_add: Boolean;
  1109. //***** GL_EXT_texture_env_combine *****//
  1110. const
  1111. GL_COMBINE_EXT = $8570;
  1112. GL_COMBINE_RGB_EXT = $8571;
  1113. GL_COMBINE_ALPHA_EXT = $8572;
  1114. GL_SOURCE0_RGB_EXT = $8580;
  1115. GL_SOURCE1_RGB_EXT = $8581;
  1116. GL_SOURCE2_RGB_EXT = $8582;
  1117. GL_SOURCE0_ALPHA_EXT = $8588;
  1118. GL_SOURCE1_ALPHA_EXT = $8589;
  1119. GL_SOURCE2_ALPHA_EXT = $858A;
  1120. GL_OPERAND0_RGB_EXT = $8590;
  1121. GL_OPERAND1_RGB_EXT = $8591;
  1122. GL_OPERAND2_RGB_EXT = $8592;
  1123. GL_OPERAND0_ALPHA_EXT = $8598;
  1124. GL_OPERAND1_ALPHA_EXT = $8599;
  1125. GL_OPERAND2_ALPHA_EXT = $859A;
  1126. GL_RGB_SCALE_EXT = $8573;
  1127. GL_ADD_SIGNED_EXT = $8574;
  1128. GL_INTERPOLATE_EXT = $8575;
  1129. GL_CONSTANT_EXT = $8576;
  1130. GL_PRIMARY_COLOR_EXT = $8577;
  1131. GL_PREVIOUS_EXT = $8578;
  1132. function Load_GL_EXT_texture_env_combine: Boolean;
  1133. //***** GL_EXT_texture_env_dot3 *****//
  1134. const
  1135. GL_DOT3_RGB_EXT = $8740;
  1136. GL_DOT3_RGBA_EXT = $8741;
  1137. function Load_GL_EXT_texture_env_dot3: Boolean;
  1138. //***** GL_EXT_texture_filter_anisotropic *****//
  1139. const
  1140. GL_TEXTURE_MAX_ANISOTROPY_EXT = $84FE;
  1141. GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = $84FF;
  1142. function Load_GL_EXT_texture_filter_anisotropic: Boolean;
  1143. //***** GL_EXT_texture_lod_bias *****//
  1144. const
  1145. GL_TEXTURE_FILTER_CONTROL_EXT = $8500;
  1146. GL_TEXTURE_LOD_BIAS_EXT = $8501;
  1147. GL_MAX_TEXTURE_LOD_BIAS_EXT = $84FD;
  1148. function Load_GL_EXT_texture_lod_bias: Boolean;
  1149. //***** GL_EXT_texture_object *****//
  1150. const
  1151. GL_TEXTURE_PRIORITY_EXT = $8066;
  1152. GL_TEXTURE_RESIDENT_EXT = $8067;
  1153. GL_TEXTURE_1D_BINDING_EXT = $8068;
  1154. GL_TEXTURE_2D_BINDING_EXT = $8069;
  1155. GL_TEXTURE_3D_BINDING_EXT = $806A;
  1156. var
  1157. glGenTexturesEXT: procedure(n: GLsizei; textures: PGLuint); extdecl;
  1158. glDeleteTexturesEXT: procedure(n: GLsizei; const textures: PGLuint); extdecl;
  1159. glBindTextureEXT: procedure(target: GLenum; texture: GLuint); extdecl;
  1160. glPrioritizeTexturesEXT: procedure(n: GLsizei; const textures: PGLuint; const priorities: PGLclampf); extdecl;
  1161. glAreTexturesResidentEXT: function(n: GLsizei; const textures: PGLuint; residences: PGLboolean): GLboolean; extdecl;
  1162. glIsTextureEXT: function(texture: GLuint): GLboolean; extdecl;
  1163. function Load_GL_EXT_texture_object: Boolean;
  1164. //***** GL_EXT_vertex_array *****//
  1165. const
  1166. GL_VERTEX_ARRAY_EXT = $8074;
  1167. GL_NORMAL_ARRAY_EXT = $8075;
  1168. GL_COLOR_ARRAY_EXT = $8076;
  1169. GL_INDEX_ARRAY_EXT = $8077;
  1170. GL_TEXTURE_COORD_ARRAY_EXT = $8078;
  1171. GL_EDGE_FLAG_ARRAY_EXT = $8079;
  1172. GL_DOUBLE_EXT = $140A;
  1173. GL_VERTEX_ARRAY_SIZE_EXT = $807A;
  1174. GL_VERTEX_ARRAY_TYPE_EXT = $807B;
  1175. GL_VERTEX_ARRAY_STRIDE_EXT = $807C;
  1176. GL_VERTEX_ARRAY_COUNT_EXT = $807D;
  1177. GL_NORMAL_ARRAY_TYPE_EXT = $807E;
  1178. GL_NORMAL_ARRAY_STRIDE_EXT = $807F;
  1179. GL_NORMAL_ARRAY_COUNT_EXT = $8080;
  1180. GL_COLOR_ARRAY_SIZE_EXT = $8081;
  1181. GL_COLOR_ARRAY_TYPE_EXT = $8082;
  1182. GL_COLOR_ARRAY_STRIDE_EXT = $8083;
  1183. GL_COLOR_ARRAY_COUNT_EXT = $8084;
  1184. GL_INDEX_ARRAY_TYPE_EXT = $8085;
  1185. GL_INDEX_ARRAY_STRIDE_EXT = $8086;
  1186. GL_INDEX_ARRAY_COUNT_EXT = $8087;
  1187. GL_TEXTURE_COORD_ARRAY_SIZE_EXT = $8088;
  1188. GL_TEXTURE_COORD_ARRAY_TYPE_EXT = $8089;
  1189. GL_TEXTURE_COORD_ARRAY_STRIDE_EXT = $808A;
  1190. GL_TEXTURE_COORD_ARRAY_COUNT_EXT = $808B;
  1191. GL_EDGE_FLAG_ARRAY_STRIDE_EXT = $808C;
  1192. GL_EDGE_FLAG_ARRAY_COUNT_EXT = $808D;
  1193. GL_VERTEX_ARRAY_POINTER_EXT = $808E;
  1194. GL_NORMAL_ARRAY_POINTER_EXT = $808F;
  1195. GL_COLOR_ARRAY_POINTER_EXT = $8090;
  1196. GL_INDEX_ARRAY_POINTER_EXT = $8091;
  1197. GL_TEXTURE_COORD_ARRAY_POINTER_EXT = $8092;
  1198. GL_EDGE_FLAG_ARRAY_POINTER_EXT = $8093;
  1199. var
  1200. glArrayElementEXT: procedure(i: GLint); extdecl;
  1201. glDrawArraysEXT: procedure(mode: GLenum; first: GLint; count: GLsizei); extdecl;
  1202. glVertexPointerEXT: procedure(size: GLint; _type: GLenum; stride: GLsizei; count: GLsizei; const pointer: PGLvoid); extdecl;
  1203. glNormalPointerEXT: procedure(_type: GLenum; stride: GLsizei; count: GLsizei; const pointer: PGLvoid); extdecl;
  1204. glColorPointerEXT: procedure(size: GLint; _type: GLenum; stride: GLsizei; count: GLsizei; const pointer: PGLvoid); extdecl;
  1205. glIndexPointerEXT: procedure(_type: GLenum; stride: GLsizei; count: GLsizei; const pointer: PGLvoid); extdecl;
  1206. glTexCoordPointerEXT: procedure(size: GLint; _type: GLenum; stride: GLsizei; count: GLsizei; const pointer: PGLvoid); extdecl;
  1207. glEdgeFlagPointerEXT: procedure(stride: GLsizei; count: GLsizei; const pointer: PGLboolean); extdecl;
  1208. glGetPointervEXT: procedure(pname: GLenum; params: PGLvoid); extdecl;
  1209. function Load_GL_EXT_vertex_array: Boolean;
  1210. //***** GL_EXT_vertex_shader *****//
  1211. const
  1212. GL_VERTEX_SHADER_EXT = $8780;
  1213. GL_VARIANT_VALUE_EXT = $87E4;
  1214. GL_VARIANT_DATATYPE_EXT = $87E5;
  1215. GL_VARIANT_ARRAY_STRIDE_EXT = $87E6;
  1216. GL_VARIANT_ARRAY_TYPE_EXT = $87E7;
  1217. GL_VARIANT_ARRAY_EXT = $87E8;
  1218. GL_VARIANT_ARRAY_POINTER_EXT = $87E9;
  1219. GL_INVARIANT_VALUE_EXT = $87EA;
  1220. GL_INVARIANT_DATATYPE_EXT = $87EB;
  1221. GL_LOCAL_CONSTANT_VALUE_EXT = $87EC;
  1222. GL_LOCAL_CONSTANT_DATATYPE_EXT = $87ED;
  1223. GL_OP_INDEX_EXT = $8782;
  1224. GL_OP_NEGATE_EXT = $8783;
  1225. GL_OP_DOT3_EXT = $8784;
  1226. GL_OP_DOT4_EXT = $8785;
  1227. GL_OP_MUL_EXT = $8786;
  1228. GL_OP_ADD_EXT = $8787;
  1229. GL_OP_MADD_EXT = $8788;
  1230. GL_OP_FRAC_EXT = $8789;
  1231. GL_OP_MAX_EXT = $878A;
  1232. GL_OP_MIN_EXT = $878B;
  1233. GL_OP_SET_GE_EXT = $878C;
  1234. GL_OP_SET_LT_EXT = $878D;
  1235. GL_OP_CLAMP_EXT = $878E;
  1236. GL_OP_FLOOR_EXT = $878F;
  1237. GL_OP_ROUND_EXT = $8790;
  1238. GL_OP_EXP_BASE_2_EXT = $8791;
  1239. GL_OP_LOG_BASE_2_EXT = $8792;
  1240. GL_OP_POWER_EXT = $8793;
  1241. GL_OP_RECIP_EXT = $8794;
  1242. GL_OP_RECIP_SQRT_EXT = $8795;
  1243. GL_OP_SUB_EXT = $8796;
  1244. GL_OP_CROSS_PRODUCT_EXT = $8797;
  1245. GL_OP_MULTIPLY_MATRIX_EXT = $8798;
  1246. GL_OP_MOV_EXT = $8799;
  1247. GL_OUTPUT_VERTEX_EXT = $879A;
  1248. GL_OUTPUT_COLOR0_EXT = $879B;
  1249. GL_OUTPUT_COLOR1_EXT = $879C;
  1250. GL_OUTPUT_TEXTURE_COORD0_EXT = $879D;
  1251. GL_OUTPUT_TEXTURE_COORD1_EXT = $879E;
  1252. GL_OUTPUT_TEXTURE_COORD2_EXT = $879F;
  1253. GL_OUTPUT_TEXTURE_COORD3_EXT = $87A0;
  1254. GL_OUTPUT_TEXTURE_COORD4_EXT = $87A1;
  1255. GL_OUTPUT_TEXTURE_COORD5_EXT = $87A2;
  1256. GL_OUTPUT_TEXTURE_COORD6_EXT = $87A3;
  1257. GL_OUTPUT_TEXTURE_COORD7_EXT = $87A4;
  1258. GL_OUTPUT_TEXTURE_COORD8_EXT = $87A5;
  1259. GL_OUTPUT_TEXTURE_COORD9_EXT = $87A6;
  1260. GL_OUTPUT_TEXTURE_COORD10_EXT = $87A7;
  1261. GL_OUTPUT_TEXTURE_COORD11_EXT = $87A8;
  1262. GL_OUTPUT_TEXTURE_COORD12_EXT = $87A9;
  1263. GL_OUTPUT_TEXTURE_COORD13_EXT = $87AA;
  1264. GL_OUTPUT_TEXTURE_COORD14_EXT = $87AB;
  1265. GL_OUTPUT_TEXTURE_COORD15_EXT = $87AC;
  1266. GL_OUTPUT_TEXTURE_COORD16_EXT = $87AD;
  1267. GL_OUTPUT_TEXTURE_COORD17_EXT = $87AE;
  1268. GL_OUTPUT_TEXTURE_COORD18_EXT = $87AF;
  1269. GL_OUTPUT_TEXTURE_COORD19_EXT = $87B0;
  1270. GL_OUTPUT_TEXTURE_COORD20_EXT = $87B1;
  1271. GL_OUTPUT_TEXTURE_COORD21_EXT = $87B2;
  1272. GL_OUTPUT_TEXTURE_COORD22_EXT = $87B3;
  1273. GL_OUTPUT_TEXTURE_COORD23_EXT = $87B4;
  1274. GL_OUTPUT_TEXTURE_COORD24_EXT = $87B5;
  1275. GL_OUTPUT_TEXTURE_COORD25_EXT = $87B6;
  1276. GL_OUTPUT_TEXTURE_COORD26_EXT = $87B7;
  1277. GL_OUTPUT_TEXTURE_COORD27_EXT = $87B8;
  1278. GL_OUTPUT_TEXTURE_COORD28_EXT = $87B9;
  1279. GL_OUTPUT_TEXTURE_COORD29_EXT = $87BA;
  1280. GL_OUTPUT_TEXTURE_COORD30_EXT = $87BB;
  1281. GL_OUTPUT_TEXTURE_COORD31_EXT = $87BC;
  1282. GL_OUTPUT_FOG_EXT = $87BD;
  1283. GL_SCALAR_EXT = $87BE;
  1284. GL_VECTOR_EXT = $87BF;
  1285. GL_MATRIX_EXT = $87C0;
  1286. GL_VARIANT_EXT = $87C1;
  1287. GL_INVARIANT_EXT = $87C2;
  1288. GL_LOCAL_CONSTANT_EXT = $87C3;
  1289. GL_LOCAL_EXT = $87C4;
  1290. GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT = $87C5;
  1291. GL_MAX_VERTEX_SHADER_VARIANTS_EXT = $87C6;
  1292. GL_MAX_VERTEX_SHADER_INVARIANTS_EXT = $87C7;
  1293. GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = $87C8;
  1294. GL_MAX_VERTEX_SHADER_LOCALS_EXT = $87C9;
  1295. GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT = $87CA;
  1296. GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT = $87CB;
  1297. GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = $87CC;
  1298. GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT = $87CD;
  1299. GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT = $87CE;
  1300. GL_VERTEX_SHADER_INSTRUCTIONS_EXT = $87CF;
  1301. GL_VERTEX_SHADER_VARIANTS_EXT = $87D0;
  1302. GL_VERTEX_SHADER_INVARIANTS_EXT = $87D1;
  1303. GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = $87D2;
  1304. GL_VERTEX_SHADER_LOCALS_EXT = $87D3;
  1305. GL_VERTEX_SHADER_BINDING_EXT = $8781;
  1306. GL_VERTEX_SHADER_OPTIMIZED_EXT = $87D4;
  1307. GL_X_EXT = $87D5;
  1308. GL_Y_EXT = $87D6;
  1309. GL_Z_EXT = $87D7;
  1310. GL_W_EXT = $87D8;
  1311. GL_NEGATIVE_X_EXT = $87D9;
  1312. GL_NEGATIVE_Y_EXT = $87DA;
  1313. GL_NEGATIVE_Z_EXT = $87DB;
  1314. GL_NEGATIVE_W_EXT = $87DC;
  1315. GL_ZERO_EXT = $87DD;
  1316. GL_ONE_EXT = $87DE;
  1317. GL_NEGATIVE_ONE_EXT = $87DF;
  1318. GL_NORMALIZED_RANGE_EXT = $87E0;
  1319. GL_FULL_RANGE_EXT = $87E1;
  1320. GL_CURRENT_VERTEX_EXT = $87E2;
  1321. GL_MVP_MATRIX_EXT = $87E3;
  1322. var
  1323. glBeginVertexShaderEXT: procedure(); extdecl;
  1324. glEndVertexShaderEXT: procedure(); extdecl;
  1325. glBindVertexShaderEXT: procedure(id: GLuint); extdecl;
  1326. glGenVertexShadersEXT: function(range: GLuint): GLuint; extdecl;
  1327. glDeleteVertexShaderEXT: procedure(id: GLuint); extdecl;
  1328. glShaderOp1EXT: procedure(op: GLenum; res: GLuint; arg1: GLuint); extdecl;
  1329. glShaderOp2EXT: procedure(op: GLenum; res: GLuint; arg1: GLuint; arg2: GLuint); extdecl;
  1330. glShaderOp3EXT: procedure(op: GLenum; res: GLuint; arg1: GLuint; arg2: GLuint; arg3: GLuint); extdecl;
  1331. glSwizzleEXT: procedure(res: GLuint; _in: GLuint; outX: GLenum; outY: GLenum; outZ: GLenum; outW: GLenum); extdecl;
  1332. glWriteMaskEXT: procedure(res: GLuint; _in: GLuint; outX: GLenum; outY: GLenum; outZ: GLenum; outW: GLenum); extdecl;
  1333. glInsertComponentEXT: procedure(res: GLuint; src: GLuint; num: GLuint); extdecl;
  1334. glExtractComponentEXT: procedure(res: GLuint; src: GLuint; num: GLuint); extdecl;
  1335. glGenSymbolsEXT: function(datatype: GLenum; storagetype: GLenum; range: GLenum; components: GLuint): GLuint; extdecl;
  1336. glSetInvariantEXT: procedure(id: GLuint; _type: GLenum; addr: PGLvoid); extdecl;
  1337. glSetLocalConstantEXT: procedure(id: GLuint; _type: GLenum; addr: PGLvoid); extdecl;
  1338. glVariantbvEXT: procedure(id: GLuint; addr: PGLbyte); extdecl;
  1339. glVariantsvEXT: procedure(id: GLuint; addr: PGLshort); extdecl;
  1340. glVariantivEXT: procedure(id: GLuint; addr: PGLint); extdecl;
  1341. glVariantfvEXT: procedure(id: GLuint; addr: PGLfloat); extdecl;
  1342. glVariantdvEXT: procedure(id: GLuint; addr: PGLdouble); extdecl;
  1343. glVariantubvEXT: procedure(id: GLuint; addr: PGLubyte); extdecl;
  1344. glVariantusvEXT: procedure(id: GLuint; addr: PGLushort); extdecl;
  1345. glVariantuivEXT: procedure(id: GLuint; addr: PGLuint); extdecl;
  1346. glVariantPointerEXT: procedure(id: GLuint; _type: GLenum; stride: GLuint; addr: PGLvoid); extdecl;
  1347. glEnableVariantClientStateEXT: procedure(id: GLuint); extdecl;
  1348. glDisableVariantClientStateEXT: procedure(id: GLuint); extdecl;
  1349. glBindLightParameterEXT: function(light: GLenum; value: GLenum): GLuint; extdecl;
  1350. glBindMaterialParameterEXT: function(face: GLenum; value: GLenum): GLuint; extdecl;
  1351. glBindTexGenParameterEXT: function(_unit: GLenum; coord: GLenum; value: GLenum): GLuint; extdecl;
  1352. glBindTextureUnitParameterEXT: function(_unit: GLenum; value: GLenum): GLuint; extdecl;
  1353. glBindParameterEXT: function(value: GLenum): GLuint; extdecl;
  1354. glIsVariantEnabledEXT: function(id: GLuint; cap: GLenum): GLboolean; extdecl;
  1355. glGetVariantBooleanvEXT: procedure(id: GLuint; value: GLenum; data: PGLboolean); extdecl;
  1356. glGetVariantIntegervEXT: procedure(id: GLuint; value: GLenum; data: PGLint); extdecl;
  1357. glGetVariantFloatvEXT: procedure(id: GLuint; value: GLenum; data: PGLfloat); extdecl;
  1358. glGetVariantPointervEXT: procedure(id: GLuint; value: GLenum; data: PGLvoid); extdecl;
  1359. glGetInvariantBooleanvEXT: procedure(id: GLuint; value: GLenum; data: PGLboolean); extdecl;
  1360. glGetInvariantIntegervEXT: procedure(id: GLuint; value: GLenum; data: PGLint); extdecl;
  1361. glGetInvariantFloatvEXT: procedure(id: GLuint; value: GLenum; data: PGLfloat); extdecl;
  1362. glGetLocalConstantBooleanvEXT: procedure(id: GLuint; value: GLenum; data: PGLboolean); extdecl;
  1363. glGetLocalConstantIntegervEXT: procedure(id: GLuint; value: GLenum; data: PGLint); extdecl;
  1364. glGetLocalConstantFloatvEXT: procedure(id: GLuint; value: GLenum; data: PGLfloat); extdecl;
  1365. function Load_GL_EXT_vertex_shader: Boolean;
  1366. //***** GL_EXT_vertex_weighting *****//
  1367. const
  1368. GL_VERTEX_WEIGHTING_EXT = $8509;
  1369. GL_MODELVIEW0_EXT = $1700;
  1370. GL_MODELVIEW1_EXT = $850A;
  1371. GL_MODELVIEW0_MATRIX_EXT = $0BA6;
  1372. GL_MODELVIEW1_MATRIX_EXT = $8506;
  1373. GL_CURRENT_VERTEX_WEIGHT_EXT = $850B;
  1374. GL_VERTEX_WEIGHT_ARRAY_EXT = $850C;
  1375. GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT = $850D;
  1376. GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT = $850E;
  1377. GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT = $850F;
  1378. GL_MODELVIEW0_STACK_DEPTH_EXT = $0BA3;
  1379. GL_MODELVIEW1_STACK_DEPTH_EXT = $8502;
  1380. GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT = $8510;
  1381. var
  1382. glVertexWeightfEXT: procedure(weight: GLfloat); extdecl;
  1383. glVertexWeightfvEXT: procedure(weight: PGLfloat); extdecl;
  1384. glVertexWeightPointerEXT: procedure(size: GLint; _type: GLenum; stride: GLsizei; pointer: PGLvoid); extdecl;
  1385. function Load_GL_EXT_vertex_weighting: Boolean;
  1386. //***** GL_HP_occlusion_test *****//
  1387. const
  1388. GL_OCCLUSION_TEST_HP = $8165;
  1389. GL_OCCLUSION_TEST_RESULT_HP = $8166;
  1390. function Load_GL_HP_occlusion_test: Boolean;
  1391. //***** GL_NV_blend_square *****//
  1392. function Load_GL_NV_blend_square: Boolean;
  1393. //***** GL_NV_copy_depth_to_color *****//
  1394. const
  1395. GL_DEPTH_STENCIL_TO_RGBA_NV = $886E;
  1396. GL_DEPTH_STENCIL_TO_BGRA_NV = $886F;
  1397. function Load_GL_NV_copy_depth_to_color: Boolean;
  1398. //***** GL_NV_depth_clamp *****//
  1399. const
  1400. GL_DEPTH_CLAMP_NV = $864F;
  1401. function Load_GL_NV_depth_clamp: Boolean;
  1402. //***** GL_NV_evaluators *****//
  1403. const
  1404. GL_EVAL_2D_NV = $86C0;
  1405. GL_EVAL_TRIANGULAR_2D_NV = $86C1;
  1406. GL_MAP_TESSELLATION_NV = $86C2;
  1407. GL_MAP_ATTRIB_U_ORDER_NV = $86C3;
  1408. GL_MAP_ATTRIB_V_ORDER_NV = $86C4;
  1409. GL_EVAL_FRACTIONAL_TESSELLATION_NV = $86C5;
  1410. GL_EVAL_VERTEX_ATTRIB0_NV = $86C6;
  1411. GL_EVAL_VERTEX_ATTRIB1_NV = $86C7;
  1412. GL_EVAL_VERTEX_ATTRIB2_NV = $86C8;
  1413. GL_EVAL_VERTEX_ATTRIB3_NV = $86C9;
  1414. GL_EVAL_VERTEX_ATTRIB4_NV = $86CA;
  1415. GL_EVAL_VERTEX_ATTRIB5_NV = $86CB;
  1416. GL_EVAL_VERTEX_ATTRIB6_NV = $86CC;
  1417. GL_EVAL_VERTEX_ATTRIB7_NV = $86CD;
  1418. GL_EVAL_VERTEX_ATTRIB8_NV = $86CE;
  1419. GL_EVAL_VERTEX_ATTRIB9_NV = $86CF;
  1420. GL_EVAL_VERTEX_ATTRIB10_NV = $86D0;
  1421. GL_EVAL_VERTEX_ATTRIB11_NV = $86D1;
  1422. GL_EVAL_VERTEX_ATTRIB12_NV = $86D2;
  1423. GL_EVAL_VERTEX_ATTRIB13_NV = $86D3;
  1424. GL_EVAL_VERTEX_ATTRIB14_NV = $86D4;
  1425. GL_EVAL_VERTEX_ATTRIB15_NV = $86D5;
  1426. GL_MAX_MAP_TESSELLATION_NV = $86D6;
  1427. GL_MAX_RATIONAL_EVAL_ORDER_NV = $86D7;
  1428. var
  1429. glMapControlPointsNV: procedure(target: GLenum; index: GLuint; _type: GLenum; ustride: GLsizei; vstride: GLsizei; uorder: GLint; vorder: GLint; _packed: GLboolean; const points: PGLvoid); extdecl;
  1430. glMapParameterivNV: procedure(target: GLenum; pname: GLenum; const params: PGLint); extdecl;
  1431. glMapParameterfvNV: procedure(target: GLenum; pname: GLenum; const params: PGLfloat); extdecl;
  1432. glGetMapControlPointsNV: procedure(target: GLenum; index: GLuint; _type: GLenum; ustride: GLsizei; vstride: GLsizei; _packed: GLboolean; points: PGLvoid); extdecl;
  1433. glGetMapParameterivNV: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  1434. glGetMapParameterfvNV: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  1435. glGetMapAttribParameterivNV: procedure(target: GLenum; index: GLuint; pname: GLenum; params: PGLint); extdecl;
  1436. glGetMapAttribParameterfvNV: procedure(target: GLenum; index: GLuint; pname: GLenum; params: PGLfloat); extdecl;
  1437. glEvalMapsNV: procedure(target: GLenum; mode: GLenum); extdecl;
  1438. function Load_GL_NV_evaluators: Boolean;
  1439. //***** GL_NV_fence *****//
  1440. const
  1441. GL_ALL_COMPLETED_NV = $84F2;
  1442. GL_FENCE_STATUS_NV = $84F3;
  1443. GL_FENCE_CONDITION_NV = $84F4;
  1444. var
  1445. glGenFencesNV: procedure(n: GLsizei; fences: PGLuint); extdecl;
  1446. glDeleteFencesNV: procedure(n: GLsizei; const fences: PGLuint); extdecl;
  1447. glSetFenceNV: procedure(fence: GLuint; condition: GLenum); extdecl;
  1448. glTestFenceNV: function(fence: GLuint): GLboolean; extdecl;
  1449. glFinishFenceNV: procedure(fence: GLuint); extdecl;
  1450. glIsFenceNV: function(fence: GLuint): GLboolean; extdecl;
  1451. glGetFenceivNV: procedure(fence: GLuint; pname: GLenum; params: PGLint); extdecl;
  1452. function Load_GL_NV_fence: Boolean;
  1453. //***** GL_NV_fog_distance *****//
  1454. const
  1455. GL_FOG_DISTANCE_MODE_NV = $855A;
  1456. GL_EYE_RADIAL_NV = $855B;
  1457. GL_EYE_PLANE_ABSOLUTE_NV = $855C;
  1458. function Load_GL_NV_fog_distance: Boolean;
  1459. //***** GL_NV_light_max_exponent *****//
  1460. const
  1461. GL_MAX_SHININESS_NV = $8504;
  1462. GL_MAX_SPOT_EXPONENT_NV = $8505;
  1463. function Load_GL_NV_light_max_exponent: Boolean;
  1464. //***** GL_NV_multisample_filter_hint *****//
  1465. const
  1466. GL_MULTISAMPLE_FILTER_HINT_NV = $8534;
  1467. function Load_GL_NV_multisample_filter_hint: Boolean;
  1468. //***** GL_NV_occlusion_query *****//
  1469. // GL_OCCLUSION_TEST_HP { already defined }
  1470. // GL_OCCLUSION_TEST_RESULT_HP { already defined }
  1471. const
  1472. GL_PIXEL_COUNTER_BITS_NV = $8864;
  1473. GL_CURRENT_OCCLUSION_QUERY_ID_NV = $8865;
  1474. GL_PIXEL_COUNT_NV = $8866;
  1475. GL_PIXEL_COUNT_AVAILABLE_NV = $8867;
  1476. var
  1477. glGenOcclusionQueriesNV: procedure(n: GLsizei; ids: PGLuint); extdecl;
  1478. glDeleteOcclusionQueriesNV: procedure(n: GLsizei; const ids: PGLuint); extdecl;
  1479. glIsOcclusionQueryNV: function(id: GLuint): GLboolean; extdecl;
  1480. glBeginOcclusionQueryNV: procedure(id: GLuint); extdecl;
  1481. glEndOcclusionQueryNV: procedure(); extdecl;
  1482. glGetOcclusionQueryivNV: procedure(id: GLuint; pname: GLenum; params: PGLint); extdecl;
  1483. glGetOcclusionQueryuivNV: procedure(id: GLuint; pname: GLenum; params: PGLuint); extdecl;
  1484. function Load_GL_NV_occlusion_query: Boolean;
  1485. //***** GL_NV_packed_depth_stencil *****//
  1486. const
  1487. GL_DEPTH_STENCIL_NV = $84F9;
  1488. GL_UNSIGNED_INT_24_8_NV = $84FA;
  1489. function Load_GL_NV_packed_depth_stencil: Boolean;
  1490. //***** GL_NV_point_sprite *****//
  1491. const
  1492. GL_POINT_SPRITE_NV = $8861;
  1493. GL_COORD_REPLACE_NV = $8862;
  1494. GL_POINT_SPRITE_R_MODE_NV = $8863;
  1495. var
  1496. glPointParameteriNV: procedure(pname: GLenum; param: GLint); extdecl;
  1497. glPointParameterivNV: procedure(pname: GLenum; const params: PGLint); extdecl;
  1498. function Load_GL_NV_point_sprite: Boolean;
  1499. //***** GL_NV_register_combiners *****//
  1500. const
  1501. GL_REGISTER_COMBINERS_NV = $8522;
  1502. GL_COMBINER0_NV = $8550;
  1503. GL_COMBINER1_NV = $8551;
  1504. GL_COMBINER2_NV = $8552;
  1505. GL_COMBINER3_NV = $8553;
  1506. GL_COMBINER4_NV = $8554;
  1507. GL_COMBINER5_NV = $8555;
  1508. GL_COMBINER6_NV = $8556;
  1509. GL_COMBINER7_NV = $8557;
  1510. GL_VARIABLE_A_NV = $8523;
  1511. GL_VARIABLE_B_NV = $8524;
  1512. GL_VARIABLE_C_NV = $8525;
  1513. GL_VARIABLE_D_NV = $8526;
  1514. GL_VARIABLE_E_NV = $8527;
  1515. GL_VARIABLE_F_NV = $8528;
  1516. GL_VARIABLE_G_NV = $8529;
  1517. GL_CONSTANT_COLOR0_NV = $852A;
  1518. GL_CONSTANT_COLOR1_NV = $852B;
  1519. GL_PRIMARY_COLOR_NV = $852C;
  1520. GL_SECONDARY_COLOR_NV = $852D;
  1521. GL_SPARE0_NV = $852E;
  1522. GL_SPARE1_NV = $852F;
  1523. GL_UNSIGNED_IDENTITY_NV = $8536;
  1524. GL_UNSIGNED_INVERT_NV = $8537;
  1525. GL_EXPAND_NORMAL_NV = $8538;
  1526. GL_EXPAND_NEGATE_NV = $8539;
  1527. GL_HALF_BIAS_NORMAL_NV = $853A;
  1528. GL_HALF_BIAS_NEGATE_NV = $853B;
  1529. GL_SIGNED_IDENTITY_NV = $853C;
  1530. GL_SIGNED_NEGATE_NV = $853D;
  1531. GL_E_TIMES_F_NV = $8531;
  1532. GL_SPARE0_PLUS_SECONDARY_COLOR_NV = $8532;
  1533. GL_SCALE_BY_TWO_NV = $853E;
  1534. GL_SCALE_BY_FOUR_NV = $853F;
  1535. GL_SCALE_BY_ONE_HALF_NV = $8540;
  1536. GL_BIAS_BY_NEGATIVE_ONE_HALF_NV = $8541;
  1537. GL_DISCARD_NV = $8530;
  1538. GL_COMBINER_INPUT_NV = $8542;
  1539. GL_COMBINER_MAPPING_NV = $8543;
  1540. GL_COMBINER_COMPONENT_USAGE_NV = $8544;
  1541. GL_COMBINER_AB_DOT_PRODUCT_NV = $8545;
  1542. GL_COMBINER_CD_DOT_PRODUCT_NV = $8546;
  1543. GL_COMBINER_MUX_SUM_NV = $8547;
  1544. GL_COMBINER_SCALE_NV = $8548;
  1545. GL_COMBINER_BIAS_NV = $8549;
  1546. GL_COMBINER_AB_OUTPUT_NV = $854A;
  1547. GL_COMBINER_CD_OUTPUT_NV = $854B;
  1548. GL_COMBINER_SUM_OUTPUT_NV = $854C;
  1549. GL_NUM_GENERAL_COMBINERS_NV = $854E;
  1550. GL_COLOR_SUM_CLAMP_NV = $854F;
  1551. GL_MAX_GENERAL_COMBINERS_NV = $854D;
  1552. var
  1553. glCombinerParameterfvNV: procedure(pname: GLenum; const params: PGLfloat); extdecl;
  1554. glCombinerParameterivNV: procedure(pname: GLenum; const params: PGLint); extdecl;
  1555. glCombinerParameterfNV: procedure(pname: GLenum; param: GLfloat); extdecl;
  1556. glCombinerParameteriNV: procedure(pname: GLenum; param: GLint); extdecl;
  1557. glCombinerInputNV: procedure(stage: GLenum; portion: GLenum; variable: GLenum; input: GLenum; mapping: GLenum; componentUsage: GLenum); extdecl;
  1558. glCombinerOutputNV: procedure(stage: GLenum; portion: GLenum; abOutput: GLenum; cdOutput: GLenum; sumOutput: GLenum; scale: GLenum; bias: GLenum; abDotProduct: GLboolean; cdDotProduct: GLboolean; muxSum: GLboolean); extdecl;
  1559. glFinalCombinerInputNV: procedure(variable: GLenum; input: GLenum; mapping: GLenum; componentUsage: GLenum); extdecl;
  1560. glGetCombinerInputParameterfvNV: procedure(stage: GLenum; portion: GLenum; variable: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  1561. glGetCombinerInputParameterivNV: procedure(stage: GLenum; portion: GLenum; variable: GLenum; pname: GLenum; params: PGLint); extdecl;
  1562. glGetCombinerOutputParameterfvNV: procedure(stage: GLenum; portion: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  1563. glGetCombinerOutputParameterivNV: procedure(stage: GLenum; portion: GLenum; pname: GLenum; params: PGLint); extdecl;
  1564. glGetFinalCombinerInputParameterfvNV: procedure(variable: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  1565. glGetFinalCombinerInputParameterivNV: procedure(variable: GLenum; pname: GLenum; params: PGLint); extdecl;
  1566. function Load_GL_NV_register_combiners: Boolean;
  1567. //***** GL_NV_register_combiners2 *****//
  1568. const
  1569. GL_PER_STAGE_CONSTANTS_NV = $8535;
  1570. var
  1571. glCombinerStageParameterfvNV: procedure(stage: GLenum; pname: GLenum; const params: PGLfloat); extdecl;
  1572. glGetCombinerStageParameterfvNV: procedure(stage: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  1573. function Load_GL_NV_register_combiners2: Boolean;
  1574. //***** GL_NV_texgen_emboss *****//
  1575. const
  1576. GL_EMBOSS_MAP_NV = $855F;
  1577. GL_EMBOSS_LIGHT_NV = $855D;
  1578. GL_EMBOSS_CONSTANT_NV = $855E;
  1579. function Load_GL_NV_texgen_emboss: Boolean;
  1580. //***** GL_NV_texgen_reflection *****//
  1581. const
  1582. GL_NORMAL_MAP_NV = $8511;
  1583. GL_REFLECTION_MAP_NV = $8512;
  1584. function Load_GL_NV_texgen_reflection: Boolean;
  1585. //***** GL_NV_texture_compression_vtc *****//
  1586. // GL_COMPRESSED_RGB_S3TC_DXT1_EXT { already defined }
  1587. // GL_COMPRESSED_RGBA_S3TC_DXT1_EXT { already defined }
  1588. // GL_COMPRESSED_RGBA_S3TC_DXT3_EXT { already defined }
  1589. // GL_COMPRESSED_RGBA_S3TC_DXT5_EXT { already defined }
  1590. function Load_GL_NV_texture_compression_vtc: Boolean;
  1591. //***** GL_NV_texture_env_combine4 *****//
  1592. const
  1593. GL_COMBINE4_NV = $8503;
  1594. GL_SOURCE3_RGB_NV = $8583;
  1595. GL_SOURCE3_ALPHA_NV = $858B;
  1596. GL_OPERAND3_RGB_NV = $8593;
  1597. GL_OPERAND3_ALPHA_NV = $859B;
  1598. function Load_GL_NV_texture_env_combine4: Boolean;
  1599. //***** GL_NV_texture_rectangle *****//
  1600. const
  1601. GL_TEXTURE_RECTANGLE_NV = $84F5;
  1602. GL_TEXTURE_BINDING_RECTANGLE_NV = $84F6;
  1603. GL_PROXY_TEXTURE_RECTANGLE_NV = $84F7;
  1604. GL_MAX_RECTANGLE_TEXTURE_SIZE_NV = $84F8;
  1605. function Load_GL_NV_texture_rectangle: Boolean;
  1606. //***** GL_NV_texture_shader *****//
  1607. const
  1608. GL_TEXTURE_SHADER_NV = $86DE;
  1609. GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV = $86D9;
  1610. GL_SHADER_OPERATION_NV = $86DF;
  1611. GL_CULL_MODES_NV = $86E0;
  1612. GL_OFFSET_TEXTURE_MATRIX_NV = $86E1;
  1613. GL_OFFSET_TEXTURE_SCALE_NV = $86E2;
  1614. GL_OFFSET_TEXTURE_BIAS_NV = $86E3;
  1615. GL_PREVIOUS_TEXTURE_INPUT_NV = $86E4;
  1616. GL_CONST_EYE_NV = $86E5;
  1617. GL_SHADER_CONSISTENT_NV = $86DD;
  1618. GL_PASS_THROUGH_NV = $86E6;
  1619. GL_CULL_FRAGMENT_NV = $86E7;
  1620. GL_OFFSET_TEXTURE_2D_NV = $86E8;
  1621. GL_OFFSET_TEXTURE_RECTANGLE_NV = $864C;
  1622. GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV = $864D;
  1623. GL_DEPENDENT_AR_TEXTURE_2D_NV = $86E9;
  1624. GL_DEPENDENT_GB_TEXTURE_2D_NV = $86EA;
  1625. GL_DOT_PRODUCT_NV = $86EC;
  1626. GL_DOT_PRODUCT_DEPTH_REPLACE_NV = $86ED;
  1627. GL_DOT_PRODUCT_TEXTURE_2D_NV = $86EE;
  1628. GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV = $864E;
  1629. GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV = $86F0;
  1630. GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV = $86F1;
  1631. GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV = $86F2;
  1632. GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV = $86F3;
  1633. GL_HILO_NV = $86F4;
  1634. GL_DSDT_NV = $86F5;
  1635. GL_DSDT_MAG_NV = $86F6;
  1636. GL_DSDT_MAG_VIB_NV = $86F7;
  1637. GL_UNSIGNED_INT_S8_S8_8_8_NV = $86DA;
  1638. GL_UNSIGNED_INT_8_8_S8_S8_REV_NV = $86DB;
  1639. GL_SIGNED_RGBA_NV = $86FB;
  1640. GL_SIGNED_RGBA8_NV = $86FC;
  1641. GL_SIGNED_RGB_NV = $86FE;
  1642. GL_SIGNED_RGB8_NV = $86FF;
  1643. GL_SIGNED_LUMINANCE_NV = $8701;
  1644. GL_SIGNED_LUMINANCE8_NV = $8702;
  1645. GL_SIGNED_LUMINANCE_ALPHA_NV = $8703;
  1646. GL_SIGNED_LUMINANCE8_ALPHA8_NV = $8704;
  1647. GL_SIGNED_ALPHA_NV = $8705;
  1648. GL_SIGNED_ALPHA8_NV = $8706;
  1649. GL_SIGNED_INTENSITY_NV = $8707;
  1650. GL_SIGNED_INTENSITY8_NV = $8708;
  1651. GL_SIGNED_RGB_UNSIGNED_ALPHA_NV = $870C;
  1652. GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV = $870D;
  1653. GL_HILO16_NV = $86F8;
  1654. GL_SIGNED_HILO_NV = $86F9;
  1655. GL_SIGNED_HILO16_NV = $86FA;
  1656. GL_DSDT8_NV = $8709;
  1657. GL_DSDT8_MAG8_NV = $870A;
  1658. GL_DSDT_MAG_INTENSITY_NV = $86DC;
  1659. GL_DSDT8_MAG8_INTENSITY8_NV = $870B;
  1660. GL_HI_SCALE_NV = $870E;
  1661. GL_LO_SCALE_NV = $870F;
  1662. GL_DS_SCALE_NV = $8710;
  1663. GL_DT_SCALE_NV = $8711;
  1664. GL_MAGNITUDE_SCALE_NV = $8712;
  1665. GL_VIBRANCE_SCALE_NV = $8713;
  1666. GL_HI_BIAS_NV = $8714;
  1667. GL_LO_BIAS_NV = $8715;
  1668. GL_DS_BIAS_NV = $8716;
  1669. GL_DT_BIAS_NV = $8717;
  1670. GL_MAGNITUDE_BIAS_NV = $8718;
  1671. GL_VIBRANCE_BIAS_NV = $8719;
  1672. GL_TEXTURE_BORDER_VALUES_NV = $871A;
  1673. GL_TEXTURE_HI_SIZE_NV = $871B;
  1674. GL_TEXTURE_LO_SIZE_NV = $871C;
  1675. GL_TEXTURE_DS_SIZE_NV = $871D;
  1676. GL_TEXTURE_DT_SIZE_NV = $871E;
  1677. GL_TEXTURE_MAG_SIZE_NV = $871F;
  1678. function Load_GL_NV_texture_shader: Boolean;
  1679. //***** GL_NV_texture_shader2 *****//
  1680. const
  1681. GL_DOT_PRODUCT_TEXTURE_3D_NV = $86EF;
  1682. // GL_HILO_NV { already defined }
  1683. // GL_DSDT_NV { already defined }
  1684. // GL_DSDT_MAG_NV { already defined }
  1685. // GL_DSDT_MAG_VIB_NV { already defined }
  1686. // GL_UNSIGNED_INT_S8_S8_8_8_NV { already defined }
  1687. // GL_UNSIGNED_INT_8_8_S8_S8_REV_NV { already defined }
  1688. // GL_SIGNED_RGBA_NV { already defined }
  1689. // GL_SIGNED_RGBA8_NV { already defined }
  1690. // GL_SIGNED_RGB_NV { already defined }
  1691. // GL_SIGNED_RGB8_NV { already defined }
  1692. // GL_SIGNED_LUMINANCE_NV { already defined }
  1693. // GL_SIGNED_LUMINANCE8_NV { already defined }
  1694. // GL_SIGNED_LUMINANCE_ALPHA_NV { already defined }
  1695. // GL_SIGNED_LUMINANCE8_ALPHA8_NV { already defined }
  1696. // GL_SIGNED_ALPHA_NV { already defined }
  1697. // GL_SIGNED_ALPHA8_NV { already defined }
  1698. // GL_SIGNED_INTENSITY_NV { already defined }
  1699. // GL_SIGNED_INTENSITY8_NV { already defined }
  1700. // GL_SIGNED_RGB_UNSIGNED_ALPHA_NV { already defined }
  1701. // GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV { already defined }
  1702. // GL_HILO16_NV { already defined }
  1703. // GL_SIGNED_HILO_NV { already defined }
  1704. // GL_SIGNED_HILO16_NV { already defined }
  1705. // GL_DSDT8_NV { already defined }
  1706. // GL_DSDT8_MAG8_NV { already defined }
  1707. // GL_DSDT_MAG_INTENSITY_NV { already defined }
  1708. // GL_DSDT8_MAG8_INTENSITY8_NV { already defined }
  1709. function Load_GL_NV_texture_shader2: Boolean;
  1710. //***** GL_NV_texture_shader3 *****//
  1711. const
  1712. GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV = $8850;
  1713. GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV = $8851;
  1714. GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV = $8852;
  1715. GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV = $8853;
  1716. GL_OFFSET_HILO_TEXTURE_2D_NV = $8854;
  1717. GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV = $8855;
  1718. GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV = $8856;
  1719. GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV = $8857;
  1720. GL_DEPENDENT_HILO_TEXTURE_2D_NV = $8858;
  1721. GL_DEPENDENT_RGB_TEXTURE_3D_NV = $8859;
  1722. GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV = $885A;
  1723. GL_DOT_PRODUCT_PASS_THROUGH_NV = $885B;
  1724. GL_DOT_PRODUCT_TEXTURE_1D_NV = $885C;
  1725. GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV = $885D;
  1726. GL_HILO8_NV = $885E;
  1727. GL_SIGNED_HILO8_NV = $885F;
  1728. GL_FORCE_BLUE_TO_ONE_NV = $8860;
  1729. function Load_GL_NV_texture_shader3: Boolean;
  1730. //***** GL_NV_vertex_array_range *****//
  1731. const
  1732. GL_VERTEX_ARRAY_RANGE_NV = $851D;
  1733. GL_VERTEX_ARRAY_RANGE_LENGTH_NV = $851E;
  1734. GL_VERTEX_ARRAY_RANGE_VALID_NV = $851F;
  1735. GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV = $8520;
  1736. GL_VERTEX_ARRAY_RANGE_POINTER_NV = $8521;
  1737. var
  1738. glVertexArrayRangeNV: procedure(length: GLsizei; pointer: PGLvoid); extdecl;
  1739. glFlushVertexArrayRangeNV: procedure(); extdecl;
  1740. {$IFDEF Windows}
  1741. wglAllocateMemoryNV: function(size: GLsizei; readFrequency: GLfloat; writeFrequency: GLfloat; priority: GLfloat): PGLvoid; extdecl;
  1742. wglFreeMemoryNV: procedure(pointer: PGLvoid); extdecl;
  1743. {$ENDIF}
  1744. function Load_GL_NV_vertex_array_range: Boolean;
  1745. //***** GL_NV_vertex_array_range2 *****//
  1746. const
  1747. GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV = $8533;
  1748. function Load_GL_NV_vertex_array_range2: Boolean;
  1749. //***** GL_NV_vertex_program *****//
  1750. const
  1751. GL_VERTEX_PROGRAM_NV = $8620;
  1752. GL_VERTEX_PROGRAM_POINT_SIZE_NV = $8642;
  1753. GL_VERTEX_PROGRAM_TWO_SIDE_NV = $8643;
  1754. GL_VERTEX_STATE_PROGRAM_NV = $8621;
  1755. GL_ATTRIB_ARRAY_SIZE_NV = $8623;
  1756. GL_ATTRIB_ARRAY_STRIDE_NV = $8624;
  1757. GL_ATTRIB_ARRAY_TYPE_NV = $8625;
  1758. GL_CURRENT_ATTRIB_NV = $8626;
  1759. GL_PROGRAM_PARAMETER_NV = $8644;
  1760. GL_ATTRIB_ARRAY_POINTER_NV = $8645;
  1761. GL_PROGRAM_TARGET_NV = $8646;
  1762. GL_PROGRAM_LENGTH_NV = $8627;
  1763. GL_PROGRAM_RESIDENT_NV = $8647;
  1764. GL_PROGRAM_STRING_NV = $8628;
  1765. GL_TRACK_MATRIX_NV = $8648;
  1766. GL_TRACK_MATRIX_TRANSFORM_NV = $8649;
  1767. GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV = $862E;
  1768. GL_MAX_TRACK_MATRICES_NV = $862F;
  1769. GL_CURRENT_MATRIX_STACK_DEPTH_NV = $8640;
  1770. GL_CURRENT_MATRIX_NV = $8641;
  1771. GL_VERTEX_PROGRAM_BINDING_NV = $864A;
  1772. GL_PROGRAM_ERROR_POSITION_NV = $864B;
  1773. GL_MODELVIEW_PROJECTION_NV = $8629;
  1774. GL_MATRIX0_NV = $8630;
  1775. GL_MATRIX1_NV = $8631;
  1776. GL_MATRIX2_NV = $8632;
  1777. GL_MATRIX3_NV = $8633;
  1778. GL_MATRIX4_NV = $8634;
  1779. GL_MATRIX5_NV = $8635;
  1780. GL_MATRIX6_NV = $8636;
  1781. GL_MATRIX7_NV = $8637;
  1782. GL_IDENTITY_NV = $862A;
  1783. GL_INVERSE_NV = $862B;
  1784. GL_TRANSPOSE_NV = $862C;
  1785. GL_INVERSE_TRANSPOSE_NV = $862D;
  1786. GL_VERTEX_ATTRIB_ARRAY0_NV = $8650;
  1787. GL_VERTEX_ATTRIB_ARRAY1_NV = $8651;
  1788. GL_VERTEX_ATTRIB_ARRAY2_NV = $8652;
  1789. GL_VERTEX_ATTRIB_ARRAY3_NV = $8653;
  1790. GL_VERTEX_ATTRIB_ARRAY4_NV = $8654;
  1791. GL_VERTEX_ATTRIB_ARRAY5_NV = $8655;
  1792. GL_VERTEX_ATTRIB_ARRAY6_NV = $8656;
  1793. GL_VERTEX_ATTRIB_ARRAY7_NV = $8657;
  1794. GL_VERTEX_ATTRIB_ARRAY8_NV = $8658;
  1795. GL_VERTEX_ATTRIB_ARRAY9_NV = $8659;
  1796. GL_VERTEX_ATTRIB_ARRAY10_NV = $865A;
  1797. GL_VERTEX_ATTRIB_ARRAY11_NV = $865B;
  1798. GL_VERTEX_ATTRIB_ARRAY12_NV = $865C;
  1799. GL_VERTEX_ATTRIB_ARRAY13_NV = $865D;
  1800. GL_VERTEX_ATTRIB_ARRAY14_NV = $865E;
  1801. GL_VERTEX_ATTRIB_ARRAY15_NV = $865F;
  1802. GL_MAP1_VERTEX_ATTRIB0_4_NV = $8660;
  1803. GL_MAP1_VERTEX_ATTRIB1_4_NV = $8661;
  1804. GL_MAP1_VERTEX_ATTRIB2_4_NV = $8662;
  1805. GL_MAP1_VERTEX_ATTRIB3_4_NV = $8663;
  1806. GL_MAP1_VERTEX_ATTRIB4_4_NV = $8664;
  1807. GL_MAP1_VERTEX_ATTRIB5_4_NV = $8665;
  1808. GL_MAP1_VERTEX_ATTRIB6_4_NV = $8666;
  1809. GL_MAP1_VERTEX_ATTRIB7_4_NV = $8667;
  1810. GL_MAP1_VERTEX_ATTRIB8_4_NV = $8668;
  1811. GL_MAP1_VERTEX_ATTRIB9_4_NV = $8669;
  1812. GL_MAP1_VERTEX_ATTRIB10_4_NV = $866A;
  1813. GL_MAP1_VERTEX_ATTRIB11_4_NV = $866B;
  1814. GL_MAP1_VERTEX_ATTRIB12_4_NV = $866C;
  1815. GL_MAP1_VERTEX_ATTRIB13_4_NV = $866D;
  1816. GL_MAP1_VERTEX_ATTRIB14_4_NV = $866E;
  1817. GL_MAP1_VERTEX_ATTRIB15_4_NV = $866F;
  1818. GL_MAP2_VERTEX_ATTRIB0_4_NV = $8670;
  1819. GL_MAP2_VERTEX_ATTRIB1_4_NV = $8671;
  1820. GL_MAP2_VERTEX_ATTRIB2_4_NV = $8672;
  1821. GL_MAP2_VERTEX_ATTRIB3_4_NV = $8673;
  1822. GL_MAP2_VERTEX_ATTRIB4_4_NV = $8674;
  1823. GL_MAP2_VERTEX_ATTRIB5_4_NV = $8675;
  1824. GL_MAP2_VERTEX_ATTRIB6_4_NV = $8676;
  1825. GL_MAP2_VERTEX_ATTRIB7_4_NV = $8677;
  1826. GL_MAP2_VERTEX_ATTRIB8_4_NV = $8678;
  1827. GL_MAP2_VERTEX_ATTRIB9_4_NV = $8679;
  1828. GL_MAP2_VERTEX_ATTRIB10_4_NV = $867A;
  1829. GL_MAP2_VERTEX_ATTRIB11_4_NV = $867B;
  1830. GL_MAP2_VERTEX_ATTRIB12_4_NV = $867C;
  1831. GL_MAP2_VERTEX_ATTRIB13_4_NV = $867D;
  1832. GL_MAP2_VERTEX_ATTRIB14_4_NV = $867E;
  1833. GL_MAP2_VERTEX_ATTRIB15_4_NV = $867F;
  1834. var
  1835. glBindProgramNV: procedure(target: GLenum; id: GLuint); extdecl;
  1836. glDeleteProgramsNV: procedure(n: GLsizei; const ids: PGLuint); extdecl;
  1837. glExecuteProgramNV: procedure(target: GLenum; id: GLuint; const params: PGLfloat); extdecl;
  1838. glGenProgramsNV: procedure(n: GLsizei; ids: PGLuint); extdecl;
  1839. glAreProgramsResidentNV: function(n: GLsizei; const ids: PGLuint; residences: PGLboolean): GLboolean; extdecl;
  1840. glRequestResidentProgramsNV: procedure(n: GLsizei; ids: PGLuint); extdecl;
  1841. glGetProgramParameterfvNV: procedure(target: GLenum; index: GLuint; pname: GLenum; params: PGLfloat); extdecl;
  1842. glGetProgramParameterdvNV: procedure(target: GLenum; index: GLuint; pname: GLenum; params: PGLdouble); extdecl;
  1843. glGetProgramivNV: procedure(id: GLuint; pname: GLenum; params: PGLint); extdecl;
  1844. glGetProgramStringNV: procedure(id: GLuint; pname: GLenum; _program: PGLubyte); extdecl;
  1845. glGetTrackMatrixivNV: procedure(target: GLenum; address: GLuint; pname: GLenum; params: PGLint); extdecl;
  1846. glGetVertexAttribdvNV: procedure(index: GLuint; pname: GLenum; params: PGLdouble); extdecl;
  1847. glGetVertexAttribfvNV: procedure(index: GLuint; pname: GLenum; params: PGLfloat); extdecl;
  1848. glGetVertexAttribivNV: procedure(index: GLuint; pname: GLenum; params: PGLint); extdecl;
  1849. glGetVertexAttribPointervNV: procedure(index: GLuint; pname: GLenum; pointer: PGLvoid); extdecl;
  1850. glIsProgramNV: function(id: GLuint): GLboolean; extdecl;
  1851. glLoadProgramNV: procedure(target: GLenum; id: GLuint; len: GLsizei; const _program: PGLubyte); extdecl;
  1852. glProgramParameter4fNV: procedure(target: GLenum; index: GLuint; x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); extdecl;
  1853. glProgramParameter4fvNV: procedure(target: GLenum; index: GLuint; const params: PGLfloat); extdecl;
  1854. glProgramParameters4dvNV: procedure(target: GLenum; index: GLuint; num: GLuint; const params: PGLdouble); extdecl;
  1855. glProgramParameters4fvNV: procedure(target: GLenum; index: GLuint; num: GLuint; const params: PGLfloat); extdecl;
  1856. glTrackMatrixNV: procedure(target: GLenum; address: GLuint; matrix: GLenum; transform: GLenum); extdecl;
  1857. glVertexAttribPointerNV: procedure(index: GLuint; size: GLint; _type: GLenum; stride: GLsizei; const pointer: PGLvoid); extdecl;
  1858. glVertexAttrib1sNV: procedure(index: GLuint; x: GLshort); extdecl;
  1859. glVertexAttrib1fNV: procedure(index: GLuint; x: GLfloat); extdecl;
  1860. glVertexAttrib1dNV: procedure(index: GLuint; x: GLdouble); extdecl;
  1861. glVertexAttrib2sNV: procedure(index: GLuint; x: GLshort; y: GLshort); extdecl;
  1862. glVertexAttrib2fNV: procedure(index: GLuint; x: GLfloat; y: GLfloat); extdecl;
  1863. glVertexAttrib2dNV: procedure(index: GLuint; x: GLdouble; y: GLdouble); extdecl;
  1864. glVertexAttrib3sNV: procedure(index: GLuint; x: GLshort; y: GLshort; z: GLshort); extdecl;
  1865. glVertexAttrib3fNV: procedure(index: GLuint; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  1866. glVertexAttrib3dNV: procedure(index: GLuint; x: GLdouble; y: GLdouble; z: GLdouble); extdecl;
  1867. glVertexAttrib4sNV: procedure(index: GLuint; x: GLshort; y: GLshort; z: GLshort; w: GLshort); extdecl;
  1868. glVertexAttrib4fNV: procedure(index: GLuint; x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); extdecl;
  1869. glVertexAttrib4dNV: procedure(index: GLuint; x: GLdouble; y: GLdouble; z: GLdouble; w: GLdouble); extdecl;
  1870. glVertexAttrib4ubNV: procedure(index: GLuint; x: GLubyte; y: GLubyte; z: GLubyte; w: GLubyte); extdecl;
  1871. glVertexAttrib1svNV: procedure(index: GLuint; const v: PGLshort); extdecl;
  1872. glVertexAttrib1fvNV: procedure(index: GLuint; const v: PGLfloat); extdecl;
  1873. glVertexAttrib1dvNV: procedure(index: GLuint; const v: PGLdouble); extdecl;
  1874. glVertexAttrib2svNV: procedure(index: GLuint; const v: PGLshort); extdecl;
  1875. glVertexAttrib2fvNV: procedure(index: GLuint; const v: PGLfloat); extdecl;
  1876. glVertexAttrib2dvNV: procedure(index: GLuint; const v: PGLdouble); extdecl;
  1877. glVertexAttrib3svNV: procedure(index: GLuint; const v: PGLshort); extdecl;
  1878. glVertexAttrib3fvNV: procedure(index: GLuint; const v: PGLfloat); extdecl;
  1879. glVertexAttrib3dvNV: procedure(index: GLuint; const v: PGLdouble); extdecl;
  1880. glVertexAttrib4svNV: procedure(index: GLuint; const v: PGLshort); extdecl;
  1881. glVertexAttrib4fvNV: procedure(index: GLuint; const v: PGLfloat); extdecl;
  1882. glVertexAttrib4dvNV: procedure(index: GLuint; const v: PGLdouble); extdecl;
  1883. glVertexAttrib4ubvNV: procedure(index: GLuint; const v: PGLubyte); extdecl;
  1884. glVertexAttribs1svNV: procedure(index: GLuint; n: GLsizei; const v: PGLshort); extdecl;
  1885. glVertexAttribs1fvNV: procedure(index: GLuint; n: GLsizei; const v: PGLfloat); extdecl;
  1886. glVertexAttribs1dvNV: procedure(index: GLuint; n: GLsizei; const v: PGLdouble); extdecl;
  1887. glVertexAttribs2svNV: procedure(index: GLuint; n: GLsizei; const v: PGLshort); extdecl;
  1888. glVertexAttribs2fvNV: procedure(index: GLuint; n: GLsizei; const v: PGLfloat); extdecl;
  1889. glVertexAttribs2dvNV: procedure(index: GLuint; n: GLsizei; const v: PGLdouble); extdecl;
  1890. glVertexAttribs3svNV: procedure(index: GLuint; n: GLsizei; const v: PGLshort); extdecl;
  1891. glVertexAttribs3fvNV: procedure(index: GLuint; n: GLsizei; const v: PGLfloat); extdecl;
  1892. glVertexAttribs3dvNV: procedure(index: GLuint; n: GLsizei; const v: PGLdouble); extdecl;
  1893. glVertexAttribs4svNV: procedure(index: GLuint; n: GLsizei; const v: PGLshort); extdecl;
  1894. glVertexAttribs4fvNV: procedure(index: GLuint; n: GLsizei; const v: PGLfloat); extdecl;
  1895. glVertexAttribs4dvNV: procedure(index: GLuint; n: GLsizei; const v: PGLdouble); extdecl;
  1896. glVertexAttribs4ubvNV: procedure(index: GLuint; n: GLsizei; const v: PGLubyte); extdecl;
  1897. function Load_GL_NV_vertex_program: Boolean;
  1898. //***** GL_NV_vertex_program1_1 *****//
  1899. function Load_GL_NV_vertex_program1_1: Boolean;
  1900. //***** GL_ATI_element_array *****//
  1901. const
  1902. GL_ELEMENT_ARRAY_ATI = $8768;
  1903. GL_ELEMENT_ARRAY_TYPE_ATI = $8769;
  1904. GL_ELEMENT_ARRAY_POINTER_ATI = $876A;
  1905. var
  1906. glElementPointerATI: procedure(_type: GLenum; const pointer: PGLvoid); extdecl;
  1907. glDrawElementArrayATI: procedure(mode: GLenum; count: GLsizei); extdecl;
  1908. glDrawRangeElementArrayATI: procedure(mode: GLenum; start: GLuint; _end: GLuint; count: GLsizei); extdecl;
  1909. function Load_GL_ATI_element_array: Boolean;
  1910. //***** GL_ATI_envmap_bumpmap *****//
  1911. const
  1912. GL_BUMP_ROT_MATRIX_ATI = $8775;
  1913. GL_BUMP_ROT_MATRIX_SIZE_ATI = $8776;
  1914. GL_BUMP_NUM_TEX_UNITS_ATI = $8777;
  1915. GL_BUMP_TEX_UNITS_ATI = $8778;
  1916. GL_DUDV_ATI = $8779;
  1917. GL_DU8DV8_ATI = $877A;
  1918. GL_BUMP_ENVMAP_ATI = $877B;
  1919. GL_BUMP_TARGET_ATI = $877C;
  1920. var
  1921. glTexBumpParameterivATI: procedure(pname: GLenum; param: PGLint); extdecl;
  1922. glTexBumpParameterfvATI: procedure(pname: GLenum; param: PGLfloat); extdecl;
  1923. glGetTexBumpParameterivATI: procedure(pname: GLenum; param: PGLint); extdecl;
  1924. glGetTexBumpParameterfvATI: procedure(pname: GLenum; param: PGLfloat); extdecl;
  1925. function Load_GL_ATI_envmap_bumpmap: Boolean;
  1926. //***** GL_ATI_fragment_shader *****//
  1927. const
  1928. GL_FRAGMENT_SHADER_ATI = $8920;
  1929. GL_REG_0_ATI = $8921;
  1930. GL_REG_1_ATI = $8922;
  1931. GL_REG_2_ATI = $8923;
  1932. GL_REG_3_ATI = $8924;
  1933. GL_REG_4_ATI = $8925;
  1934. GL_REG_5_ATI = $8926;
  1935. GL_CON_0_ATI = $8941;
  1936. GL_CON_1_ATI = $8942;
  1937. GL_CON_2_ATI = $8943;
  1938. GL_CON_3_ATI = $8944;
  1939. GL_CON_4_ATI = $8945;
  1940. GL_CON_5_ATI = $8946;
  1941. GL_CON_6_ATI = $8947;
  1942. GL_CON_7_ATI = $8948;
  1943. GL_MOV_ATI = $8961;
  1944. GL_ADD_ATI = $8963;
  1945. GL_MUL_ATI = $8964;
  1946. GL_SUB_ATI = $8965;
  1947. GL_DOT3_ATI = $8966;
  1948. GL_DOT4_ATI = $8967;
  1949. GL_MAD_ATI = $8968;
  1950. GL_LERP_ATI = $8969;
  1951. GL_CND_ATI = $896A;
  1952. GL_CND0_ATI = $896B;
  1953. GL_DOT2_ADD_ATI = $896C;
  1954. GL_SECONDARY_INTERPOLATOR_ATI = $896D;
  1955. GL_SWIZZLE_STR_ATI = $8976;
  1956. GL_SWIZZLE_STQ_ATI = $8977;
  1957. GL_SWIZZLE_STR_DR_ATI = $8978;
  1958. GL_SWIZZLE_STQ_DQ_ATI = $8979;
  1959. GL_RED_BIT_ATI = $0001;
  1960. GL_GREEN_BIT_ATI = $0002;
  1961. GL_BLUE_BIT_ATI = $0004;
  1962. GL_2X_BIT_ATI = $0001;
  1963. GL_4X_BIT_ATI = $0002;
  1964. GL_8X_BIT_ATI = $0004;
  1965. GL_HALF_BIT_ATI = $0008;
  1966. GL_QUARTER_BIT_ATI = $0010;
  1967. GL_EIGHTH_BIT_ATI = $0020;
  1968. GL_SATURATE_BIT_ATI = $0040;
  1969. // GL_2X_BIT_ATI { already defined }
  1970. GL_COMP_BIT_ATI = $0002;
  1971. GL_NEGATE_BIT_ATI = $0004;
  1972. GL_BIAS_BIT_ATI = $0008;
  1973. var
  1974. glGenFragmentShadersATI: function(range: GLuint): GLuint; extdecl;
  1975. glBindFragmentShaderATI: procedure(id: GLuint); extdecl;
  1976. glDeleteFragmentShaderATI: procedure(id: GLuint); extdecl;
  1977. glBeginFragmentShaderATI: procedure(); extdecl;
  1978. glEndFragmentShaderATI: procedure(); extdecl;
  1979. glPassTexCoordATI: procedure(dst: GLuint; coord: GLuint; swizzle: GLenum); extdecl;
  1980. glSampleMapATI: procedure(dst: GLuint; interp: GLuint; swizzle: GLenum); extdecl;
  1981. glColorFragmentOp1ATI: procedure(op: GLenum; dst: GLuint; dstMask: GLuint; dstMod: GLuint; arg1: GLuint; arg1Rep: GLuint; arg1Mod: GLuint); extdecl;
  1982. glColorFragmentOp2ATI: procedure(op: GLenum; dst: GLuint; dstMask: GLuint; dstMod: GLuint; arg1: GLuint; arg1Rep: GLuint; arg1Mod: GLuint; arg2: GLuint; arg2Rep: GLuint; arg2Mod: GLuint); extdecl;
  1983. 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;
  1984. glAlphaFragmentOp1ATI: procedure(op: GLenum; dst: GLuint; dstMod: GLuint; arg1: GLuint; arg1Rep: GLuint; arg1Mod: GLuint); extdecl;
  1985. glAlphaFragmentOp2ATI: procedure(op: GLenum; dst: GLuint; dstMod: GLuint; arg1: GLuint; arg1Rep: GLuint; arg1Mod: GLuint; arg2: GLuint; arg2Rep: GLuint; arg2Mod: GLuint); extdecl;
  1986. 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;
  1987. glSetFragmentShaderConstantATI: procedure(dst: GLuint; const value: PGLfloat); extdecl;
  1988. function Load_GL_ATI_fragment_shader: Boolean;
  1989. //***** GL_ATI_pn_triangles *****//
  1990. const
  1991. GL_PN_TRIANGLES_ATI = $87F0;
  1992. GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI = $87F1;
  1993. GL_PN_TRIANGLES_POINT_MODE_ATI = $87F2;
  1994. GL_PN_TRIANGLES_NORMAL_MODE_ATI = $87F3;
  1995. GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI = $87F4;
  1996. GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI = $87F5;
  1997. GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI = $87F6;
  1998. GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI = $87F7;
  1999. GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI = $87F8;
  2000. var
  2001. glPNTrianglesiATI: procedure(pname: GLenum; param: GLint); extdecl;
  2002. glPNTrianglesfATI: procedure(pname: GLenum; param: GLfloat); extdecl;
  2003. function Load_GL_ATI_pn_triangles: Boolean;
  2004. //***** GL_ATI_texture_mirror_once *****//
  2005. const
  2006. GL_MIRROR_CLAMP_ATI = $8742;
  2007. GL_MIRROR_CLAMP_TO_EDGE_ATI = $8743;
  2008. function Load_GL_ATI_texture_mirror_once: Boolean;
  2009. //***** GL_ATI_vertex_array_object *****//
  2010. const
  2011. GL_STATIC_ATI = $8760;
  2012. GL_DYNAMIC_ATI = $8761;
  2013. GL_PRESERVE_ATI = $8762;
  2014. GL_DISCARD_ATI = $8763;
  2015. GL_OBJECT_BUFFER_SIZE_ATI = $8764;
  2016. GL_OBJECT_BUFFER_USAGE_ATI = $8765;
  2017. GL_ARRAY_OBJECT_BUFFER_ATI = $8766;
  2018. GL_ARRAY_OBJECT_OFFSET_ATI = $8767;
  2019. var
  2020. glNewObjectBufferATI: function(size: GLsizei; const pointer: PGLvoid; usage: GLenum): GLuint; extdecl;
  2021. glIsObjectBufferATI: function(buffer: GLuint): GLboolean; extdecl;
  2022. glUpdateObjectBufferATI: procedure(buffer: GLuint; offset: GLuint; size: GLsizei; const pointer: PGLvoid; preserve: GLenum); extdecl;
  2023. glGetObjectBufferfvATI: procedure(buffer: GLuint; pname: GLenum; params: PGLfloat); extdecl;
  2024. glGetObjectBufferivATI: procedure(buffer: GLuint; pname: GLenum; params: PGLint); extdecl;
  2025. glDeleteObjectBufferATI: procedure(buffer: GLuint); extdecl;
  2026. glArrayObjectATI: procedure(_array: GLenum; size: GLint; _type: GLenum; stride: GLsizei; buffer: GLuint; offset: GLuint); extdecl;
  2027. glGetArrayObjectfvATI: procedure(_array: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  2028. glGetArrayObjectivATI: procedure(_array: GLenum; pname: GLenum; params: PGLint); extdecl;
  2029. glVariantArrayObjectATI: procedure(id: GLuint; _type: GLenum; stride: GLsizei; buffer: GLuint; offset: GLuint); extdecl;
  2030. glGetVariantArrayObjectfvATI: procedure(id: GLuint; pname: GLenum; params: PGLfloat); extdecl;
  2031. glGetVariantArrayObjectivATI: procedure(id: GLuint; pname: GLenum; params: PGLint); extdecl;
  2032. function Load_GL_ATI_vertex_array_object: Boolean;
  2033. //***** GL_ATI_vertex_streams *****//
  2034. const
  2035. GL_MAX_VERTEX_STREAMS_ATI = $876B;
  2036. GL_VERTEX_STREAM0_ATI = $876C;
  2037. GL_VERTEX_STREAM1_ATI = $876D;
  2038. GL_VERTEX_STREAM2_ATI = $876E;
  2039. GL_VERTEX_STREAM3_ATI = $876F;
  2040. GL_VERTEX_STREAM4_ATI = $8770;
  2041. GL_VERTEX_STREAM5_ATI = $8771;
  2042. GL_VERTEX_STREAM6_ATI = $8772;
  2043. GL_VERTEX_STREAM7_ATI = $8773;
  2044. GL_VERTEX_SOURCE_ATI = $8774;
  2045. var
  2046. glVertexStream1s: procedure(stream: GLenum; coords: GLshort); extdecl;
  2047. glVertexStream1i: procedure(stream: GLenum; coords: GLint); extdecl;
  2048. glVertexStream1f: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2049. glVertexStream1d: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2050. glVertexStream1sv: procedure(stream: GLenum; coords: GLshort); extdecl;
  2051. glVertexStream1iv: procedure(stream: GLenum; coords: GLint); extdecl;
  2052. glVertexStream1fv: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2053. glVertexStream1dv: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2054. glVertexStream2s: procedure(stream: GLenum; coords: GLshort); extdecl;
  2055. glVertexStream2i: procedure(stream: GLenum; coords: GLint); extdecl;
  2056. glVertexStream2f: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2057. glVertexStream2d: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2058. glVertexStream2sv: procedure(stream: GLenum; coords: GLshort); extdecl;
  2059. glVertexStream2iv: procedure(stream: GLenum; coords: GLint); extdecl;
  2060. glVertexStream2fv: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2061. glVertexStream2dv: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2062. glVertexStream3s: procedure(stream: GLenum; coords: GLshort); extdecl;
  2063. glVertexStream3i: procedure(stream: GLenum; coords: GLint); extdecl;
  2064. glVertexStream3f: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2065. glVertexStream3d: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2066. glVertexStream3sv: procedure(stream: GLenum; coords: GLshort); extdecl;
  2067. glVertexStream3iv: procedure(stream: GLenum; coords: GLint); extdecl;
  2068. glVertexStream3fv: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2069. glVertexStream3dv: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2070. glVertexStream4s: procedure(stream: GLenum; coords: GLshort); extdecl;
  2071. glVertexStream4i: procedure(stream: GLenum; coords: GLint); extdecl;
  2072. glVertexStream4f: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2073. glVertexStream4d: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2074. glVertexStream4sv: procedure(stream: GLenum; coords: GLshort); extdecl;
  2075. glVertexStream4iv: procedure(stream: GLenum; coords: GLint); extdecl;
  2076. glVertexStream4fv: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2077. glVertexStream4dv: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2078. glNormalStream3b: procedure(stream: GLenum; coords: GLbyte); extdecl;
  2079. glNormalStream3s: procedure(stream: GLenum; coords: GLshort); extdecl;
  2080. glNormalStream3i: procedure(stream: GLenum; coords: GLint); extdecl;
  2081. glNormalStream3f: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2082. glNormalStream3d: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2083. glNormalStream3bv: procedure(stream: GLenum; coords: GLbyte); extdecl;
  2084. glNormalStream3sv: procedure(stream: GLenum; coords: GLshort); extdecl;
  2085. glNormalStream3iv: procedure(stream: GLenum; coords: GLint); extdecl;
  2086. glNormalStream3fv: procedure(stream: GLenum; coords: GLfloat); extdecl;
  2087. glNormalStream3dv: procedure(stream: GLenum; coords: GLdouble); extdecl;
  2088. glClientActiveVertexStream: procedure(stream: GLenum); extdecl;
  2089. glVertexBlendEnvi: procedure(pname: GLenum; param: GLint); extdecl;
  2090. glVertexBlendEnvf: procedure(pname: GLenum; param: GLfloat); extdecl;
  2091. function Load_GL_ATI_vertex_streams: Boolean;
  2092. {$IFDEF Windows}
  2093. //***** WGL_I3D_image_buffer *****//
  2094. const
  2095. WGL_IMAGE_BUFFER_MIN_ACCESS_I3D = $0001;
  2096. WGL_IMAGE_BUFFER_LOCK_I3D = $0002;
  2097. var
  2098. wglCreateImageBufferI3D: function(hDC: HDC; dwSize: DWORD; uFlags: UINT): PGLvoid; extdecl;
  2099. wglDestroyImageBufferI3D: function(hDC: HDC; pAddress: PGLvoid): BOOL; extdecl;
  2100. wglAssociateImageBufferEventsI3D: function(hdc: HDC; pEvent: PHandle; pAddress: PGLvoid; pSize: PDWORD; count: UINT): BOOL; extdecl;
  2101. wglReleaseImageBufferEventsI3D: function(hdc: HDC; pAddress: PGLvoid; count: UINT): BOOL; extdecl;
  2102. function Load_WGL_I3D_image_buffer: Boolean;
  2103. //***** WGL_I3D_swap_frame_lock *****//
  2104. var
  2105. wglEnableFrameLockI3D: function(): BOOL; extdecl;
  2106. wglDisableFrameLockI3D: function(): BOOL; extdecl;
  2107. wglIsEnabledFrameLockI3D: function(pFlag: PBOOL): BOOL; extdecl;
  2108. wglQueryFrameLockMasterI3D: function(pFlag: PBOOL): BOOL; extdecl;
  2109. function Load_WGL_I3D_swap_frame_lock: Boolean;
  2110. //***** WGL_I3D_swap_frame_usage *****//
  2111. var
  2112. wglGetFrameUsageI3D: function(pUsage: PGLfloat): BOOL; extdecl;
  2113. wglBeginFrameTrackingI3D: function(): BOOL; extdecl;
  2114. wglEndFrameTrackingI3D: function(): BOOL; extdecl;
  2115. wglQueryFrameTrackingI3D: function(pFrameCount: PDWORD; pMissedFrames: PDWORD; pLastMissedUsage: PGLfloat): BOOL; extdecl;
  2116. function Load_WGL_I3D_swap_frame_usage: Boolean;
  2117. {$ENDIF}
  2118. //***** GL_3DFX_texture_compression_FXT1 *****//
  2119. const
  2120. GL_COMPRESSED_RGB_FXT1_3DFX = $86B0;
  2121. GL_COMPRESSED_RGBA_FXT1_3DFX = $86B1;
  2122. function Load_GL_3DFX_texture_compression_FXT1: Boolean;
  2123. //***** GL_IBM_cull_vertex *****//
  2124. const
  2125. GL_CULL_VERTEX_IBM = $1928A;
  2126. function Load_GL_IBM_cull_vertex: Boolean;
  2127. //***** GL_IBM_multimode_draw_arrays *****//
  2128. var
  2129. glMultiModeDrawArraysIBM: procedure(mode: PGLenum; first: PGLint; count: PGLsizei; primcount: GLsizei; modestride: GLint); extdecl;
  2130. glMultiModeDrawElementsIBM: procedure(mode: PGLenum; count: PGLsizei; _type: GLenum; const indices: PGLvoid; primcount: GLsizei; modestride: GLint); extdecl;
  2131. function Load_GL_IBM_multimode_draw_arrays: Boolean;
  2132. //***** GL_IBM_raster_pos_clip *****//
  2133. const
  2134. GL_RASTER_POSITION_UNCLIPPED_IBM = $19262;
  2135. function Load_GL_IBM_raster_pos_clip: Boolean;
  2136. //***** GL_IBM_texture_mirrored_repeat *****//
  2137. const
  2138. GL_MIRRORED_REPEAT_IBM = $8370;
  2139. function Load_GL_IBM_texture_mirrored_repeat: Boolean;
  2140. //***** GL_IBM_vertex_array_lists *****//
  2141. const
  2142. GL_VERTEX_ARRAY_LIST_IBM = $1929E;
  2143. GL_NORMAL_ARRAY_LIST_IBM = $1929F;
  2144. GL_COLOR_ARRAY_LIST_IBM = $192A0;
  2145. GL_INDEX_ARRAY_LIST_IBM = $192A1;
  2146. GL_TEXTURE_COORD_ARRAY_LIST_IBM = $192A2;
  2147. GL_EDGE_FLAG_ARRAY_LIST_IBM = $192A3;
  2148. GL_FOG_COORDINATE_ARRAY_LIST_IBM = $192A4;
  2149. GL_SECONDARY_COLOR_ARRAY_LIST_IBM = $192A5;
  2150. GL_VERTEX_ARRAY_LIST_STRIDE_IBM = $192A8;
  2151. GL_NORMAL_ARRAY_LIST_STRIDE_IBM = $192A9;
  2152. GL_COLOR_ARRAY_LIST_STRIDE_IBM = $192AA;
  2153. GL_INDEX_ARRAY_LIST_STRIDE_IBM = $192AB;
  2154. GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM = $192AC;
  2155. GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM = $192AD;
  2156. GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM = $192AE;
  2157. GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM = $192AF;
  2158. var
  2159. glColorPointerListIBM: procedure(size: GLint; _type: GLenum; stride: GLint; const pointer: PGLvoid; ptrstride: GLint); extdecl;
  2160. glSecondaryColorPointerListIBM: procedure(size: GLint; _type: GLenum; stride: GLint; const pointer: PGLvoid; ptrstride: GLint); extdecl;
  2161. glEdgeFlagPointerListIBM: procedure(stride: GLint; const pointer: PGLboolean; ptrstride: GLint); extdecl;
  2162. glFogCoordPointerListIBM: procedure(_type: GLenum; stride: GLint; const pointer: PGLvoid; ptrstride: GLint); extdecl;
  2163. glNormalPointerListIBM: procedure(_type: GLenum; stride: GLint; const pointer: PGLvoid; ptrstride: GLint); extdecl;
  2164. glTexCoordPointerListIBM: procedure(size: GLint; _type: GLenum; stride: GLint; const pointer: PGLvoid; ptrstride: GLint); extdecl;
  2165. glVertexPointerListIBM: procedure(size: GLint; _type: GLenum; stride: GLint; const pointer: PGLvoid; ptrstride: GLint); extdecl;
  2166. function Load_GL_IBM_vertex_array_lists: Boolean;
  2167. //***** GL_MESA_resize_buffers *****//
  2168. var
  2169. glResizeBuffersMESA: procedure(); extdecl;
  2170. function Load_GL_MESA_resize_buffers: Boolean;
  2171. //***** GL_MESA_window_pos *****//
  2172. var
  2173. glWindowPos2dMESA: procedure(x: GLdouble; y: GLdouble); extdecl;
  2174. glWindowPos2fMESA: procedure(x: GLfloat; y: GLfloat); extdecl;
  2175. glWindowPos2iMESA: procedure(x: GLint; y: GLint); extdecl;
  2176. glWindowPos2sMESA: procedure(x: GLshort; y: GLshort); extdecl;
  2177. glWindowPos2ivMESA: procedure(const p: PGLint); extdecl;
  2178. glWindowPos2svMESA: procedure(const p: PGLshort); extdecl;
  2179. glWindowPos2fvMESA: procedure(const p: PGLfloat); extdecl;
  2180. glWindowPos2dvMESA: procedure(const p: PGLdouble); extdecl;
  2181. glWindowPos3iMESA: procedure(x: GLint; y: GLint; z: GLint); extdecl;
  2182. glWindowPos3sMESA: procedure(x: GLshort; y: GLshort; z: GLshort); extdecl;
  2183. glWindowPos3fMESA: procedure(x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2184. glWindowPos3dMESA: procedure(x: GLdouble; y: GLdouble; z: GLdouble); extdecl;
  2185. glWindowPos3ivMESA: procedure(const p: PGLint); extdecl;
  2186. glWindowPos3svMESA: procedure(const p: PGLshort); extdecl;
  2187. glWindowPos3fvMESA: procedure(const p: PGLfloat); extdecl;
  2188. glWindowPos3dvMESA: procedure(const p: PGLdouble); extdecl;
  2189. glWindowPos4iMESA: procedure(x: GLint; y: GLint; z: GLint; w: GLint); extdecl;
  2190. glWindowPos4sMESA: procedure(x: GLshort; y: GLshort; z: GLshort; w: GLshort); extdecl;
  2191. glWindowPos4fMESA: procedure(x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); extdecl;
  2192. glWindowPos4dMESA: procedure(x: GLdouble; y: GLdouble; z: GLdouble; w: GLdouble); extdecl;
  2193. glWindowPos4ivMESA: procedure(const p: PGLint); extdecl;
  2194. glWindowPos4svMESA: procedure(const p: PGLshort); extdecl;
  2195. glWindowPos4fvMESA: procedure(const p: PGLfloat); extdecl;
  2196. glWindowPos4dvMESA: procedure(const p: PGLdouble); extdecl;
  2197. function Load_GL_MESA_window_pos: Boolean;
  2198. //***** GL_OML_interlace *****//
  2199. const
  2200. GL_INTERLACE_OML = $8980;
  2201. GL_INTERLACE_READ_OML = $8981;
  2202. function Load_GL_OML_interlace: Boolean;
  2203. //***** GL_OML_resample *****//
  2204. const
  2205. GL_PACK_RESAMPLE_OML = $8984;
  2206. GL_UNPACK_RESAMPLE_OML = $8985;
  2207. GL_RESAMPLE_REPLICATE_OML = $8986;
  2208. GL_RESAMPLE_ZERO_FILL_OML = $8987;
  2209. GL_RESAMPLE_AVERAGE_OML = $8988;
  2210. GL_RESAMPLE_DECIMATE_OML = $8989;
  2211. // GL_RESAMPLE_AVERAGE_OML { already defined }
  2212. function Load_GL_OML_resample: Boolean;
  2213. //***** GL_OML_subsample *****//
  2214. const
  2215. GL_FORMAT_SUBSAMPLE_24_24_OML = $8982;
  2216. GL_FORMAT_SUBSAMPLE_244_244_OML = $8983;
  2217. function Load_GL_OML_subsample: Boolean;
  2218. //***** GL_SGIS_generate_mipmap *****//
  2219. const
  2220. GL_GENERATE_MIPMAP_SGIS = $8191;
  2221. GL_GENERATE_MIPMAP_HINT_SGIS = $8192;
  2222. function Load_GL_SGIS_generate_mipmap: Boolean;
  2223. //***** GL_SGIS_multisample *****//
  2224. const
  2225. GLX_SAMPLE_BUFFERS_SGIS = $186A0;
  2226. GLX_SAMPLES_SGIS = $186A1;
  2227. GL_MULTISAMPLE_SGIS = $809D;
  2228. GL_SAMPLE_ALPHA_TO_MASK_SGIS = $809E;
  2229. GL_SAMPLE_ALPHA_TO_ONE_SGIS = $809F;
  2230. GL_SAMPLE_MASK_SGIS = $80A0;
  2231. GL_MULTISAMPLE_BIT_EXT = $20000000;
  2232. GL_1PASS_SGIS = $80A1;
  2233. GL_2PASS_0_SGIS = $80A2;
  2234. GL_2PASS_1_SGIS = $80A3;
  2235. GL_4PASS_0_SGIS = $80A4;
  2236. GL_4PASS_1_SGIS = $80A5;
  2237. GL_4PASS_2_SGIS = $80A6;
  2238. GL_4PASS_3_SGIS = $80A7;
  2239. GL_SAMPLE_BUFFERS_SGIS = $80A8;
  2240. GL_SAMPLES_SGIS = $80A9;
  2241. GL_SAMPLE_MASK_VALUE_SGIS = $80AA;
  2242. GL_SAMPLE_MASK_INVERT_SGIS = $80AB;
  2243. GL_SAMPLE_PATTERN_SGIS = $80AC;
  2244. var
  2245. glSampleMaskSGIS: procedure(value: GLclampf; invert: GLboolean); extdecl;
  2246. glSamplePatternSGIS: procedure(pattern: GLenum); extdecl;
  2247. function Load_GL_SGIS_multisample: Boolean;
  2248. //***** GL_SGIS_pixel_texture *****//
  2249. const
  2250. GL_PIXEL_TEXTURE_SGIS = $8353;
  2251. GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS = $8354;
  2252. GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS = $8355;
  2253. GL_PIXEL_GROUP_COLOR_SGIS = $8356;
  2254. var
  2255. glPixelTexGenParameteriSGIS: procedure(pname: GLenum; param: GLint); extdecl;
  2256. glPixelTexGenParameterfSGIS: procedure(pname: GLenum; param: GLfloat); extdecl;
  2257. glGetPixelTexGenParameterivSGIS: procedure(pname: GLenum; params: GLint); extdecl;
  2258. glGetPixelTexGenParameterfvSGIS: procedure(pname: GLenum; params: GLfloat); extdecl;
  2259. function Load_GL_SGIS_pixel_texture: Boolean;
  2260. //***** GL_SGIS_texture_border_clamp *****//
  2261. // GL_CLAMP_TO_BORDER_SGIS { already defined }
  2262. function Load_GL_SGIS_texture_border_clamp: Boolean;
  2263. //***** GL_SGIS_texture_color_mask *****//
  2264. const
  2265. GL_TEXTURE_COLOR_WRITEMASK_SGIS = $81EF;
  2266. var
  2267. glTextureColorMaskSGIS: procedure(r: GLboolean; g: GLboolean; b: GLboolean; a: GLboolean); extdecl;
  2268. function Load_GL_SGIS_texture_color_mask: Boolean;
  2269. //***** GL_SGIS_texture_edge_clamp *****//
  2270. const
  2271. GL_CLAMP_TO_EDGE_SGIS = $812F;
  2272. function Load_GL_SGIS_texture_edge_clamp: Boolean;
  2273. //***** GL_SGIS_texture_lod *****//
  2274. const
  2275. GL_TEXTURE_MIN_LOD_SGIS = $813A;
  2276. GL_TEXTURE_MAX_LOD_SGIS = $813B;
  2277. GL_TEXTURE_BASE_LEVEL_SGIS = $813C;
  2278. GL_TEXTURE_MAX_LEVEL_SGIS = $813D;
  2279. function Load_GL_SGIS_texture_lod: Boolean;
  2280. //***** GL_SGIS_depth_texture *****//
  2281. const
  2282. GL_DEPTH_COMPONENT16_SGIX = $81A5;
  2283. GL_DEPTH_COMPONENT24_SGIX = $81A6;
  2284. GL_DEPTH_COMPONENT32_SGIX = $81A7;
  2285. function Load_GL_SGIS_depth_texture: Boolean;
  2286. //***** GL_SGIX_fog_offset *****//
  2287. const
  2288. GL_FOG_OFFSET_SGIX = $8198;
  2289. GL_FOG_OFFSET_VALUE_SGIX = $8199;
  2290. function Load_GL_SGIX_fog_offset: Boolean;
  2291. //***** GL_SGIX_interlace *****//
  2292. const
  2293. GL_INTERLACE_SGIX = $8094;
  2294. function Load_GL_SGIX_interlace: Boolean;
  2295. //***** GL_SGIX_shadow_ambient *****//
  2296. const
  2297. GL_SHADOW_AMBIENT_SGIX = $80BF;
  2298. function Load_GL_SGIX_shadow_ambient: Boolean;
  2299. //***** GL_SGI_color_matrix *****//
  2300. const
  2301. GL_COLOR_MATRIX_SGI = $80B1;
  2302. GL_COLOR_MATRIX_STACK_DEPTH_SGI = $80B2;
  2303. GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI = $80B3;
  2304. GL_POST_COLOR_MATRIX_RED_SCALE_SGI = $80B4;
  2305. GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI = $80B5;
  2306. GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI = $80B6;
  2307. GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI = $80B7;
  2308. GL_POST_COLOR_MATRIX_RED_BIAS_SGI = $80B8;
  2309. GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI = $80B9;
  2310. GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI = $80BA;
  2311. GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI = $80BB;
  2312. function Load_GL_SGI_color_matrix: Boolean;
  2313. //***** GL_SGI_color_table *****//
  2314. const
  2315. GL_COLOR_TABLE_SGI = $80D0;
  2316. GL_POST_CONVOLUTION_COLOR_TABLE_SGI = $80D1;
  2317. GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI = $80D2;
  2318. GL_PROXY_COLOR_TABLE_SGI = $80D3;
  2319. GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI = $80D4;
  2320. GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI = $80D5;
  2321. GL_COLOR_TABLE_SCALE_SGI = $80D6;
  2322. GL_COLOR_TABLE_BIAS_SGI = $80D7;
  2323. GL_COLOR_TABLE_FORMAT_SGI = $80D8;
  2324. GL_COLOR_TABLE_WIDTH_SGI = $80D9;
  2325. GL_COLOR_TABLE_RED_SIZE_SGI = $80DA;
  2326. GL_COLOR_TABLE_GREEN_SIZE_SGI = $80DB;
  2327. GL_COLOR_TABLE_BLUE_SIZE_SGI = $80DC;
  2328. GL_COLOR_TABLE_ALPHA_SIZE_SGI = $80DD;
  2329. GL_COLOR_TABLE_LUMINANCE_SIZE_SGI = $80DE;
  2330. GL_COLOR_TABLE_INTENSITY_SIZE_SGI = $80DF;
  2331. var
  2332. glColorTableSGI: procedure(target: GLenum; internalformat: GLenum; width: GLsizei; format: GLenum; _type: GLenum; const table: PGLvoid); extdecl;
  2333. glCopyColorTableSGI: procedure(target: GLenum; internalformat: GLenum; x: GLint; y: GLint; width: GLsizei); extdecl;
  2334. glColorTableParameterivSGI: procedure(target: GLenum; pname: GLenum; const params: PGLint); extdecl;
  2335. glColorTableParameterfvSGI: procedure(target: GLenum; pname: GLenum; const params: PGLfloat); extdecl;
  2336. glGetColorTableSGI: procedure(target: GLenum; format: GLenum; _type: GLenum; table: PGLvoid); extdecl;
  2337. glGetColorTableParameterivSGI: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  2338. glGetColorTableParameterfvSGI: procedure(target: GLenum; pname: GLenum; params: PGLfloat); extdecl;
  2339. function Load_GL_SGI_color_table: Boolean;
  2340. //***** GL_SGI_texture_color_table *****//
  2341. const
  2342. GL_TEXTURE_COLOR_TABLE_SGI = $80BC;
  2343. GL_PROXY_TEXTURE_COLOR_TABLE_SGI = $80BD;
  2344. function Load_GL_SGI_texture_color_table: Boolean;
  2345. //***** GL_SUN_vertex *****//
  2346. var
  2347. glColor4ubVertex2fSUN: procedure(r: GLubyte; g: GLubyte; b: GLubyte; a: GLubyte; x: GLfloat; y: GLfloat); extdecl;
  2348. glColor4ubVertex2fvSUN: procedure(const c: PGLubyte; const v: PGLfloat); extdecl;
  2349. glColor4ubVertex3fSUN: procedure(r: GLubyte; g: GLubyte; b: GLubyte; a: GLubyte; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2350. glColor4ubVertex3fvSUN: procedure(const c: PGLubyte; const v: PGLfloat); extdecl;
  2351. glColor3fVertex3fSUN: procedure(r: GLfloat; g: GLfloat; b: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2352. glColor3fVertex3fvSUN: procedure(const c: PGLfloat; const v: PGLfloat); extdecl;
  2353. glNormal3fVertex3fSUN: procedure(nx: GLfloat; ny: GLfloat; nz: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2354. glNormal3fVertex3fvSUN: procedure(const n: PGLfloat; const v: PGLfloat); extdecl;
  2355. glColor4fNormal3fVertex3fSUN: procedure(r: GLfloat; g: GLfloat; b: GLfloat; a: GLfloat; nx: GLfloat; ny: GLfloat; nz: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2356. glColor4fNormal3fVertex3fvSUN: procedure(const c: PGLfloat; const n: PGLfloat; const v: PGLfloat); extdecl;
  2357. glTexCoord2fVertex3fSUN: procedure(s: GLfloat; t: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2358. glTexCoord2fVertex3fvSUN: procedure(const tc: PGLfloat; const v: PGLfloat); extdecl;
  2359. glTexCoord4fVertex4fSUN: procedure(s: GLfloat; t: GLfloat; p: GLfloat; q: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); extdecl;
  2360. glTexCoord4fVertex4fvSUN: procedure(const tc: PGLfloat; const v: PGLfloat); extdecl;
  2361. glTexCoord2fColor4ubVertex3fSUN: procedure(s: GLfloat; t: GLfloat; r: GLubyte; g: GLubyte; b: GLubyte; a: GLubyte; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2362. glTexCoord2fColor4ubVertex3fvSUN: procedure(const tc: PGLfloat; const c: PGLubyte; const v: PGLfloat); extdecl;
  2363. glTexCoord2fColor3fVertex3fSUN: procedure(s: GLfloat; t: GLfloat; r: GLfloat; g: GLfloat; b: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2364. glTexCoord2fColor3fVertex3fvSUN: procedure(const tc: PGLfloat; const c: PGLfloat; const v: PGLfloat); extdecl;
  2365. glTexCoord2fNormal3fVertex3fSUN: procedure(s: GLfloat; t: GLfloat; nx: GLfloat; ny: GLfloat; nz: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2366. glTexCoord2fNormal3fVertex3fvSUN: procedure(const tc: PGLfloat; const n: PGLfloat; const v: PGLfloat); extdecl;
  2367. 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;
  2368. glTexCoord2fColor4fNormal3fVertex3fvSUN: procedure(const tc: PGLfloat; const c: PGLfloat; const n: PGLfloat; const v: PGLfloat); extdecl;
  2369. 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;
  2370. glTexCoord4fColor4fNormal3fVertex4fvSUN: procedure(const tc: PGLfloat; const c: PGLfloat; const n: PGLfloat; const v: PGLfloat); extdecl;
  2371. glReplacementCodeuiVertex3fSUN: procedure(rc: GLuint; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2372. glReplacementCodeuiVertex3fvSUN: procedure(const rc: PGLuint; const v: PGLfloat); extdecl;
  2373. glReplacementCodeuiColor4ubVertex3fSUN: procedure(rc: GLuint; r: GLubyte; g: GLubyte; b: GLubyte; a: GLubyte; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2374. glReplacementCodeuiColor4ubVertex3fvSUN: procedure(const rc: PGLuint; const c: PGLubyte; const v: PGLfloat); extdecl;
  2375. glReplacementCodeuiColor3fVertex3fSUN: procedure(rc: GLuint; r: GLfloat; g: GLfloat; b: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2376. glReplacementCodeuiColor3fVertex3fvSUN: procedure(const rc: PGLuint; const c: PGLfloat; const v: PGLfloat); extdecl;
  2377. glReplacementCodeuiNormal3fVertex3fSUN: procedure(rc: GLuint; nx: GLfloat; ny: GLfloat; nz: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2378. glReplacementCodeuiNormal3fVertex3fvSUN: procedure(const rc: PGLuint; const n: PGLfloat; const v: PGLfloat); extdecl;
  2379. 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;
  2380. glReplacementCodeuiColor4fNormal3fVertex3fvSUN: procedure(const rc: PGLuint; const c: PGLfloat; const n: PGLfloat; const v: PGLfloat); extdecl;
  2381. glReplacementCodeuiTexCoord2fVertex3fSUN: procedure(rc: GLuint; s: GLfloat; t: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2382. glReplacementCodeuiTexCoord2fVertex3fvSUN: procedure(const rc: PGLuint; const tc: PGLfloat; const v: PGLfloat); extdecl;
  2383. glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN: procedure(rc: GLuint; s: GLfloat; t: GLfloat; nx: GLfloat; ny: GLfloat; nz: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  2384. glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN: procedure(const rc: PGLuint; const tc: PGLfloat; const n: PGLfloat; const v: PGLfloat); extdecl;
  2385. 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;
  2386. glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN: procedure(const rc: PGLuint; const tc: PGLfloat; const c: PGLfloat; const n: PGLfloat; const v: PGLfloat); extdecl;
  2387. function Load_GL_SUN_vertex: Boolean;
  2388. //***** GL_ARB_fragment_program *****//
  2389. const
  2390. GL_FRAGMENT_PROGRAM_ARB = $8804;
  2391. // GL_PROGRAM_FORMAT_ASCII_ARB { already defined }
  2392. // GL_PROGRAM_LENGTH_ARB { already defined }
  2393. // GL_PROGRAM_FORMAT_ARB { already defined }
  2394. // GL_PROGRAM_BINDING_ARB { already defined }
  2395. // GL_PROGRAM_INSTRUCTIONS_ARB { already defined }
  2396. // GL_MAX_PROGRAM_INSTRUCTIONS_ARB { already defined }
  2397. // GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB { already defined }
  2398. // GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB { already defined }
  2399. // GL_PROGRAM_TEMPORARIES_ARB { already defined }
  2400. // GL_MAX_PROGRAM_TEMPORARIES_ARB { already defined }
  2401. // GL_PROGRAM_NATIVE_TEMPORARIES_ARB { already defined }
  2402. // GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB { already defined }
  2403. // GL_PROGRAM_PARAMETERS_ARB { already defined }
  2404. // GL_MAX_PROGRAM_PARAMETERS_ARB { already defined }
  2405. // GL_PROGRAM_NATIVE_PARAMETERS_ARB { already defined }
  2406. // GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB { already defined }
  2407. // GL_PROGRAM_ATTRIBS_ARB { already defined }
  2408. // GL_MAX_PROGRAM_ATTRIBS_ARB { already defined }
  2409. // GL_PROGRAM_NATIVE_ATTRIBS_ARB { already defined }
  2410. // GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB { already defined }
  2411. // GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB { already defined }
  2412. // GL_MAX_PROGRAM_ENV_PARAMETERS_ARB { already defined }
  2413. // GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB { already defined }
  2414. GL_PROGRAM_ALU_INSTRUCTIONS_ARB = $8805;
  2415. GL_PROGRAM_TEX_INSTRUCTIONS_ARB = $8806;
  2416. GL_PROGRAM_TEX_INDIRECTIONS_ARB = $8807;
  2417. GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB = $8808;
  2418. GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB = $8809;
  2419. GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB = $880A;
  2420. GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB = $880B;
  2421. GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB = $880C;
  2422. GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB = $880D;
  2423. GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB = $880E;
  2424. GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB = $880F;
  2425. GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB = $8810;
  2426. // GL_PROGRAM_STRING_ARB { already defined }
  2427. // GL_PROGRAM_ERROR_POSITION_ARB { already defined }
  2428. // GL_CURRENT_MATRIX_ARB { already defined }
  2429. // GL_TRANSPOSE_CURRENT_MATRIX_ARB { already defined }
  2430. // GL_CURRENT_MATRIX_STACK_DEPTH_ARB { already defined }
  2431. // GL_MAX_PROGRAM_MATRICES_ARB { already defined }
  2432. // GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB { already defined }
  2433. GL_MAX_TEXTURE_COORDS_ARB = $8871;
  2434. GL_MAX_TEXTURE_IMAGE_UNITS_ARB = $8872;
  2435. // GL_PROGRAM_ERROR_STRING_ARB { already defined }
  2436. // GL_MATRIX0_ARB { already defined }
  2437. // GL_MATRIX1_ARB { already defined }
  2438. // GL_MATRIX2_ARB { already defined }
  2439. // GL_MATRIX3_ARB { already defined }
  2440. // GL_MATRIX4_ARB { already defined }
  2441. // GL_MATRIX5_ARB { already defined }
  2442. // GL_MATRIX6_ARB { already defined }
  2443. // GL_MATRIX7_ARB { already defined }
  2444. // GL_MATRIX8_ARB { already defined }
  2445. // GL_MATRIX9_ARB { already defined }
  2446. // GL_MATRIX10_ARB { already defined }
  2447. // GL_MATRIX11_ARB { already defined }
  2448. // GL_MATRIX12_ARB { already defined }
  2449. // GL_MATRIX13_ARB { already defined }
  2450. // GL_MATRIX14_ARB { already defined }
  2451. // GL_MATRIX15_ARB { already defined }
  2452. // GL_MATRIX16_ARB { already defined }
  2453. // GL_MATRIX17_ARB { already defined }
  2454. // GL_MATRIX18_ARB { already defined }
  2455. // GL_MATRIX19_ARB { already defined }
  2456. // GL_MATRIX20_ARB { already defined }
  2457. // GL_MATRIX21_ARB { already defined }
  2458. // GL_MATRIX22_ARB { already defined }
  2459. // GL_MATRIX23_ARB { already defined }
  2460. // GL_MATRIX24_ARB { already defined }
  2461. // GL_MATRIX25_ARB { already defined }
  2462. // GL_MATRIX26_ARB { already defined }
  2463. // GL_MATRIX27_ARB { already defined }
  2464. // GL_MATRIX28_ARB { already defined }
  2465. // GL_MATRIX29_ARB { already defined }
  2466. // GL_MATRIX30_ARB { already defined }
  2467. // GL_MATRIX31_ARB { already defined }
  2468. // glProgramStringARB { already defined }
  2469. // glBindProgramARB { already defined }
  2470. // glDeleteProgramsARB { already defined }
  2471. // glGenProgramsARB { already defined }
  2472. // glProgramEnvParameter4dARB { already defined }
  2473. // glProgramEnvParameter4dvARB { already defined }
  2474. // glProgramEnvParameter4fARB { already defined }
  2475. // glProgramEnvParameter4fvARB { already defined }
  2476. // glProgramLocalParameter4dARB { already defined }
  2477. // glProgramLocalParameter4dvARB { already defined }
  2478. // glProgramLocalParameter4fARB { already defined }
  2479. // glProgramLocalParameter4fvARB { already defined }
  2480. // glGetProgramEnvParameterdvARB { already defined }
  2481. // glGetProgramEnvParameterfvARB { already defined }
  2482. // glGetProgramLocalParameterdvARB { already defined }
  2483. // glGetProgramLocalParameterfvARB { already defined }
  2484. // glGetProgramivARB { already defined }
  2485. // glGetProgramStringARB { already defined }
  2486. // glIsProgramARB { already defined }
  2487. function Load_GL_ARB_fragment_program: Boolean;
  2488. {***** GL_ATI_text_fragment_shader *****}
  2489. const
  2490. GL_TEXT_FRAGMENT_SHADER_ATI = $8200;
  2491. {***** GL_ARB_vertex_buffer_object *****}
  2492. const
  2493. GL_BUFFER_SIZE_ARB = $8764;
  2494. GL_BUFFER_USAGE_ARB = $8765;
  2495. GL_ARRAY_BUFFER_ARB = $8892;
  2496. GL_ELEMENT_ARRAY_BUFFER_ARB = $8893;
  2497. GL_ARRAY_BUFFER_BINDING_ARB = $8894;
  2498. GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB = $8895;
  2499. GL_VERTEX_ARRAY_BUFFER_BINDING_ARB = $8896;
  2500. GL_NORMAL_ARRAY_BUFFER_BINDING_ARB = $8897;
  2501. GL_COLOR_ARRAY_BUFFER_BINDING_ARB = $8898;
  2502. GL_INDEX_ARRAY_BUFFER_BINDING_ARB = $8899;
  2503. GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB = $889A;
  2504. GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB = $889B;
  2505. GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB = $889C;
  2506. GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB = $889D;
  2507. GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB = $889E;
  2508. GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB = $889F;
  2509. GL_READ_ONLY_ARB = $88B8;
  2510. GL_WRITE_ONLY_ARB = $88B9;
  2511. GL_READ_WRITE_ARB = $88BA;
  2512. GL_BUFFER_ACCESS_ARB = $88BB;
  2513. GL_BUFFER_MAPPED_ARB = $88BC;
  2514. GL_BUFFER_MAP_POINTER_ARB = $88BD;
  2515. GL_STREAM_DRAW_ARB = $88E0;
  2516. GL_STREAM_READ_ARB = $88E1;
  2517. GL_STREAM_COPY_ARB = $88E2;
  2518. GL_STATIC_DRAW_ARB = $88E4;
  2519. GL_STATIC_READ_ARB = $88E5;
  2520. GL_STATIC_COPY_ARB = $88E6;
  2521. GL_DYNAMIC_DRAW_ARB = $88E8;
  2522. GL_DYNAMIC_READ_ARB = $88E9;
  2523. GL_DYNAMIC_COPY_ARB = $88EA;
  2524. var
  2525. glBindBufferARB : procedure(target : GLenum; buffer: GLuint); extdecl;
  2526. glDeleteBuffersARB : procedure(n : GLsizei; buffers : PGLuint); extdecl;
  2527. glGenBuffersARB : procedure(n : GLsizei; buffers : PGLuint); extdecl;
  2528. glIsBufferARB : function (buffer : GLuint) :GLboolean; extdecl;
  2529. glBufferDataARB : procedure(target : GLenum; size:GLsizei; data:PGLvoid;usage: GLenum); extdecl;
  2530. glBufferSubDataARB : procedure(target : GLenum; offset :GLint; size : GLsizei; data: PGLvoid); extdecl;
  2531. glGetBufferSubDataARB : procedure(target : GLenum; offset :GLint; size : GLsizei; data: PGLvoid); extdecl;
  2532. glMapBufferARB : function (target :GLenum; access: GLenum) : PGLvoid; extdecl;
  2533. glUnmapBufferARB : function (target :GLenum) :GLboolean; extdecl;
  2534. glGetBufferParameterivARB:procedure(target:GLenum; pname:GLenum; params:PGLint); extdecl;
  2535. glGetBufferPointervARB : procedure(target: GLenum; pname:GLenum; params: PPGLvoid); extdecl;
  2536. function Load_GL_ARB_vertex_buffer_object : boolean;
  2537. function Load_GL_ATI_text_fragment_shader: Boolean;
  2538. //***** GL_APPLE_client_storage *****//
  2539. const
  2540. GL_UNPACK_CLIENT_STORAGE_APPLE = $85B2;
  2541. function Load_GL_APPLE_client_storage: Boolean;
  2542. //***** GL_APPLE_element_array *****//
  2543. const
  2544. GL_ELEMENT_ARRAY_APPLE = $8768;
  2545. GL_ELEMENT_ARRAY_TYPE_APPLE = $8769;
  2546. GL_ELEMENT_ARRAY_POINTER_APPLE = $876A;
  2547. var
  2548. glElementPointerAPPLE: procedure(_type: GLenum; const pointer: PGLvoid); extdecl;
  2549. glDrawElementArrayAPPLE: procedure(mode: GLenum; first: GLint; count: GLsizei); extdecl;
  2550. glDrawRangeElementArrayAPPLE: procedure(mode: GLenum; start: GLuint; _end: GLuint; first: GLint; count: GLsizei); extdecl;
  2551. glMultiDrawElementArrayAPPLE: procedure(mode: GLenum; const first: PGLint; const count: PGLsizei; primcount: GLsizei); extdecl;
  2552. glMultiDrawRangeElementArrayAPPLE: procedure(mode: GLenum; start: GLuint; _end: GLuint; const first: PGLint; const count: PGLsizei; primcount: GLsizei); extdecl;
  2553. function Load_GL_APPLE_element_array: Boolean;
  2554. //***** GL_APPLE_fence *****//
  2555. const
  2556. GL_DRAW_PIXELS_APPLE = $8A0A;
  2557. GL_FENCE_APPLE = $8A0B;
  2558. var
  2559. glGenFencesAPPLE: procedure(n: GLsizei; fences: PGLuint); extdecl;
  2560. glDeleteFencesAPPLE: procedure(n: GLsizei; const fences: PGLuint); extdecl;
  2561. glSetFenceAPPLE: procedure(fence: GLuint); extdecl;
  2562. glIsFenceAPPLE: function(fence: GLuint): GLboolean; extdecl;
  2563. glTestFenceAPPLE: function(fence: GLuint): GLboolean; extdecl;
  2564. glFinishFenceAPPLE: procedure(fence: GLuint); extdecl;
  2565. glTestObjectAPPLE: function(_object: GLenum; name: GLuint): GLboolean; extdecl;
  2566. glFinishObjectAPPLE: procedure(_object: GLenum; name: GLint); extdecl;
  2567. function Load_GL_APPLE_fence: Boolean;
  2568. //***** GL_APPLE_vertex_array_object *****//
  2569. const
  2570. GL_VERTEX_ARRAY_BINDING_APPLE = $85B5;
  2571. var
  2572. glBindVertexArrayAPPLE: procedure(_array: GLuint); extdecl;
  2573. glDeleteVertexArraysAPPLE: procedure(n: GLsizei; const arrays: PGLuint); extdecl;
  2574. glGenVertexArraysAPPLE: procedure(n: GLsizei; const arrays: PGLuint); extdecl;
  2575. glIsVertexArrayAPPLE: function(_array: GLuint): GLboolean; extdecl;
  2576. function Load_GL_APPLE_vertex_array_object: Boolean;
  2577. //***** GL_APPLE_vertex_array_range *****//
  2578. const
  2579. GL_VERTEX_ARRAY_RANGE_APPLE = $851D;
  2580. GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE = $851E;
  2581. GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_APPLE = $8520;
  2582. GL_VERTEX_ARRAY_RANGE_POINTER_APPLE = $8521;
  2583. GL_VERTEX_ARRAY_STORAGE_HINT_APPLE = $851F;
  2584. GL_STORAGE_CACHED_APPLE = $85BE;
  2585. GL_STORAGE_SHARED_APPLE = $85BF;
  2586. var
  2587. glVertexArrayRangeAPPLE: procedure(length: GLsizei; pointer: PGLvoid); extdecl;
  2588. glFlushVertexArrayRangeAPPLE: procedure(length: GLsizei; pointer: PGLvoid); extdecl;
  2589. glVertexArrayParameteriAPPLE: procedure(pname: GLenum; param: GLint); extdecl;
  2590. function Load_GL_APPLE_vertex_array_range: Boolean;
  2591. {$IFDEF Windows}
  2592. //***** WGL_ARB_pixel_format *****//
  2593. const
  2594. WGL_NUMBER_PIXEL_FORMATS_ARB = $2000;
  2595. WGL_DRAW_TO_WINDOW_ARB = $2001;
  2596. WGL_DRAW_TO_BITMAP_ARB = $2002;
  2597. WGL_ACCELERATION_ARB = $2003;
  2598. WGL_NEED_PALETTE_ARB = $2004;
  2599. WGL_NEED_SYSTEM_PALETTE_ARB = $2005;
  2600. WGL_SWAP_LAYER_BUFFERS_ARB = $2006;
  2601. WGL_SWAP_METHOD_ARB = $2007;
  2602. WGL_NUMBER_OVERLAYS_ARB = $2008;
  2603. WGL_NUMBER_UNDERLAYS_ARB = $2009;
  2604. WGL_TRANSPARENT_ARB = $200A;
  2605. WGL_TRANSPARENT_RED_VALUE_ARB = $2037;
  2606. WGL_TRANSPARENT_GREEN_VALUE_ARB = $2038;
  2607. WGL_TRANSPARENT_BLUE_VALUE_ARB = $2039;
  2608. WGL_TRANSPARENT_ALPHA_VALUE_ARB = $203A;
  2609. WGL_TRANSPARENT_INDEX_VALUE_ARB = $203B;
  2610. WGL_SHARE_DEPTH_ARB = $200C;
  2611. WGL_SHARE_STENCIL_ARB = $200D;
  2612. WGL_SHARE_ACCUM_ARB = $200E;
  2613. WGL_SUPPORT_GDI_ARB = $200F;
  2614. WGL_SUPPORT_OPENGL_ARB = $2010;
  2615. WGL_DOUBLE_BUFFER_ARB = $2011;
  2616. WGL_STEREO_ARB = $2012;
  2617. WGL_PIXEL_TYPE_ARB = $2013;
  2618. WGL_COLOR_BITS_ARB = $2014;
  2619. WGL_RED_BITS_ARB = $2015;
  2620. WGL_RED_SHIFT_ARB = $2016;
  2621. WGL_GREEN_BITS_ARB = $2017;
  2622. WGL_GREEN_SHIFT_ARB = $2018;
  2623. WGL_BLUE_BITS_ARB = $2019;
  2624. WGL_BLUE_SHIFT_ARB = $201A;
  2625. WGL_ALPHA_BITS_ARB = $201B;
  2626. WGL_ALPHA_SHIFT_ARB = $201C;
  2627. WGL_ACCUM_BITS_ARB = $201D;
  2628. WGL_ACCUM_RED_BITS_ARB = $201E;
  2629. WGL_ACCUM_GREEN_BITS_ARB = $201F;
  2630. WGL_ACCUM_BLUE_BITS_ARB = $2020;
  2631. WGL_ACCUM_ALPHA_BITS_ARB = $2021;
  2632. WGL_DEPTH_BITS_ARB = $2022;
  2633. WGL_STENCIL_BITS_ARB = $2023;
  2634. WGL_AUX_BUFFERS_ARB = $2024;
  2635. WGL_NO_ACCELERATION_ARB = $2025;
  2636. WGL_GENERIC_ACCELERATION_ARB = $2026;
  2637. WGL_FULL_ACCELERATION_ARB = $2027;
  2638. WGL_SWAP_EXCHANGE_ARB = $2028;
  2639. WGL_SWAP_COPY_ARB = $2029;
  2640. WGL_SWAP_UNDEFINED_ARB = $202A;
  2641. WGL_TYPE_RGBA_ARB = $202B;
  2642. WGL_TYPE_COLORINDEX_ARB = $202C;
  2643. var
  2644. wglGetPixelFormatAttribivARB: function(hdc: HDC; iPixelFormat: GLint; iLayerPlane: GLint; nAttributes: GLuint; const piAttributes: PGLint; piValues: PGLint): BOOL; extdecl;
  2645. wglGetPixelFormatAttribfvARB: function(hdc: HDC; iPixelFormat: GLint; iLayerPlane: GLint; nAttributes: GLuint; const piAttributes: PGLint; pfValues: PGLfloat): BOOL; extdecl;
  2646. wglChoosePixelFormatARB: function(hdc: HDC; const piAttribIList: PGLint; const pfAttribFList: PGLfloat; nMaxFormats: GLuint; piFormats: PGLint; nNumFormats: PGLuint): BOOL; extdecl;
  2647. function Load_WGL_ARB_pixel_format: Boolean;
  2648. //***** WGL_ARB_make_current_read *****//
  2649. const
  2650. WGL_ERROR_INVALID_PIXEL_TYPE_ARB = $2043;
  2651. WGL_ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB = $2054;
  2652. var
  2653. wglMakeContextCurrentARB: function(hDrawDC: HDC; hReadDC: HDC; hglrc: HGLRC): BOOL; extdecl;
  2654. wglGetCurrentReadDCARB: function(): HDC; extdecl;
  2655. function Load_WGL_ARB_make_current_read: Boolean;
  2656. //***** WGL_ARB_pbuffer *****//
  2657. const
  2658. WGL_DRAW_TO_PBUFFER_ARB = $202D;
  2659. // WGL_DRAW_TO_PBUFFER_ARB { already defined }
  2660. WGL_MAX_PBUFFER_PIXELS_ARB = $202E;
  2661. WGL_MAX_PBUFFER_WIDTH_ARB = $202F;
  2662. WGL_MAX_PBUFFER_HEIGHT_ARB = $2030;
  2663. WGL_PBUFFER_LARGEST_ARB = $2033;
  2664. WGL_PBUFFER_WIDTH_ARB = $2034;
  2665. WGL_PBUFFER_HEIGHT_ARB = $2035;
  2666. WGL_PBUFFER_LOST_ARB = $2036;
  2667. var
  2668. wglCreatePbufferARB: function(hDC: HDC; iPixelFormat: GLint; iWidth: GLint; iHeight: GLint; const piAttribList: PGLint): THandle; extdecl;
  2669. wglGetPbufferDCARB: function(hPbuffer: THandle): HDC; extdecl;
  2670. wglReleasePbufferDCARB: function(hPbuffer: THandle; hDC: HDC): GLint; extdecl;
  2671. wglDestroyPbufferARB: function(hPbuffer: THandle): BOOL; extdecl;
  2672. wglQueryPbufferARB: function(hPbuffer: THandle; iAttribute: GLint; piValue: PGLint): BOOL; extdecl;
  2673. function Load_WGL_ARB_pbuffer: Boolean;
  2674. //***** WGL_EXT_swap_control *****//
  2675. var
  2676. wglSwapIntervalEXT: function(interval: GLint): BOOL; extdecl;
  2677. wglGetSwapIntervalEXT: function(): GLint; extdecl;
  2678. function Load_WGL_EXT_swap_control: Boolean;
  2679. //***** WGL_ARB_render_texture *****//
  2680. const
  2681. WGL_BIND_TO_TEXTURE_RGB_ARB = $2070;
  2682. WGL_BIND_TO_TEXTURE_RGBA_ARB = $2071;
  2683. WGL_TEXTURE_FORMAT_ARB = $2072;
  2684. WGL_TEXTURE_TARGET_ARB = $2073;
  2685. WGL_MIPMAP_TEXTURE_ARB = $2074;
  2686. WGL_TEXTURE_RGB_ARB = $2075;
  2687. WGL_TEXTURE_RGBA_ARB = $2076;
  2688. WGL_NO_TEXTURE_ARB = $2077;
  2689. WGL_TEXTURE_CUBE_MAP_ARB = $2078;
  2690. WGL_TEXTURE_1D_ARB = $2079;
  2691. WGL_TEXTURE_2D_ARB = $207A;
  2692. // WGL_NO_TEXTURE_ARB { already defined }
  2693. WGL_MIPMAP_LEVEL_ARB = $207B;
  2694. WGL_CUBE_MAP_FACE_ARB = $207C;
  2695. WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB = $207D;
  2696. WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB = $207E;
  2697. WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB = $207F;
  2698. WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB = $2080;
  2699. WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB = $2081;
  2700. WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB = $2082;
  2701. WGL_FRONT_LEFT_ARB = $2083;
  2702. WGL_FRONT_RIGHT_ARB = $2084;
  2703. WGL_BACK_LEFT_ARB = $2085;
  2704. WGL_BACK_RIGHT_ARB = $2086;
  2705. WGL_AUX0_ARB = $2087;
  2706. WGL_AUX1_ARB = $2088;
  2707. WGL_AUX2_ARB = $2089;
  2708. WGL_AUX3_ARB = $208A;
  2709. WGL_AUX4_ARB = $208B;
  2710. WGL_AUX5_ARB = $208C;
  2711. WGL_AUX6_ARB = $208D;
  2712. WGL_AUX7_ARB = $208E;
  2713. WGL_AUX8_ARB = $208F;
  2714. WGL_AUX9_ARB = $2090;
  2715. var
  2716. wglBindTexImageARB: function(hPbuffer: THandle; iBuffer: GLint): BOOL; extdecl;
  2717. wglReleaseTexImageARB: function(hPbuffer: THandle; iBuffer: GLint): BOOL; extdecl;
  2718. wglSetPbufferAttribARB: function(hPbuffer: THandle; const piAttribList: PGLint): BOOL; extdecl;
  2719. function Load_WGL_ARB_render_texture: Boolean;
  2720. //***** WGL_EXT_extensions_string *****//
  2721. var
  2722. wglGetExtensionsStringEXT: function(): Pchar; extdecl;
  2723. function Load_WGL_EXT_extensions_string: Boolean;
  2724. //***** WGL_EXT_make_current_read *****//
  2725. var
  2726. wglMakeContextCurrentEXT: function(hDrawDC: HDC; hReadDC: HDC; hglrc: HGLRC): BOOL; extdecl;
  2727. wglGetCurrentReadDCEXT: function(): HDC; extdecl;
  2728. function Load_WGL_EXT_make_current_read: Boolean;
  2729. //***** WGL_EXT_pbuffer *****//
  2730. const
  2731. WGL_DRAW_TO_PBUFFER_EXT = $202D;
  2732. WGL_MAX_PBUFFER_PIXELS_EXT = $202E;
  2733. WGL_MAX_PBUFFER_WIDTH_EXT = $202F;
  2734. WGL_MAX_PBUFFER_HEIGHT_EXT = $2030;
  2735. WGL_OPTIMAL_PBUFFER_WIDTH_EXT = $2031;
  2736. WGL_OPTIMAL_PBUFFER_HEIGHT_EXT = $2032;
  2737. WGL_PBUFFER_LARGEST_EXT = $2033;
  2738. WGL_PBUFFER_WIDTH_EXT = $2034;
  2739. WGL_PBUFFER_HEIGHT_EXT = $2035;
  2740. var
  2741. wglCreatePbufferEXT: function(hDC: HDC; iPixelFormat: GLint; iWidth: GLint; iHeight: GLint; const piAttribList: PGLint): THandle; extdecl;
  2742. wglGetPbufferDCEXT: function(hPbuffer: THandle): HDC; extdecl;
  2743. wglReleasePbufferDCEXT: function(hPbuffer: THandle; hDC: HDC): GLint; extdecl;
  2744. wglDestroyPbufferEXT: function(hPbuffer: THandle): BOOL; extdecl;
  2745. wglQueryPbufferEXT: function(hPbuffer: THandle; iAttribute: GLint; piValue: PGLint): BOOL; extdecl;
  2746. function Load_WGL_EXT_pbuffer: Boolean;
  2747. //***** WGL_EXT_pixel_format *****//
  2748. const
  2749. WGL_NUMBER_PIXEL_FORMATS_EXT = $2000;
  2750. WGL_DRAW_TO_WINDOW_EXT = $2001;
  2751. WGL_DRAW_TO_BITMAP_EXT = $2002;
  2752. WGL_ACCELERATION_EXT = $2003;
  2753. WGL_NEED_PALETTE_EXT = $2004;
  2754. WGL_NEED_SYSTEM_PALETTE_EXT = $2005;
  2755. WGL_SWAP_LAYER_BUFFERS_EXT = $2006;
  2756. WGL_SWAP_METHOD_EXT = $2007;
  2757. WGL_NUMBER_OVERLAYS_EXT = $2008;
  2758. WGL_NUMBER_UNDERLAYS_EXT = $2009;
  2759. WGL_TRANSPARENT_EXT = $200A;
  2760. WGL_TRANSPARENT_VALUE_EXT = $200B;
  2761. WGL_SHARE_DEPTH_EXT = $200C;
  2762. WGL_SHARE_STENCIL_EXT = $200D;
  2763. WGL_SHARE_ACCUM_EXT = $200E;
  2764. WGL_SUPPORT_GDI_EXT = $200F;
  2765. WGL_SUPPORT_OPENGL_EXT = $2010;
  2766. WGL_DOUBLE_BUFFER_EXT = $2011;
  2767. WGL_STEREO_EXT = $2012;
  2768. WGL_PIXEL_TYPE_EXT = $2013;
  2769. WGL_COLOR_BITS_EXT = $2014;
  2770. WGL_RED_BITS_EXT = $2015;
  2771. WGL_RED_SHIFT_EXT = $2016;
  2772. WGL_GREEN_BITS_EXT = $2017;
  2773. WGL_GREEN_SHIFT_EXT = $2018;
  2774. WGL_BLUE_BITS_EXT = $2019;
  2775. WGL_BLUE_SHIFT_EXT = $201A;
  2776. WGL_ALPHA_BITS_EXT = $201B;
  2777. WGL_ALPHA_SHIFT_EXT = $201C;
  2778. WGL_ACCUM_BITS_EXT = $201D;
  2779. WGL_ACCUM_RED_BITS_EXT = $201E;
  2780. WGL_ACCUM_GREEN_BITS_EXT = $201F;
  2781. WGL_ACCUM_BLUE_BITS_EXT = $2020;
  2782. WGL_ACCUM_ALPHA_BITS_EXT = $2021;
  2783. WGL_DEPTH_BITS_EXT = $2022;
  2784. WGL_STENCIL_BITS_EXT = $2023;
  2785. WGL_AUX_BUFFERS_EXT = $2024;
  2786. WGL_NO_ACCELERATION_EXT = $2025;
  2787. WGL_GENERIC_ACCELERATION_EXT = $2026;
  2788. WGL_FULL_ACCELERATION_EXT = $2027;
  2789. WGL_SWAP_EXCHANGE_EXT = $2028;
  2790. WGL_SWAP_COPY_EXT = $2029;
  2791. WGL_SWAP_UNDEFINED_EXT = $202A;
  2792. WGL_TYPE_RGBA_EXT = $202B;
  2793. WGL_TYPE_COLORINDEX_EXT = $202C;
  2794. var
  2795. wglGetPixelFormatAttribivEXT: function(hdc: HDC; iPixelFormat: GLint; iLayerPlane: GLint; nAttributes: GLuint; piAttributes: PGLint; piValues: PGLint): BOOL; extdecl;
  2796. wglGetPixelFormatAttribfvEXT: function(hdc: HDC; iPixelFormat: GLint; iLayerPlane: GLint; nAttributes: GLuint; piAttributes: PGLint; pfValues: PGLfloat): BOOL; extdecl;
  2797. wglChoosePixelFormatEXT: function(hdc: HDC; const piAttribIList: PGLint; const pfAttribFList: PGLfloat; nMaxFormats: GLuint; piFormats: PGLint; nNumFormats: PGLuint): BOOL; extdecl;
  2798. function Load_WGL_EXT_pixel_format: Boolean;
  2799. //***** WGL_I3D_digital_video_control *****//
  2800. const
  2801. WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D = $2050;
  2802. WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D = $2051;
  2803. WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D = $2052;
  2804. WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D = $2053;
  2805. var
  2806. wglGetDigitalVideoParametersI3D: function(hDC: HDC; iAttribute: GLint; piValue: PGLint): BOOL; extdecl;
  2807. wglSetDigitalVideoParametersI3D: function(hDC: HDC; iAttribute: GLint; const piValue: PGLint): BOOL; extdecl;
  2808. function Load_WGL_I3D_digital_video_control: Boolean;
  2809. //***** WGL_I3D_gamma *****//
  2810. const
  2811. WGL_GAMMA_TABLE_SIZE_I3D = $204E;
  2812. WGL_GAMMA_EXCLUDE_DESKTOP_I3D = $204F;
  2813. // WGL_GAMMA_EXCLUDE_DESKTOP_I3D { already defined }
  2814. var
  2815. wglGetGammaTableParametersI3D: function(hDC: HDC; iAttribute: GLint; piValue: PGLint): BOOL; extdecl;
  2816. wglSetGammaTableParametersI3D: function(hDC: HDC; iAttribute: GLint; const piValue: PGLint): BOOL; extdecl;
  2817. wglGetGammaTableI3D: function(hDC: HDC; iEntries: GLint; puRed: PGLUSHORT; puGreen: PGLUSHORT; puBlue: PGLUSHORT): BOOL; extdecl;
  2818. wglSetGammaTableI3D: function(hDC: HDC; iEntries: GLint; const puRed: PGLUSHORT; const puGreen: PGLUSHORT; const puBlue: PGLUSHORT): BOOL; extdecl;
  2819. function Load_WGL_I3D_gamma: Boolean;
  2820. //***** WGL_I3D_genlock *****//
  2821. const
  2822. WGL_GENLOCK_SOURCE_MULTIVIEW_I3D = $2044;
  2823. WGL_GENLOCK_SOURCE_EXTERNAL_SYNC_I3D = $2045;
  2824. WGL_GENLOCK_SOURCE_EXTERNAL_FIELD_I3D = $2046;
  2825. WGL_GENLOCK_SOURCE_EXTERNAL_TTL_I3D = $2047;
  2826. WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D = $2048;
  2827. WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D = $2049;
  2828. WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D = $204A;
  2829. WGL_GENLOCK_SOURCE_EDGE_RISING_I3D = $204B;
  2830. WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D = $204C;
  2831. var
  2832. wglEnableGenlockI3D: function(hDC: HDC): BOOL; extdecl;
  2833. wglDisableGenlockI3D: function(hDC: HDC): BOOL; extdecl;
  2834. wglIsEnabledGenlockI3D: function(hDC: HDC; pFlag: PBOOL): BOOL; extdecl;
  2835. wglGenlockSourceI3D: function(hDC: HDC; uSource: GLUINT): BOOL; extdecl;
  2836. wglGetGenlockSourceI3D: function(hDC: HDC; uSource: PGLUINT): BOOL; extdecl;
  2837. wglGenlockSourceEdgeI3D: function(hDC: HDC; uEdge: GLUINT): BOOL; extdecl;
  2838. wglGetGenlockSourceEdgeI3D: function(hDC: HDC; uEdge: PGLUINT): BOOL; extdecl;
  2839. wglGenlockSampleRateI3D: function(hDC: HDC; uRate: GLUINT): BOOL; extdecl;
  2840. wglGetGenlockSampleRateI3D: function(hDC: HDC; uRate: PGLUINT): BOOL; extdecl;
  2841. wglGenlockSourceDelayI3D: function(hDC: HDC; uDelay: GLUINT): BOOL; extdecl;
  2842. wglGetGenlockSourceDelayI3D: function(hDC: HDC; uDelay: PGLUINT): BOOL; extdecl;
  2843. wglQueryGenlockMaxSourceDelayI3D: function(hDC: HDC; uMaxLineDelay: PGLUINT; uMaxPixelDelay: PGLUINT): BOOL; extdecl;
  2844. function Load_WGL_I3D_genlock: Boolean;
  2845. {$ENDIF}
  2846. //***** GL_ARB_matrix_palette *****//
  2847. const
  2848. GL_MATRIX_PALETTE_ARB = $8840;
  2849. GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB = $8841;
  2850. GL_MAX_PALETTE_MATRICES_ARB = $8842;
  2851. GL_CURRENT_PALETTE_MATRIX_ARB = $8843;
  2852. GL_MATRIX_INDEX_ARRAY_ARB = $8844;
  2853. GL_CURRENT_MATRIX_INDEX_ARB = $8845;
  2854. GL_MATRIX_INDEX_ARRAY_SIZE_ARB = $8846;
  2855. GL_MATRIX_INDEX_ARRAY_TYPE_ARB = $8847;
  2856. GL_MATRIX_INDEX_ARRAY_STRIDE_ARB = $8848;
  2857. GL_MATRIX_INDEX_ARRAY_POINTER_ARB = $8849;
  2858. var
  2859. glCurrentPaletteMatrixARB: procedure(index: GLint); extdecl;
  2860. glMatrixIndexubvARB: procedure(size: GLint; indices: PGLubyte); extdecl;
  2861. glMatrixIndexusvARB: procedure(size: GLint; indices: PGLushort); extdecl;
  2862. glMatrixIndexuivARB: procedure(size: GLint; indices: PGLuint); extdecl;
  2863. glMatrixIndexPointerARB: procedure(size: GLint; _type: GLenum; stride: GLsizei; pointer: PGLvoid); extdecl;
  2864. function Load_GL_ARB_matrix_palette: Boolean;
  2865. //***** GL_NV_element_array *****//
  2866. const
  2867. GL_ELEMENT_ARRAY_TYPE_NV = $8769;
  2868. GL_ELEMENT_ARRAY_POINTER_NV = $876A;
  2869. var
  2870. glElementPointerNV: procedure(_type: GLenum; const pointer: PGLvoid); extdecl;
  2871. glDrawElementArrayNV: procedure(mode: GLenum; first: GLint; count: GLsizei); extdecl;
  2872. glDrawRangeElementArrayNV: procedure(mode: GLenum; start: GLuint; _end: GLuint; first: GLint; count: GLsizei); extdecl;
  2873. glMultiDrawElementArrayNV: procedure(mode: GLenum; const first: PGLint; const count: PGLsizei; primcount: GLsizei); extdecl;
  2874. glMultiDrawRangeElementArrayNV: procedure(mode: GLenum; start: GLuint; _end: GLuint; const first: PGLint; const count: PGLsizei; primcount: GLsizei); extdecl;
  2875. function Load_GL_NV_element_array: Boolean;
  2876. //***** GL_NV_float_buffer *****//
  2877. const
  2878. GL_FLOAT_R_NV = $8880;
  2879. GL_FLOAT_RG_NV = $8881;
  2880. GL_FLOAT_RGB_NV = $8882;
  2881. GL_FLOAT_RGBA_NV = $8883;
  2882. GL_FLOAT_R16_NV = $8884;
  2883. GL_FLOAT_R32_NV = $8885;
  2884. GL_FLOAT_RG16_NV = $8886;
  2885. GL_FLOAT_RG32_NV = $8887;
  2886. GL_FLOAT_RGB16_NV = $8888;
  2887. GL_FLOAT_RGB32_NV = $8889;
  2888. GL_FLOAT_RGBA16_NV = $888A;
  2889. GL_FLOAT_RGBA32_NV = $888B;
  2890. GL_TEXTURE_FLOAT_COMPONENTS_NV = $888C;
  2891. GL_FLOAT_CLEAR_COLOR_VALUE_NV = $888D;
  2892. GL_FLOAT_RGBA_MODE_NV = $888E;
  2893. {$IFDEF Windows}
  2894. WGL_FLOAT_COMPONENTS_NV = $20B0;
  2895. WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV = $20B1;
  2896. WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV = $20B2;
  2897. WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV = $20B3;
  2898. WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV = $20B4;
  2899. WGL_TEXTURE_FLOAT_R_NV = $20B5;
  2900. WGL_TEXTURE_FLOAT_RG_NV = $20B6;
  2901. WGL_TEXTURE_FLOAT_RGB_NV = $20B7;
  2902. WGL_TEXTURE_FLOAT_RGBA_NV = $20B8;
  2903. {$ENDIF}
  2904. function Load_GL_NV_float_buffer: Boolean;
  2905. //***** GL_NV_fragment_program *****//
  2906. const
  2907. GL_FRAGMENT_PROGRAM_NV = $8870;
  2908. GL_MAX_TEXTURE_COORDS_NV = $8871;
  2909. GL_MAX_TEXTURE_IMAGE_UNITS_NV = $8872;
  2910. GL_FRAGMENT_PROGRAM_BINDING_NV = $8873;
  2911. GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV = $8868;
  2912. GL_PROGRAM_ERROR_STRING_NV = $8874;
  2913. var
  2914. glProgramNamedParameter4fNV: procedure(id: GLuint; len: GLsizei; const name: PGLubyte; x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); extdecl;
  2915. glProgramNamedParameter4dNV: procedure(id: GLuint; len: GLsizei; const name: PGLubyte; x: GLdouble; y: GLdouble; z: GLdouble; w: GLdouble); extdecl;
  2916. glGetProgramNamedParameterfvNV: procedure(id: GLuint; len: GLsizei; const name: PGLubyte; params: PGLfloat); extdecl;
  2917. glGetProgramNamedParameterdvNV: procedure(id: GLuint; len: GLsizei; const name: PGLubyte; params: PGLdouble); extdecl;
  2918. // glProgramLocalParameter4dARB { already defined }
  2919. // glProgramLocalParameter4dvARB { already defined }
  2920. // glProgramLocalParameter4fARB { already defined }
  2921. // glProgramLocalParameter4fvARB { already defined }
  2922. // glGetProgramLocalParameterdvARB { already defined }
  2923. // glGetProgramLocalParameterfvARB { already defined }
  2924. function Load_GL_NV_fragment_program: Boolean;
  2925. //***** GL_NV_primitive_restart *****//
  2926. const
  2927. GL_PRIMITIVE_RESTART_NV = $8558;
  2928. GL_PRIMITIVE_RESTART_INDEX_NV = $8559;
  2929. var
  2930. glPrimitiveRestartNV: procedure(); extdecl;
  2931. glPrimitiveRestartIndexNV: procedure(index: GLuint); extdecl;
  2932. function Load_GL_NV_primitive_restart: Boolean;
  2933. //***** GL_NV_vertex_program2 *****//
  2934. function Load_GL_NV_vertex_program2: Boolean;
  2935. {$IFDEF Windows}
  2936. //***** WGL_NV_render_texture_rectangle *****//
  2937. const
  2938. WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV = $20A0;
  2939. WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV = $20A1;
  2940. WGL_TEXTURE_RECTANGLE_NV = $20A2;
  2941. function Load_WGL_NV_render_texture_rectangle: Boolean;
  2942. {$ENDIF}
  2943. //***** GL_NV_pixel_data_range *****//
  2944. const
  2945. GL_WRITE_PIXEL_DATA_RANGE_NV = $8878;
  2946. GL_READ_PIXEL_DATA_RANGE_NV = $8879;
  2947. GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV = $887A;
  2948. GL_READ_PIXEL_DATA_RANGE_LENGTH_NV = $887B;
  2949. GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV = $887C;
  2950. GL_READ_PIXEL_DATA_RANGE_POINTER_NV = $887D;
  2951. var
  2952. glPixelDataRangeNV: procedure(target: GLenum; length: GLsizei; pointer: PGLvoid); extdecl;
  2953. glFlushPixelDataRangeNV: procedure(target: GLenum); extdecl;
  2954. // wglAllocateMemoryNV { already defined }
  2955. // wglFreeMemoryNV { already defined }
  2956. function Load_GL_NV_pixel_data_range: Boolean;
  2957. //***** GL_EXT_texture_rectangle *****//
  2958. const
  2959. GL_TEXTURE_RECTANGLE_EXT = $84F5;
  2960. GL_TEXTURE_BINDING_RECTANGLE_EXT = $84F6;
  2961. GL_PROXY_TEXTURE_RECTANGLE_EXT = $84F7;
  2962. GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT = $84F8;
  2963. function Load_GL_EXT_texture_rectangle: Boolean;
  2964. //***** GL_S3_s3tc *****//
  2965. const
  2966. GL_RGB_S3TC = $83A0;
  2967. GL_RGB4_S3TC = $83A1;
  2968. GL_RGBA_S3TC = $83A2;
  2969. GL_RGBA4_S3TC = $83A3;
  2970. function Load_GL_S3_s3tc: Boolean;
  2971. //***** GL_ATI_draw_buffers *****//
  2972. const
  2973. GL_MAX_DRAW_BUFFERS_ATI = $8824;
  2974. GL_DRAW_BUFFER0_ATI = $8825;
  2975. GL_DRAW_BUFFER1_ATI = $8826;
  2976. GL_DRAW_BUFFER2_ATI = $8827;
  2977. GL_DRAW_BUFFER3_ATI = $8828;
  2978. GL_DRAW_BUFFER4_ATI = $8829;
  2979. GL_DRAW_BUFFER5_ATI = $882A;
  2980. GL_DRAW_BUFFER6_ATI = $882B;
  2981. GL_DRAW_BUFFER7_ATI = $882C;
  2982. GL_DRAW_BUFFER8_ATI = $882D;
  2983. GL_DRAW_BUFFER9_ATI = $882E;
  2984. GL_DRAW_BUFFER10_ATI = $882F;
  2985. GL_DRAW_BUFFER11_ATI = $8830;
  2986. GL_DRAW_BUFFER12_ATI = $8831;
  2987. GL_DRAW_BUFFER13_ATI = $8832;
  2988. GL_DRAW_BUFFER14_ATI = $8833;
  2989. GL_DRAW_BUFFER15_ATI = $8834;
  2990. var
  2991. glDrawBuffersATI: procedure(n: GLsizei; const bufs: PGLenum); extdecl;
  2992. function Load_GL_ATI_draw_buffers: Boolean;
  2993. {$IFDEF Windows}
  2994. //***** WGL_ATI_pixel_format_float *****//
  2995. const
  2996. WGL_RGBA_FLOAT_MODE_ATI = $8820;
  2997. WGL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI = $8835;
  2998. WGL_TYPE_RGBA_FLOAT_ATI = $21A0;
  2999. function Load_WGL_ATI_pixel_format_float: Boolean;
  3000. {$ENDIF}
  3001. //***** GL_ATI_texture_env_combine3 *****//
  3002. const
  3003. GL_MODULATE_ADD_ATI = $8744;
  3004. GL_MODULATE_SIGNED_ADD_ATI = $8745;
  3005. GL_MODULATE_SUBTRACT_ATI = $8746;
  3006. function Load_GL_ATI_texture_env_combine3: Boolean;
  3007. //***** GL_ATI_texture_float *****//
  3008. const
  3009. GL_RGBA_FLOAT32_ATI = $8814;
  3010. GL_RGB_FLOAT32_ATI = $8815;
  3011. GL_ALPHA_FLOAT32_ATI = $8816;
  3012. GL_INTENSITY_FLOAT32_ATI = $8817;
  3013. GL_LUMINANCE_FLOAT32_ATI = $8818;
  3014. GL_LUMINANCE_ALPHA_FLOAT32_ATI = $8819;
  3015. GL_RGBA_FLOAT16_ATI = $881A;
  3016. GL_RGB_FLOAT16_ATI = $881B;
  3017. GL_ALPHA_FLOAT16_ATI = $881C;
  3018. GL_INTENSITY_FLOAT16_ATI = $881D;
  3019. GL_LUMINANCE_FLOAT16_ATI = $881E;
  3020. GL_LUMINANCE_ALPHA_FLOAT16_ATI = $881F;
  3021. function Load_GL_ATI_texture_float: Boolean;
  3022. //***** GL_NV_texture_expand_normal *****//
  3023. const
  3024. GL_TEXTURE_UNSIGNED_REMAP_MODE_NV = $888F;
  3025. function Load_GL_NV_texture_expand_normal: Boolean;
  3026. //***** GL_NV_half_float *****//
  3027. const
  3028. GL_HALF_FLOAT_NV = $140B;
  3029. var
  3030. glVertex2hNV: procedure(x: GLushort; y: GLushort); extdecl;
  3031. glVertex2hvNV: procedure(const v: PGLushort); extdecl;
  3032. glVertex3hNV: procedure(x: GLushort; y: GLushort; z: GLushort); extdecl;
  3033. glVertex3hvNV: procedure(const v: PGLushort); extdecl;
  3034. glVertex4hNV: procedure(x: GLushort; y: GLushort; z: GLushort; w: GLushort); extdecl;
  3035. glVertex4hvNV: procedure(const v: PGLushort); extdecl;
  3036. glNormal3hNV: procedure(nx: GLushort; ny: GLushort; nz: GLushort); extdecl;
  3037. glNormal3hvNV: procedure(const v: PGLushort); extdecl;
  3038. glColor3hNV: procedure(red: GLushort; green: GLushort; blue: GLushort); extdecl;
  3039. glColor3hvNV: procedure(const v: PGLushort); extdecl;
  3040. glColor4hNV: procedure(red: GLushort; green: GLushort; blue: GLushort; alpha: GLushort); extdecl;
  3041. glColor4hvNV: procedure(const v: PGLushort); extdecl;
  3042. glTexCoord1hNV: procedure(s: GLushort); extdecl;
  3043. glTexCoord1hvNV: procedure(const v: PGLushort); extdecl;
  3044. glTexCoord2hNV: procedure(s: GLushort; t: GLushort); extdecl;
  3045. glTexCoord2hvNV: procedure(const v: PGLushort); extdecl;
  3046. glTexCoord3hNV: procedure(s: GLushort; t: GLushort; r: GLushort); extdecl;
  3047. glTexCoord3hvNV: procedure(const v: PGLushort); extdecl;
  3048. glTexCoord4hNV: procedure(s: GLushort; t: GLushort; r: GLushort; q: GLushort); extdecl;
  3049. glTexCoord4hvNV: procedure(const v: PGLushort); extdecl;
  3050. glMultiTexCoord1hNV: procedure(target: GLenum; s: GLushort); extdecl;
  3051. glMultiTexCoord1hvNV: procedure(target: GLenum; const v: PGLushort); extdecl;
  3052. glMultiTexCoord2hNV: procedure(target: GLenum; s: GLushort; t: GLushort); extdecl;
  3053. glMultiTexCoord2hvNV: procedure(target: GLenum; const v: PGLushort); extdecl;
  3054. glMultiTexCoord3hNV: procedure(target: GLenum; s: GLushort; t: GLushort; r: GLushort); extdecl;
  3055. glMultiTexCoord3hvNV: procedure(target: GLenum; const v: PGLushort); extdecl;
  3056. glMultiTexCoord4hNV: procedure(target: GLenum; s: GLushort; t: GLushort; r: GLushort; q: GLushort); extdecl;
  3057. glMultiTexCoord4hvNV: procedure(target: GLenum; const v: PGLushort); extdecl;
  3058. glFogCoordhNV: procedure(fog: GLushort); extdecl;
  3059. glFogCoordhvNV: procedure(const fog: PGLushort); extdecl;
  3060. glSecondaryColor3hNV: procedure(red: GLushort; green: GLushort; blue: GLushort); extdecl;
  3061. glSecondaryColor3hvNV: procedure(const v: PGLushort); extdecl;
  3062. glVertexWeighthNV: procedure(weight: GLushort); extdecl;
  3063. glVertexWeighthvNV: procedure(const weight: PGLushort); extdecl;
  3064. glVertexAttrib1hNV: procedure(index: GLuint; x: GLushort); extdecl;
  3065. glVertexAttrib1hvNV: procedure(index: GLuint; const v: PGLushort); extdecl;
  3066. glVertexAttrib2hNV: procedure(index: GLuint; x: GLushort; y: GLushort); extdecl;
  3067. glVertexAttrib2hvNV: procedure(index: GLuint; const v: PGLushort); extdecl;
  3068. glVertexAttrib3hNV: procedure(index: GLuint; x: GLushort; y: GLushort; z: GLushort); extdecl;
  3069. glVertexAttrib3hvNV: procedure(index: GLuint; const v: PGLushort); extdecl;
  3070. glVertexAttrib4hNV: procedure(index: GLuint; x: GLushort; y: GLushort; z: GLushort; w: GLushort); extdecl;
  3071. glVertexAttrib4hvNV: procedure(index: GLuint; const v: PGLushort); extdecl;
  3072. glVertexAttribs1hvNV: procedure(index: GLuint; n: GLsizei; const v: PGLushort); extdecl;
  3073. glVertexAttribs2hvNV: procedure(index: GLuint; n: GLsizei; const v: PGLushort); extdecl;
  3074. glVertexAttribs3hvNV: procedure(index: GLuint; n: GLsizei; const v: PGLushort); extdecl;
  3075. glVertexAttribs4hvNV: procedure(index: GLuint; n: GLsizei; const v: PGLushort); extdecl;
  3076. function Load_GL_NV_half_float: Boolean;
  3077. //***** GL_ATI_map_object_buffer *****//
  3078. var
  3079. glMapObjectBufferATI: function(buffer: GLuint): PGLvoid; extdecl;
  3080. glUnmapObjectBufferATI: procedure(buffer: GLuint); extdecl;
  3081. function Load_GL_ATI_map_object_buffer: Boolean;
  3082. //***** GL_ATI_separate_stencil *****//
  3083. const
  3084. GL_KEEP = $1E00;
  3085. GL_ZERO = $0000;
  3086. GL_REPLACE = $1E01;
  3087. GL_INCR = $1E02;
  3088. GL_DECR = $1E03;
  3089. GL_INVERT = $150A;
  3090. GL_NEVER = $0200;
  3091. GL_LESS = $0201;
  3092. GL_LEQUAL = $0203;
  3093. GL_GREATER = $0204;
  3094. GL_GEQUAL = $0206;
  3095. GL_EQUAL = $0202;
  3096. GL_NOTEQUAL = $0205;
  3097. GL_ALWAYS = $0207;
  3098. GL_FRONT = $0404;
  3099. GL_BACK = $0405;
  3100. GL_FRONT_AND_BACK = $0408;
  3101. GL_STENCIL_BACK_FUNC_ATI = $8800;
  3102. GL_STENCIL_BACK_FAIL_ATI = $8801;
  3103. GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI = $8802;
  3104. GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI = $8803;
  3105. var
  3106. glStencilOpSeparateATI: procedure(face: GLenum; sfail: GLenum; dpfail: GLenum; dppass: GLenum); extdecl;
  3107. glStencilFuncSeparateATI: procedure(frontfunc: GLenum; backfunc: GLenum; ref: GLint; mask: GLuint); extdecl;
  3108. function Load_GL_ATI_separate_stencil: Boolean;
  3109. //***** GL_ATI_vertex_attrib_array_object *****//
  3110. var
  3111. glVertexAttribArrayObjectATI: procedure(index: GLuint; size: GLint; _type: GLenum; normalized: GLboolean; stride: GLsizei; buffer: GLuint; offset: GLuint); extdecl;
  3112. glGetVertexAttribArrayObjectfvATI: procedure(index: GLuint; pname: GLenum; params: PGLfloat); extdecl;
  3113. glGetVertexAttribArrayObjectivATI: procedure(index: GLuint; pname: GLenum; params: PGLint); extdecl;
  3114. function Load_GL_ATI_vertex_attrib_array_object: Boolean;
  3115. //***** GL_ARB_occlusion_query *****//
  3116. const
  3117. GL_SAMPLES_PASSED_ARB = $8914;
  3118. GL_QUERY_COUNTER_BITS_ARB = $8864;
  3119. GL_CURRENT_QUERY_ARB = $8865;
  3120. GL_QUERY_RESULT_ARB = $8866;
  3121. GL_QUERY_RESULT_AVAILABLE_ARB = $8867;
  3122. var
  3123. glGenQueriesARB: procedure(n: GLsizei; ids: PGLuint); extdecl;
  3124. glDeleteQueriesARB: procedure(n: GLsizei; const ids: PGLuint); extdecl;
  3125. glIsQueryARB: function(id: GLuint): GLboolean; extdecl;
  3126. glBeginQueryARB: procedure(target: GLenum; id: GLuint); extdecl;
  3127. glEndQueryARB: procedure(target: GLenum); extdecl;
  3128. glGetQueryivARB: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  3129. glGetQueryObjectivARB: procedure(id: GLuint; pname: GLenum; params: PGLint); extdecl;
  3130. glGetQueryObjectuivARB: procedure(id: GLuint; pname: GLenum; params: PGLuint); extdecl;
  3131. function Load_GL_ARB_occlusion_query: Boolean;
  3132. //***** GL_ARB_shader_objects *****//
  3133. const
  3134. GL_PROGRAM_OBJECT_ARB = $8B40;
  3135. GL_OBJECT_TYPE_ARB = $8B4E;
  3136. GL_OBJECT_SUBTYPE_ARB = $8B4F;
  3137. GL_OBJECT_DELETE_STATUS_ARB = $8B80;
  3138. GL_OBJECT_COMPILE_STATUS_ARB = $8B81;
  3139. GL_OBJECT_LINK_STATUS_ARB = $8B82;
  3140. GL_OBJECT_VALIDATE_STATUS_ARB = $8B83;
  3141. GL_OBJECT_INFO_LOG_LENGTH_ARB = $8B84;
  3142. GL_OBJECT_ATTACHED_OBJECTS_ARB = $8B85;
  3143. GL_OBJECT_ACTIVE_UNIFORMS_ARB = $8B86;
  3144. GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB = $8B87;
  3145. GL_OBJECT_SHADER_SOURCE_LENGTH_ARB = $8B88;
  3146. GL_SHADER_OBJECT_ARB = $8B48;
  3147. GL_FLOAT = $1406;
  3148. GL_FLOAT_VEC2_ARB = $8B50;
  3149. GL_FLOAT_VEC3_ARB = $8B51;
  3150. GL_FLOAT_VEC4_ARB = $8B52;
  3151. GL_INT = $1404;
  3152. GL_INT_VEC2_ARB = $8B53;
  3153. GL_INT_VEC3_ARB = $8B54;
  3154. GL_INT_VEC4_ARB = $8B55;
  3155. GL_BOOL_ARB = $8B56;
  3156. GL_BOOL_VEC2_ARB = $8B57;
  3157. GL_BOOL_VEC3_ARB = $8B58;
  3158. GL_BOOL_VEC4_ARB = $8B59;
  3159. GL_FLOAT_MAT2_ARB = $8B5A;
  3160. GL_FLOAT_MAT3_ARB = $8B5B;
  3161. GL_FLOAT_MAT4_ARB = $8B5C;
  3162. var
  3163. glDeleteObjectARB: procedure(obj: GLhandleARB); extdecl;
  3164. glGetHandleARB: function(pname: GLenum): GLhandleARB; extdecl;
  3165. glDetachObjectARB: procedure(containerObj: GLhandleARB; attachedObj: GLhandleARB); extdecl;
  3166. glCreateShaderObjectARB: function(shaderType: GLenum): GLhandleARB; extdecl;
  3167. glShaderSourceARB: procedure(shaderObj: GLhandleARB; count: GLsizei; const _string: PGLvoid; const length: PGLint); extdecl;
  3168. glCompileShaderARB: procedure(shaderObj: GLhandleARB); extdecl;
  3169. glCreateProgramObjectARB: function(): GLhandleARB; extdecl;
  3170. glAttachObjectARB: procedure(containerObj: GLhandleARB; obj: GLhandleARB); extdecl;
  3171. glLinkProgramARB: procedure(programObj: GLhandleARB); extdecl;
  3172. glUseProgramObjectARB: procedure(programObj: GLhandleARB); extdecl;
  3173. glValidateProgramARB: procedure(programObj: GLhandleARB); extdecl;
  3174. glUniform1fARB: procedure(location: GLint; v0: GLfloat); extdecl;
  3175. glUniform2fARB: procedure(location: GLint; v0: GLfloat; v1: GLfloat); extdecl;
  3176. glUniform3fARB: procedure(location: GLint; v0: GLfloat; v1: GLfloat; v2: GLfloat); extdecl;
  3177. glUniform4fARB: procedure(location: GLint; v0: GLfloat; v1: GLfloat; v2: GLfloat; v3: GLfloat); extdecl;
  3178. glUniform1iARB: procedure(location: GLint; v0: GLint); extdecl;
  3179. glUniform2iARB: procedure(location: GLint; v0: GLint; v1: GLint); extdecl;
  3180. glUniform3iARB: procedure(location: GLint; v0: GLint; v1: GLint; v2: GLint); extdecl;
  3181. glUniform4iARB: procedure(location: GLint; v0: GLint; v1: GLint; v2: GLint; v3: GLint); extdecl;
  3182. glUniform1fvARB: procedure(location: GLint; count: GLsizei; value: PGLfloat); extdecl;
  3183. glUniform2fvARB: procedure(location: GLint; count: GLsizei; value: PGLfloat); extdecl;
  3184. glUniform3fvARB: procedure(location: GLint; count: GLsizei; value: PGLfloat); extdecl;
  3185. glUniform4fvARB: procedure(location: GLint; count: GLsizei; value: PGLfloat); extdecl;
  3186. glUniform1ivARB: procedure(location: GLint; count: GLsizei; value: PGLint); extdecl;
  3187. glUniform2ivARB: procedure(location: GLint; count: GLsizei; value: PGLint); extdecl;
  3188. glUniform3ivARB: procedure(location: GLint; count: GLsizei; value: PGLint); extdecl;
  3189. glUniform4ivARB: procedure(location: GLint; count: GLsizei; value: PGLint); extdecl;
  3190. glUniformMatrix2fvARB: procedure(location: GLint; count: GLsizei; transpose: GLboolean; value: PGLfloat); extdecl;
  3191. glUniformMatrix3fvARB: procedure(location: GLint; count: GLsizei; transpose: GLboolean; value: PGLfloat); extdecl;
  3192. glUniformMatrix4fvARB: procedure(location: GLint; count: GLsizei; transpose: GLboolean; value: PGLfloat); extdecl;
  3193. glGetObjectParameterfvARB: procedure(obj: GLhandleARB; pname: GLenum; params: PGLfloat); extdecl;
  3194. glGetObjectParameterivARB: procedure(obj: GLhandleARB; pname: GLenum; params: PGLint); extdecl;
  3195. glGetInfoLogARB: procedure(obj: GLhandleARB; maxLength: GLsizei; length: PGLsizei; infoLog: PGLcharARB); extdecl;
  3196. glGetAttachedObjectsARB: procedure(containerObj: GLhandleARB; maxCount: GLsizei; count: PGLsizei; obj: PGLhandleARB); extdecl;
  3197. glGetUniformLocationARB: function(programObj: GLhandleARB; const name: PGLcharARB): GLint; extdecl;
  3198. glGetActiveUniformARB: procedure(programObj: GLhandleARB; index: GLuint; maxLength: GLsizei; length: PGLsizei; size: PGLint; _type: PGLenum; name: PGLcharARB); extdecl;
  3199. glGetUniformfvARB: procedure(programObj: GLhandleARB; location: GLint; params: PGLfloat); extdecl;
  3200. glGetUniformivARB: procedure(programObj: GLhandleARB; location: GLint; params: PGLint); extdecl;
  3201. glGetShaderSourceARB: procedure(obj: GLhandleARB; maxLength: GLsizei; length: PGLsizei; source: PGLcharARB); extdecl;
  3202. function Load_GL_ARB_shader_objects: Boolean;
  3203. //***** GL_ARB_vertex_shader *****//
  3204. const
  3205. GL_VERTEX_SHADER_ARB = $8B31;
  3206. GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB = $8B4A;
  3207. GL_MAX_VARYING_FLOATS_ARB = $8B4B;
  3208. // GL_MAX_VERTEX_ATTRIBS_ARB { already defined }
  3209. // GL_MAX_TEXTURE_IMAGE_UNITS_ARB { already defined }
  3210. GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB = $8B4C;
  3211. GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB = $8B4D;
  3212. // GL_MAX_TEXTURE_COORDS_ARB { already defined }
  3213. // GL_VERTEX_PROGRAM_POINT_SIZE_ARB { already defined }
  3214. // GL_VERTEX_PROGRAM_TWO_SIDE_ARB { already defined }
  3215. // GL_OBJECT_TYPE_ARB { already defined }
  3216. // GL_OBJECT_SUBTYPE_ARB { already defined }
  3217. GL_OBJECT_ACTIVE_ATTRIBUTES_ARB = $8B89;
  3218. GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB = $8B8A;
  3219. // GL_SHADER_OBJECT_ARB { already defined }
  3220. // GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB { already defined }
  3221. // GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB { already defined }
  3222. // GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB { already defined }
  3223. // GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB { already defined }
  3224. // GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB { already defined }
  3225. // GL_CURRENT_VERTEX_ATTRIB_ARB { already defined }
  3226. // GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB { already defined }
  3227. // GL_FLOAT { already defined }
  3228. // GL_FLOAT_VEC2_ARB { already defined }
  3229. // GL_FLOAT_VEC3_ARB { already defined }
  3230. // GL_FLOAT_VEC4_ARB { already defined }
  3231. // GL_FLOAT_MAT2_ARB { already defined }
  3232. // GL_FLOAT_MAT3_ARB { already defined }
  3233. // GL_FLOAT_MAT4_ARB { already defined }
  3234. // glVertexAttrib1fARB { already defined }
  3235. // glVertexAttrib1sARB { already defined }
  3236. // glVertexAttrib1dARB { already defined }
  3237. // glVertexAttrib2fARB { already defined }
  3238. // glVertexAttrib2sARB { already defined }
  3239. // glVertexAttrib2dARB { already defined }
  3240. // glVertexAttrib3fARB { already defined }
  3241. // glVertexAttrib3sARB { already defined }
  3242. // glVertexAttrib3dARB { already defined }
  3243. // glVertexAttrib4fARB { already defined }
  3244. // glVertexAttrib4sARB { already defined }
  3245. // glVertexAttrib4dARB { already defined }
  3246. // glVertexAttrib4NubARB { already defined }
  3247. // glVertexAttrib1fvARB { already defined }
  3248. // glVertexAttrib1svARB { already defined }
  3249. // glVertexAttrib1dvARB { already defined }
  3250. // glVertexAttrib2fvARB { already defined }
  3251. // glVertexAttrib2svARB { already defined }
  3252. // glVertexAttrib2dvARB { already defined }
  3253. // glVertexAttrib3fvARB { already defined }
  3254. // glVertexAttrib3svARB { already defined }
  3255. // glVertexAttrib3dvARB { already defined }
  3256. // glVertexAttrib4fvARB { already defined }
  3257. // glVertexAttrib4svARB { already defined }
  3258. // glVertexAttrib4dvARB { already defined }
  3259. // glVertexAttrib4ivARB { already defined }
  3260. // glVertexAttrib4bvARB { already defined }
  3261. // glVertexAttrib4ubvARB { already defined }
  3262. // glVertexAttrib4usvARB { already defined }
  3263. // glVertexAttrib4uivARB { already defined }
  3264. // glVertexAttrib4NbvARB { already defined }
  3265. // glVertexAttrib4NsvARB { already defined }
  3266. // glVertexAttrib4NivARB { already defined }
  3267. // glVertexAttrib4NubvARB { already defined }
  3268. // glVertexAttrib4NusvARB { already defined }
  3269. // glVertexAttrib4NuivARB { already defined }
  3270. // glVertexAttribPointerARB { already defined }
  3271. // glEnableVertexAttribArrayARB { already defined }
  3272. // glDisableVertexAttribArrayARB { already defined }
  3273. var
  3274. glBindAttribLocationARB: procedure(programObj: GLhandleARB; index: GLuint; const name: PGLcharARB); extdecl;
  3275. glGetActiveAttribARB: procedure(programObj: GLhandleARB; index: GLuint; maxLength: GLsizei; length: PGLsizei; size: PGLint; _type: PGLenum; name: PGLcharARB); extdecl;
  3276. glGetAttribLocationARB: function(programObj: GLhandleARB; const name: PGLcharARB): GLint; extdecl;
  3277. // glGetVertexAttribdvARB { already defined }
  3278. // glGetVertexAttribfvARB { already defined }
  3279. // glGetVertexAttribivARB { already defined }
  3280. // glGetVertexAttribPointervARB { already defined }
  3281. function Load_GL_ARB_vertex_shader: Boolean;
  3282. //***** GL_ARB_fragment_shader *****//
  3283. const
  3284. GL_FRAGMENT_SHADER_ARB = $8B30;
  3285. GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB = $8B49;
  3286. // GL_MAX_TEXTURE_COORDS_ARB { already defined }
  3287. // GL_MAX_TEXTURE_IMAGE_UNITS_ARB { already defined }
  3288. // GL_OBJECT_TYPE_ARB { already defined }
  3289. // GL_OBJECT_SUBTYPE_ARB { already defined }
  3290. // GL_SHADER_OBJECT_ARB { already defined }
  3291. function Load_GL_ARB_fragment_shader: Boolean;
  3292. //***** GL_ARB_shading_language_100 *****//
  3293. function Load_GL_ARB_shading_language_100: Boolean;
  3294. //***** GL_ARB_texture_non_power_of_two *****//
  3295. function Load_GL_ARB_texture_non_power_of_two: Boolean;
  3296. //***** GL_ARB_point_sprite *****//
  3297. const
  3298. GL_POINT_SPRITE_ARB = $8861;
  3299. GL_COORD_REPLACE_ARB = $8862;
  3300. function Load_GL_ARB_point_sprite: Boolean;
  3301. //***** GL_EXT_depth_bounds_test *****//
  3302. const
  3303. GL_DEPTH_BOUNDS_TEST_EXT = $8890;
  3304. GL_DEPTH_BOUNDS_EXT = $8891;
  3305. var
  3306. glDepthBoundsEXT: procedure(zmin: GLclampd; zmax: GLclampd); extdecl;
  3307. function Load_GL_EXT_depth_bounds_test: Boolean;
  3308. //***** GL_EXT_texture_mirror_clamp *****//
  3309. const
  3310. GL_MIRROR_CLAMP_EXT = $8742;
  3311. GL_MIRROR_CLAMP_TO_EDGE_EXT = $8743;
  3312. GL_MIRROR_CLAMP_TO_BORDER_EXT = $8912;
  3313. function Load_GL_EXT_texture_mirror_clamp: Boolean;
  3314. //***** GL_EXT_blend_equation_separate *****//
  3315. const
  3316. GL_BLEND_EQUATION_RGB_EXT = $8009;
  3317. GL_BLEND_EQUATION_ALPHA_EXT = $883D;
  3318. var
  3319. glBlendEquationSeparateEXT: procedure(modeRGB: GLenum; modeAlpha: GLenum); extdecl;
  3320. function Load_GL_EXT_blend_equation_separate: Boolean;
  3321. //***** GL_MESA_pack_invert *****//
  3322. const
  3323. GL_PACK_INVERT_MESA = $8758;
  3324. function Load_GL_MESA_pack_invert: Boolean;
  3325. //***** GL_MESA_ycbcr_texture *****//
  3326. const
  3327. GL_YCBCR_MESA = $8757;
  3328. GL_UNSIGNED_SHORT_8_8_MESA = $85BA;
  3329. GL_UNSIGNED_SHORT_8_8_REV_MESA = $85BB;
  3330. function Load_GL_MESA_ycbcr_texture: Boolean;
  3331. //***** GL_ARB_fragment_program_shadow *****//
  3332. function Load_GL_ARB_fragment_program_shadow: Boolean;
  3333. //***** GL_NV_fragment_program_option *****//
  3334. function Load_GL_NV_fragment_program_option: Boolean;
  3335. //***** GL_EXT_pixel_buffer_object *****//
  3336. const
  3337. GL_PIXEL_PACK_BUFFER_EXT = $88EB;
  3338. GL_PIXEL_UNPACK_BUFFER_EXT = $88EC;
  3339. GL_PIXEL_PACK_BUFFER_BINDING_EXT = $88ED;
  3340. GL_PIXEL_UNPACK_BUFFER_BINDING_EXT = $88EF;
  3341. function Load_GL_EXT_pixel_buffer_object: Boolean;
  3342. //***** GL_NV_fragment_program2 *****//
  3343. const
  3344. GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV = $88F4;
  3345. GL_MAX_PROGRAM_CALL_DEPTH_NV = $88F5;
  3346. GL_MAX_PROGRAM_IF_DEPTH_NV = $88F6;
  3347. GL_MAX_PROGRAM_LOOP_DEPTH_NV = $88F7;
  3348. GL_MAX_PROGRAM_LOOP_COUNT_NV = $88F8;
  3349. function Load_GL_NV_fragment_program2: Boolean;
  3350. //***** GL_NV_vertex_program2_option *****//
  3351. // GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV { already defined }
  3352. // GL_MAX_PROGRAM_CALL_DEPTH_NV { already defined }
  3353. function Load_GL_NV_vertex_program2_option: Boolean;
  3354. //***** GL_NV_vertex_program3 *****//
  3355. // GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB { already defined }
  3356. function Load_GL_NV_vertex_program3: Boolean;
  3357. //***** GL_ARB_draw_buffers *****//
  3358. const
  3359. GL_MAX_DRAW_BUFFERS_ARB = $8824;
  3360. GL_DRAW_BUFFER0_ARB = $8825;
  3361. GL_DRAW_BUFFER1_ARB = $8826;
  3362. GL_DRAW_BUFFER2_ARB = $8827;
  3363. GL_DRAW_BUFFER3_ARB = $8828;
  3364. GL_DRAW_BUFFER4_ARB = $8829;
  3365. GL_DRAW_BUFFER5_ARB = $882A;
  3366. GL_DRAW_BUFFER6_ARB = $882B;
  3367. GL_DRAW_BUFFER7_ARB = $882C;
  3368. GL_DRAW_BUFFER8_ARB = $882D;
  3369. GL_DRAW_BUFFER9_ARB = $882E;
  3370. GL_DRAW_BUFFER10_ARB = $882F;
  3371. GL_DRAW_BUFFER11_ARB = $8830;
  3372. GL_DRAW_BUFFER12_ARB = $8831;
  3373. GL_DRAW_BUFFER13_ARB = $8832;
  3374. GL_DRAW_BUFFER14_ARB = $8833;
  3375. GL_DRAW_BUFFER15_ARB = $8834;
  3376. var
  3377. glDrawBuffersARB: procedure(n: GLsizei; const bufs: PGLenum); extdecl;
  3378. function Load_GL_ARB_draw_buffers: Boolean;
  3379. //***** GL_ARB_texture_rectangle *****//
  3380. const
  3381. GL_TEXTURE_RECTANGLE_ARB = $84F5;
  3382. GL_TEXTURE_BINDING_RECTANGLE_ARB = $84F6;
  3383. GL_PROXY_TEXTURE_RECTANGLE_ARB = $84F7;
  3384. GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB = $84F8;
  3385. function Load_GL_ARB_texture_rectangle: Boolean;
  3386. //***** GL_ARB_color_buffer_float *****//
  3387. const
  3388. GL_RGBA_FLOAT_MODE_ARB = $8820;
  3389. GL_CLAMP_VERTEX_COLOR_ARB = $891A;
  3390. GL_CLAMP_FRAGMENT_COLOR_ARB = $891B;
  3391. GL_CLAMP_READ_COLOR_ARB = $891C;
  3392. GL_FIXED_ONLY_ARB = $891D;
  3393. WGL_TYPE_RGBA_FLOAT_ARB = $21A0;
  3394. var
  3395. glClampColorARB: procedure(target: GLenum; clamp: GLenum); extdecl;
  3396. function Load_GL_ARB_color_buffer_float: Boolean;
  3397. //***** GL_ARB_half_float_pixel *****//
  3398. const
  3399. GL_HALF_FLOAT_ARB = $140B;
  3400. function Load_GL_ARB_half_float_pixel: Boolean;
  3401. //***** GL_ARB_texture_float *****//
  3402. const
  3403. GL_TEXTURE_RED_TYPE_ARB = $8C10;
  3404. GL_TEXTURE_GREEN_TYPE_ARB = $8C11;
  3405. GL_TEXTURE_BLUE_TYPE_ARB = $8C12;
  3406. GL_TEXTURE_ALPHA_TYPE_ARB = $8C13;
  3407. GL_TEXTURE_LUMINANCE_TYPE_ARB = $8C14;
  3408. GL_TEXTURE_INTENSITY_TYPE_ARB = $8C15;
  3409. GL_TEXTURE_DEPTH_TYPE_ARB = $8C16;
  3410. GL_UNSIGNED_NORMALIZED_ARB = $8C17;
  3411. GL_RGBA32F_ARB = $8814;
  3412. GL_RGB32F_ARB = $8815;
  3413. GL_ALPHA32F_ARB = $8816;
  3414. GL_INTENSITY32F_ARB = $8817;
  3415. GL_LUMINANCE32F_ARB = $8818;
  3416. GL_LUMINANCE_ALPHA32F_ARB = $8819;
  3417. GL_RGBA16F_ARB = $881A;
  3418. GL_RGB16F_ARB = $881B;
  3419. GL_ALPHA16F_ARB = $881C;
  3420. GL_INTENSITY16F_ARB = $881D;
  3421. GL_LUMINANCE16F_ARB = $881E;
  3422. GL_LUMINANCE_ALPHA16F_ARB = $881F;
  3423. function Load_GL_ARB_texture_float: Boolean;
  3424. //***** GL_EXT_texture_compression_dxt1 *****//
  3425. // GL_COMPRESSED_RGB_S3TC_DXT1_EXT { already defined }
  3426. // GL_COMPRESSED_RGBA_S3TC_DXT1_EXT { already defined }
  3427. function Load_GL_EXT_texture_compression_dxt1: Boolean;
  3428. //***** GL_ARB_pixel_buffer_object *****//
  3429. const
  3430. GL_PIXEL_PACK_BUFFER_ARB = $88EB;
  3431. GL_PIXEL_UNPACK_BUFFER_ARB = $88EC;
  3432. GL_PIXEL_PACK_BUFFER_BINDING_ARB = $88ED;
  3433. GL_PIXEL_UNPACK_BUFFER_BINDING_ARB = $88EF;
  3434. function Load_GL_ARB_pixel_buffer_object: Boolean;
  3435. //***** GL_EXT_framebuffer_object *****//
  3436. const
  3437. GL_FRAMEBUFFER_EXT = $8D40;
  3438. GL_RENDERBUFFER_EXT = $8D41;
  3439. GL_STENCIL_INDEX_EXT = $8D45;
  3440. GL_STENCIL_INDEX1_EXT = $8D46;
  3441. GL_STENCIL_INDEX4_EXT = $8D47;
  3442. GL_STENCIL_INDEX8_EXT = $8D48;
  3443. GL_STENCIL_INDEX16_EXT = $8D49;
  3444. GL_RENDERBUFFER_WIDTH_EXT = $8D42;
  3445. GL_RENDERBUFFER_HEIGHT_EXT = $8D43;
  3446. GL_RENDERBUFFER_INTERNAL_FORMAT_EXT = $8D44;
  3447. GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT = $8CD0;
  3448. GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT = $8CD1;
  3449. GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT = $8CD2;
  3450. GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT = $8CD3;
  3451. GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT = $8CD4;
  3452. GL_COLOR_ATTACHMENT0_EXT = $8CE0;
  3453. GL_COLOR_ATTACHMENT1_EXT = $8CE1;
  3454. GL_COLOR_ATTACHMENT2_EXT = $8CE2;
  3455. GL_COLOR_ATTACHMENT3_EXT = $8CE3;
  3456. GL_COLOR_ATTACHMENT4_EXT = $8CE4;
  3457. GL_COLOR_ATTACHMENT5_EXT = $8CE5;
  3458. GL_COLOR_ATTACHMENT6_EXT = $8CE6;
  3459. GL_COLOR_ATTACHMENT7_EXT = $8CE7;
  3460. GL_COLOR_ATTACHMENT8_EXT = $8CE8;
  3461. GL_COLOR_ATTACHMENT9_EXT = $8CE9;
  3462. GL_COLOR_ATTACHMENT10_EXT = $8CEA;
  3463. GL_COLOR_ATTACHMENT11_EXT = $8CEB;
  3464. GL_COLOR_ATTACHMENT12_EXT = $8CEC;
  3465. GL_COLOR_ATTACHMENT13_EXT = $8CED;
  3466. GL_COLOR_ATTACHMENT14_EXT = $8CEE;
  3467. GL_COLOR_ATTACHMENT15_EXT = $8CEF;
  3468. GL_DEPTH_ATTACHMENT_EXT = $8D00;
  3469. GL_STENCIL_ATTACHMENT_EXT = $8D20;
  3470. GL_FRAMEBUFFER_COMPLETE_EXT = $8CD5;
  3471. GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT = $8CD6;
  3472. GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT = $8CD7;
  3473. GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT = $8CD8;
  3474. GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT = $8CD9;
  3475. GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT = $8CDA;
  3476. GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT = $8CDB;
  3477. GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT = $8CDC;
  3478. GL_FRAMEBUFFER_UNSUPPORTED_EXT = $8CDD;
  3479. GL_FRAMEBUFFER_STATUS_ERROR_EXT = $8CDE;
  3480. GL_FRAMEBUFFER_BINDING_EXT = $8CA6;
  3481. GL_RENDERBUFFER_BINDING_EXT = $8CA7;
  3482. GL_MAX_COLOR_ATTACHMENTS_EXT = $8CDF;
  3483. GL_MAX_RENDERBUFFER_SIZE_EXT = $84E8;
  3484. GL_INVALID_FRAMEBUFFER_OPERATION_EXT = $0506;
  3485. var
  3486. glIsRenderbufferEXT: function(renderbuffer: GLuint): GLboolean; extdecl;
  3487. glBindRenderbufferEXT: procedure(target: GLenum; renderbuffer: GLuint); extdecl;
  3488. glDeleteRenderbuffersEXT: procedure(n: GLsizei; const renderbuffers: PGLuint); extdecl;
  3489. glGenRenderbuffersEXT: procedure(n: GLsizei; renderbuffers: PGLuint); extdecl;
  3490. glRenderbufferStorageEXT: procedure(target: GLenum; internalformat: GLenum; width: GLsizei; height: GLsizei); extdecl;
  3491. glGetRenderbufferParameterivEXT: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  3492. glIsFramebufferEXT: function(framebuffer: GLuint): GLboolean; extdecl;
  3493. glBindFramebufferEXT: procedure(target: GLenum; framebuffer: GLuint); extdecl;
  3494. glDeleteFramebuffersEXT: procedure(n: GLsizei; const framebuffers: PGLuint); extdecl;
  3495. glGenFramebuffersEXT: procedure(n: GLsizei; framebuffers: PGLuint); extdecl;
  3496. glCheckFramebufferStatusEXT: function(target: GLenum): GLenum; extdecl;
  3497. glFramebufferTexture1DEXT: procedure(target: GLenum; attachment: GLenum; textarget: GLenum; texture: GLuint; level: GLint); extdecl;
  3498. glFramebufferTexture2DEXT: procedure(target: GLenum; attachment: GLenum; textarget: GLenum; texture: GLuint; level: GLint); extdecl;
  3499. glFramebufferTexture3DEXT: procedure(target: GLenum; attachment: GLenum; textarget: GLenum; texture: GLuint; level: GLint; zoffset: GLint); extdecl;
  3500. glFramebufferRenderbufferEXT: procedure(target: GLenum; attachment: GLenum; renderbuffertarget: GLenum; renderbuffer: GLuint); extdecl;
  3501. glGetFramebufferAttachmentParameterivEXT: procedure(target: GLenum; attachment: GLenum; pname: GLenum; params: PGLint); extdecl;
  3502. glGenerateMipmapEXT: procedure(target: GLenum); extdecl;
  3503. function Load_GL_EXT_framebuffer_object: Boolean;
  3504. //***** GL_version_1_4 *****//
  3505. const
  3506. GL_BLEND_DST_RGB = $80C8;
  3507. GL_BLEND_SRC_RGB = $80C9;
  3508. GL_BLEND_DST_ALPHA = $80CA;
  3509. GL_BLEND_SRC_ALPHA = $80CB;
  3510. GL_POINT_SIZE_MIN = $8126;
  3511. GL_POINT_SIZE_MAX = $8127;
  3512. GL_POINT_FADE_THRESHOLD_SIZE = $8128;
  3513. GL_POINT_DISTANCE_ATTENUATION = $8129;
  3514. GL_GENERATE_MIPMAP = $8191;
  3515. GL_GENERATE_MIPMAP_HINT = $8192;
  3516. GL_DEPTH_COMPONENT16 = $81A5;
  3517. GL_DEPTH_COMPONENT24 = $81A6;
  3518. GL_DEPTH_COMPONENT32 = $81A7;
  3519. GL_MIRRORED_REPEAT = $8370;
  3520. GL_FOG_COORDINATE_SOURCE = $8450;
  3521. GL_FOG_COORDINATE = $8451;
  3522. GL_FRAGMENT_DEPTH = $8452;
  3523. GL_CURRENT_FOG_COORDINATE = $8453;
  3524. GL_FOG_COORDINATE_ARRAY_TYPE = $8454;
  3525. GL_FOG_COORDINATE_ARRAY_STRIDE = $8455;
  3526. GL_FOG_COORDINATE_ARRAY_POINTER = $8456;
  3527. GL_FOG_COORDINATE_ARRAY = $8457;
  3528. GL_COLOR_SUM = $8458;
  3529. GL_CURRENT_SECONDARY_COLOR = $8459;
  3530. GL_SECONDARY_COLOR_ARRAY_SIZE = $845A;
  3531. GL_SECONDARY_COLOR_ARRAY_TYPE = $845B;
  3532. GL_SECONDARY_COLOR_ARRAY_STRIDE = $845C;
  3533. GL_SECONDARY_COLOR_ARRAY_POINTER = $845D;
  3534. GL_SECONDARY_COLOR_ARRAY = $845E;
  3535. GL_MAX_TEXTURE_LOD_BIAS = $84FD;
  3536. GL_TEXTURE_FILTER_CONTROL = $8500;
  3537. GL_TEXTURE_LOD_BIAS = $8501;
  3538. GL_INCR_WRAP = $8507;
  3539. GL_DECR_WRAP = $8508;
  3540. GL_TEXTURE_DEPTH_SIZE = $884A;
  3541. GL_DEPTH_TEXTURE_MODE = $884B;
  3542. GL_TEXTURE_COMPARE_MODE = $884C;
  3543. GL_TEXTURE_COMPARE_FUNC = $884D;
  3544. GL_COMPARE_R_TO_TEXTURE = $884E;
  3545. var
  3546. glBlendFuncSeparate: procedure(sfactorRGB: GLenum; dfactorRGB: GLenum; sfactorAlpha: GLenum; dfactorAlpha: GLenum); extdecl;
  3547. glFogCoordf: procedure(coord: GLfloat); extdecl;
  3548. glFogCoordfv: procedure(const coord: PGLfloat); extdecl;
  3549. glFogCoordd: procedure(coord: GLdouble); extdecl;
  3550. glFogCoorddv: procedure(const coord: PGLdouble); extdecl;
  3551. glFogCoordPointer: procedure(_type: GLenum; stride: GLsizei; const pointer: PGLvoid); extdecl;
  3552. glMultiDrawArrays: procedure(mode: GLenum; first: PGLint; count: PGLsizei; primcount: GLsizei); extdecl;
  3553. glMultiDrawElements: procedure(mode: GLenum; const count: PGLsizei; _type: GLenum; const indices: PGLvoid; primcount: GLsizei); extdecl;
  3554. glPointParameterf: procedure(pname: GLenum; param: GLfloat); extdecl;
  3555. glPointParameterfv: procedure(pname: GLenum; const params: PGLfloat); extdecl;
  3556. glPointParameteri: procedure(pname: GLenum; param: GLint); extdecl;
  3557. glPointParameteriv: procedure(pname: GLenum; const params: PGLint); extdecl;
  3558. glSecondaryColor3b: procedure(red: GLbyte; green: GLbyte; blue: GLbyte); extdecl;
  3559. glSecondaryColor3bv: procedure(const v: PGLbyte); extdecl;
  3560. glSecondaryColor3d: procedure(red: GLdouble; green: GLdouble; blue: GLdouble); extdecl;
  3561. glSecondaryColor3dv: procedure(const v: PGLdouble); extdecl;
  3562. glSecondaryColor3f: procedure(red: GLfloat; green: GLfloat; blue: GLfloat); extdecl;
  3563. glSecondaryColor3fv: procedure(const v: PGLfloat); extdecl;
  3564. glSecondaryColor3i: procedure(red: GLint; green: GLint; blue: GLint); extdecl;
  3565. glSecondaryColor3iv: procedure(const v: PGLint); extdecl;
  3566. glSecondaryColor3s: procedure(red: GLshort; green: GLshort; blue: GLshort); extdecl;
  3567. glSecondaryColor3sv: procedure(const v: PGLshort); extdecl;
  3568. glSecondaryColor3ub: procedure(red: GLubyte; green: GLubyte; blue: GLubyte); extdecl;
  3569. glSecondaryColor3ubv: procedure(const v: PGLubyte); extdecl;
  3570. glSecondaryColor3ui: procedure(red: GLuint; green: GLuint; blue: GLuint); extdecl;
  3571. glSecondaryColor3uiv: procedure(const v: PGLuint); extdecl;
  3572. glSecondaryColor3us: procedure(red: GLushort; green: GLushort; blue: GLushort); extdecl;
  3573. glSecondaryColor3usv: procedure(const v: PGLushort); extdecl;
  3574. glSecondaryColorPointer: procedure(size: GLint; _type: GLenum; stride: GLsizei; const pointer: PGLvoid); extdecl;
  3575. glWindowPos2d: procedure(x: GLdouble; y: GLdouble); extdecl;
  3576. glWindowPos2dv: procedure(const v: PGLdouble); extdecl;
  3577. glWindowPos2f: procedure(x: GLfloat; y: GLfloat); extdecl;
  3578. glWindowPos2fv: procedure(const v: PGLfloat); extdecl;
  3579. glWindowPos2i: procedure(x: GLint; y: GLint); extdecl;
  3580. glWindowPos2iv: procedure(const v: PGLint); extdecl;
  3581. glWindowPos2s: procedure(x: GLshort; y: GLshort); extdecl;
  3582. glWindowPos2sv: procedure(const v: PGLshort); extdecl;
  3583. glWindowPos3d: procedure(x: GLdouble; y: GLdouble; z: GLdouble); extdecl;
  3584. glWindowPos3dv: procedure(const v: PGLdouble); extdecl;
  3585. glWindowPos3f: procedure(x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  3586. glWindowPos3fv: procedure(const v: PGLfloat); extdecl;
  3587. glWindowPos3i: procedure(x: GLint; y: GLint; z: GLint); extdecl;
  3588. glWindowPos3iv: procedure(const v: PGLint); extdecl;
  3589. glWindowPos3s: procedure(x: GLshort; y: GLshort; z: GLshort); extdecl;
  3590. glWindowPos3sv: procedure(const v: PGLshort); extdecl;
  3591. function Load_GL_version_1_4: Boolean;
  3592. //***** GL_version_1_5 *****//
  3593. const
  3594. GL_BUFFER_SIZE = $8764;
  3595. GL_BUFFER_USAGE = $8765;
  3596. GL_QUERY_COUNTER_BITS = $8864;
  3597. GL_CURRENT_QUERY = $8865;
  3598. GL_QUERY_RESULT = $8866;
  3599. GL_QUERY_RESULT_AVAILABLE = $8867;
  3600. GL_ARRAY_BUFFER = $8892;
  3601. GL_ELEMENT_ARRAY_BUFFER = $8893;
  3602. GL_ARRAY_BUFFER_BINDING = $8894;
  3603. GL_ELEMENT_ARRAY_BUFFER_BINDING = $8895;
  3604. GL_VERTEX_ARRAY_BUFFER_BINDING = $8896;
  3605. GL_NORMAL_ARRAY_BUFFER_BINDING = $8897;
  3606. GL_COLOR_ARRAY_BUFFER_BINDING = $8898;
  3607. GL_INDEX_ARRAY_BUFFER_BINDING = $8899;
  3608. GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING = $889A;
  3609. GL_EDGE_FLAG_ARRAY_BUFFER_BINDING = $889B;
  3610. GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING = $889C;
  3611. GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING = $889D;
  3612. GL_WEIGHT_ARRAY_BUFFER_BINDING = $889E;
  3613. GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = $889F;
  3614. GL_READ_ONLY = $88B8;
  3615. GL_WRITE_ONLY = $88B9;
  3616. GL_READ_WRITE = $88BA;
  3617. GL_BUFFER_ACCESS = $88BB;
  3618. GL_BUFFER_MAPPED = $88BC;
  3619. GL_BUFFER_MAP_POINTER = $88BD;
  3620. GL_STREAM_DRAW = $88E0;
  3621. GL_STREAM_READ = $88E1;
  3622. GL_STREAM_COPY = $88E2;
  3623. GL_STATIC_DRAW = $88E4;
  3624. GL_STATIC_READ = $88E5;
  3625. GL_STATIC_COPY = $88E6;
  3626. GL_DYNAMIC_DRAW = $88E8;
  3627. GL_DYNAMIC_READ = $88E9;
  3628. GL_DYNAMIC_COPY = $88EA;
  3629. GL_SAMPLES_PASSED = $8914;
  3630. GL_FOG_COORD_SRC = $8450;
  3631. GL_FOG_COORD = $8451;
  3632. GL_CURRENT_FOG_COORD = $8453;
  3633. GL_FOG_COORD_ARRAY_TYPE = $8454;
  3634. GL_FOG_COORD_ARRAY_STRIDE = $8455;
  3635. GL_FOG_COORD_ARRAY_POINTER = $8456;
  3636. GL_FOG_COORD_ARRAY = $8457;
  3637. GL_FOG_COORD_ARRAY_BUFFER_BINDING = $889D;
  3638. GL_SRC0_RGB = $8580;
  3639. GL_SRC1_RGB = $8581;
  3640. GL_SRC2_RGB = $8582;
  3641. GL_SRC0_ALPHA = $8588;
  3642. GL_SRC1_ALPHA = $8589;
  3643. GL_SRC2_ALPHA = $858A;
  3644. var
  3645. glGenQueries: procedure(n: GLsizei; ids: PGLuint); extdecl;
  3646. glDeleteQueries: procedure(n: GLsizei; const ids: PGLuint); extdecl;
  3647. glIsQuery: function(id: GLuint): GLboolean; extdecl;
  3648. glBeginQuery: procedure(target: GLenum; id: GLuint); extdecl;
  3649. glEndQuery: procedure(target: GLenum); extdecl;
  3650. glGetQueryiv: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  3651. glGetQueryObjectiv: procedure(id: GLuint; pname: GLenum; params: PGLint); extdecl;
  3652. glGetQueryObjectuiv: procedure(id: GLuint; pname: GLenum; params: PGLuint); extdecl;
  3653. glBindBuffer: procedure(target: GLenum; buffer: GLuint); extdecl;
  3654. glDeleteBuffers: procedure(n: GLsizei; const buffers: PGLuint); extdecl;
  3655. glGenBuffers: procedure(n: GLsizei; buffers: PGLuint); extdecl;
  3656. glIsBuffer: function(buffer: GLuint): GLboolean; extdecl;
  3657. glBufferData: procedure(target: GLenum; size: GLsizeiptr; const data: PGLvoid; usage: GLenum); extdecl;
  3658. glBufferSubData: procedure(target: GLenum; offset: GLintptr; size: GLsizeiptr; const data: PGLvoid); extdecl;
  3659. glGetBufferSubData: procedure(target: GLenum; offset: GLintptr; size: GLsizeiptr; data: PGLvoid); extdecl;
  3660. glMapBuffer: function(target: GLenum; access: GLenum): PGLvoid; extdecl;
  3661. glUnmapBuffer: function(target: GLenum): GLboolean; extdecl;
  3662. glGetBufferParameteriv: procedure(target: GLenum; pname: GLenum; params: PGLint); extdecl;
  3663. glGetBufferPointerv: procedure(target: GLenum; pname: GLenum; params: PGLvoid); extdecl;
  3664. function Load_GL_version_1_5: Boolean;
  3665. //***** GL_version_2_0 *****//
  3666. const
  3667. GL_BLEND_EQUATION_RGB = $8009;
  3668. GL_VERTEX_ATTRIB_ARRAY_ENABLED = $8622;
  3669. GL_VERTEX_ATTRIB_ARRAY_SIZE = $8623;
  3670. GL_VERTEX_ATTRIB_ARRAY_STRIDE = $8624;
  3671. GL_VERTEX_ATTRIB_ARRAY_TYPE = $8625;
  3672. GL_CURRENT_VERTEX_ATTRIB = $8626;
  3673. GL_VERTEX_PROGRAM_POINT_SIZE = $8642;
  3674. GL_VERTEX_PROGRAM_TWO_SIDE = $8643;
  3675. GL_VERTEX_ATTRIB_ARRAY_POINTER = $8645;
  3676. GL_STENCIL_BACK_FUNC = $8800;
  3677. GL_STENCIL_BACK_FAIL = $8801;
  3678. GL_STENCIL_BACK_PASS_DEPTH_FAIL = $8802;
  3679. GL_STENCIL_BACK_PASS_DEPTH_PASS = $8803;
  3680. GL_MAX_DRAW_BUFFERS = $8824;
  3681. GL_DRAW_BUFFER0 = $8825;
  3682. GL_DRAW_BUFFER1 = $8826;
  3683. GL_DRAW_BUFFER2 = $8827;
  3684. GL_DRAW_BUFFER3 = $8828;
  3685. GL_DRAW_BUFFER4 = $8829;
  3686. GL_DRAW_BUFFER5 = $882A;
  3687. GL_DRAW_BUFFER6 = $882B;
  3688. GL_DRAW_BUFFER7 = $882C;
  3689. GL_DRAW_BUFFER8 = $882D;
  3690. GL_DRAW_BUFFER9 = $882E;
  3691. GL_DRAW_BUFFER10 = $882F;
  3692. GL_DRAW_BUFFER11 = $8830;
  3693. GL_DRAW_BUFFER12 = $8831;
  3694. GL_DRAW_BUFFER13 = $8832;
  3695. GL_DRAW_BUFFER14 = $8833;
  3696. GL_DRAW_BUFFER15 = $8834;
  3697. GL_BLEND_EQUATION_ALPHA = $883D;
  3698. GL_POINT_SPRITE = $8861;
  3699. GL_COORD_REPLACE = $8862;
  3700. GL_MAX_VERTEX_ATTRIBS = $8869;
  3701. GL_VERTEX_ATTRIB_ARRAY_NORMALIZED = $886A;
  3702. GL_MAX_TEXTURE_COORDS = $8871;
  3703. GL_MAX_TEXTURE_IMAGE_UNITS = $8872;
  3704. GL_FRAGMENT_SHADER = $8B30;
  3705. GL_VERTEX_SHADER = $8B31;
  3706. GL_MAX_FRAGMENT_UNIFORM_COMPONENTS = $8B49;
  3707. GL_MAX_VERTEX_UNIFORM_COMPONENTS = $8B4A;
  3708. GL_MAX_VARYING_FLOATS = $8B4B;
  3709. GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = $8B4C;
  3710. GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = $8B4D;
  3711. GL_SHADER_TYPE = $8B4F;
  3712. GL_FLOAT_VEC2 = $8B50;
  3713. GL_FLOAT_VEC3 = $8B51;
  3714. GL_FLOAT_VEC4 = $8B52;
  3715. GL_INT_VEC2 = $8B53;
  3716. GL_INT_VEC3 = $8B54;
  3717. GL_INT_VEC4 = $8B55;
  3718. GL_BOOL = $8B56;
  3719. GL_BOOL_VEC2 = $8B57;
  3720. GL_BOOL_VEC3 = $8B58;
  3721. GL_BOOL_VEC4 = $8B59;
  3722. GL_FLOAT_MAT2 = $8B5A;
  3723. GL_FLOAT_MAT3 = $8B5B;
  3724. GL_FLOAT_MAT4 = $8B5C;
  3725. GL_SAMPLER_1D = $8B5D;
  3726. GL_SAMPLER_2D = $8B5E;
  3727. GL_SAMPLER_3D = $8B5F;
  3728. GL_SAMPLER_CUBE = $8B60;
  3729. GL_SAMPLER_1D_SHADOW = $8B61;
  3730. GL_SAMPLER_2D_SHADOW = $8B62;
  3731. GL_DELETE_STATUS = $8B80;
  3732. GL_COMPILE_STATUS = $8B81;
  3733. GL_LINK_STATUS = $8B82;
  3734. GL_VALIDATE_STATUS = $8B83;
  3735. GL_INFO_LOG_LENGTH = $8B84;
  3736. GL_ATTACHED_SHADERS = $8B85;
  3737. GL_ACTIVE_UNIFORMS = $8B86;
  3738. GL_ACTIVE_UNIFORM_MAX_LENGTH = $8B87;
  3739. GL_SHADER_SOURCE_LENGTH = $8B88;
  3740. GL_ACTIVE_ATTRIBUTES = $8B89;
  3741. GL_ACTIVE_ATTRIBUTE_MAX_LENGTH = $8B8A;
  3742. GL_FRAGMENT_SHADER_DERIVATIVE_HINT = $8B8B;
  3743. GL_SHADING_LANGUAGE_VERSION = $8B8C;
  3744. GL_CURRENT_PROGRAM = $8B8D;
  3745. GL_POINT_SPRITE_COORD_ORIGIN = $8CA0;
  3746. GL_LOWER_LEFT = $8CA1;
  3747. GL_UPPER_LEFT = $8CA2;
  3748. GL_STENCIL_BACK_REF = $8CA3;
  3749. GL_STENCIL_BACK_VALUE_MASK = $8CA4;
  3750. GL_STENCIL_BACK_WRITEMASK = $8CA5;
  3751. var
  3752. glBlendEquationSeparate: procedure(modeRGB: GLenum; modeAlpha: GLenum); extdecl;
  3753. glDrawBuffers: procedure(n: GLsizei; const bufs: PGLenum); extdecl;
  3754. glStencilOpSeparate: procedure(face: GLenum; sfail: GLenum; dpfail: GLenum; dppass: GLenum); extdecl;
  3755. glStencilFuncSeparate: procedure(frontfunc: GLenum; backfunc: GLenum; ref: GLint; mask: GLuint); extdecl;
  3756. glStencilMaskSeparate: procedure(face: GLenum; mask: GLuint); extdecl;
  3757. glAttachShader: procedure(_program: GLuint; shader: GLuint); extdecl;
  3758. glBindAttribLocation: procedure(_program: GLuint; index: GLuint; const name: PGLchar); extdecl;
  3759. glCompileShader: procedure(shader: GLuint); extdecl;
  3760. glCreateProgram: function(): GLuint; extdecl;
  3761. glCreateShader: function(_type: GLenum): GLuint; extdecl;
  3762. glDeleteProgram: procedure(_program: GLuint); extdecl;
  3763. glDeleteShader: procedure(shader: GLuint); extdecl;
  3764. glDetachShader: procedure(_program: GLuint; shader: GLuint); extdecl;
  3765. glDisableVertexAttribArray: procedure(index: GLuint); extdecl;
  3766. glEnableVertexAttribArray: procedure(index: GLuint); extdecl;
  3767. glGetActiveAttrib: procedure(_program: GLuint; index: GLuint; bufSize: GLsizei; length: PGLsizei; size: PGLint; _type: PGLenum; name: PGLchar); extdecl;
  3768. glGetActiveUniform: procedure(_program: GLuint; index: GLuint; bufSize: GLsizei; length: PGLsizei; size: PGLint; _type: PGLenum; name: PGLchar); extdecl;
  3769. glGetAttachedShaders: procedure(_program: GLuint; maxCount: GLsizei; count: PGLsizei; obj: PGLuint); extdecl;
  3770. glGetAttribLocation: function(_program: GLuint; const name: PGLchar): GLint; extdecl;
  3771. glGetProgramiv: procedure(_program: GLuint; pname: GLenum; params: PGLint); extdecl;
  3772. glGetProgramInfoLog: procedure(_program: GLuint; bufSize: GLsizei; length: PGLsizei; infoLog: PGLchar); extdecl;
  3773. glGetShaderiv: procedure(shader: GLuint; pname: GLenum; params: PGLint); extdecl;
  3774. glGetShaderInfoLog: procedure(shader: GLuint; bufSize: GLsizei; length: PGLsizei; infoLog: PGLchar); extdecl;
  3775. glGetShaderSource: procedure(shader: GLuint; bufSize: GLsizei; length: PGLsizei; source: PGLchar); extdecl;
  3776. glGetUniformLocation: function(_program: GLuint; const name: PGLchar): GLint; extdecl;
  3777. glGetUniformfv: procedure(_program: GLuint; location: GLint; params: PGLfloat); extdecl;
  3778. glGetUniformiv: procedure(_program: GLuint; location: GLint; params: PGLint); extdecl;
  3779. glGetVertexAttribdv: procedure(index: GLuint; pname: GLenum; params: PGLdouble); extdecl;
  3780. glGetVertexAttribfv: procedure(index: GLuint; pname: GLenum; params: PGLfloat); extdecl;
  3781. glGetVertexAttribiv: procedure(index: GLuint; pname: GLenum; params: PGLint); extdecl;
  3782. glGetVertexAttribPointerv: procedure(index: GLuint; pname: GLenum; pointer: PGLvoid); extdecl;
  3783. glIsProgram: function(_program: GLuint): GLboolean; extdecl;
  3784. glIsShader: function(shader: GLuint): GLboolean; extdecl;
  3785. glLinkProgram: procedure(_program: GLuint); extdecl;
  3786. glShaderSource: procedure(shader: GLuint; count: GLsizei; const _string: PGLchar; const length: PGLint); extdecl;
  3787. glUseProgram: procedure(_program: GLuint); extdecl;
  3788. glUniform1f: procedure(location: GLint; v0: GLfloat); extdecl;
  3789. glUniform2f: procedure(location: GLint; v0: GLfloat; v1: GLfloat); extdecl;
  3790. glUniform3f: procedure(location: GLint; v0: GLfloat; v1: GLfloat; v2: GLfloat); extdecl;
  3791. glUniform4f: procedure(location: GLint; v0: GLfloat; v1: GLfloat; v2: GLfloat; v3: GLfloat); extdecl;
  3792. glUniform1i: procedure(location: GLint; v0: GLint); extdecl;
  3793. glUniform2i: procedure(location: GLint; v0: GLint; v1: GLint); extdecl;
  3794. glUniform3i: procedure(location: GLint; v0: GLint; v1: GLint; v2: GLint); extdecl;
  3795. glUniform4i: procedure(location: GLint; v0: GLint; v1: GLint; v2: GLint; v3: GLint); extdecl;
  3796. glUniform1fv: procedure(location: GLint; count: GLsizei; const value: PGLfloat); extdecl;
  3797. glUniform2fv: procedure(location: GLint; count: GLsizei; const value: PGLfloat); extdecl;
  3798. glUniform3fv: procedure(location: GLint; count: GLsizei; const value: PGLfloat); extdecl;
  3799. glUniform4fv: procedure(location: GLint; count: GLsizei; const value: PGLfloat); extdecl;
  3800. glUniform1iv: procedure(location: GLint; count: GLsizei; const value: PGLint); extdecl;
  3801. glUniform2iv: procedure(location: GLint; count: GLsizei; const value: PGLint); extdecl;
  3802. glUniform3iv: procedure(location: GLint; count: GLsizei; const value: PGLint); extdecl;
  3803. glUniform4iv: procedure(location: GLint; count: GLsizei; const value: PGLint); extdecl;
  3804. glUniformMatrix2fv: procedure(location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLfloat); extdecl;
  3805. glUniformMatrix3fv: procedure(location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLfloat); extdecl;
  3806. glUniformMatrix4fv: procedure(location: GLint; count: GLsizei; transpose: GLboolean; const value: PGLfloat); extdecl;
  3807. glValidateProgram: procedure(_program: GLuint); extdecl;
  3808. glVertexAttrib1d: procedure(index: GLuint; x: GLdouble); extdecl;
  3809. glVertexAttrib1dv: procedure(index: GLuint; const v: PGLdouble); extdecl;
  3810. glVertexAttrib1f: procedure(index: GLuint; x: GLfloat); extdecl;
  3811. glVertexAttrib1fv: procedure(index: GLuint; const v: PGLfloat); extdecl;
  3812. glVertexAttrib1s: procedure(index: GLuint; x: GLshort); extdecl;
  3813. glVertexAttrib1sv: procedure(index: GLuint; const v: PGLshort); extdecl;
  3814. glVertexAttrib2d: procedure(index: GLuint; x: GLdouble; y: GLdouble); extdecl;
  3815. glVertexAttrib2dv: procedure(index: GLuint; const v: PGLdouble); extdecl;
  3816. glVertexAttrib2f: procedure(index: GLuint; x: GLfloat; y: GLfloat); extdecl;
  3817. glVertexAttrib2fv: procedure(index: GLuint; const v: PGLfloat); extdecl;
  3818. glVertexAttrib2s: procedure(index: GLuint; x: GLshort; y: GLshort); extdecl;
  3819. glVertexAttrib2sv: procedure(index: GLuint; const v: PGLshort); extdecl;
  3820. glVertexAttrib3d: procedure(index: GLuint; x: GLdouble; y: GLdouble; z: GLdouble); extdecl;
  3821. glVertexAttrib3dv: procedure(index: GLuint; const v: PGLdouble); extdecl;
  3822. glVertexAttrib3f: procedure(index: GLuint; x: GLfloat; y: GLfloat; z: GLfloat); extdecl;
  3823. glVertexAttrib3fv: procedure(index: GLuint; const v: PGLfloat); extdecl;
  3824. glVertexAttrib3s: procedure(index: GLuint; x: GLshort; y: GLshort; z: GLshort); extdecl;
  3825. glVertexAttrib3sv: procedure(index: GLuint; const v: PGLshort); extdecl;
  3826. glVertexAttrib4Nbv: procedure(index: GLuint; const v: PGLbyte); extdecl;
  3827. glVertexAttrib4Niv: procedure(index: GLuint; const v: PGLint); extdecl;
  3828. glVertexAttrib4Nsv: procedure(index: GLuint; const v: PGLshort); extdecl;
  3829. glVertexAttrib4Nub: procedure(index: GLuint; x: GLubyte; y: GLubyte; z: GLubyte; w: GLubyte); extdecl;
  3830. glVertexAttrib4Nubv: procedure(index: GLuint; const v: PGLubyte); extdecl;
  3831. glVertexAttrib4Nuiv: procedure(index: GLuint; const v: PGLuint); extdecl;
  3832. glVertexAttrib4Nusv: procedure(index: GLuint; const v: PGLushort); extdecl;
  3833. glVertexAttrib4bv: procedure(index: GLuint; const v: PGLbyte); extdecl;
  3834. glVertexAttrib4d: procedure(index: GLuint; x: GLdouble; y: GLdouble; z: GLdouble; w: GLdouble); extdecl;
  3835. glVertexAttrib4dv: procedure(index: GLuint; const v: PGLdouble); extdecl;
  3836. glVertexAttrib4f: procedure(index: GLuint; x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); extdecl;
  3837. glVertexAttrib4fv: procedure(index: GLuint; const v: PGLfloat); extdecl;
  3838. glVertexAttrib4iv: procedure(index: GLuint; const v: PGLint); extdecl;
  3839. glVertexAttrib4s: procedure(index: GLuint; x: GLshort; y: GLshort; z: GLshort; w: GLshort); extdecl;
  3840. glVertexAttrib4sv: procedure(index: GLuint; const v: PGLshort); extdecl;
  3841. glVertexAttrib4ubv: procedure(index: GLuint; const v: PGLubyte); extdecl;
  3842. glVertexAttrib4uiv: procedure(index: GLuint; const v: PGLuint); extdecl;
  3843. glVertexAttrib4usv: procedure(index: GLuint; const v: PGLushort); extdecl;
  3844. glVertexAttribPointer: procedure(index: GLuint; size: GLint; _type: GLenum; normalized: GLboolean; stride: GLsizei; const pointer: PGLvoid); extdecl;
  3845. function Load_GL_version_2_0: Boolean;
  3846. implementation
  3847. {$IFNDEF Windows}
  3848. function wglGetProcAddress(proc: PChar): Pointer;
  3849. begin
  3850. Result := GetProcAddress(LibGL, proc);
  3851. end;
  3852. {$ENDIF}
  3853. function glext_ExtensionSupported(const extension: String; const searchIn: String): Boolean;
  3854. var
  3855. extensions: PChar;
  3856. start: PChar;
  3857. where, terminator: PChar;
  3858. begin
  3859. if (Pos(' ', extension) <> 0) or (extension = '') then
  3860. begin
  3861. Result := FALSE;
  3862. Exit;
  3863. end;
  3864. if searchIn = '' then extensions := PChar(glGetString(GL_EXTENSIONS))
  3865. else extensions := PChar(searchIn);
  3866. start := extensions;
  3867. while TRUE do
  3868. begin
  3869. where := StrPos(start, PChar(extension));
  3870. if where = nil then Break;
  3871. terminator := Pointer(PtrUInt(where) + Length(extension));
  3872. if (where = start) or (PChar(PtrUInt(where) - 1)^ = ' ') then
  3873. begin
  3874. if (terminator^ = ' ') or (terminator^ = #0) then
  3875. begin
  3876. Result := TRUE;
  3877. Exit;
  3878. end;
  3879. end;
  3880. start := terminator;
  3881. end;
  3882. Result := FALSE;
  3883. end;
  3884. function Load_GL_version_1_2: Boolean;
  3885. begin
  3886. Result := FALSE;
  3887. glBlendColor := wglGetProcAddress('glBlendColor');
  3888. if not Assigned(glBlendColor) then Exit;
  3889. glBlendEquation := wglGetProcAddress('glBlendEquation');
  3890. if not Assigned(glBlendEquation) then Exit;
  3891. glDrawRangeElements := wglGetProcAddress('glDrawRangeElements');
  3892. if not Assigned(glDrawRangeElements) then Exit;
  3893. glTexImage3D := wglGetProcAddress('glTexImage3D');
  3894. if not Assigned(glTexImage3D) then Exit;
  3895. glTexSubImage3D := wglGetProcAddress('glTexSubImage3D');
  3896. if not Assigned(glTexSubImage3D) then Exit;
  3897. glCopyTexSubImage3D := wglGetProcAddress('glCopyTexSubImage3D');
  3898. if not Assigned(glCopyTexSubImage3D) then Exit;
  3899. Result := TRUE;
  3900. end;
  3901. function Load_GL_ARB_imaging: Boolean;
  3902. var
  3903. extstring: String;
  3904. begin
  3905. Result := FALSE;
  3906. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3907. if glext_ExtensionSupported('GL_ARB_imaging', extstring) then
  3908. begin
  3909. glColorTable := wglGetProcAddress('glColorTable');
  3910. if not Assigned(glColorTable) then Exit;
  3911. glColorTableParameterfv := wglGetProcAddress('glColorTableParameterfv');
  3912. if not Assigned(glColorTableParameterfv) then Exit;
  3913. glColorTableParameteriv := wglGetProcAddress('glColorTableParameteriv');
  3914. if not Assigned(glColorTableParameteriv) then Exit;
  3915. glCopyColorTable := wglGetProcAddress('glCopyColorTable');
  3916. if not Assigned(glCopyColorTable) then Exit;
  3917. glGetColorTable := wglGetProcAddress('glGetColorTable');
  3918. if not Assigned(glGetColorTable) then Exit;
  3919. glGetColorTableParameterfv := wglGetProcAddress('glGetColorTableParameterfv');
  3920. if not Assigned(glGetColorTableParameterfv) then Exit;
  3921. glGetColorTableParameteriv := wglGetProcAddress('glGetColorTableParameteriv');
  3922. if not Assigned(glGetColorTableParameteriv) then Exit;
  3923. glColorSubTable := wglGetProcAddress('glColorSubTable');
  3924. if not Assigned(glColorSubTable) then Exit;
  3925. glCopyColorSubTable := wglGetProcAddress('glCopyColorSubTable');
  3926. if not Assigned(glCopyColorSubTable) then Exit;
  3927. glConvolutionFilter1D := wglGetProcAddress('glConvolutionFilter1D');
  3928. if not Assigned(glConvolutionFilter1D) then Exit;
  3929. glConvolutionFilter2D := wglGetProcAddress('glConvolutionFilter2D');
  3930. if not Assigned(glConvolutionFilter2D) then Exit;
  3931. glConvolutionParameterf := wglGetProcAddress('glConvolutionParameterf');
  3932. if not Assigned(glConvolutionParameterf) then Exit;
  3933. glConvolutionParameterfv := wglGetProcAddress('glConvolutionParameterfv');
  3934. if not Assigned(glConvolutionParameterfv) then Exit;
  3935. glConvolutionParameteri := wglGetProcAddress('glConvolutionParameteri');
  3936. if not Assigned(glConvolutionParameteri) then Exit;
  3937. glConvolutionParameteriv := wglGetProcAddress('glConvolutionParameteriv');
  3938. if not Assigned(glConvolutionParameteriv) then Exit;
  3939. glCopyConvolutionFilter1D := wglGetProcAddress('glCopyConvolutionFilter1D');
  3940. if not Assigned(glCopyConvolutionFilter1D) then Exit;
  3941. glCopyConvolutionFilter2D := wglGetProcAddress('glCopyConvolutionFilter2D');
  3942. if not Assigned(glCopyConvolutionFilter2D) then Exit;
  3943. glGetConvolutionFilter := wglGetProcAddress('glGetConvolutionFilter');
  3944. if not Assigned(glGetConvolutionFilter) then Exit;
  3945. glGetConvolutionParameterfv := wglGetProcAddress('glGetConvolutionParameterfv');
  3946. if not Assigned(glGetConvolutionParameterfv) then Exit;
  3947. glGetConvolutionParameteriv := wglGetProcAddress('glGetConvolutionParameteriv');
  3948. if not Assigned(glGetConvolutionParameteriv) then Exit;
  3949. glGetSeparableFilter := wglGetProcAddress('glGetSeparableFilter');
  3950. if not Assigned(glGetSeparableFilter) then Exit;
  3951. glSeparableFilter2D := wglGetProcAddress('glSeparableFilter2D');
  3952. if not Assigned(glSeparableFilter2D) then Exit;
  3953. glGetHistogram := wglGetProcAddress('glGetHistogram');
  3954. if not Assigned(glGetHistogram) then Exit;
  3955. glGetHistogramParameterfv := wglGetProcAddress('glGetHistogramParameterfv');
  3956. if not Assigned(glGetHistogramParameterfv) then Exit;
  3957. glGetHistogramParameteriv := wglGetProcAddress('glGetHistogramParameteriv');
  3958. if not Assigned(glGetHistogramParameteriv) then Exit;
  3959. glGetMinmax := wglGetProcAddress('glGetMinmax');
  3960. if not Assigned(glGetMinmax) then Exit;
  3961. glGetMinmaxParameterfv := wglGetProcAddress('glGetMinmaxParameterfv');
  3962. if not Assigned(glGetMinmaxParameterfv) then Exit;
  3963. glGetMinmaxParameteriv := wglGetProcAddress('glGetMinmaxParameteriv');
  3964. if not Assigned(glGetMinmaxParameteriv) then Exit;
  3965. glHistogram := wglGetProcAddress('glHistogram');
  3966. if not Assigned(glHistogram) then Exit;
  3967. glMinmax := wglGetProcAddress('glMinmax');
  3968. if not Assigned(glMinmax) then Exit;
  3969. glResetHistogram := wglGetProcAddress('glResetHistogram');
  3970. if not Assigned(glResetHistogram) then Exit;
  3971. glResetMinmax := wglGetProcAddress('glResetMinmax');
  3972. if not Assigned(glResetMinmax) then Exit;
  3973. Result := TRUE;
  3974. end;
  3975. end;
  3976. function Load_GL_version_1_3: Boolean;
  3977. var
  3978. extstring: String;
  3979. begin
  3980. Result := FALSE;
  3981. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3982. glActiveTexture := wglGetProcAddress('glActiveTexture');
  3983. if not Assigned(glActiveTexture) then Exit;
  3984. glClientActiveTexture := wglGetProcAddress('glClientActiveTexture');
  3985. if not Assigned(glClientActiveTexture) then Exit;
  3986. glMultiTexCoord1d := wglGetProcAddress('glMultiTexCoord1d');
  3987. if not Assigned(glMultiTexCoord1d) then Exit;
  3988. glMultiTexCoord1dv := wglGetProcAddress('glMultiTexCoord1dv');
  3989. if not Assigned(glMultiTexCoord1dv) then Exit;
  3990. glMultiTexCoord1f := wglGetProcAddress('glMultiTexCoord1f');
  3991. if not Assigned(glMultiTexCoord1f) then Exit;
  3992. glMultiTexCoord1fv := wglGetProcAddress('glMultiTexCoord1fv');
  3993. if not Assigned(glMultiTexCoord1fv) then Exit;
  3994. glMultiTexCoord1i := wglGetProcAddress('glMultiTexCoord1i');
  3995. if not Assigned(glMultiTexCoord1i) then Exit;
  3996. glMultiTexCoord1iv := wglGetProcAddress('glMultiTexCoord1iv');
  3997. if not Assigned(glMultiTexCoord1iv) then Exit;
  3998. glMultiTexCoord1s := wglGetProcAddress('glMultiTexCoord1s');
  3999. if not Assigned(glMultiTexCoord1s) then Exit;
  4000. glMultiTexCoord1sv := wglGetProcAddress('glMultiTexCoord1sv');
  4001. if not Assigned(glMultiTexCoord1sv) then Exit;
  4002. glMultiTexCoord2d := wglGetProcAddress('glMultiTexCoord2d');
  4003. if not Assigned(glMultiTexCoord2d) then Exit;
  4004. glMultiTexCoord2dv := wglGetProcAddress('glMultiTexCoord2dv');
  4005. if not Assigned(glMultiTexCoord2dv) then Exit;
  4006. glMultiTexCoord2f := wglGetProcAddress('glMultiTexCoord2f');
  4007. if not Assigned(glMultiTexCoord2f) then Exit;
  4008. glMultiTexCoord2fv := wglGetProcAddress('glMultiTexCoord2fv');
  4009. if not Assigned(glMultiTexCoord2fv) then Exit;
  4010. glMultiTexCoord2i := wglGetProcAddress('glMultiTexCoord2i');
  4011. if not Assigned(glMultiTexCoord2i) then Exit;
  4012. glMultiTexCoord2iv := wglGetProcAddress('glMultiTexCoord2iv');
  4013. if not Assigned(glMultiTexCoord2iv) then Exit;
  4014. glMultiTexCoord2s := wglGetProcAddress('glMultiTexCoord2s');
  4015. if not Assigned(glMultiTexCoord2s) then Exit;
  4016. glMultiTexCoord2sv := wglGetProcAddress('glMultiTexCoord2sv');
  4017. if not Assigned(glMultiTexCoord2sv) then Exit;
  4018. glMultiTexCoord3d := wglGetProcAddress('glMultiTexCoord3d');
  4019. if not Assigned(glMultiTexCoord3d) then Exit;
  4020. glMultiTexCoord3dv := wglGetProcAddress('glMultiTexCoord3dv');
  4021. if not Assigned(glMultiTexCoord3dv) then Exit;
  4022. glMultiTexCoord3f := wglGetProcAddress('glMultiTexCoord3f');
  4023. if not Assigned(glMultiTexCoord3f) then Exit;
  4024. glMultiTexCoord3fv := wglGetProcAddress('glMultiTexCoord3fv');
  4025. if not Assigned(glMultiTexCoord3fv) then Exit;
  4026. glMultiTexCoord3i := wglGetProcAddress('glMultiTexCoord3i');
  4027. if not Assigned(glMultiTexCoord3i) then Exit;
  4028. glMultiTexCoord3iv := wglGetProcAddress('glMultiTexCoord3iv');
  4029. if not Assigned(glMultiTexCoord3iv) then Exit;
  4030. glMultiTexCoord3s := wglGetProcAddress('glMultiTexCoord3s');
  4031. if not Assigned(glMultiTexCoord3s) then Exit;
  4032. glMultiTexCoord3sv := wglGetProcAddress('glMultiTexCoord3sv');
  4033. if not Assigned(glMultiTexCoord3sv) then Exit;
  4034. glMultiTexCoord4d := wglGetProcAddress('glMultiTexCoord4d');
  4035. if not Assigned(glMultiTexCoord4d) then Exit;
  4036. glMultiTexCoord4dv := wglGetProcAddress('glMultiTexCoord4dv');
  4037. if not Assigned(glMultiTexCoord4dv) then Exit;
  4038. glMultiTexCoord4f := wglGetProcAddress('glMultiTexCoord4f');
  4039. if not Assigned(glMultiTexCoord4f) then Exit;
  4040. glMultiTexCoord4fv := wglGetProcAddress('glMultiTexCoord4fv');
  4041. if not Assigned(glMultiTexCoord4fv) then Exit;
  4042. glMultiTexCoord4i := wglGetProcAddress('glMultiTexCoord4i');
  4043. if not Assigned(glMultiTexCoord4i) then Exit;
  4044. glMultiTexCoord4iv := wglGetProcAddress('glMultiTexCoord4iv');
  4045. if not Assigned(glMultiTexCoord4iv) then Exit;
  4046. glMultiTexCoord4s := wglGetProcAddress('glMultiTexCoord4s');
  4047. if not Assigned(glMultiTexCoord4s) then Exit;
  4048. glMultiTexCoord4sv := wglGetProcAddress('glMultiTexCoord4sv');
  4049. if not Assigned(glMultiTexCoord4sv) then Exit;
  4050. glLoadTransposeMatrixf := wglGetProcAddress('glLoadTransposeMatrixf');
  4051. if not Assigned(glLoadTransposeMatrixf) then Exit;
  4052. glLoadTransposeMatrixd := wglGetProcAddress('glLoadTransposeMatrixd');
  4053. if not Assigned(glLoadTransposeMatrixd) then Exit;
  4054. glMultTransposeMatrixf := wglGetProcAddress('glMultTransposeMatrixf');
  4055. if not Assigned(glMultTransposeMatrixf) then Exit;
  4056. glMultTransposeMatrixd := wglGetProcAddress('glMultTransposeMatrixd');
  4057. if not Assigned(glMultTransposeMatrixd) then Exit;
  4058. glSampleCoverage := wglGetProcAddress('glSampleCoverage');
  4059. if not Assigned(glSampleCoverage) then Exit;
  4060. glCompressedTexImage3D := wglGetProcAddress('glCompressedTexImage3D');
  4061. if not Assigned(glCompressedTexImage3D) then Exit;
  4062. glCompressedTexImage2D := wglGetProcAddress('glCompressedTexImage2D');
  4063. if not Assigned(glCompressedTexImage2D) then Exit;
  4064. glCompressedTexImage1D := wglGetProcAddress('glCompressedTexImage1D');
  4065. if not Assigned(glCompressedTexImage1D) then Exit;
  4066. glCompressedTexSubImage3D := wglGetProcAddress('glCompressedTexSubImage3D');
  4067. if not Assigned(glCompressedTexSubImage3D) then Exit;
  4068. glCompressedTexSubImage2D := wglGetProcAddress('glCompressedTexSubImage2D');
  4069. if not Assigned(glCompressedTexSubImage2D) then Exit;
  4070. glCompressedTexSubImage1D := wglGetProcAddress('glCompressedTexSubImage1D');
  4071. if not Assigned(glCompressedTexSubImage1D) then Exit;
  4072. glGetCompressedTexImage := wglGetProcAddress('glGetCompressedTexImage');
  4073. if not Assigned(glGetCompressedTexImage) then Exit;
  4074. Result := Load_GL_version_1_2;
  4075. end;
  4076. function Load_GL_ARB_multitexture: Boolean;
  4077. var
  4078. extstring: String;
  4079. begin
  4080. Result := FALSE;
  4081. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4082. if glext_ExtensionSupported('GL_ARB_multitexture', extstring) then
  4083. begin
  4084. glActiveTextureARB := wglGetProcAddress('glActiveTextureARB');
  4085. if not Assigned(glActiveTextureARB) then Exit;
  4086. glClientActiveTextureARB := wglGetProcAddress('glClientActiveTextureARB');
  4087. if not Assigned(glClientActiveTextureARB) then Exit;
  4088. glMultiTexCoord1dARB := wglGetProcAddress('glMultiTexCoord1dARB');
  4089. if not Assigned(glMultiTexCoord1dARB) then Exit;
  4090. glMultiTexCoord1dvARB := wglGetProcAddress('glMultiTexCoord1dvARB');
  4091. if not Assigned(glMultiTexCoord1dvARB) then Exit;
  4092. glMultiTexCoord1fARB := wglGetProcAddress('glMultiTexCoord1fARB');
  4093. if not Assigned(glMultiTexCoord1fARB) then Exit;
  4094. glMultiTexCoord1fvARB := wglGetProcAddress('glMultiTexCoord1fvARB');
  4095. if not Assigned(glMultiTexCoord1fvARB) then Exit;
  4096. glMultiTexCoord1iARB := wglGetProcAddress('glMultiTexCoord1iARB');
  4097. if not Assigned(glMultiTexCoord1iARB) then Exit;
  4098. glMultiTexCoord1ivARB := wglGetProcAddress('glMultiTexCoord1ivARB');
  4099. if not Assigned(glMultiTexCoord1ivARB) then Exit;
  4100. glMultiTexCoord1sARB := wglGetProcAddress('glMultiTexCoord1sARB');
  4101. if not Assigned(glMultiTexCoord1sARB) then Exit;
  4102. glMultiTexCoord1svARB := wglGetProcAddress('glMultiTexCoord1svARB');
  4103. if not Assigned(glMultiTexCoord1svARB) then Exit;
  4104. glMultiTexCoord2dARB := wglGetProcAddress('glMultiTexCoord2dARB');
  4105. if not Assigned(glMultiTexCoord2dARB) then Exit;
  4106. glMultiTexCoord2dvARB := wglGetProcAddress('glMultiTexCoord2dvARB');
  4107. if not Assigned(glMultiTexCoord2dvARB) then Exit;
  4108. glMultiTexCoord2fARB := wglGetProcAddress('glMultiTexCoord2fARB');
  4109. if not Assigned(glMultiTexCoord2fARB) then Exit;
  4110. glMultiTexCoord2fvARB := wglGetProcAddress('glMultiTexCoord2fvARB');
  4111. if not Assigned(glMultiTexCoord2fvARB) then Exit;
  4112. glMultiTexCoord2iARB := wglGetProcAddress('glMultiTexCoord2iARB');
  4113. if not Assigned(glMultiTexCoord2iARB) then Exit;
  4114. glMultiTexCoord2ivARB := wglGetProcAddress('glMultiTexCoord2ivARB');
  4115. if not Assigned(glMultiTexCoord2ivARB) then Exit;
  4116. glMultiTexCoord2sARB := wglGetProcAddress('glMultiTexCoord2sARB');
  4117. if not Assigned(glMultiTexCoord2sARB) then Exit;
  4118. glMultiTexCoord2svARB := wglGetProcAddress('glMultiTexCoord2svARB');
  4119. if not Assigned(glMultiTexCoord2svARB) then Exit;
  4120. glMultiTexCoord3dARB := wglGetProcAddress('glMultiTexCoord3dARB');
  4121. if not Assigned(glMultiTexCoord3dARB) then Exit;
  4122. glMultiTexCoord3dvARB := wglGetProcAddress('glMultiTexCoord3dvARB');
  4123. if not Assigned(glMultiTexCoord3dvARB) then Exit;
  4124. glMultiTexCoord3fARB := wglGetProcAddress('glMultiTexCoord3fARB');
  4125. if not Assigned(glMultiTexCoord3fARB) then Exit;
  4126. glMultiTexCoord3fvARB := wglGetProcAddress('glMultiTexCoord3fvARB');
  4127. if not Assigned(glMultiTexCoord3fvARB) then Exit;
  4128. glMultiTexCoord3iARB := wglGetProcAddress('glMultiTexCoord3iARB');
  4129. if not Assigned(glMultiTexCoord3iARB) then Exit;
  4130. glMultiTexCoord3ivARB := wglGetProcAddress('glMultiTexCoord3ivARB');
  4131. if not Assigned(glMultiTexCoord3ivARB) then Exit;
  4132. glMultiTexCoord3sARB := wglGetProcAddress('glMultiTexCoord3sARB');
  4133. if not Assigned(glMultiTexCoord3sARB) then Exit;
  4134. glMultiTexCoord3svARB := wglGetProcAddress('glMultiTexCoord3svARB');
  4135. if not Assigned(glMultiTexCoord3svARB) then Exit;
  4136. glMultiTexCoord4dARB := wglGetProcAddress('glMultiTexCoord4dARB');
  4137. if not Assigned(glMultiTexCoord4dARB) then Exit;
  4138. glMultiTexCoord4dvARB := wglGetProcAddress('glMultiTexCoord4dvARB');
  4139. if not Assigned(glMultiTexCoord4dvARB) then Exit;
  4140. glMultiTexCoord4fARB := wglGetProcAddress('glMultiTexCoord4fARB');
  4141. if not Assigned(glMultiTexCoord4fARB) then Exit;
  4142. glMultiTexCoord4fvARB := wglGetProcAddress('glMultiTexCoord4fvARB');
  4143. if not Assigned(glMultiTexCoord4fvARB) then Exit;
  4144. glMultiTexCoord4iARB := wglGetProcAddress('glMultiTexCoord4iARB');
  4145. if not Assigned(glMultiTexCoord4iARB) then Exit;
  4146. glMultiTexCoord4ivARB := wglGetProcAddress('glMultiTexCoord4ivARB');
  4147. if not Assigned(glMultiTexCoord4ivARB) then Exit;
  4148. glMultiTexCoord4sARB := wglGetProcAddress('glMultiTexCoord4sARB');
  4149. if not Assigned(glMultiTexCoord4sARB) then Exit;
  4150. glMultiTexCoord4svARB := wglGetProcAddress('glMultiTexCoord4svARB');
  4151. if not Assigned(glMultiTexCoord4svARB) then Exit;
  4152. Result := TRUE;
  4153. end;
  4154. end;
  4155. function Load_GL_ARB_transpose_matrix: Boolean;
  4156. var
  4157. extstring: String;
  4158. begin
  4159. Result := FALSE;
  4160. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4161. if glext_ExtensionSupported('GL_ARB_transpose_matrix', extstring) then
  4162. begin
  4163. glLoadTransposeMatrixfARB := wglGetProcAddress('glLoadTransposeMatrixfARB');
  4164. if not Assigned(glLoadTransposeMatrixfARB) then Exit;
  4165. glLoadTransposeMatrixdARB := wglGetProcAddress('glLoadTransposeMatrixdARB');
  4166. if not Assigned(glLoadTransposeMatrixdARB) then Exit;
  4167. glMultTransposeMatrixfARB := wglGetProcAddress('glMultTransposeMatrixfARB');
  4168. if not Assigned(glMultTransposeMatrixfARB) then Exit;
  4169. glMultTransposeMatrixdARB := wglGetProcAddress('glMultTransposeMatrixdARB');
  4170. if not Assigned(glMultTransposeMatrixdARB) then Exit;
  4171. Result := TRUE;
  4172. end;
  4173. end;
  4174. function Load_GL_ARB_multisample: Boolean;
  4175. var
  4176. extstring: String;
  4177. begin
  4178. Result := FALSE;
  4179. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4180. if glext_ExtensionSupported('GL_ARB_multisample', extstring) then
  4181. begin
  4182. glSampleCoverageARB := wglGetProcAddress('glSampleCoverageARB');
  4183. if not Assigned(glSampleCoverageARB) then Exit;
  4184. Result := TRUE;
  4185. end;
  4186. end;
  4187. function Load_GL_ARB_texture_env_add: Boolean;
  4188. var
  4189. extstring: String;
  4190. begin
  4191. Result := FALSE;
  4192. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4193. if glext_ExtensionSupported('GL_ARB_texture_env_add', extstring) then
  4194. begin
  4195. Result := TRUE;
  4196. end;
  4197. end;
  4198. {$IFDEF Windows}
  4199. function Load_WGL_ARB_extensions_string: Boolean;
  4200. var
  4201. extstring: String;
  4202. begin
  4203. Result := FALSE;
  4204. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  4205. if not Assigned(wglGetExtensionsStringARB) then Exit;
  4206. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  4207. if glext_ExtensionSupported('WGL_ARB_extensions_string', extstring) then
  4208. begin
  4209. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  4210. if not Assigned(wglGetExtensionsStringARB) then Exit;
  4211. Result := TRUE;
  4212. end;
  4213. end;
  4214. function Load_WGL_ARB_buffer_region: Boolean;
  4215. var
  4216. extstring: String;
  4217. begin
  4218. Result := FALSE;
  4219. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  4220. if not Assigned(wglGetExtensionsStringARB) then Exit;
  4221. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  4222. if glext_ExtensionSupported('WGL_ARB_buffer_region', extstring) then
  4223. begin
  4224. wglCreateBufferRegionARB := wglGetProcAddress('wglCreateBufferRegionARB');
  4225. if not Assigned(wglCreateBufferRegionARB) then Exit;
  4226. wglDeleteBufferRegionARB := wglGetProcAddress('wglDeleteBufferRegionARB');
  4227. if not Assigned(wglDeleteBufferRegionARB) then Exit;
  4228. wglSaveBufferRegionARB := wglGetProcAddress('wglSaveBufferRegionARB');
  4229. if not Assigned(wglSaveBufferRegionARB) then Exit;
  4230. wglRestoreBufferRegionARB := wglGetProcAddress('wglRestoreBufferRegionARB');
  4231. if not Assigned(wglRestoreBufferRegionARB) then Exit;
  4232. Result := TRUE;
  4233. end;
  4234. end;
  4235. {$ENDIF}
  4236. function Load_GL_ARB_texture_cube_map: Boolean;
  4237. var
  4238. extstring: String;
  4239. begin
  4240. Result := FALSE;
  4241. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4242. if glext_ExtensionSupported('GL_ARB_texture_cube_map', extstring) then
  4243. begin
  4244. Result := TRUE;
  4245. end;
  4246. end;
  4247. function Load_GL_ARB_depth_texture: Boolean;
  4248. var
  4249. extstring: String;
  4250. begin
  4251. Result := FALSE;
  4252. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4253. if glext_ExtensionSupported('GL_ARB_depth_texture', extstring) then
  4254. begin
  4255. Result := TRUE;
  4256. end;
  4257. end;
  4258. function Load_GL_ARB_point_parameters: Boolean;
  4259. var
  4260. extstring: String;
  4261. begin
  4262. Result := FALSE;
  4263. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4264. if glext_ExtensionSupported('GL_ARB_point_parameters', extstring) then
  4265. begin
  4266. glPointParameterfARB := wglGetProcAddress('glPointParameterfARB');
  4267. if not Assigned(glPointParameterfARB) then Exit;
  4268. glPointParameterfvARB := wglGetProcAddress('glPointParameterfvARB');
  4269. if not Assigned(glPointParameterfvARB) then Exit;
  4270. Result := TRUE;
  4271. end;
  4272. end;
  4273. function Load_GL_ARB_shadow: Boolean;
  4274. var
  4275. extstring: String;
  4276. begin
  4277. Result := FALSE;
  4278. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4279. if glext_ExtensionSupported('GL_ARB_shadow', extstring) then
  4280. begin
  4281. Result := TRUE;
  4282. end;
  4283. end;
  4284. function Load_GL_ARB_shadow_ambient: Boolean;
  4285. var
  4286. extstring: String;
  4287. begin
  4288. Result := FALSE;
  4289. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4290. if glext_ExtensionSupported('GL_ARB_shadow_ambient', extstring) then
  4291. begin
  4292. Result := TRUE;
  4293. end;
  4294. end;
  4295. function Load_GL_ARB_texture_border_clamp: Boolean;
  4296. var
  4297. extstring: String;
  4298. begin
  4299. Result := FALSE;
  4300. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4301. if glext_ExtensionSupported('GL_ARB_texture_border_clamp', extstring) then
  4302. begin
  4303. Result := TRUE;
  4304. end;
  4305. end;
  4306. function Load_GL_ARB_texture_compression: Boolean;
  4307. var
  4308. extstring: String;
  4309. begin
  4310. Result := FALSE;
  4311. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4312. if glext_ExtensionSupported('GL_ARB_texture_compression', extstring) then
  4313. begin
  4314. glCompressedTexImage3DARB := wglGetProcAddress('glCompressedTexImage3DARB');
  4315. if not Assigned(glCompressedTexImage3DARB) then Exit;
  4316. glCompressedTexImage2DARB := wglGetProcAddress('glCompressedTexImage2DARB');
  4317. if not Assigned(glCompressedTexImage2DARB) then Exit;
  4318. glCompressedTexImage1DARB := wglGetProcAddress('glCompressedTexImage1DARB');
  4319. if not Assigned(glCompressedTexImage1DARB) then Exit;
  4320. glCompressedTexSubImage3DARB := wglGetProcAddress('glCompressedTexSubImage3DARB');
  4321. if not Assigned(glCompressedTexSubImage3DARB) then Exit;
  4322. glCompressedTexSubImage2DARB := wglGetProcAddress('glCompressedTexSubImage2DARB');
  4323. if not Assigned(glCompressedTexSubImage2DARB) then Exit;
  4324. glCompressedTexSubImage1DARB := wglGetProcAddress('glCompressedTexSubImage1DARB');
  4325. if not Assigned(glCompressedTexSubImage1DARB) then Exit;
  4326. glGetCompressedTexImageARB := wglGetProcAddress('glGetCompressedTexImageARB');
  4327. if not Assigned(glGetCompressedTexImageARB) then Exit;
  4328. Result := TRUE;
  4329. end;
  4330. end;
  4331. function Load_GL_ARB_texture_env_combine: Boolean;
  4332. var
  4333. extstring: String;
  4334. begin
  4335. Result := FALSE;
  4336. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4337. if glext_ExtensionSupported('GL_ARB_texture_env_combine', extstring) then
  4338. begin
  4339. Result := TRUE;
  4340. end;
  4341. end;
  4342. function Load_GL_ARB_texture_env_crossbar: Boolean;
  4343. var
  4344. extstring: String;
  4345. begin
  4346. Result := FALSE;
  4347. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4348. if glext_ExtensionSupported('GL_ARB_texture_env_crossbar', extstring) then
  4349. begin
  4350. Result := TRUE;
  4351. end;
  4352. end;
  4353. function Load_GL_ARB_texture_env_dot3: Boolean;
  4354. var
  4355. extstring: String;
  4356. begin
  4357. Result := FALSE;
  4358. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4359. if glext_ExtensionSupported('GL_ARB_texture_env_dot3', extstring) then
  4360. begin
  4361. Result := TRUE;
  4362. end;
  4363. end;
  4364. function Load_GL_ARB_texture_mirrored_repeat: Boolean;
  4365. var
  4366. extstring: String;
  4367. begin
  4368. Result := FALSE;
  4369. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4370. if glext_ExtensionSupported('GL_ARB_texture_mirrored_repeat', extstring) then
  4371. begin
  4372. Result := TRUE;
  4373. end;
  4374. end;
  4375. function Load_GL_ARB_vertex_blend: Boolean;
  4376. var
  4377. extstring: String;
  4378. begin
  4379. Result := FALSE;
  4380. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4381. if glext_ExtensionSupported('GL_ARB_vertex_blend', extstring) then
  4382. begin
  4383. glWeightbvARB := wglGetProcAddress('glWeightbvARB');
  4384. if not Assigned(glWeightbvARB) then Exit;
  4385. glWeightsvARB := wglGetProcAddress('glWeightsvARB');
  4386. if not Assigned(glWeightsvARB) then Exit;
  4387. glWeightivARB := wglGetProcAddress('glWeightivARB');
  4388. if not Assigned(glWeightivARB) then Exit;
  4389. glWeightfvARB := wglGetProcAddress('glWeightfvARB');
  4390. if not Assigned(glWeightfvARB) then Exit;
  4391. glWeightdvARB := wglGetProcAddress('glWeightdvARB');
  4392. if not Assigned(glWeightdvARB) then Exit;
  4393. glWeightvARB := wglGetProcAddress('glWeightvARB');
  4394. if not Assigned(glWeightvARB) then Exit;
  4395. glWeightubvARB := wglGetProcAddress('glWeightubvARB');
  4396. if not Assigned(glWeightubvARB) then Exit;
  4397. glWeightusvARB := wglGetProcAddress('glWeightusvARB');
  4398. if not Assigned(glWeightusvARB) then Exit;
  4399. glWeightuivARB := wglGetProcAddress('glWeightuivARB');
  4400. if not Assigned(glWeightuivARB) then Exit;
  4401. glWeightPointerARB := wglGetProcAddress('glWeightPointerARB');
  4402. if not Assigned(glWeightPointerARB) then Exit;
  4403. glVertexBlendARB := wglGetProcAddress('glVertexBlendARB');
  4404. if not Assigned(glVertexBlendARB) then Exit;
  4405. Result := TRUE;
  4406. end;
  4407. end;
  4408. function Load_GL_ARB_vertex_program: Boolean;
  4409. var
  4410. extstring: String;
  4411. begin
  4412. Result := FALSE;
  4413. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4414. if glext_ExtensionSupported('GL_ARB_vertex_program', extstring) then
  4415. begin
  4416. glVertexAttrib1sARB := wglGetProcAddress('glVertexAttrib1sARB');
  4417. if not Assigned(glVertexAttrib1sARB) then Exit;
  4418. glVertexAttrib1fARB := wglGetProcAddress('glVertexAttrib1fARB');
  4419. if not Assigned(glVertexAttrib1fARB) then Exit;
  4420. glVertexAttrib1dARB := wglGetProcAddress('glVertexAttrib1dARB');
  4421. if not Assigned(glVertexAttrib1dARB) then Exit;
  4422. glVertexAttrib2sARB := wglGetProcAddress('glVertexAttrib2sARB');
  4423. if not Assigned(glVertexAttrib2sARB) then Exit;
  4424. glVertexAttrib2fARB := wglGetProcAddress('glVertexAttrib2fARB');
  4425. if not Assigned(glVertexAttrib2fARB) then Exit;
  4426. glVertexAttrib2dARB := wglGetProcAddress('glVertexAttrib2dARB');
  4427. if not Assigned(glVertexAttrib2dARB) then Exit;
  4428. glVertexAttrib3sARB := wglGetProcAddress('glVertexAttrib3sARB');
  4429. if not Assigned(glVertexAttrib3sARB) then Exit;
  4430. glVertexAttrib3fARB := wglGetProcAddress('glVertexAttrib3fARB');
  4431. if not Assigned(glVertexAttrib3fARB) then Exit;
  4432. glVertexAttrib3dARB := wglGetProcAddress('glVertexAttrib3dARB');
  4433. if not Assigned(glVertexAttrib3dARB) then Exit;
  4434. glVertexAttrib4sARB := wglGetProcAddress('glVertexAttrib4sARB');
  4435. if not Assigned(glVertexAttrib4sARB) then Exit;
  4436. glVertexAttrib4fARB := wglGetProcAddress('glVertexAttrib4fARB');
  4437. if not Assigned(glVertexAttrib4fARB) then Exit;
  4438. glVertexAttrib4dARB := wglGetProcAddress('glVertexAttrib4dARB');
  4439. if not Assigned(glVertexAttrib4dARB) then Exit;
  4440. glVertexAttrib4NubARB := wglGetProcAddress('glVertexAttrib4NubARB');
  4441. if not Assigned(glVertexAttrib4NubARB) then Exit;
  4442. glVertexAttrib1svARB := wglGetProcAddress('glVertexAttrib1svARB');
  4443. if not Assigned(glVertexAttrib1svARB) then Exit;
  4444. glVertexAttrib1fvARB := wglGetProcAddress('glVertexAttrib1fvARB');
  4445. if not Assigned(glVertexAttrib1fvARB) then Exit;
  4446. glVertexAttrib1dvARB := wglGetProcAddress('glVertexAttrib1dvARB');
  4447. if not Assigned(glVertexAttrib1dvARB) then Exit;
  4448. glVertexAttrib2svARB := wglGetProcAddress('glVertexAttrib2svARB');
  4449. if not Assigned(glVertexAttrib2svARB) then Exit;
  4450. glVertexAttrib2fvARB := wglGetProcAddress('glVertexAttrib2fvARB');
  4451. if not Assigned(glVertexAttrib2fvARB) then Exit;
  4452. glVertexAttrib2dvARB := wglGetProcAddress('glVertexAttrib2dvARB');
  4453. if not Assigned(glVertexAttrib2dvARB) then Exit;
  4454. glVertexAttrib3svARB := wglGetProcAddress('glVertexAttrib3svARB');
  4455. if not Assigned(glVertexAttrib3svARB) then Exit;
  4456. glVertexAttrib3fvARB := wglGetProcAddress('glVertexAttrib3fvARB');
  4457. if not Assigned(glVertexAttrib3fvARB) then Exit;
  4458. glVertexAttrib3dvARB := wglGetProcAddress('glVertexAttrib3dvARB');
  4459. if not Assigned(glVertexAttrib3dvARB) then Exit;
  4460. glVertexAttrib4bvARB := wglGetProcAddress('glVertexAttrib4bvARB');
  4461. if not Assigned(glVertexAttrib4bvARB) then Exit;
  4462. glVertexAttrib4svARB := wglGetProcAddress('glVertexAttrib4svARB');
  4463. if not Assigned(glVertexAttrib4svARB) then Exit;
  4464. glVertexAttrib4ivARB := wglGetProcAddress('glVertexAttrib4ivARB');
  4465. if not Assigned(glVertexAttrib4ivARB) then Exit;
  4466. glVertexAttrib4ubvARB := wglGetProcAddress('glVertexAttrib4ubvARB');
  4467. if not Assigned(glVertexAttrib4ubvARB) then Exit;
  4468. glVertexAttrib4usvARB := wglGetProcAddress('glVertexAttrib4usvARB');
  4469. if not Assigned(glVertexAttrib4usvARB) then Exit;
  4470. glVertexAttrib4uivARB := wglGetProcAddress('glVertexAttrib4uivARB');
  4471. if not Assigned(glVertexAttrib4uivARB) then Exit;
  4472. glVertexAttrib4fvARB := wglGetProcAddress('glVertexAttrib4fvARB');
  4473. if not Assigned(glVertexAttrib4fvARB) then Exit;
  4474. glVertexAttrib4dvARB := wglGetProcAddress('glVertexAttrib4dvARB');
  4475. if not Assigned(glVertexAttrib4dvARB) then Exit;
  4476. glVertexAttrib4NbvARB := wglGetProcAddress('glVertexAttrib4NbvARB');
  4477. if not Assigned(glVertexAttrib4NbvARB) then Exit;
  4478. glVertexAttrib4NsvARB := wglGetProcAddress('glVertexAttrib4NsvARB');
  4479. if not Assigned(glVertexAttrib4NsvARB) then Exit;
  4480. glVertexAttrib4NivARB := wglGetProcAddress('glVertexAttrib4NivARB');
  4481. if not Assigned(glVertexAttrib4NivARB) then Exit;
  4482. glVertexAttrib4NubvARB := wglGetProcAddress('glVertexAttrib4NubvARB');
  4483. if not Assigned(glVertexAttrib4NubvARB) then Exit;
  4484. glVertexAttrib4NusvARB := wglGetProcAddress('glVertexAttrib4NusvARB');
  4485. if not Assigned(glVertexAttrib4NusvARB) then Exit;
  4486. glVertexAttrib4NuivARB := wglGetProcAddress('glVertexAttrib4NuivARB');
  4487. if not Assigned(glVertexAttrib4NuivARB) then Exit;
  4488. glVertexAttribPointerARB := wglGetProcAddress('glVertexAttribPointerARB');
  4489. if not Assigned(glVertexAttribPointerARB) then Exit;
  4490. glEnableVertexAttribArrayARB := wglGetProcAddress('glEnableVertexAttribArrayARB');
  4491. if not Assigned(glEnableVertexAttribArrayARB) then Exit;
  4492. glDisableVertexAttribArrayARB := wglGetProcAddress('glDisableVertexAttribArrayARB');
  4493. if not Assigned(glDisableVertexAttribArrayARB) then Exit;
  4494. glProgramStringARB := wglGetProcAddress('glProgramStringARB');
  4495. if not Assigned(glProgramStringARB) then Exit;
  4496. glBindProgramARB := wglGetProcAddress('glBindProgramARB');
  4497. if not Assigned(glBindProgramARB) then Exit;
  4498. glDeleteProgramsARB := wglGetProcAddress('glDeleteProgramsARB');
  4499. if not Assigned(glDeleteProgramsARB) then Exit;
  4500. glGenProgramsARB := wglGetProcAddress('glGenProgramsARB');
  4501. if not Assigned(glGenProgramsARB) then Exit;
  4502. glProgramEnvParameter4dARB := wglGetProcAddress('glProgramEnvParameter4dARB');
  4503. if not Assigned(glProgramEnvParameter4dARB) then Exit;
  4504. glProgramEnvParameter4dvARB := wglGetProcAddress('glProgramEnvParameter4dvARB');
  4505. if not Assigned(glProgramEnvParameter4dvARB) then Exit;
  4506. glProgramEnvParameter4fARB := wglGetProcAddress('glProgramEnvParameter4fARB');
  4507. if not Assigned(glProgramEnvParameter4fARB) then Exit;
  4508. glProgramEnvParameter4fvARB := wglGetProcAddress('glProgramEnvParameter4fvARB');
  4509. if not Assigned(glProgramEnvParameter4fvARB) then Exit;
  4510. glProgramLocalParameter4dARB := wglGetProcAddress('glProgramLocalParameter4dARB');
  4511. if not Assigned(glProgramLocalParameter4dARB) then Exit;
  4512. glProgramLocalParameter4dvARB := wglGetProcAddress('glProgramLocalParameter4dvARB');
  4513. if not Assigned(glProgramLocalParameter4dvARB) then Exit;
  4514. glProgramLocalParameter4fARB := wglGetProcAddress('glProgramLocalParameter4fARB');
  4515. if not Assigned(glProgramLocalParameter4fARB) then Exit;
  4516. glProgramLocalParameter4fvARB := wglGetProcAddress('glProgramLocalParameter4fvARB');
  4517. if not Assigned(glProgramLocalParameter4fvARB) then Exit;
  4518. glGetProgramEnvParameterdvARB := wglGetProcAddress('glGetProgramEnvParameterdvARB');
  4519. if not Assigned(glGetProgramEnvParameterdvARB) then Exit;
  4520. glGetProgramEnvParameterfvARB := wglGetProcAddress('glGetProgramEnvParameterfvARB');
  4521. if not Assigned(glGetProgramEnvParameterfvARB) then Exit;
  4522. glGetProgramLocalParameterdvARB := wglGetProcAddress('glGetProgramLocalParameterdvARB');
  4523. if not Assigned(glGetProgramLocalParameterdvARB) then Exit;
  4524. glGetProgramLocalParameterfvARB := wglGetProcAddress('glGetProgramLocalParameterfvARB');
  4525. if not Assigned(glGetProgramLocalParameterfvARB) then Exit;
  4526. glGetProgramivARB := wglGetProcAddress('glGetProgramivARB');
  4527. if not Assigned(glGetProgramivARB) then Exit;
  4528. glGetProgramStringARB := wglGetProcAddress('glGetProgramStringARB');
  4529. if not Assigned(glGetProgramStringARB) then Exit;
  4530. glGetVertexAttribdvARB := wglGetProcAddress('glGetVertexAttribdvARB');
  4531. if not Assigned(glGetVertexAttribdvARB) then Exit;
  4532. glGetVertexAttribfvARB := wglGetProcAddress('glGetVertexAttribfvARB');
  4533. if not Assigned(glGetVertexAttribfvARB) then Exit;
  4534. glGetVertexAttribivARB := wglGetProcAddress('glGetVertexAttribivARB');
  4535. if not Assigned(glGetVertexAttribivARB) then Exit;
  4536. glGetVertexAttribPointervARB := wglGetProcAddress('glGetVertexAttribPointervARB');
  4537. if not Assigned(glGetVertexAttribPointervARB) then Exit;
  4538. glIsProgramARB := wglGetProcAddress('glIsProgramARB');
  4539. if not Assigned(glIsProgramARB) then Exit;
  4540. Result := TRUE;
  4541. end;
  4542. end;
  4543. function Load_GL_ARB_window_pos: Boolean;
  4544. var
  4545. extstring: String;
  4546. begin
  4547. Result := FALSE;
  4548. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4549. if glext_ExtensionSupported('GL_ARB_window_pos', extstring) then
  4550. begin
  4551. glWindowPos2dARB := wglGetProcAddress('glWindowPos2dARB');
  4552. if not Assigned(glWindowPos2dARB) then Exit;
  4553. glWindowPos2fARB := wglGetProcAddress('glWindowPos2fARB');
  4554. if not Assigned(glWindowPos2fARB) then Exit;
  4555. glWindowPos2iARB := wglGetProcAddress('glWindowPos2iARB');
  4556. if not Assigned(glWindowPos2iARB) then Exit;
  4557. glWindowPos2sARB := wglGetProcAddress('glWindowPos2sARB');
  4558. if not Assigned(glWindowPos2sARB) then Exit;
  4559. glWindowPos2dvARB := wglGetProcAddress('glWindowPos2dvARB');
  4560. if not Assigned(glWindowPos2dvARB) then Exit;
  4561. glWindowPos2fvARB := wglGetProcAddress('glWindowPos2fvARB');
  4562. if not Assigned(glWindowPos2fvARB) then Exit;
  4563. glWindowPos2ivARB := wglGetProcAddress('glWindowPos2ivARB');
  4564. if not Assigned(glWindowPos2ivARB) then Exit;
  4565. glWindowPos2svARB := wglGetProcAddress('glWindowPos2svARB');
  4566. if not Assigned(glWindowPos2svARB) then Exit;
  4567. glWindowPos3dARB := wglGetProcAddress('glWindowPos3dARB');
  4568. if not Assigned(glWindowPos3dARB) then Exit;
  4569. glWindowPos3fARB := wglGetProcAddress('glWindowPos3fARB');
  4570. if not Assigned(glWindowPos3fARB) then Exit;
  4571. glWindowPos3iARB := wglGetProcAddress('glWindowPos3iARB');
  4572. if not Assigned(glWindowPos3iARB) then Exit;
  4573. glWindowPos3sARB := wglGetProcAddress('glWindowPos3sARB');
  4574. if not Assigned(glWindowPos3sARB) then Exit;
  4575. glWindowPos3dvARB := wglGetProcAddress('glWindowPos3dvARB');
  4576. if not Assigned(glWindowPos3dvARB) then Exit;
  4577. glWindowPos3fvARB := wglGetProcAddress('glWindowPos3fvARB');
  4578. if not Assigned(glWindowPos3fvARB) then Exit;
  4579. glWindowPos3ivARB := wglGetProcAddress('glWindowPos3ivARB');
  4580. if not Assigned(glWindowPos3ivARB) then Exit;
  4581. glWindowPos3svARB := wglGetProcAddress('glWindowPos3svARB');
  4582. if not Assigned(glWindowPos3svARB) then Exit;
  4583. Result := TRUE;
  4584. end;
  4585. end;
  4586. function Load_GL_EXT_422_pixels: Boolean;
  4587. var
  4588. extstring: String;
  4589. begin
  4590. Result := FALSE;
  4591. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4592. if glext_ExtensionSupported('GL_EXT_422_pixels', extstring) then
  4593. begin
  4594. Result := TRUE;
  4595. end;
  4596. end;
  4597. function Load_GL_EXT_abgr: Boolean;
  4598. var
  4599. extstring: String;
  4600. begin
  4601. Result := FALSE;
  4602. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4603. if glext_ExtensionSupported('GL_EXT_abgr', extstring) then
  4604. begin
  4605. Result := TRUE;
  4606. end;
  4607. end;
  4608. function Load_GL_EXT_bgra: Boolean;
  4609. var
  4610. extstring: String;
  4611. begin
  4612. Result := FALSE;
  4613. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4614. if glext_ExtensionSupported('GL_EXT_bgra', extstring) then
  4615. begin
  4616. Result := TRUE;
  4617. end;
  4618. end;
  4619. function Load_GL_EXT_blend_color: Boolean;
  4620. var
  4621. extstring: String;
  4622. begin
  4623. Result := FALSE;
  4624. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4625. if glext_ExtensionSupported('GL_EXT_blend_color', extstring) then
  4626. begin
  4627. glBlendColorEXT := wglGetProcAddress('glBlendColorEXT');
  4628. if not Assigned(glBlendColorEXT) then Exit;
  4629. Result := TRUE;
  4630. end;
  4631. end;
  4632. function Load_GL_EXT_blend_func_separate: Boolean;
  4633. var
  4634. extstring: String;
  4635. begin
  4636. Result := FALSE;
  4637. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4638. if glext_ExtensionSupported('GL_EXT_blend_func_separate', extstring) then
  4639. begin
  4640. glBlendFuncSeparateEXT := wglGetProcAddress('glBlendFuncSeparateEXT');
  4641. if not Assigned(glBlendFuncSeparateEXT) then Exit;
  4642. Result := TRUE;
  4643. end;
  4644. end;
  4645. function Load_GL_EXT_blend_logic_op: Boolean;
  4646. var
  4647. extstring: String;
  4648. begin
  4649. Result := FALSE;
  4650. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4651. if glext_ExtensionSupported('GL_EXT_blend_logic_op', extstring) then
  4652. begin
  4653. Result := TRUE;
  4654. end;
  4655. end;
  4656. function Load_GL_EXT_blend_minmax: Boolean;
  4657. var
  4658. extstring: String;
  4659. begin
  4660. Result := FALSE;
  4661. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4662. if glext_ExtensionSupported('GL_EXT_blend_minmax', extstring) then
  4663. begin
  4664. glBlendEquationEXT := wglGetProcAddress('glBlendEquationEXT');
  4665. if not Assigned(glBlendEquationEXT) then Exit;
  4666. Result := TRUE;
  4667. end;
  4668. end;
  4669. function Load_GL_EXT_blend_subtract: Boolean;
  4670. var
  4671. extstring: String;
  4672. begin
  4673. Result := FALSE;
  4674. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4675. if glext_ExtensionSupported('GL_EXT_blend_subtract', extstring) then
  4676. begin
  4677. Result := TRUE;
  4678. end;
  4679. end;
  4680. function Load_GL_EXT_clip_volume_hint: Boolean;
  4681. var
  4682. extstring: String;
  4683. begin
  4684. Result := FALSE;
  4685. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4686. if glext_ExtensionSupported('GL_EXT_clip_volume_hint', extstring) then
  4687. begin
  4688. Result := TRUE;
  4689. end;
  4690. end;
  4691. function Load_GL_EXT_color_subtable: Boolean;
  4692. var
  4693. extstring: String;
  4694. begin
  4695. Result := FALSE;
  4696. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4697. if glext_ExtensionSupported('GL_EXT_color_subtable', extstring) then
  4698. begin
  4699. glColorSubTableEXT := wglGetProcAddress('glColorSubTableEXT');
  4700. if not Assigned(glColorSubTableEXT) then Exit;
  4701. glCopyColorSubTableEXT := wglGetProcAddress('glCopyColorSubTableEXT');
  4702. if not Assigned(glCopyColorSubTableEXT) then Exit;
  4703. Result := TRUE;
  4704. end;
  4705. end;
  4706. function Load_GL_EXT_compiled_vertex_array: Boolean;
  4707. var
  4708. extstring: String;
  4709. begin
  4710. Result := FALSE;
  4711. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4712. if glext_ExtensionSupported('GL_EXT_compiled_vertex_array', extstring) then
  4713. begin
  4714. glLockArraysEXT := wglGetProcAddress('glLockArraysEXT');
  4715. if not Assigned(glLockArraysEXT) then Exit;
  4716. glUnlockArraysEXT := wglGetProcAddress('glUnlockArraysEXT');
  4717. if not Assigned(glUnlockArraysEXT) then Exit;
  4718. Result := TRUE;
  4719. end;
  4720. end;
  4721. function Load_GL_EXT_convolution: Boolean;
  4722. var
  4723. extstring: String;
  4724. begin
  4725. Result := FALSE;
  4726. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4727. if glext_ExtensionSupported('GL_EXT_convolution', extstring) then
  4728. begin
  4729. glConvolutionFilter1DEXT := wglGetProcAddress('glConvolutionFilter1DEXT');
  4730. if not Assigned(glConvolutionFilter1DEXT) then Exit;
  4731. glConvolutionFilter2DEXT := wglGetProcAddress('glConvolutionFilter2DEXT');
  4732. if not Assigned(glConvolutionFilter2DEXT) then Exit;
  4733. glCopyConvolutionFilter1DEXT := wglGetProcAddress('glCopyConvolutionFilter1DEXT');
  4734. if not Assigned(glCopyConvolutionFilter1DEXT) then Exit;
  4735. glCopyConvolutionFilter2DEXT := wglGetProcAddress('glCopyConvolutionFilter2DEXT');
  4736. if not Assigned(glCopyConvolutionFilter2DEXT) then Exit;
  4737. glGetConvolutionFilterEXT := wglGetProcAddress('glGetConvolutionFilterEXT');
  4738. if not Assigned(glGetConvolutionFilterEXT) then Exit;
  4739. glSeparableFilter2DEXT := wglGetProcAddress('glSeparableFilter2DEXT');
  4740. if not Assigned(glSeparableFilter2DEXT) then Exit;
  4741. glGetSeparableFilterEXT := wglGetProcAddress('glGetSeparableFilterEXT');
  4742. if not Assigned(glGetSeparableFilterEXT) then Exit;
  4743. glConvolutionParameteriEXT := wglGetProcAddress('glConvolutionParameteriEXT');
  4744. if not Assigned(glConvolutionParameteriEXT) then Exit;
  4745. glConvolutionParameterivEXT := wglGetProcAddress('glConvolutionParameterivEXT');
  4746. if not Assigned(glConvolutionParameterivEXT) then Exit;
  4747. glConvolutionParameterfEXT := wglGetProcAddress('glConvolutionParameterfEXT');
  4748. if not Assigned(glConvolutionParameterfEXT) then Exit;
  4749. glConvolutionParameterfvEXT := wglGetProcAddress('glConvolutionParameterfvEXT');
  4750. if not Assigned(glConvolutionParameterfvEXT) then Exit;
  4751. glGetConvolutionParameterivEXT := wglGetProcAddress('glGetConvolutionParameterivEXT');
  4752. if not Assigned(glGetConvolutionParameterivEXT) then Exit;
  4753. glGetConvolutionParameterfvEXT := wglGetProcAddress('glGetConvolutionParameterfvEXT');
  4754. if not Assigned(glGetConvolutionParameterfvEXT) then Exit;
  4755. Result := TRUE;
  4756. end;
  4757. end;
  4758. function Load_GL_EXT_fog_coord: Boolean;
  4759. var
  4760. extstring: String;
  4761. begin
  4762. Result := FALSE;
  4763. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4764. if glext_ExtensionSupported('GL_EXT_fog_coord', extstring) then
  4765. begin
  4766. glFogCoordfEXT := wglGetProcAddress('glFogCoordfEXT');
  4767. if not Assigned(glFogCoordfEXT) then Exit;
  4768. glFogCoorddEXT := wglGetProcAddress('glFogCoorddEXT');
  4769. if not Assigned(glFogCoorddEXT) then Exit;
  4770. glFogCoordfvEXT := wglGetProcAddress('glFogCoordfvEXT');
  4771. if not Assigned(glFogCoordfvEXT) then Exit;
  4772. glFogCoorddvEXT := wglGetProcAddress('glFogCoorddvEXT');
  4773. if not Assigned(glFogCoorddvEXT) then Exit;
  4774. glFogCoordPointerEXT := wglGetProcAddress('glFogCoordPointerEXT');
  4775. if not Assigned(glFogCoordPointerEXT) then Exit;
  4776. Result := TRUE;
  4777. end;
  4778. end;
  4779. function Load_GL_EXT_histogram: Boolean;
  4780. var
  4781. extstring: String;
  4782. begin
  4783. Result := FALSE;
  4784. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4785. if glext_ExtensionSupported('GL_EXT_histogram', extstring) then
  4786. begin
  4787. glHistogramEXT := wglGetProcAddress('glHistogramEXT');
  4788. if not Assigned(glHistogramEXT) then Exit;
  4789. glResetHistogramEXT := wglGetProcAddress('glResetHistogramEXT');
  4790. if not Assigned(glResetHistogramEXT) then Exit;
  4791. glGetHistogramEXT := wglGetProcAddress('glGetHistogramEXT');
  4792. if not Assigned(glGetHistogramEXT) then Exit;
  4793. glGetHistogramParameterivEXT := wglGetProcAddress('glGetHistogramParameterivEXT');
  4794. if not Assigned(glGetHistogramParameterivEXT) then Exit;
  4795. glGetHistogramParameterfvEXT := wglGetProcAddress('glGetHistogramParameterfvEXT');
  4796. if not Assigned(glGetHistogramParameterfvEXT) then Exit;
  4797. glMinmaxEXT := wglGetProcAddress('glMinmaxEXT');
  4798. if not Assigned(glMinmaxEXT) then Exit;
  4799. glResetMinmaxEXT := wglGetProcAddress('glResetMinmaxEXT');
  4800. if not Assigned(glResetMinmaxEXT) then Exit;
  4801. glGetMinmaxEXT := wglGetProcAddress('glGetMinmaxEXT');
  4802. if not Assigned(glGetMinmaxEXT) then Exit;
  4803. glGetMinmaxParameterivEXT := wglGetProcAddress('glGetMinmaxParameterivEXT');
  4804. if not Assigned(glGetMinmaxParameterivEXT) then Exit;
  4805. glGetMinmaxParameterfvEXT := wglGetProcAddress('glGetMinmaxParameterfvEXT');
  4806. if not Assigned(glGetMinmaxParameterfvEXT) then Exit;
  4807. Result := TRUE;
  4808. end;
  4809. end;
  4810. function Load_GL_EXT_multi_draw_arrays: Boolean;
  4811. var
  4812. extstring: String;
  4813. begin
  4814. Result := FALSE;
  4815. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4816. if glext_ExtensionSupported('GL_EXT_multi_draw_arrays', extstring) then
  4817. begin
  4818. glMultiDrawArraysEXT := wglGetProcAddress('glMultiDrawArraysEXT');
  4819. if not Assigned(glMultiDrawArraysEXT) then Exit;
  4820. glMultiDrawElementsEXT := wglGetProcAddress('glMultiDrawElementsEXT');
  4821. if not Assigned(glMultiDrawElementsEXT) then Exit;
  4822. Result := TRUE;
  4823. end;
  4824. end;
  4825. function Load_GL_EXT_packed_pixels: Boolean;
  4826. var
  4827. extstring: String;
  4828. begin
  4829. Result := FALSE;
  4830. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4831. if glext_ExtensionSupported('GL_EXT_packed_pixels', extstring) then
  4832. begin
  4833. Result := TRUE;
  4834. end;
  4835. end;
  4836. function Load_GL_EXT_paletted_texture: Boolean;
  4837. var
  4838. extstring: String;
  4839. begin
  4840. Result := FALSE;
  4841. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4842. if glext_ExtensionSupported('GL_EXT_paletted_texture', extstring) then
  4843. begin
  4844. glColorTableEXT := wglGetProcAddress('glColorTableEXT');
  4845. if not Assigned(glColorTableEXT) then Exit;
  4846. glColorSubTableEXT := wglGetProcAddress('glColorSubTableEXT');
  4847. if not Assigned(glColorSubTableEXT) then Exit;
  4848. glGetColorTableEXT := wglGetProcAddress('glGetColorTableEXT');
  4849. if not Assigned(glGetColorTableEXT) then Exit;
  4850. glGetColorTableParameterivEXT := wglGetProcAddress('glGetColorTableParameterivEXT');
  4851. if not Assigned(glGetColorTableParameterivEXT) then Exit;
  4852. glGetColorTableParameterfvEXT := wglGetProcAddress('glGetColorTableParameterfvEXT');
  4853. if not Assigned(glGetColorTableParameterfvEXT) then Exit;
  4854. Result := TRUE;
  4855. end;
  4856. end;
  4857. function Load_GL_EXT_point_parameters: Boolean;
  4858. var
  4859. extstring: String;
  4860. begin
  4861. Result := FALSE;
  4862. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4863. if glext_ExtensionSupported('GL_EXT_point_parameters', extstring) then
  4864. begin
  4865. glPointParameterfEXT := wglGetProcAddress('glPointParameterfEXT');
  4866. if not Assigned(glPointParameterfEXT) then Exit;
  4867. glPointParameterfvEXT := wglGetProcAddress('glPointParameterfvEXT');
  4868. if not Assigned(glPointParameterfvEXT) then Exit;
  4869. Result := TRUE;
  4870. end;
  4871. end;
  4872. function Load_GL_EXT_polygon_offset: Boolean;
  4873. var
  4874. extstring: String;
  4875. begin
  4876. Result := FALSE;
  4877. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4878. if glext_ExtensionSupported('GL_EXT_polygon_offset', extstring) then
  4879. begin
  4880. glPolygonOffsetEXT := wglGetProcAddress('glPolygonOffsetEXT');
  4881. if not Assigned(glPolygonOffsetEXT) then Exit;
  4882. Result := TRUE;
  4883. end;
  4884. end;
  4885. function Load_GL_EXT_secondary_color: Boolean;
  4886. var
  4887. extstring: String;
  4888. begin
  4889. Result := FALSE;
  4890. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4891. if glext_ExtensionSupported('GL_EXT_secondary_color', extstring) then
  4892. begin
  4893. glSecondaryColor3bEXT := wglGetProcAddress('glSecondaryColor3bEXT');
  4894. if not Assigned(glSecondaryColor3bEXT) then Exit;
  4895. glSecondaryColor3sEXT := wglGetProcAddress('glSecondaryColor3sEXT');
  4896. if not Assigned(glSecondaryColor3sEXT) then Exit;
  4897. glSecondaryColor3iEXT := wglGetProcAddress('glSecondaryColor3iEXT');
  4898. if not Assigned(glSecondaryColor3iEXT) then Exit;
  4899. glSecondaryColor3fEXT := wglGetProcAddress('glSecondaryColor3fEXT');
  4900. if not Assigned(glSecondaryColor3fEXT) then Exit;
  4901. glSecondaryColor3dEXT := wglGetProcAddress('glSecondaryColor3dEXT');
  4902. if not Assigned(glSecondaryColor3dEXT) then Exit;
  4903. glSecondaryColor3ubEXT := wglGetProcAddress('glSecondaryColor3ubEXT');
  4904. if not Assigned(glSecondaryColor3ubEXT) then Exit;
  4905. glSecondaryColor3usEXT := wglGetProcAddress('glSecondaryColor3usEXT');
  4906. if not Assigned(glSecondaryColor3usEXT) then Exit;
  4907. glSecondaryColor3uiEXT := wglGetProcAddress('glSecondaryColor3uiEXT');
  4908. if not Assigned(glSecondaryColor3uiEXT) then Exit;
  4909. glSecondaryColor3bvEXT := wglGetProcAddress('glSecondaryColor3bvEXT');
  4910. if not Assigned(glSecondaryColor3bvEXT) then Exit;
  4911. glSecondaryColor3svEXT := wglGetProcAddress('glSecondaryColor3svEXT');
  4912. if not Assigned(glSecondaryColor3svEXT) then Exit;
  4913. glSecondaryColor3ivEXT := wglGetProcAddress('glSecondaryColor3ivEXT');
  4914. if not Assigned(glSecondaryColor3ivEXT) then Exit;
  4915. glSecondaryColor3fvEXT := wglGetProcAddress('glSecondaryColor3fvEXT');
  4916. if not Assigned(glSecondaryColor3fvEXT) then Exit;
  4917. glSecondaryColor3dvEXT := wglGetProcAddress('glSecondaryColor3dvEXT');
  4918. if not Assigned(glSecondaryColor3dvEXT) then Exit;
  4919. glSecondaryColor3ubvEXT := wglGetProcAddress('glSecondaryColor3ubvEXT');
  4920. if not Assigned(glSecondaryColor3ubvEXT) then Exit;
  4921. glSecondaryColor3usvEXT := wglGetProcAddress('glSecondaryColor3usvEXT');
  4922. if not Assigned(glSecondaryColor3usvEXT) then Exit;
  4923. glSecondaryColor3uivEXT := wglGetProcAddress('glSecondaryColor3uivEXT');
  4924. if not Assigned(glSecondaryColor3uivEXT) then Exit;
  4925. glSecondaryColorPointerEXT := wglGetProcAddress('glSecondaryColorPointerEXT');
  4926. if not Assigned(glSecondaryColorPointerEXT) then Exit;
  4927. Result := TRUE;
  4928. end;
  4929. end;
  4930. function Load_GL_EXT_separate_specular_color: Boolean;
  4931. var
  4932. extstring: String;
  4933. begin
  4934. Result := FALSE;
  4935. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4936. if glext_ExtensionSupported('GL_EXT_separate_specular_color', extstring) then
  4937. begin
  4938. Result := TRUE;
  4939. end;
  4940. end;
  4941. function Load_GL_EXT_shadow_funcs: Boolean;
  4942. var
  4943. extstring: String;
  4944. begin
  4945. Result := FALSE;
  4946. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4947. if glext_ExtensionSupported('GL_EXT_shadow_funcs', extstring) then
  4948. begin
  4949. Result := TRUE;
  4950. end;
  4951. end;
  4952. function Load_GL_EXT_shared_texture_palette: Boolean;
  4953. var
  4954. extstring: String;
  4955. begin
  4956. Result := FALSE;
  4957. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4958. if glext_ExtensionSupported('GL_EXT_shared_texture_palette', extstring) then
  4959. begin
  4960. Result := TRUE;
  4961. end;
  4962. end;
  4963. function Load_GL_EXT_stencil_two_side: Boolean;
  4964. var
  4965. extstring: String;
  4966. begin
  4967. Result := FALSE;
  4968. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4969. if glext_ExtensionSupported('GL_EXT_stencil_two_side', extstring) then
  4970. begin
  4971. glActiveStencilFaceEXT := wglGetProcAddress('glActiveStencilFaceEXT');
  4972. if not Assigned(glActiveStencilFaceEXT) then Exit;
  4973. Result := TRUE;
  4974. end;
  4975. end;
  4976. function Load_GL_EXT_stencil_wrap: Boolean;
  4977. var
  4978. extstring: String;
  4979. begin
  4980. Result := FALSE;
  4981. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4982. if glext_ExtensionSupported('GL_EXT_stencil_wrap', extstring) then
  4983. begin
  4984. Result := TRUE;
  4985. end;
  4986. end;
  4987. function Load_GL_EXT_subtexture: Boolean;
  4988. var
  4989. extstring: String;
  4990. begin
  4991. Result := FALSE;
  4992. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4993. if glext_ExtensionSupported('GL_EXT_subtexture', extstring) then
  4994. begin
  4995. glTexSubImage1DEXT := wglGetProcAddress('glTexSubImage1DEXT');
  4996. if not Assigned(glTexSubImage1DEXT) then Exit;
  4997. glTexSubImage2DEXT := wglGetProcAddress('glTexSubImage2DEXT');
  4998. if not Assigned(glTexSubImage2DEXT) then Exit;
  4999. glTexSubImage3DEXT := wglGetProcAddress('glTexSubImage3DEXT');
  5000. if not Assigned(glTexSubImage3DEXT) then Exit;
  5001. Result := TRUE;
  5002. end;
  5003. end;
  5004. function Load_GL_EXT_texture3D: Boolean;
  5005. var
  5006. extstring: String;
  5007. begin
  5008. Result := FALSE;
  5009. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5010. if glext_ExtensionSupported('GL_EXT_texture3D', extstring) then
  5011. begin
  5012. glTexImage3DEXT := wglGetProcAddress('glTexImage3DEXT');
  5013. if not Assigned(glTexImage3DEXT) then Exit;
  5014. Result := TRUE;
  5015. end;
  5016. end;
  5017. function Load_GL_EXT_texture_compression_s3tc: Boolean;
  5018. var
  5019. extstring: String;
  5020. begin
  5021. Result := FALSE;
  5022. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5023. if glext_ExtensionSupported('GL_EXT_texture_compression_s3tc', extstring) then
  5024. begin
  5025. Result := TRUE;
  5026. end;
  5027. end;
  5028. function Load_GL_EXT_texture_env_add: Boolean;
  5029. var
  5030. extstring: String;
  5031. begin
  5032. Result := FALSE;
  5033. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5034. if glext_ExtensionSupported('GL_EXT_texture_env_add', extstring) then
  5035. begin
  5036. Result := TRUE;
  5037. end;
  5038. end;
  5039. function Load_GL_EXT_texture_env_combine: Boolean;
  5040. var
  5041. extstring: String;
  5042. begin
  5043. Result := FALSE;
  5044. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5045. if glext_ExtensionSupported('GL_EXT_texture_env_combine', extstring) then
  5046. begin
  5047. Result := TRUE;
  5048. end;
  5049. end;
  5050. function Load_GL_EXT_texture_env_dot3: Boolean;
  5051. var
  5052. extstring: String;
  5053. begin
  5054. Result := FALSE;
  5055. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5056. if glext_ExtensionSupported('GL_EXT_texture_env_dot3', extstring) then
  5057. begin
  5058. Result := TRUE;
  5059. end;
  5060. end;
  5061. function Load_GL_EXT_texture_filter_anisotropic: Boolean;
  5062. var
  5063. extstring: String;
  5064. begin
  5065. Result := FALSE;
  5066. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5067. if glext_ExtensionSupported('GL_EXT_texture_filter_anisotropic', extstring) then
  5068. begin
  5069. Result := TRUE;
  5070. end;
  5071. end;
  5072. function Load_GL_EXT_texture_lod_bias: Boolean;
  5073. var
  5074. extstring: String;
  5075. begin
  5076. Result := FALSE;
  5077. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5078. if glext_ExtensionSupported('GL_EXT_texture_lod_bias', extstring) then
  5079. begin
  5080. Result := TRUE;
  5081. end;
  5082. end;
  5083. function Load_GL_EXT_texture_object: Boolean;
  5084. var
  5085. extstring: String;
  5086. begin
  5087. Result := FALSE;
  5088. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5089. if glext_ExtensionSupported('GL_EXT_texture_object', extstring) then
  5090. begin
  5091. glGenTexturesEXT := wglGetProcAddress('glGenTexturesEXT');
  5092. if not Assigned(glGenTexturesEXT) then Exit;
  5093. glDeleteTexturesEXT := wglGetProcAddress('glDeleteTexturesEXT');
  5094. if not Assigned(glDeleteTexturesEXT) then Exit;
  5095. glBindTextureEXT := wglGetProcAddress('glBindTextureEXT');
  5096. if not Assigned(glBindTextureEXT) then Exit;
  5097. glPrioritizeTexturesEXT := wglGetProcAddress('glPrioritizeTexturesEXT');
  5098. if not Assigned(glPrioritizeTexturesEXT) then Exit;
  5099. glAreTexturesResidentEXT := wglGetProcAddress('glAreTexturesResidentEXT');
  5100. if not Assigned(glAreTexturesResidentEXT) then Exit;
  5101. glIsTextureEXT := wglGetProcAddress('glIsTextureEXT');
  5102. if not Assigned(glIsTextureEXT) then Exit;
  5103. Result := TRUE;
  5104. end;
  5105. end;
  5106. function Load_GL_EXT_vertex_array: Boolean;
  5107. var
  5108. extstring: String;
  5109. begin
  5110. Result := FALSE;
  5111. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5112. if glext_ExtensionSupported('GL_EXT_vertex_array', extstring) then
  5113. begin
  5114. glArrayElementEXT := wglGetProcAddress('glArrayElementEXT');
  5115. if not Assigned(glArrayElementEXT) then Exit;
  5116. glDrawArraysEXT := wglGetProcAddress('glDrawArraysEXT');
  5117. if not Assigned(glDrawArraysEXT) then Exit;
  5118. glVertexPointerEXT := wglGetProcAddress('glVertexPointerEXT');
  5119. if not Assigned(glVertexPointerEXT) then Exit;
  5120. glNormalPointerEXT := wglGetProcAddress('glNormalPointerEXT');
  5121. if not Assigned(glNormalPointerEXT) then Exit;
  5122. glColorPointerEXT := wglGetProcAddress('glColorPointerEXT');
  5123. if not Assigned(glColorPointerEXT) then Exit;
  5124. glIndexPointerEXT := wglGetProcAddress('glIndexPointerEXT');
  5125. if not Assigned(glIndexPointerEXT) then Exit;
  5126. glTexCoordPointerEXT := wglGetProcAddress('glTexCoordPointerEXT');
  5127. if not Assigned(glTexCoordPointerEXT) then Exit;
  5128. glEdgeFlagPointerEXT := wglGetProcAddress('glEdgeFlagPointerEXT');
  5129. if not Assigned(glEdgeFlagPointerEXT) then Exit;
  5130. glGetPointervEXT := wglGetProcAddress('glGetPointervEXT');
  5131. if not Assigned(glGetPointervEXT) then Exit;
  5132. Result := TRUE;
  5133. end;
  5134. end;
  5135. function Load_GL_EXT_vertex_shader: Boolean;
  5136. var
  5137. extstring: String;
  5138. begin
  5139. Result := FALSE;
  5140. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5141. if glext_ExtensionSupported('GL_EXT_vertex_shader', extstring) then
  5142. begin
  5143. glBeginVertexShaderEXT := wglGetProcAddress('glBeginVertexShaderEXT');
  5144. if not Assigned(glBeginVertexShaderEXT) then Exit;
  5145. glEndVertexShaderEXT := wglGetProcAddress('glEndVertexShaderEXT');
  5146. if not Assigned(glEndVertexShaderEXT) then Exit;
  5147. glBindVertexShaderEXT := wglGetProcAddress('glBindVertexShaderEXT');
  5148. if not Assigned(glBindVertexShaderEXT) then Exit;
  5149. glGenVertexShadersEXT := wglGetProcAddress('glGenVertexShadersEXT');
  5150. if not Assigned(glGenVertexShadersEXT) then Exit;
  5151. glDeleteVertexShaderEXT := wglGetProcAddress('glDeleteVertexShaderEXT');
  5152. if not Assigned(glDeleteVertexShaderEXT) then Exit;
  5153. glShaderOp1EXT := wglGetProcAddress('glShaderOp1EXT');
  5154. if not Assigned(glShaderOp1EXT) then Exit;
  5155. glShaderOp2EXT := wglGetProcAddress('glShaderOp2EXT');
  5156. if not Assigned(glShaderOp2EXT) then Exit;
  5157. glShaderOp3EXT := wglGetProcAddress('glShaderOp3EXT');
  5158. if not Assigned(glShaderOp3EXT) then Exit;
  5159. glSwizzleEXT := wglGetProcAddress('glSwizzleEXT');
  5160. if not Assigned(glSwizzleEXT) then Exit;
  5161. glWriteMaskEXT := wglGetProcAddress('glWriteMaskEXT');
  5162. if not Assigned(glWriteMaskEXT) then Exit;
  5163. glInsertComponentEXT := wglGetProcAddress('glInsertComponentEXT');
  5164. if not Assigned(glInsertComponentEXT) then Exit;
  5165. glExtractComponentEXT := wglGetProcAddress('glExtractComponentEXT');
  5166. if not Assigned(glExtractComponentEXT) then Exit;
  5167. glGenSymbolsEXT := wglGetProcAddress('glGenSymbolsEXT');
  5168. if not Assigned(glGenSymbolsEXT) then Exit;
  5169. glSetInvariantEXT := wglGetProcAddress('glSetInvariantEXT');
  5170. if not Assigned(glSetInvariantEXT) then Exit;
  5171. glSetLocalConstantEXT := wglGetProcAddress('glSetLocalConstantEXT');
  5172. if not Assigned(glSetLocalConstantEXT) then Exit;
  5173. glVariantbvEXT := wglGetProcAddress('glVariantbvEXT');
  5174. if not Assigned(glVariantbvEXT) then Exit;
  5175. glVariantsvEXT := wglGetProcAddress('glVariantsvEXT');
  5176. if not Assigned(glVariantsvEXT) then Exit;
  5177. glVariantivEXT := wglGetProcAddress('glVariantivEXT');
  5178. if not Assigned(glVariantivEXT) then Exit;
  5179. glVariantfvEXT := wglGetProcAddress('glVariantfvEXT');
  5180. if not Assigned(glVariantfvEXT) then Exit;
  5181. glVariantdvEXT := wglGetProcAddress('glVariantdvEXT');
  5182. if not Assigned(glVariantdvEXT) then Exit;
  5183. glVariantubvEXT := wglGetProcAddress('glVariantubvEXT');
  5184. if not Assigned(glVariantubvEXT) then Exit;
  5185. glVariantusvEXT := wglGetProcAddress('glVariantusvEXT');
  5186. if not Assigned(glVariantusvEXT) then Exit;
  5187. glVariantuivEXT := wglGetProcAddress('glVariantuivEXT');
  5188. if not Assigned(glVariantuivEXT) then Exit;
  5189. glVariantPointerEXT := wglGetProcAddress('glVariantPointerEXT');
  5190. if not Assigned(glVariantPointerEXT) then Exit;
  5191. glEnableVariantClientStateEXT := wglGetProcAddress('glEnableVariantClientStateEXT');
  5192. if not Assigned(glEnableVariantClientStateEXT) then Exit;
  5193. glDisableVariantClientStateEXT := wglGetProcAddress('glDisableVariantClientStateEXT');
  5194. if not Assigned(glDisableVariantClientStateEXT) then Exit;
  5195. glBindLightParameterEXT := wglGetProcAddress('glBindLightParameterEXT');
  5196. if not Assigned(glBindLightParameterEXT) then Exit;
  5197. glBindMaterialParameterEXT := wglGetProcAddress('glBindMaterialParameterEXT');
  5198. if not Assigned(glBindMaterialParameterEXT) then Exit;
  5199. glBindTexGenParameterEXT := wglGetProcAddress('glBindTexGenParameterEXT');
  5200. if not Assigned(glBindTexGenParameterEXT) then Exit;
  5201. glBindTextureUnitParameterEXT := wglGetProcAddress('glBindTextureUnitParameterEXT');
  5202. if not Assigned(glBindTextureUnitParameterEXT) then Exit;
  5203. glBindParameterEXT := wglGetProcAddress('glBindParameterEXT');
  5204. if not Assigned(glBindParameterEXT) then Exit;
  5205. glIsVariantEnabledEXT := wglGetProcAddress('glIsVariantEnabledEXT');
  5206. if not Assigned(glIsVariantEnabledEXT) then Exit;
  5207. glGetVariantBooleanvEXT := wglGetProcAddress('glGetVariantBooleanvEXT');
  5208. if not Assigned(glGetVariantBooleanvEXT) then Exit;
  5209. glGetVariantIntegervEXT := wglGetProcAddress('glGetVariantIntegervEXT');
  5210. if not Assigned(glGetVariantIntegervEXT) then Exit;
  5211. glGetVariantFloatvEXT := wglGetProcAddress('glGetVariantFloatvEXT');
  5212. if not Assigned(glGetVariantFloatvEXT) then Exit;
  5213. glGetVariantPointervEXT := wglGetProcAddress('glGetVariantPointervEXT');
  5214. if not Assigned(glGetVariantPointervEXT) then Exit;
  5215. glGetInvariantBooleanvEXT := wglGetProcAddress('glGetInvariantBooleanvEXT');
  5216. if not Assigned(glGetInvariantBooleanvEXT) then Exit;
  5217. glGetInvariantIntegervEXT := wglGetProcAddress('glGetInvariantIntegervEXT');
  5218. if not Assigned(glGetInvariantIntegervEXT) then Exit;
  5219. glGetInvariantFloatvEXT := wglGetProcAddress('glGetInvariantFloatvEXT');
  5220. if not Assigned(glGetInvariantFloatvEXT) then Exit;
  5221. glGetLocalConstantBooleanvEXT := wglGetProcAddress('glGetLocalConstantBooleanvEXT');
  5222. if not Assigned(glGetLocalConstantBooleanvEXT) then Exit;
  5223. glGetLocalConstantIntegervEXT := wglGetProcAddress('glGetLocalConstantIntegervEXT');
  5224. if not Assigned(glGetLocalConstantIntegervEXT) then Exit;
  5225. glGetLocalConstantFloatvEXT := wglGetProcAddress('glGetLocalConstantFloatvEXT');
  5226. if not Assigned(glGetLocalConstantFloatvEXT) then Exit;
  5227. Result := TRUE;
  5228. end;
  5229. end;
  5230. function Load_GL_EXT_vertex_weighting: Boolean;
  5231. var
  5232. extstring: String;
  5233. begin
  5234. Result := FALSE;
  5235. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5236. if glext_ExtensionSupported('GL_EXT_vertex_weighting', extstring) then
  5237. begin
  5238. glVertexWeightfEXT := wglGetProcAddress('glVertexWeightfEXT');
  5239. if not Assigned(glVertexWeightfEXT) then Exit;
  5240. glVertexWeightfvEXT := wglGetProcAddress('glVertexWeightfvEXT');
  5241. if not Assigned(glVertexWeightfvEXT) then Exit;
  5242. glVertexWeightPointerEXT := wglGetProcAddress('glVertexWeightPointerEXT');
  5243. if not Assigned(glVertexWeightPointerEXT) then Exit;
  5244. Result := TRUE;
  5245. end;
  5246. end;
  5247. function Load_GL_HP_occlusion_test: Boolean;
  5248. var
  5249. extstring: String;
  5250. begin
  5251. Result := FALSE;
  5252. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5253. if glext_ExtensionSupported('GL_HP_occlusion_test', extstring) then
  5254. begin
  5255. Result := TRUE;
  5256. end;
  5257. end;
  5258. function Load_GL_NV_blend_square: Boolean;
  5259. var
  5260. extstring: String;
  5261. begin
  5262. Result := FALSE;
  5263. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5264. if glext_ExtensionSupported('GL_NV_blend_square', extstring) then
  5265. begin
  5266. Result := TRUE;
  5267. end;
  5268. end;
  5269. function Load_GL_NV_copy_depth_to_color: Boolean;
  5270. var
  5271. extstring: String;
  5272. begin
  5273. Result := FALSE;
  5274. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5275. if glext_ExtensionSupported('GL_NV_copy_depth_to_color', extstring) then
  5276. begin
  5277. Result := TRUE;
  5278. end;
  5279. end;
  5280. function Load_GL_NV_depth_clamp: Boolean;
  5281. var
  5282. extstring: String;
  5283. begin
  5284. Result := FALSE;
  5285. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5286. if glext_ExtensionSupported('GL_NV_depth_clamp', extstring) then
  5287. begin
  5288. Result := TRUE;
  5289. end;
  5290. end;
  5291. function Load_GL_NV_evaluators: Boolean;
  5292. var
  5293. extstring: String;
  5294. begin
  5295. Result := FALSE;
  5296. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5297. if glext_ExtensionSupported('GL_NV_evaluators', extstring) then
  5298. begin
  5299. glMapControlPointsNV := wglGetProcAddress('glMapControlPointsNV');
  5300. if not Assigned(glMapControlPointsNV) then Exit;
  5301. glMapParameterivNV := wglGetProcAddress('glMapParameterivNV');
  5302. if not Assigned(glMapParameterivNV) then Exit;
  5303. glMapParameterfvNV := wglGetProcAddress('glMapParameterfvNV');
  5304. if not Assigned(glMapParameterfvNV) then Exit;
  5305. glGetMapControlPointsNV := wglGetProcAddress('glGetMapControlPointsNV');
  5306. if not Assigned(glGetMapControlPointsNV) then Exit;
  5307. glGetMapParameterivNV := wglGetProcAddress('glGetMapParameterivNV');
  5308. if not Assigned(glGetMapParameterivNV) then Exit;
  5309. glGetMapParameterfvNV := wglGetProcAddress('glGetMapParameterfvNV');
  5310. if not Assigned(glGetMapParameterfvNV) then Exit;
  5311. glGetMapAttribParameterivNV := wglGetProcAddress('glGetMapAttribParameterivNV');
  5312. if not Assigned(glGetMapAttribParameterivNV) then Exit;
  5313. glGetMapAttribParameterfvNV := wglGetProcAddress('glGetMapAttribParameterfvNV');
  5314. if not Assigned(glGetMapAttribParameterfvNV) then Exit;
  5315. glEvalMapsNV := wglGetProcAddress('glEvalMapsNV');
  5316. if not Assigned(glEvalMapsNV) then Exit;
  5317. Result := TRUE;
  5318. end;
  5319. end;
  5320. function Load_GL_NV_fence: Boolean;
  5321. var
  5322. extstring: String;
  5323. begin
  5324. Result := FALSE;
  5325. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5326. if glext_ExtensionSupported('GL_NV_fence', extstring) then
  5327. begin
  5328. glGenFencesNV := wglGetProcAddress('glGenFencesNV');
  5329. if not Assigned(glGenFencesNV) then Exit;
  5330. glDeleteFencesNV := wglGetProcAddress('glDeleteFencesNV');
  5331. if not Assigned(glDeleteFencesNV) then Exit;
  5332. glSetFenceNV := wglGetProcAddress('glSetFenceNV');
  5333. if not Assigned(glSetFenceNV) then Exit;
  5334. glTestFenceNV := wglGetProcAddress('glTestFenceNV');
  5335. if not Assigned(glTestFenceNV) then Exit;
  5336. glFinishFenceNV := wglGetProcAddress('glFinishFenceNV');
  5337. if not Assigned(glFinishFenceNV) then Exit;
  5338. glIsFenceNV := wglGetProcAddress('glIsFenceNV');
  5339. if not Assigned(glIsFenceNV) then Exit;
  5340. glGetFenceivNV := wglGetProcAddress('glGetFenceivNV');
  5341. if not Assigned(glGetFenceivNV) then Exit;
  5342. Result := TRUE;
  5343. end;
  5344. end;
  5345. function Load_GL_NV_fog_distance: Boolean;
  5346. var
  5347. extstring: String;
  5348. begin
  5349. Result := FALSE;
  5350. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5351. if glext_ExtensionSupported('GL_NV_fog_distance', extstring) then
  5352. begin
  5353. Result := TRUE;
  5354. end;
  5355. end;
  5356. function Load_GL_NV_light_max_exponent: Boolean;
  5357. var
  5358. extstring: String;
  5359. begin
  5360. Result := FALSE;
  5361. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5362. if glext_ExtensionSupported('GL_NV_light_max_exponent', extstring) then
  5363. begin
  5364. Result := TRUE;
  5365. end;
  5366. end;
  5367. function Load_GL_NV_multisample_filter_hint: Boolean;
  5368. var
  5369. extstring: String;
  5370. begin
  5371. Result := FALSE;
  5372. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5373. if glext_ExtensionSupported('GL_NV_multisample_filter_hint', extstring) then
  5374. begin
  5375. Result := TRUE;
  5376. end;
  5377. end;
  5378. function Load_GL_NV_occlusion_query: Boolean;
  5379. var
  5380. extstring: String;
  5381. begin
  5382. Result := FALSE;
  5383. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5384. if glext_ExtensionSupported('GL_NV_occlusion_query', extstring) then
  5385. begin
  5386. glGenOcclusionQueriesNV := wglGetProcAddress('glGenOcclusionQueriesNV');
  5387. if not Assigned(glGenOcclusionQueriesNV) then Exit;
  5388. glDeleteOcclusionQueriesNV := wglGetProcAddress('glDeleteOcclusionQueriesNV');
  5389. if not Assigned(glDeleteOcclusionQueriesNV) then Exit;
  5390. glIsOcclusionQueryNV := wglGetProcAddress('glIsOcclusionQueryNV');
  5391. if not Assigned(glIsOcclusionQueryNV) then Exit;
  5392. glBeginOcclusionQueryNV := wglGetProcAddress('glBeginOcclusionQueryNV');
  5393. if not Assigned(glBeginOcclusionQueryNV) then Exit;
  5394. glEndOcclusionQueryNV := wglGetProcAddress('glEndOcclusionQueryNV');
  5395. if not Assigned(glEndOcclusionQueryNV) then Exit;
  5396. glGetOcclusionQueryivNV := wglGetProcAddress('glGetOcclusionQueryivNV');
  5397. if not Assigned(glGetOcclusionQueryivNV) then Exit;
  5398. glGetOcclusionQueryuivNV := wglGetProcAddress('glGetOcclusionQueryuivNV');
  5399. if not Assigned(glGetOcclusionQueryuivNV) then Exit;
  5400. Result := TRUE;
  5401. end;
  5402. end;
  5403. function Load_GL_NV_packed_depth_stencil: Boolean;
  5404. var
  5405. extstring: String;
  5406. begin
  5407. Result := FALSE;
  5408. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5409. if glext_ExtensionSupported('GL_NV_packed_depth_stencil', extstring) then
  5410. begin
  5411. Result := TRUE;
  5412. end;
  5413. end;
  5414. function Load_GL_NV_point_sprite: Boolean;
  5415. var
  5416. extstring: String;
  5417. begin
  5418. Result := FALSE;
  5419. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5420. if glext_ExtensionSupported('GL_NV_point_sprite', extstring) then
  5421. begin
  5422. glPointParameteriNV := wglGetProcAddress('glPointParameteriNV');
  5423. if not Assigned(glPointParameteriNV) then Exit;
  5424. glPointParameterivNV := wglGetProcAddress('glPointParameterivNV');
  5425. if not Assigned(glPointParameterivNV) then Exit;
  5426. Result := TRUE;
  5427. end;
  5428. end;
  5429. function Load_GL_NV_register_combiners: Boolean;
  5430. var
  5431. extstring: String;
  5432. begin
  5433. Result := FALSE;
  5434. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5435. if glext_ExtensionSupported('GL_NV_register_combiners', extstring) then
  5436. begin
  5437. glCombinerParameterfvNV := wglGetProcAddress('glCombinerParameterfvNV');
  5438. if not Assigned(glCombinerParameterfvNV) then Exit;
  5439. glCombinerParameterivNV := wglGetProcAddress('glCombinerParameterivNV');
  5440. if not Assigned(glCombinerParameterivNV) then Exit;
  5441. glCombinerParameterfNV := wglGetProcAddress('glCombinerParameterfNV');
  5442. if not Assigned(glCombinerParameterfNV) then Exit;
  5443. glCombinerParameteriNV := wglGetProcAddress('glCombinerParameteriNV');
  5444. if not Assigned(glCombinerParameteriNV) then Exit;
  5445. glCombinerInputNV := wglGetProcAddress('glCombinerInputNV');
  5446. if not Assigned(glCombinerInputNV) then Exit;
  5447. glCombinerOutputNV := wglGetProcAddress('glCombinerOutputNV');
  5448. if not Assigned(glCombinerOutputNV) then Exit;
  5449. glFinalCombinerInputNV := wglGetProcAddress('glFinalCombinerInputNV');
  5450. if not Assigned(glFinalCombinerInputNV) then Exit;
  5451. glGetCombinerInputParameterfvNV := wglGetProcAddress('glGetCombinerInputParameterfvNV');
  5452. if not Assigned(glGetCombinerInputParameterfvNV) then Exit;
  5453. glGetCombinerInputParameterivNV := wglGetProcAddress('glGetCombinerInputParameterivNV');
  5454. if not Assigned(glGetCombinerInputParameterivNV) then Exit;
  5455. glGetCombinerOutputParameterfvNV := wglGetProcAddress('glGetCombinerOutputParameterfvNV');
  5456. if not Assigned(glGetCombinerOutputParameterfvNV) then Exit;
  5457. glGetCombinerOutputParameterivNV := wglGetProcAddress('glGetCombinerOutputParameterivNV');
  5458. if not Assigned(glGetCombinerOutputParameterivNV) then Exit;
  5459. glGetFinalCombinerInputParameterfvNV := wglGetProcAddress('glGetFinalCombinerInputParameterfvNV');
  5460. if not Assigned(glGetFinalCombinerInputParameterfvNV) then Exit;
  5461. glGetFinalCombinerInputParameterivNV := wglGetProcAddress('glGetFinalCombinerInputParameterivNV');
  5462. if not Assigned(glGetFinalCombinerInputParameterivNV) then Exit;
  5463. Result := TRUE;
  5464. end;
  5465. end;
  5466. function Load_GL_NV_register_combiners2: Boolean;
  5467. var
  5468. extstring: String;
  5469. begin
  5470. Result := FALSE;
  5471. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5472. if glext_ExtensionSupported('GL_NV_register_combiners2', extstring) then
  5473. begin
  5474. glCombinerStageParameterfvNV := wglGetProcAddress('glCombinerStageParameterfvNV');
  5475. if not Assigned(glCombinerStageParameterfvNV) then Exit;
  5476. glGetCombinerStageParameterfvNV := wglGetProcAddress('glGetCombinerStageParameterfvNV');
  5477. if not Assigned(glGetCombinerStageParameterfvNV) then Exit;
  5478. Result := TRUE;
  5479. end;
  5480. end;
  5481. function Load_GL_NV_texgen_emboss: Boolean;
  5482. var
  5483. extstring: String;
  5484. begin
  5485. Result := FALSE;
  5486. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5487. if glext_ExtensionSupported('GL_NV_texgen_emboss', extstring) then
  5488. begin
  5489. Result := TRUE;
  5490. end;
  5491. end;
  5492. function Load_GL_NV_texgen_reflection: Boolean;
  5493. var
  5494. extstring: String;
  5495. begin
  5496. Result := FALSE;
  5497. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5498. if glext_ExtensionSupported('GL_NV_texgen_reflection', extstring) then
  5499. begin
  5500. Result := TRUE;
  5501. end;
  5502. end;
  5503. function Load_GL_NV_texture_compression_vtc: Boolean;
  5504. var
  5505. extstring: String;
  5506. begin
  5507. Result := FALSE;
  5508. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5509. if glext_ExtensionSupported('GL_NV_texture_compression_vtc', extstring) then
  5510. begin
  5511. Result := TRUE;
  5512. end;
  5513. end;
  5514. function Load_GL_NV_texture_env_combine4: Boolean;
  5515. var
  5516. extstring: String;
  5517. begin
  5518. Result := FALSE;
  5519. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5520. if glext_ExtensionSupported('GL_NV_texture_env_combine4', extstring) then
  5521. begin
  5522. Result := TRUE;
  5523. end;
  5524. end;
  5525. function Load_GL_NV_texture_rectangle: Boolean;
  5526. var
  5527. extstring: String;
  5528. begin
  5529. Result := FALSE;
  5530. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5531. if glext_ExtensionSupported('GL_NV_texture_rectangle', extstring) then
  5532. begin
  5533. Result := TRUE;
  5534. end;
  5535. end;
  5536. function Load_GL_NV_texture_shader: Boolean;
  5537. var
  5538. extstring: String;
  5539. begin
  5540. Result := FALSE;
  5541. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5542. if glext_ExtensionSupported('GL_NV_texture_shader', extstring) then
  5543. begin
  5544. Result := TRUE;
  5545. end;
  5546. end;
  5547. function Load_GL_NV_texture_shader2: Boolean;
  5548. var
  5549. extstring: String;
  5550. begin
  5551. Result := FALSE;
  5552. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5553. if glext_ExtensionSupported('GL_NV_texture_shader2', extstring) then
  5554. begin
  5555. Result := TRUE;
  5556. end;
  5557. end;
  5558. function Load_GL_NV_texture_shader3: Boolean;
  5559. var
  5560. extstring: String;
  5561. begin
  5562. Result := FALSE;
  5563. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5564. if glext_ExtensionSupported('GL_NV_texture_shader3', extstring) then
  5565. begin
  5566. Result := TRUE;
  5567. end;
  5568. end;
  5569. function Load_GL_NV_vertex_array_range: Boolean;
  5570. var
  5571. extstring: String;
  5572. begin
  5573. Result := FALSE;
  5574. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5575. if glext_ExtensionSupported('GL_NV_vertex_array_range', extstring) then
  5576. begin
  5577. glVertexArrayRangeNV := wglGetProcAddress('glVertexArrayRangeNV');
  5578. if not Assigned(glVertexArrayRangeNV) then Exit;
  5579. glFlushVertexArrayRangeNV := wglGetProcAddress('glFlushVertexArrayRangeNV');
  5580. if not Assigned(glFlushVertexArrayRangeNV) then Exit;
  5581. {$IFDEF Windows}
  5582. wglAllocateMemoryNV := wglGetProcAddress('wglAllocateMemoryNV');
  5583. if not Assigned(wglAllocateMemoryNV) then Exit;
  5584. wglFreeMemoryNV := wglGetProcAddress('wglFreeMemoryNV');
  5585. if not Assigned(wglFreeMemoryNV) then Exit;
  5586. {$ENDIF}
  5587. Result := TRUE;
  5588. end;
  5589. end;
  5590. function Load_GL_NV_vertex_array_range2: Boolean;
  5591. var
  5592. extstring: String;
  5593. begin
  5594. Result := FALSE;
  5595. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5596. if glext_ExtensionSupported('GL_NV_vertex_array_range2', extstring) then
  5597. begin
  5598. Result := TRUE;
  5599. end;
  5600. end;
  5601. function Load_GL_NV_vertex_program: Boolean;
  5602. var
  5603. extstring: String;
  5604. begin
  5605. Result := FALSE;
  5606. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5607. if glext_ExtensionSupported('GL_NV_vertex_program', extstring) then
  5608. begin
  5609. glBindProgramNV := wglGetProcAddress('glBindProgramNV');
  5610. if not Assigned(glBindProgramNV) then Exit;
  5611. glDeleteProgramsNV := wglGetProcAddress('glDeleteProgramsNV');
  5612. if not Assigned(glDeleteProgramsNV) then Exit;
  5613. glExecuteProgramNV := wglGetProcAddress('glExecuteProgramNV');
  5614. if not Assigned(glExecuteProgramNV) then Exit;
  5615. glGenProgramsNV := wglGetProcAddress('glGenProgramsNV');
  5616. if not Assigned(glGenProgramsNV) then Exit;
  5617. glAreProgramsResidentNV := wglGetProcAddress('glAreProgramsResidentNV');
  5618. if not Assigned(glAreProgramsResidentNV) then Exit;
  5619. glRequestResidentProgramsNV := wglGetProcAddress('glRequestResidentProgramsNV');
  5620. if not Assigned(glRequestResidentProgramsNV) then Exit;
  5621. glGetProgramParameterfvNV := wglGetProcAddress('glGetProgramParameterfvNV');
  5622. if not Assigned(glGetProgramParameterfvNV) then Exit;
  5623. glGetProgramParameterdvNV := wglGetProcAddress('glGetProgramParameterdvNV');
  5624. if not Assigned(glGetProgramParameterdvNV) then Exit;
  5625. glGetProgramivNV := wglGetProcAddress('glGetProgramivNV');
  5626. if not Assigned(glGetProgramivNV) then Exit;
  5627. glGetProgramStringNV := wglGetProcAddress('glGetProgramStringNV');
  5628. if not Assigned(glGetProgramStringNV) then Exit;
  5629. glGetTrackMatrixivNV := wglGetProcAddress('glGetTrackMatrixivNV');
  5630. if not Assigned(glGetTrackMatrixivNV) then Exit;
  5631. glGetVertexAttribdvNV := wglGetProcAddress('glGetVertexAttribdvNV');
  5632. if not Assigned(glGetVertexAttribdvNV) then Exit;
  5633. glGetVertexAttribfvNV := wglGetProcAddress('glGetVertexAttribfvNV');
  5634. if not Assigned(glGetVertexAttribfvNV) then Exit;
  5635. glGetVertexAttribivNV := wglGetProcAddress('glGetVertexAttribivNV');
  5636. if not Assigned(glGetVertexAttribivNV) then Exit;
  5637. glGetVertexAttribPointervNV := wglGetProcAddress('glGetVertexAttribPointervNV');
  5638. if not Assigned(glGetVertexAttribPointervNV) then Exit;
  5639. glIsProgramNV := wglGetProcAddress('glIsProgramNV');
  5640. if not Assigned(glIsProgramNV) then Exit;
  5641. glLoadProgramNV := wglGetProcAddress('glLoadProgramNV');
  5642. if not Assigned(glLoadProgramNV) then Exit;
  5643. glProgramParameter4fNV := wglGetProcAddress('glProgramParameter4fNV');
  5644. if not Assigned(glProgramParameter4fNV) then Exit;
  5645. glProgramParameter4fvNV := wglGetProcAddress('glProgramParameter4fvNV');
  5646. if not Assigned(glProgramParameter4fvNV) then Exit;
  5647. glProgramParameters4dvNV := wglGetProcAddress('glProgramParameters4dvNV');
  5648. if not Assigned(glProgramParameters4dvNV) then Exit;
  5649. glProgramParameters4fvNV := wglGetProcAddress('glProgramParameters4fvNV');
  5650. if not Assigned(glProgramParameters4fvNV) then Exit;
  5651. glTrackMatrixNV := wglGetProcAddress('glTrackMatrixNV');
  5652. if not Assigned(glTrackMatrixNV) then Exit;
  5653. glVertexAttribPointerNV := wglGetProcAddress('glVertexAttribPointerNV');
  5654. if not Assigned(glVertexAttribPointerNV) then Exit;
  5655. glVertexAttrib1sNV := wglGetProcAddress('glVertexAttrib1sNV');
  5656. if not Assigned(glVertexAttrib1sNV) then Exit;
  5657. glVertexAttrib1fNV := wglGetProcAddress('glVertexAttrib1fNV');
  5658. if not Assigned(glVertexAttrib1fNV) then Exit;
  5659. glVertexAttrib1dNV := wglGetProcAddress('glVertexAttrib1dNV');
  5660. if not Assigned(glVertexAttrib1dNV) then Exit;
  5661. glVertexAttrib2sNV := wglGetProcAddress('glVertexAttrib2sNV');
  5662. if not Assigned(glVertexAttrib2sNV) then Exit;
  5663. glVertexAttrib2fNV := wglGetProcAddress('glVertexAttrib2fNV');
  5664. if not Assigned(glVertexAttrib2fNV) then Exit;
  5665. glVertexAttrib2dNV := wglGetProcAddress('glVertexAttrib2dNV');
  5666. if not Assigned(glVertexAttrib2dNV) then Exit;
  5667. glVertexAttrib3sNV := wglGetProcAddress('glVertexAttrib3sNV');
  5668. if not Assigned(glVertexAttrib3sNV) then Exit;
  5669. glVertexAttrib3fNV := wglGetProcAddress('glVertexAttrib3fNV');
  5670. if not Assigned(glVertexAttrib3fNV) then Exit;
  5671. glVertexAttrib3dNV := wglGetProcAddress('glVertexAttrib3dNV');
  5672. if not Assigned(glVertexAttrib3dNV) then Exit;
  5673. glVertexAttrib4sNV := wglGetProcAddress('glVertexAttrib4sNV');
  5674. if not Assigned(glVertexAttrib4sNV) then Exit;
  5675. glVertexAttrib4fNV := wglGetProcAddress('glVertexAttrib4fNV');
  5676. if not Assigned(glVertexAttrib4fNV) then Exit;
  5677. glVertexAttrib4dNV := wglGetProcAddress('glVertexAttrib4dNV');
  5678. if not Assigned(glVertexAttrib4dNV) then Exit;
  5679. glVertexAttrib4ubNV := wglGetProcAddress('glVertexAttrib4ubNV');
  5680. if not Assigned(glVertexAttrib4ubNV) then Exit;
  5681. glVertexAttrib1svNV := wglGetProcAddress('glVertexAttrib1svNV');
  5682. if not Assigned(glVertexAttrib1svNV) then Exit;
  5683. glVertexAttrib1fvNV := wglGetProcAddress('glVertexAttrib1fvNV');
  5684. if not Assigned(glVertexAttrib1fvNV) then Exit;
  5685. glVertexAttrib1dvNV := wglGetProcAddress('glVertexAttrib1dvNV');
  5686. if not Assigned(glVertexAttrib1dvNV) then Exit;
  5687. glVertexAttrib2svNV := wglGetProcAddress('glVertexAttrib2svNV');
  5688. if not Assigned(glVertexAttrib2svNV) then Exit;
  5689. glVertexAttrib2fvNV := wglGetProcAddress('glVertexAttrib2fvNV');
  5690. if not Assigned(glVertexAttrib2fvNV) then Exit;
  5691. glVertexAttrib2dvNV := wglGetProcAddress('glVertexAttrib2dvNV');
  5692. if not Assigned(glVertexAttrib2dvNV) then Exit;
  5693. glVertexAttrib3svNV := wglGetProcAddress('glVertexAttrib3svNV');
  5694. if not Assigned(glVertexAttrib3svNV) then Exit;
  5695. glVertexAttrib3fvNV := wglGetProcAddress('glVertexAttrib3fvNV');
  5696. if not Assigned(glVertexAttrib3fvNV) then Exit;
  5697. glVertexAttrib3dvNV := wglGetProcAddress('glVertexAttrib3dvNV');
  5698. if not Assigned(glVertexAttrib3dvNV) then Exit;
  5699. glVertexAttrib4svNV := wglGetProcAddress('glVertexAttrib4svNV');
  5700. if not Assigned(glVertexAttrib4svNV) then Exit;
  5701. glVertexAttrib4fvNV := wglGetProcAddress('glVertexAttrib4fvNV');
  5702. if not Assigned(glVertexAttrib4fvNV) then Exit;
  5703. glVertexAttrib4dvNV := wglGetProcAddress('glVertexAttrib4dvNV');
  5704. if not Assigned(glVertexAttrib4dvNV) then Exit;
  5705. glVertexAttrib4ubvNV := wglGetProcAddress('glVertexAttrib4ubvNV');
  5706. if not Assigned(glVertexAttrib4ubvNV) then Exit;
  5707. glVertexAttribs1svNV := wglGetProcAddress('glVertexAttribs1svNV');
  5708. if not Assigned(glVertexAttribs1svNV) then Exit;
  5709. glVertexAttribs1fvNV := wglGetProcAddress('glVertexAttribs1fvNV');
  5710. if not Assigned(glVertexAttribs1fvNV) then Exit;
  5711. glVertexAttribs1dvNV := wglGetProcAddress('glVertexAttribs1dvNV');
  5712. if not Assigned(glVertexAttribs1dvNV) then Exit;
  5713. glVertexAttribs2svNV := wglGetProcAddress('glVertexAttribs2svNV');
  5714. if not Assigned(glVertexAttribs2svNV) then Exit;
  5715. glVertexAttribs2fvNV := wglGetProcAddress('glVertexAttribs2fvNV');
  5716. if not Assigned(glVertexAttribs2fvNV) then Exit;
  5717. glVertexAttribs2dvNV := wglGetProcAddress('glVertexAttribs2dvNV');
  5718. if not Assigned(glVertexAttribs2dvNV) then Exit;
  5719. glVertexAttribs3svNV := wglGetProcAddress('glVertexAttribs3svNV');
  5720. if not Assigned(glVertexAttribs3svNV) then Exit;
  5721. glVertexAttribs3fvNV := wglGetProcAddress('glVertexAttribs3fvNV');
  5722. if not Assigned(glVertexAttribs3fvNV) then Exit;
  5723. glVertexAttribs3dvNV := wglGetProcAddress('glVertexAttribs3dvNV');
  5724. if not Assigned(glVertexAttribs3dvNV) then Exit;
  5725. glVertexAttribs4svNV := wglGetProcAddress('glVertexAttribs4svNV');
  5726. if not Assigned(glVertexAttribs4svNV) then Exit;
  5727. glVertexAttribs4fvNV := wglGetProcAddress('glVertexAttribs4fvNV');
  5728. if not Assigned(glVertexAttribs4fvNV) then Exit;
  5729. glVertexAttribs4dvNV := wglGetProcAddress('glVertexAttribs4dvNV');
  5730. if not Assigned(glVertexAttribs4dvNV) then Exit;
  5731. glVertexAttribs4ubvNV := wglGetProcAddress('glVertexAttribs4ubvNV');
  5732. if not Assigned(glVertexAttribs4ubvNV) then Exit;
  5733. Result := TRUE;
  5734. end;
  5735. end;
  5736. function Load_GL_NV_vertex_program1_1: Boolean;
  5737. var
  5738. extstring: String;
  5739. begin
  5740. Result := FALSE;
  5741. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5742. if glext_ExtensionSupported('GL_NV_vertex_program1_1', extstring) then
  5743. begin
  5744. Result := TRUE;
  5745. end;
  5746. end;
  5747. function Load_GL_ATI_element_array: Boolean;
  5748. var
  5749. extstring: String;
  5750. begin
  5751. Result := FALSE;
  5752. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5753. if glext_ExtensionSupported('GL_ATI_element_array', extstring) then
  5754. begin
  5755. glElementPointerATI := wglGetProcAddress('glElementPointerATI');
  5756. if not Assigned(glElementPointerATI) then Exit;
  5757. glDrawElementArrayATI := wglGetProcAddress('glDrawElementArrayATI');
  5758. if not Assigned(glDrawElementArrayATI) then Exit;
  5759. glDrawRangeElementArrayATI := wglGetProcAddress('glDrawRangeElementArrayATI');
  5760. if not Assigned(glDrawRangeElementArrayATI) then Exit;
  5761. Result := TRUE;
  5762. end;
  5763. end;
  5764. function Load_GL_ATI_envmap_bumpmap: Boolean;
  5765. var
  5766. extstring: String;
  5767. begin
  5768. Result := FALSE;
  5769. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5770. if glext_ExtensionSupported('GL_ATI_envmap_bumpmap', extstring) then
  5771. begin
  5772. glTexBumpParameterivATI := wglGetProcAddress('glTexBumpParameterivATI');
  5773. if not Assigned(glTexBumpParameterivATI) then Exit;
  5774. glTexBumpParameterfvATI := wglGetProcAddress('glTexBumpParameterfvATI');
  5775. if not Assigned(glTexBumpParameterfvATI) then Exit;
  5776. glGetTexBumpParameterivATI := wglGetProcAddress('glGetTexBumpParameterivATI');
  5777. if not Assigned(glGetTexBumpParameterivATI) then Exit;
  5778. glGetTexBumpParameterfvATI := wglGetProcAddress('glGetTexBumpParameterfvATI');
  5779. if not Assigned(glGetTexBumpParameterfvATI) then Exit;
  5780. Result := TRUE;
  5781. end;
  5782. end;
  5783. function Load_GL_ATI_fragment_shader: Boolean;
  5784. var
  5785. extstring: String;
  5786. begin
  5787. Result := FALSE;
  5788. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5789. if glext_ExtensionSupported('GL_ATI_fragment_shader', extstring) then
  5790. begin
  5791. glGenFragmentShadersATI := wglGetProcAddress('glGenFragmentShadersATI');
  5792. if not Assigned(glGenFragmentShadersATI) then Exit;
  5793. glBindFragmentShaderATI := wglGetProcAddress('glBindFragmentShaderATI');
  5794. if not Assigned(glBindFragmentShaderATI) then Exit;
  5795. glDeleteFragmentShaderATI := wglGetProcAddress('glDeleteFragmentShaderATI');
  5796. if not Assigned(glDeleteFragmentShaderATI) then Exit;
  5797. glBeginFragmentShaderATI := wglGetProcAddress('glBeginFragmentShaderATI');
  5798. if not Assigned(glBeginFragmentShaderATI) then Exit;
  5799. glEndFragmentShaderATI := wglGetProcAddress('glEndFragmentShaderATI');
  5800. if not Assigned(glEndFragmentShaderATI) then Exit;
  5801. glPassTexCoordATI := wglGetProcAddress('glPassTexCoordATI');
  5802. if not Assigned(glPassTexCoordATI) then Exit;
  5803. glSampleMapATI := wglGetProcAddress('glSampleMapATI');
  5804. if not Assigned(glSampleMapATI) then Exit;
  5805. glColorFragmentOp1ATI := wglGetProcAddress('glColorFragmentOp1ATI');
  5806. if not Assigned(glColorFragmentOp1ATI) then Exit;
  5807. glColorFragmentOp2ATI := wglGetProcAddress('glColorFragmentOp2ATI');
  5808. if not Assigned(glColorFragmentOp2ATI) then Exit;
  5809. glColorFragmentOp3ATI := wglGetProcAddress('glColorFragmentOp3ATI');
  5810. if not Assigned(glColorFragmentOp3ATI) then Exit;
  5811. glAlphaFragmentOp1ATI := wglGetProcAddress('glAlphaFragmentOp1ATI');
  5812. if not Assigned(glAlphaFragmentOp1ATI) then Exit;
  5813. glAlphaFragmentOp2ATI := wglGetProcAddress('glAlphaFragmentOp2ATI');
  5814. if not Assigned(glAlphaFragmentOp2ATI) then Exit;
  5815. glAlphaFragmentOp3ATI := wglGetProcAddress('glAlphaFragmentOp3ATI');
  5816. if not Assigned(glAlphaFragmentOp3ATI) then Exit;
  5817. glSetFragmentShaderConstantATI := wglGetProcAddress('glSetFragmentShaderConstantATI');
  5818. if not Assigned(glSetFragmentShaderConstantATI) then Exit;
  5819. Result := TRUE;
  5820. end;
  5821. end;
  5822. function Load_GL_ATI_pn_triangles: Boolean;
  5823. var
  5824. extstring: String;
  5825. begin
  5826. Result := FALSE;
  5827. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5828. if glext_ExtensionSupported('GL_ATI_pn_triangles', extstring) then
  5829. begin
  5830. glPNTrianglesiATI := wglGetProcAddress('glPNTrianglesiATI');
  5831. if not Assigned(glPNTrianglesiATI) then Exit;
  5832. glPNTrianglesfATI := wglGetProcAddress('glPNTrianglesfATI');
  5833. if not Assigned(glPNTrianglesfATI) then Exit;
  5834. Result := TRUE;
  5835. end;
  5836. end;
  5837. function Load_GL_ATI_texture_mirror_once: Boolean;
  5838. var
  5839. extstring: String;
  5840. begin
  5841. Result := FALSE;
  5842. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5843. if glext_ExtensionSupported('GL_ATI_texture_mirror_once', extstring) then
  5844. begin
  5845. Result := TRUE;
  5846. end;
  5847. end;
  5848. function Load_GL_ATI_vertex_array_object: Boolean;
  5849. var
  5850. extstring: String;
  5851. begin
  5852. Result := FALSE;
  5853. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5854. if glext_ExtensionSupported('GL_ATI_vertex_array_object', extstring) then
  5855. begin
  5856. glNewObjectBufferATI := wglGetProcAddress('glNewObjectBufferATI');
  5857. if not Assigned(glNewObjectBufferATI) then Exit;
  5858. glIsObjectBufferATI := wglGetProcAddress('glIsObjectBufferATI');
  5859. if not Assigned(glIsObjectBufferATI) then Exit;
  5860. glUpdateObjectBufferATI := wglGetProcAddress('glUpdateObjectBufferATI');
  5861. if not Assigned(glUpdateObjectBufferATI) then Exit;
  5862. glGetObjectBufferfvATI := wglGetProcAddress('glGetObjectBufferfvATI');
  5863. if not Assigned(glGetObjectBufferfvATI) then Exit;
  5864. glGetObjectBufferivATI := wglGetProcAddress('glGetObjectBufferivATI');
  5865. if not Assigned(glGetObjectBufferivATI) then Exit;
  5866. glDeleteObjectBufferATI := wglGetProcAddress('glDeleteObjectBufferATI');
  5867. if not Assigned(glDeleteObjectBufferATI) then Exit;
  5868. glArrayObjectATI := wglGetProcAddress('glArrayObjectATI');
  5869. if not Assigned(glArrayObjectATI) then Exit;
  5870. glGetArrayObjectfvATI := wglGetProcAddress('glGetArrayObjectfvATI');
  5871. if not Assigned(glGetArrayObjectfvATI) then Exit;
  5872. glGetArrayObjectivATI := wglGetProcAddress('glGetArrayObjectivATI');
  5873. if not Assigned(glGetArrayObjectivATI) then Exit;
  5874. glVariantArrayObjectATI := wglGetProcAddress('glVariantArrayObjectATI');
  5875. if not Assigned(glVariantArrayObjectATI) then Exit;
  5876. glGetVariantArrayObjectfvATI := wglGetProcAddress('glGetVariantArrayObjectfvATI');
  5877. if not Assigned(glGetVariantArrayObjectfvATI) then Exit;
  5878. glGetVariantArrayObjectivATI := wglGetProcAddress('glGetVariantArrayObjectivATI');
  5879. if not Assigned(glGetVariantArrayObjectivATI) then Exit;
  5880. Result := TRUE;
  5881. end;
  5882. end;
  5883. function Load_GL_ATI_vertex_streams: Boolean;
  5884. var
  5885. extstring: String;
  5886. begin
  5887. Result := FALSE;
  5888. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5889. if glext_ExtensionSupported('GL_ATI_vertex_streams', extstring) then
  5890. begin
  5891. glVertexStream1s := wglGetProcAddress('glVertexStream1s');
  5892. if not Assigned(glVertexStream1s) then Exit;
  5893. glVertexStream1i := wglGetProcAddress('glVertexStream1i');
  5894. if not Assigned(glVertexStream1i) then Exit;
  5895. glVertexStream1f := wglGetProcAddress('glVertexStream1f');
  5896. if not Assigned(glVertexStream1f) then Exit;
  5897. glVertexStream1d := wglGetProcAddress('glVertexStream1d');
  5898. if not Assigned(glVertexStream1d) then Exit;
  5899. glVertexStream1sv := wglGetProcAddress('glVertexStream1sv');
  5900. if not Assigned(glVertexStream1sv) then Exit;
  5901. glVertexStream1iv := wglGetProcAddress('glVertexStream1iv');
  5902. if not Assigned(glVertexStream1iv) then Exit;
  5903. glVertexStream1fv := wglGetProcAddress('glVertexStream1fv');
  5904. if not Assigned(glVertexStream1fv) then Exit;
  5905. glVertexStream1dv := wglGetProcAddress('glVertexStream1dv');
  5906. if not Assigned(glVertexStream1dv) then Exit;
  5907. glVertexStream2s := wglGetProcAddress('glVertexStream2s');
  5908. if not Assigned(glVertexStream2s) then Exit;
  5909. glVertexStream2i := wglGetProcAddress('glVertexStream2i');
  5910. if not Assigned(glVertexStream2i) then Exit;
  5911. glVertexStream2f := wglGetProcAddress('glVertexStream2f');
  5912. if not Assigned(glVertexStream2f) then Exit;
  5913. glVertexStream2d := wglGetProcAddress('glVertexStream2d');
  5914. if not Assigned(glVertexStream2d) then Exit;
  5915. glVertexStream2sv := wglGetProcAddress('glVertexStream2sv');
  5916. if not Assigned(glVertexStream2sv) then Exit;
  5917. glVertexStream2iv := wglGetProcAddress('glVertexStream2iv');
  5918. if not Assigned(glVertexStream2iv) then Exit;
  5919. glVertexStream2fv := wglGetProcAddress('glVertexStream2fv');
  5920. if not Assigned(glVertexStream2fv) then Exit;
  5921. glVertexStream2dv := wglGetProcAddress('glVertexStream2dv');
  5922. if not Assigned(glVertexStream2dv) then Exit;
  5923. glVertexStream3s := wglGetProcAddress('glVertexStream3s');
  5924. if not Assigned(glVertexStream3s) then Exit;
  5925. glVertexStream3i := wglGetProcAddress('glVertexStream3i');
  5926. if not Assigned(glVertexStream3i) then Exit;
  5927. glVertexStream3f := wglGetProcAddress('glVertexStream3f');
  5928. if not Assigned(glVertexStream3f) then Exit;
  5929. glVertexStream3d := wglGetProcAddress('glVertexStream3d');
  5930. if not Assigned(glVertexStream3d) then Exit;
  5931. glVertexStream3sv := wglGetProcAddress('glVertexStream3sv');
  5932. if not Assigned(glVertexStream3sv) then Exit;
  5933. glVertexStream3iv := wglGetProcAddress('glVertexStream3iv');
  5934. if not Assigned(glVertexStream3iv) then Exit;
  5935. glVertexStream3fv := wglGetProcAddress('glVertexStream3fv');
  5936. if not Assigned(glVertexStream3fv) then Exit;
  5937. glVertexStream3dv := wglGetProcAddress('glVertexStream3dv');
  5938. if not Assigned(glVertexStream3dv) then Exit;
  5939. glVertexStream4s := wglGetProcAddress('glVertexStream4s');
  5940. if not Assigned(glVertexStream4s) then Exit;
  5941. glVertexStream4i := wglGetProcAddress('glVertexStream4i');
  5942. if not Assigned(glVertexStream4i) then Exit;
  5943. glVertexStream4f := wglGetProcAddress('glVertexStream4f');
  5944. if not Assigned(glVertexStream4f) then Exit;
  5945. glVertexStream4d := wglGetProcAddress('glVertexStream4d');
  5946. if not Assigned(glVertexStream4d) then Exit;
  5947. glVertexStream4sv := wglGetProcAddress('glVertexStream4sv');
  5948. if not Assigned(glVertexStream4sv) then Exit;
  5949. glVertexStream4iv := wglGetProcAddress('glVertexStream4iv');
  5950. if not Assigned(glVertexStream4iv) then Exit;
  5951. glVertexStream4fv := wglGetProcAddress('glVertexStream4fv');
  5952. if not Assigned(glVertexStream4fv) then Exit;
  5953. glVertexStream4dv := wglGetProcAddress('glVertexStream4dv');
  5954. if not Assigned(glVertexStream4dv) then Exit;
  5955. glNormalStream3b := wglGetProcAddress('glNormalStream3b');
  5956. if not Assigned(glNormalStream3b) then Exit;
  5957. glNormalStream3s := wglGetProcAddress('glNormalStream3s');
  5958. if not Assigned(glNormalStream3s) then Exit;
  5959. glNormalStream3i := wglGetProcAddress('glNormalStream3i');
  5960. if not Assigned(glNormalStream3i) then Exit;
  5961. glNormalStream3f := wglGetProcAddress('glNormalStream3f');
  5962. if not Assigned(glNormalStream3f) then Exit;
  5963. glNormalStream3d := wglGetProcAddress('glNormalStream3d');
  5964. if not Assigned(glNormalStream3d) then Exit;
  5965. glNormalStream3bv := wglGetProcAddress('glNormalStream3bv');
  5966. if not Assigned(glNormalStream3bv) then Exit;
  5967. glNormalStream3sv := wglGetProcAddress('glNormalStream3sv');
  5968. if not Assigned(glNormalStream3sv) then Exit;
  5969. glNormalStream3iv := wglGetProcAddress('glNormalStream3iv');
  5970. if not Assigned(glNormalStream3iv) then Exit;
  5971. glNormalStream3fv := wglGetProcAddress('glNormalStream3fv');
  5972. if not Assigned(glNormalStream3fv) then Exit;
  5973. glNormalStream3dv := wglGetProcAddress('glNormalStream3dv');
  5974. if not Assigned(glNormalStream3dv) then Exit;
  5975. glClientActiveVertexStream := wglGetProcAddress('glClientActiveVertexStream');
  5976. if not Assigned(glClientActiveVertexStream) then Exit;
  5977. glVertexBlendEnvi := wglGetProcAddress('glVertexBlendEnvi');
  5978. if not Assigned(glVertexBlendEnvi) then Exit;
  5979. glVertexBlendEnvf := wglGetProcAddress('glVertexBlendEnvf');
  5980. if not Assigned(glVertexBlendEnvf) then Exit;
  5981. Result := TRUE;
  5982. end;
  5983. end;
  5984. {$IFDEF Windows}
  5985. function Load_WGL_I3D_image_buffer: Boolean;
  5986. var
  5987. extstring: String;
  5988. begin
  5989. Result := FALSE;
  5990. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  5991. if not Assigned(wglGetExtensionsStringARB) then Exit;
  5992. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  5993. if glext_ExtensionSupported('WGL_I3D_image_buffer', extstring) then
  5994. begin
  5995. wglCreateImageBufferI3D := wglGetProcAddress('wglCreateImageBufferI3D');
  5996. if not Assigned(wglCreateImageBufferI3D) then Exit;
  5997. wglDestroyImageBufferI3D := wglGetProcAddress('wglDestroyImageBufferI3D');
  5998. if not Assigned(wglDestroyImageBufferI3D) then Exit;
  5999. wglAssociateImageBufferEventsI3D := wglGetProcAddress('wglAssociateImageBufferEventsI3D');
  6000. if not Assigned(wglAssociateImageBufferEventsI3D) then Exit;
  6001. wglReleaseImageBufferEventsI3D := wglGetProcAddress('wglReleaseImageBufferEventsI3D');
  6002. if not Assigned(wglReleaseImageBufferEventsI3D) then Exit;
  6003. Result := TRUE;
  6004. end;
  6005. end;
  6006. function Load_WGL_I3D_swap_frame_lock: Boolean;
  6007. var
  6008. extstring: String;
  6009. begin
  6010. Result := FALSE;
  6011. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6012. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6013. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6014. if glext_ExtensionSupported('WGL_I3D_swap_frame_lock', extstring) then
  6015. begin
  6016. wglEnableFrameLockI3D := wglGetProcAddress('wglEnableFrameLockI3D');
  6017. if not Assigned(wglEnableFrameLockI3D) then Exit;
  6018. wglDisableFrameLockI3D := wglGetProcAddress('wglDisableFrameLockI3D');
  6019. if not Assigned(wglDisableFrameLockI3D) then Exit;
  6020. wglIsEnabledFrameLockI3D := wglGetProcAddress('wglIsEnabledFrameLockI3D');
  6021. if not Assigned(wglIsEnabledFrameLockI3D) then Exit;
  6022. wglQueryFrameLockMasterI3D := wglGetProcAddress('wglQueryFrameLockMasterI3D');
  6023. if not Assigned(wglQueryFrameLockMasterI3D) then Exit;
  6024. Result := TRUE;
  6025. end;
  6026. end;
  6027. function Load_WGL_I3D_swap_frame_usage: Boolean;
  6028. var
  6029. extstring: String;
  6030. begin
  6031. Result := FALSE;
  6032. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6033. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6034. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6035. if glext_ExtensionSupported('WGL_I3D_swap_frame_usage', extstring) then
  6036. begin
  6037. wglGetFrameUsageI3D := wglGetProcAddress('wglGetFrameUsageI3D');
  6038. if not Assigned(wglGetFrameUsageI3D) then Exit;
  6039. wglBeginFrameTrackingI3D := wglGetProcAddress('wglBeginFrameTrackingI3D');
  6040. if not Assigned(wglBeginFrameTrackingI3D) then Exit;
  6041. wglEndFrameTrackingI3D := wglGetProcAddress('wglEndFrameTrackingI3D');
  6042. if not Assigned(wglEndFrameTrackingI3D) then Exit;
  6043. wglQueryFrameTrackingI3D := wglGetProcAddress('wglQueryFrameTrackingI3D');
  6044. if not Assigned(wglQueryFrameTrackingI3D) then Exit;
  6045. Result := TRUE;
  6046. end;
  6047. end;
  6048. {$ENDIF}
  6049. function Load_GL_3DFX_texture_compression_FXT1: Boolean;
  6050. var
  6051. extstring: String;
  6052. begin
  6053. Result := FALSE;
  6054. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6055. if glext_ExtensionSupported('GL_3DFX_texture_compression_FXT1', extstring) then
  6056. begin
  6057. Result := TRUE;
  6058. end;
  6059. end;
  6060. function Load_GL_IBM_cull_vertex: Boolean;
  6061. var
  6062. extstring: String;
  6063. begin
  6064. Result := FALSE;
  6065. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6066. if glext_ExtensionSupported('GL_IBM_cull_vertex', extstring) then
  6067. begin
  6068. Result := TRUE;
  6069. end;
  6070. end;
  6071. function Load_GL_IBM_multimode_draw_arrays: Boolean;
  6072. var
  6073. extstring: String;
  6074. begin
  6075. Result := FALSE;
  6076. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6077. if glext_ExtensionSupported('GL_IBM_multimode_draw_arrays', extstring) then
  6078. begin
  6079. glMultiModeDrawArraysIBM := wglGetProcAddress('glMultiModeDrawArraysIBM');
  6080. if not Assigned(glMultiModeDrawArraysIBM) then Exit;
  6081. glMultiModeDrawElementsIBM := wglGetProcAddress('glMultiModeDrawElementsIBM');
  6082. if not Assigned(glMultiModeDrawElementsIBM) then Exit;
  6083. Result := TRUE;
  6084. end;
  6085. end;
  6086. function Load_GL_IBM_raster_pos_clip: Boolean;
  6087. var
  6088. extstring: String;
  6089. begin
  6090. Result := FALSE;
  6091. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6092. if glext_ExtensionSupported('GL_IBM_raster_pos_clip', extstring) then
  6093. begin
  6094. Result := TRUE;
  6095. end;
  6096. end;
  6097. function Load_GL_IBM_texture_mirrored_repeat: Boolean;
  6098. var
  6099. extstring: String;
  6100. begin
  6101. Result := FALSE;
  6102. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6103. if glext_ExtensionSupported('GL_IBM_texture_mirrored_repeat', extstring) then
  6104. begin
  6105. Result := TRUE;
  6106. end;
  6107. end;
  6108. function Load_GL_IBM_vertex_array_lists: Boolean;
  6109. var
  6110. extstring: String;
  6111. begin
  6112. Result := FALSE;
  6113. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6114. if glext_ExtensionSupported('GL_IBM_vertex_array_lists', extstring) then
  6115. begin
  6116. glColorPointerListIBM := wglGetProcAddress('glColorPointerListIBM');
  6117. if not Assigned(glColorPointerListIBM) then Exit;
  6118. glSecondaryColorPointerListIBM := wglGetProcAddress('glSecondaryColorPointerListIBM');
  6119. if not Assigned(glSecondaryColorPointerListIBM) then Exit;
  6120. glEdgeFlagPointerListIBM := wglGetProcAddress('glEdgeFlagPointerListIBM');
  6121. if not Assigned(glEdgeFlagPointerListIBM) then Exit;
  6122. glFogCoordPointerListIBM := wglGetProcAddress('glFogCoordPointerListIBM');
  6123. if not Assigned(glFogCoordPointerListIBM) then Exit;
  6124. glNormalPointerListIBM := wglGetProcAddress('glNormalPointerListIBM');
  6125. if not Assigned(glNormalPointerListIBM) then Exit;
  6126. glTexCoordPointerListIBM := wglGetProcAddress('glTexCoordPointerListIBM');
  6127. if not Assigned(glTexCoordPointerListIBM) then Exit;
  6128. glVertexPointerListIBM := wglGetProcAddress('glVertexPointerListIBM');
  6129. if not Assigned(glVertexPointerListIBM) then Exit;
  6130. Result := TRUE;
  6131. end;
  6132. end;
  6133. function Load_GL_MESA_resize_buffers: Boolean;
  6134. var
  6135. extstring: String;
  6136. begin
  6137. Result := FALSE;
  6138. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6139. if glext_ExtensionSupported('GL_MESA_resize_buffers', extstring) then
  6140. begin
  6141. glResizeBuffersMESA := wglGetProcAddress('glResizeBuffersMESA');
  6142. if not Assigned(glResizeBuffersMESA) then Exit;
  6143. Result := TRUE;
  6144. end;
  6145. end;
  6146. function Load_GL_MESA_window_pos: Boolean;
  6147. var
  6148. extstring: String;
  6149. begin
  6150. Result := FALSE;
  6151. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6152. if glext_ExtensionSupported('GL_MESA_window_pos', extstring) then
  6153. begin
  6154. glWindowPos2dMESA := wglGetProcAddress('glWindowPos2dMESA');
  6155. if not Assigned(glWindowPos2dMESA) then Exit;
  6156. glWindowPos2fMESA := wglGetProcAddress('glWindowPos2fMESA');
  6157. if not Assigned(glWindowPos2fMESA) then Exit;
  6158. glWindowPos2iMESA := wglGetProcAddress('glWindowPos2iMESA');
  6159. if not Assigned(glWindowPos2iMESA) then Exit;
  6160. glWindowPos2sMESA := wglGetProcAddress('glWindowPos2sMESA');
  6161. if not Assigned(glWindowPos2sMESA) then Exit;
  6162. glWindowPos2ivMESA := wglGetProcAddress('glWindowPos2ivMESA');
  6163. if not Assigned(glWindowPos2ivMESA) then Exit;
  6164. glWindowPos2svMESA := wglGetProcAddress('glWindowPos2svMESA');
  6165. if not Assigned(glWindowPos2svMESA) then Exit;
  6166. glWindowPos2fvMESA := wglGetProcAddress('glWindowPos2fvMESA');
  6167. if not Assigned(glWindowPos2fvMESA) then Exit;
  6168. glWindowPos2dvMESA := wglGetProcAddress('glWindowPos2dvMESA');
  6169. if not Assigned(glWindowPos2dvMESA) then Exit;
  6170. glWindowPos3iMESA := wglGetProcAddress('glWindowPos3iMESA');
  6171. if not Assigned(glWindowPos3iMESA) then Exit;
  6172. glWindowPos3sMESA := wglGetProcAddress('glWindowPos3sMESA');
  6173. if not Assigned(glWindowPos3sMESA) then Exit;
  6174. glWindowPos3fMESA := wglGetProcAddress('glWindowPos3fMESA');
  6175. if not Assigned(glWindowPos3fMESA) then Exit;
  6176. glWindowPos3dMESA := wglGetProcAddress('glWindowPos3dMESA');
  6177. if not Assigned(glWindowPos3dMESA) then Exit;
  6178. glWindowPos3ivMESA := wglGetProcAddress('glWindowPos3ivMESA');
  6179. if not Assigned(glWindowPos3ivMESA) then Exit;
  6180. glWindowPos3svMESA := wglGetProcAddress('glWindowPos3svMESA');
  6181. if not Assigned(glWindowPos3svMESA) then Exit;
  6182. glWindowPos3fvMESA := wglGetProcAddress('glWindowPos3fvMESA');
  6183. if not Assigned(glWindowPos3fvMESA) then Exit;
  6184. glWindowPos3dvMESA := wglGetProcAddress('glWindowPos3dvMESA');
  6185. if not Assigned(glWindowPos3dvMESA) then Exit;
  6186. glWindowPos4iMESA := wglGetProcAddress('glWindowPos4iMESA');
  6187. if not Assigned(glWindowPos4iMESA) then Exit;
  6188. glWindowPos4sMESA := wglGetProcAddress('glWindowPos4sMESA');
  6189. if not Assigned(glWindowPos4sMESA) then Exit;
  6190. glWindowPos4fMESA := wglGetProcAddress('glWindowPos4fMESA');
  6191. if not Assigned(glWindowPos4fMESA) then Exit;
  6192. glWindowPos4dMESA := wglGetProcAddress('glWindowPos4dMESA');
  6193. if not Assigned(glWindowPos4dMESA) then Exit;
  6194. glWindowPos4ivMESA := wglGetProcAddress('glWindowPos4ivMESA');
  6195. if not Assigned(glWindowPos4ivMESA) then Exit;
  6196. glWindowPos4svMESA := wglGetProcAddress('glWindowPos4svMESA');
  6197. if not Assigned(glWindowPos4svMESA) then Exit;
  6198. glWindowPos4fvMESA := wglGetProcAddress('glWindowPos4fvMESA');
  6199. if not Assigned(glWindowPos4fvMESA) then Exit;
  6200. glWindowPos4dvMESA := wglGetProcAddress('glWindowPos4dvMESA');
  6201. if not Assigned(glWindowPos4dvMESA) then Exit;
  6202. Result := TRUE;
  6203. end;
  6204. end;
  6205. function Load_GL_OML_interlace: Boolean;
  6206. var
  6207. extstring: String;
  6208. begin
  6209. Result := FALSE;
  6210. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6211. if glext_ExtensionSupported('GL_OML_interlace', extstring) then
  6212. begin
  6213. Result := TRUE;
  6214. end;
  6215. end;
  6216. function Load_GL_OML_resample: Boolean;
  6217. var
  6218. extstring: String;
  6219. begin
  6220. Result := FALSE;
  6221. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6222. if glext_ExtensionSupported('GL_OML_resample', extstring) then
  6223. begin
  6224. Result := TRUE;
  6225. end;
  6226. end;
  6227. function Load_GL_OML_subsample: Boolean;
  6228. var
  6229. extstring: String;
  6230. begin
  6231. Result := FALSE;
  6232. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6233. if glext_ExtensionSupported('GL_OML_subsample', extstring) then
  6234. begin
  6235. Result := TRUE;
  6236. end;
  6237. end;
  6238. function Load_GL_SGIS_generate_mipmap: Boolean;
  6239. var
  6240. extstring: String;
  6241. begin
  6242. Result := FALSE;
  6243. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6244. if glext_ExtensionSupported('GL_SGIS_generate_mipmap', extstring) then
  6245. begin
  6246. Result := TRUE;
  6247. end;
  6248. end;
  6249. function Load_GL_SGIS_multisample: Boolean;
  6250. var
  6251. extstring: String;
  6252. begin
  6253. Result := FALSE;
  6254. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6255. if glext_ExtensionSupported('GL_SGIS_multisample', extstring) then
  6256. begin
  6257. glSampleMaskSGIS := wglGetProcAddress('glSampleMaskSGIS');
  6258. if not Assigned(glSampleMaskSGIS) then Exit;
  6259. glSamplePatternSGIS := wglGetProcAddress('glSamplePatternSGIS');
  6260. if not Assigned(glSamplePatternSGIS) then Exit;
  6261. Result := TRUE;
  6262. end;
  6263. end;
  6264. function Load_GL_SGIS_pixel_texture: Boolean;
  6265. var
  6266. extstring: String;
  6267. begin
  6268. Result := FALSE;
  6269. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6270. if glext_ExtensionSupported('GL_SGIS_pixel_texture', extstring) then
  6271. begin
  6272. glPixelTexGenParameteriSGIS := wglGetProcAddress('glPixelTexGenParameteriSGIS');
  6273. if not Assigned(glPixelTexGenParameteriSGIS) then Exit;
  6274. glPixelTexGenParameterfSGIS := wglGetProcAddress('glPixelTexGenParameterfSGIS');
  6275. if not Assigned(glPixelTexGenParameterfSGIS) then Exit;
  6276. glGetPixelTexGenParameterivSGIS := wglGetProcAddress('glGetPixelTexGenParameterivSGIS');
  6277. if not Assigned(glGetPixelTexGenParameterivSGIS) then Exit;
  6278. glGetPixelTexGenParameterfvSGIS := wglGetProcAddress('glGetPixelTexGenParameterfvSGIS');
  6279. if not Assigned(glGetPixelTexGenParameterfvSGIS) then Exit;
  6280. Result := TRUE;
  6281. end;
  6282. end;
  6283. function Load_GL_SGIS_texture_border_clamp: Boolean;
  6284. var
  6285. extstring: String;
  6286. begin
  6287. Result := FALSE;
  6288. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6289. if glext_ExtensionSupported('GL_SGIS_texture_border_clamp', extstring) then
  6290. begin
  6291. Result := TRUE;
  6292. end;
  6293. end;
  6294. function Load_GL_SGIS_texture_color_mask: Boolean;
  6295. var
  6296. extstring: String;
  6297. begin
  6298. Result := FALSE;
  6299. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6300. if glext_ExtensionSupported('GL_SGIS_texture_color_mask', extstring) then
  6301. begin
  6302. glTextureColorMaskSGIS := wglGetProcAddress('glTextureColorMaskSGIS');
  6303. if not Assigned(glTextureColorMaskSGIS) then Exit;
  6304. Result := TRUE;
  6305. end;
  6306. end;
  6307. function Load_GL_SGIS_texture_edge_clamp: Boolean;
  6308. var
  6309. extstring: String;
  6310. begin
  6311. Result := FALSE;
  6312. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6313. if glext_ExtensionSupported('GL_SGIS_texture_edge_clamp', extstring) then
  6314. begin
  6315. Result := TRUE;
  6316. end;
  6317. end;
  6318. function Load_GL_SGIS_texture_lod: Boolean;
  6319. var
  6320. extstring: String;
  6321. begin
  6322. Result := FALSE;
  6323. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6324. if glext_ExtensionSupported('GL_SGIS_texture_lod', extstring) then
  6325. begin
  6326. Result := TRUE;
  6327. end;
  6328. end;
  6329. function Load_GL_SGIS_depth_texture: Boolean;
  6330. var
  6331. extstring: String;
  6332. begin
  6333. Result := FALSE;
  6334. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6335. if glext_ExtensionSupported('GL_SGIS_depth_texture', extstring) then
  6336. begin
  6337. Result := TRUE;
  6338. end;
  6339. end;
  6340. function Load_GL_SGIX_fog_offset: Boolean;
  6341. var
  6342. extstring: String;
  6343. begin
  6344. Result := FALSE;
  6345. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6346. if glext_ExtensionSupported('GL_SGIX_fog_offset', extstring) then
  6347. begin
  6348. Result := TRUE;
  6349. end;
  6350. end;
  6351. function Load_GL_SGIX_interlace: Boolean;
  6352. var
  6353. extstring: String;
  6354. begin
  6355. Result := FALSE;
  6356. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6357. if glext_ExtensionSupported('GL_SGIX_interlace', extstring) then
  6358. begin
  6359. Result := TRUE;
  6360. end;
  6361. end;
  6362. function Load_GL_SGIX_shadow_ambient: Boolean;
  6363. var
  6364. extstring: String;
  6365. begin
  6366. Result := FALSE;
  6367. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6368. if glext_ExtensionSupported('GL_SGIX_shadow_ambient', extstring) then
  6369. begin
  6370. Result := TRUE;
  6371. end;
  6372. end;
  6373. function Load_GL_SGI_color_matrix: Boolean;
  6374. var
  6375. extstring: String;
  6376. begin
  6377. Result := FALSE;
  6378. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6379. if glext_ExtensionSupported('GL_SGI_color_matrix', extstring) then
  6380. begin
  6381. Result := TRUE;
  6382. end;
  6383. end;
  6384. function Load_GL_SGI_color_table: Boolean;
  6385. var
  6386. extstring: String;
  6387. begin
  6388. Result := FALSE;
  6389. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6390. if glext_ExtensionSupported('GL_SGI_color_table', extstring) then
  6391. begin
  6392. glColorTableSGI := wglGetProcAddress('glColorTableSGI');
  6393. if not Assigned(glColorTableSGI) then Exit;
  6394. glCopyColorTableSGI := wglGetProcAddress('glCopyColorTableSGI');
  6395. if not Assigned(glCopyColorTableSGI) then Exit;
  6396. glColorTableParameterivSGI := wglGetProcAddress('glColorTableParameterivSGI');
  6397. if not Assigned(glColorTableParameterivSGI) then Exit;
  6398. glColorTableParameterfvSGI := wglGetProcAddress('glColorTableParameterfvSGI');
  6399. if not Assigned(glColorTableParameterfvSGI) then Exit;
  6400. glGetColorTableSGI := wglGetProcAddress('glGetColorTableSGI');
  6401. if not Assigned(glGetColorTableSGI) then Exit;
  6402. glGetColorTableParameterivSGI := wglGetProcAddress('glGetColorTableParameterivSGI');
  6403. if not Assigned(glGetColorTableParameterivSGI) then Exit;
  6404. glGetColorTableParameterfvSGI := wglGetProcAddress('glGetColorTableParameterfvSGI');
  6405. if not Assigned(glGetColorTableParameterfvSGI) then Exit;
  6406. Result := TRUE;
  6407. end;
  6408. end;
  6409. function Load_GL_SGI_texture_color_table: Boolean;
  6410. var
  6411. extstring: String;
  6412. begin
  6413. Result := FALSE;
  6414. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6415. if glext_ExtensionSupported('GL_SGI_texture_color_table', extstring) then
  6416. begin
  6417. Result := TRUE;
  6418. end;
  6419. end;
  6420. function Load_GL_SUN_vertex: Boolean;
  6421. var
  6422. extstring: String;
  6423. begin
  6424. Result := FALSE;
  6425. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6426. if glext_ExtensionSupported('GL_SUN_vertex', extstring) then
  6427. begin
  6428. glColor4ubVertex2fSUN := wglGetProcAddress('glColor4ubVertex2fSUN');
  6429. if not Assigned(glColor4ubVertex2fSUN) then Exit;
  6430. glColor4ubVertex2fvSUN := wglGetProcAddress('glColor4ubVertex2fvSUN');
  6431. if not Assigned(glColor4ubVertex2fvSUN) then Exit;
  6432. glColor4ubVertex3fSUN := wglGetProcAddress('glColor4ubVertex3fSUN');
  6433. if not Assigned(glColor4ubVertex3fSUN) then Exit;
  6434. glColor4ubVertex3fvSUN := wglGetProcAddress('glColor4ubVertex3fvSUN');
  6435. if not Assigned(glColor4ubVertex3fvSUN) then Exit;
  6436. glColor3fVertex3fSUN := wglGetProcAddress('glColor3fVertex3fSUN');
  6437. if not Assigned(glColor3fVertex3fSUN) then Exit;
  6438. glColor3fVertex3fvSUN := wglGetProcAddress('glColor3fVertex3fvSUN');
  6439. if not Assigned(glColor3fVertex3fvSUN) then Exit;
  6440. glNormal3fVertex3fSUN := wglGetProcAddress('glNormal3fVertex3fSUN');
  6441. if not Assigned(glNormal3fVertex3fSUN) then Exit;
  6442. glNormal3fVertex3fvSUN := wglGetProcAddress('glNormal3fVertex3fvSUN');
  6443. if not Assigned(glNormal3fVertex3fvSUN) then Exit;
  6444. glColor4fNormal3fVertex3fSUN := wglGetProcAddress('glColor4fNormal3fVertex3fSUN');
  6445. if not Assigned(glColor4fNormal3fVertex3fSUN) then Exit;
  6446. glColor4fNormal3fVertex3fvSUN := wglGetProcAddress('glColor4fNormal3fVertex3fvSUN');
  6447. if not Assigned(glColor4fNormal3fVertex3fvSUN) then Exit;
  6448. glTexCoord2fVertex3fSUN := wglGetProcAddress('glTexCoord2fVertex3fSUN');
  6449. if not Assigned(glTexCoord2fVertex3fSUN) then Exit;
  6450. glTexCoord2fVertex3fvSUN := wglGetProcAddress('glTexCoord2fVertex3fvSUN');
  6451. if not Assigned(glTexCoord2fVertex3fvSUN) then Exit;
  6452. glTexCoord4fVertex4fSUN := wglGetProcAddress('glTexCoord4fVertex4fSUN');
  6453. if not Assigned(glTexCoord4fVertex4fSUN) then Exit;
  6454. glTexCoord4fVertex4fvSUN := wglGetProcAddress('glTexCoord4fVertex4fvSUN');
  6455. if not Assigned(glTexCoord4fVertex4fvSUN) then Exit;
  6456. glTexCoord2fColor4ubVertex3fSUN := wglGetProcAddress('glTexCoord2fColor4ubVertex3fSUN');
  6457. if not Assigned(glTexCoord2fColor4ubVertex3fSUN) then Exit;
  6458. glTexCoord2fColor4ubVertex3fvSUN := wglGetProcAddress('glTexCoord2fColor4ubVertex3fvSUN');
  6459. if not Assigned(glTexCoord2fColor4ubVertex3fvSUN) then Exit;
  6460. glTexCoord2fColor3fVertex3fSUN := wglGetProcAddress('glTexCoord2fColor3fVertex3fSUN');
  6461. if not Assigned(glTexCoord2fColor3fVertex3fSUN) then Exit;
  6462. glTexCoord2fColor3fVertex3fvSUN := wglGetProcAddress('glTexCoord2fColor3fVertex3fvSUN');
  6463. if not Assigned(glTexCoord2fColor3fVertex3fvSUN) then Exit;
  6464. glTexCoord2fNormal3fVertex3fSUN := wglGetProcAddress('glTexCoord2fNormal3fVertex3fSUN');
  6465. if not Assigned(glTexCoord2fNormal3fVertex3fSUN) then Exit;
  6466. glTexCoord2fNormal3fVertex3fvSUN := wglGetProcAddress('glTexCoord2fNormal3fVertex3fvSUN');
  6467. if not Assigned(glTexCoord2fNormal3fVertex3fvSUN) then Exit;
  6468. glTexCoord2fColor4fNormal3fVertex3fSUN := wglGetProcAddress('glTexCoord2fColor4fNormal3fVertex3fSUN');
  6469. if not Assigned(glTexCoord2fColor4fNormal3fVertex3fSUN) then Exit;
  6470. glTexCoord2fColor4fNormal3fVertex3fvSUN := wglGetProcAddress('glTexCoord2fColor4fNormal3fVertex3fvSUN');
  6471. if not Assigned(glTexCoord2fColor4fNormal3fVertex3fvSUN) then Exit;
  6472. glTexCoord4fColor4fNormal3fVertex4fSUN := wglGetProcAddress('glTexCoord4fColor4fNormal3fVertex4fSUN');
  6473. if not Assigned(glTexCoord4fColor4fNormal3fVertex4fSUN) then Exit;
  6474. glTexCoord4fColor4fNormal3fVertex4fvSUN := wglGetProcAddress('glTexCoord4fColor4fNormal3fVertex4fvSUN');
  6475. if not Assigned(glTexCoord4fColor4fNormal3fVertex4fvSUN) then Exit;
  6476. glReplacementCodeuiVertex3fSUN := wglGetProcAddress('glReplacementCodeuiVertex3fSUN');
  6477. if not Assigned(glReplacementCodeuiVertex3fSUN) then Exit;
  6478. glReplacementCodeuiVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiVertex3fvSUN');
  6479. if not Assigned(glReplacementCodeuiVertex3fvSUN) then Exit;
  6480. glReplacementCodeuiColor4ubVertex3fSUN := wglGetProcAddress('glReplacementCodeuiColor4ubVertex3fSUN');
  6481. if not Assigned(glReplacementCodeuiColor4ubVertex3fSUN) then Exit;
  6482. glReplacementCodeuiColor4ubVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiColor4ubVertex3fvSUN');
  6483. if not Assigned(glReplacementCodeuiColor4ubVertex3fvSUN) then Exit;
  6484. glReplacementCodeuiColor3fVertex3fSUN := wglGetProcAddress('glReplacementCodeuiColor3fVertex3fSUN');
  6485. if not Assigned(glReplacementCodeuiColor3fVertex3fSUN) then Exit;
  6486. glReplacementCodeuiColor3fVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiColor3fVertex3fvSUN');
  6487. if not Assigned(glReplacementCodeuiColor3fVertex3fvSUN) then Exit;
  6488. glReplacementCodeuiNormal3fVertex3fSUN := wglGetProcAddress('glReplacementCodeuiNormal3fVertex3fSUN');
  6489. if not Assigned(glReplacementCodeuiNormal3fVertex3fSUN) then Exit;
  6490. glReplacementCodeuiNormal3fVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiNormal3fVertex3fvSUN');
  6491. if not Assigned(glReplacementCodeuiNormal3fVertex3fvSUN) then Exit;
  6492. glReplacementCodeuiColor4fNormal3fVertex3fSUN := wglGetProcAddress('glReplacementCodeuiColor4fNormal3fVertex3fSUN');
  6493. if not Assigned(glReplacementCodeuiColor4fNormal3fVertex3fSUN) then Exit;
  6494. glReplacementCodeuiColor4fNormal3fVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiColor4fNormal3fVertex3fvSUN');
  6495. if not Assigned(glReplacementCodeuiColor4fNormal3fVertex3fvSUN) then Exit;
  6496. glReplacementCodeuiTexCoord2fVertex3fSUN := wglGetProcAddress('glReplacementCodeuiTexCoord2fVertex3fSUN');
  6497. if not Assigned(glReplacementCodeuiTexCoord2fVertex3fSUN) then Exit;
  6498. glReplacementCodeuiTexCoord2fVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiTexCoord2fVertex3fvSUN');
  6499. if not Assigned(glReplacementCodeuiTexCoord2fVertex3fvSUN) then Exit;
  6500. glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN := wglGetProcAddress('glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN');
  6501. if not Assigned(glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN) then Exit;
  6502. glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN');
  6503. if not Assigned(glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN) then Exit;
  6504. glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN := wglGetProcAddress('glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN');
  6505. if not Assigned(glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN) then Exit;
  6506. glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN');
  6507. if not Assigned(glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN) then Exit;
  6508. Result := TRUE;
  6509. end;
  6510. end;
  6511. function Load_GL_ARB_fragment_program: Boolean;
  6512. var
  6513. extstring: String;
  6514. begin
  6515. Result := FALSE;
  6516. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6517. if glext_ExtensionSupported('GL_ARB_fragment_program', extstring) then
  6518. begin
  6519. glProgramStringARB := wglGetProcAddress('glProgramStringARB');
  6520. if not Assigned(glProgramStringARB) then Exit;
  6521. glBindProgramARB := wglGetProcAddress('glBindProgramARB');
  6522. if not Assigned(glBindProgramARB) then Exit;
  6523. glDeleteProgramsARB := wglGetProcAddress('glDeleteProgramsARB');
  6524. if not Assigned(glDeleteProgramsARB) then Exit;
  6525. glGenProgramsARB := wglGetProcAddress('glGenProgramsARB');
  6526. if not Assigned(glGenProgramsARB) then Exit;
  6527. glProgramEnvParameter4dARB := wglGetProcAddress('glProgramEnvParameter4dARB');
  6528. if not Assigned(glProgramEnvParameter4dARB) then Exit;
  6529. glProgramEnvParameter4dvARB := wglGetProcAddress('glProgramEnvParameter4dvARB');
  6530. if not Assigned(glProgramEnvParameter4dvARB) then Exit;
  6531. glProgramEnvParameter4fARB := wglGetProcAddress('glProgramEnvParameter4fARB');
  6532. if not Assigned(glProgramEnvParameter4fARB) then Exit;
  6533. glProgramEnvParameter4fvARB := wglGetProcAddress('glProgramEnvParameter4fvARB');
  6534. if not Assigned(glProgramEnvParameter4fvARB) then Exit;
  6535. glProgramLocalParameter4dARB := wglGetProcAddress('glProgramLocalParameter4dARB');
  6536. if not Assigned(glProgramLocalParameter4dARB) then Exit;
  6537. glProgramLocalParameter4dvARB := wglGetProcAddress('glProgramLocalParameter4dvARB');
  6538. if not Assigned(glProgramLocalParameter4dvARB) then Exit;
  6539. glProgramLocalParameter4fARB := wglGetProcAddress('glProgramLocalParameter4fARB');
  6540. if not Assigned(glProgramLocalParameter4fARB) then Exit;
  6541. glProgramLocalParameter4fvARB := wglGetProcAddress('glProgramLocalParameter4fvARB');
  6542. if not Assigned(glProgramLocalParameter4fvARB) then Exit;
  6543. glGetProgramEnvParameterdvARB := wglGetProcAddress('glGetProgramEnvParameterdvARB');
  6544. if not Assigned(glGetProgramEnvParameterdvARB) then Exit;
  6545. glGetProgramEnvParameterfvARB := wglGetProcAddress('glGetProgramEnvParameterfvARB');
  6546. if not Assigned(glGetProgramEnvParameterfvARB) then Exit;
  6547. glGetProgramLocalParameterdvARB := wglGetProcAddress('glGetProgramLocalParameterdvARB');
  6548. if not Assigned(glGetProgramLocalParameterdvARB) then Exit;
  6549. glGetProgramLocalParameterfvARB := wglGetProcAddress('glGetProgramLocalParameterfvARB');
  6550. if not Assigned(glGetProgramLocalParameterfvARB) then Exit;
  6551. glGetProgramivARB := wglGetProcAddress('glGetProgramivARB');
  6552. if not Assigned(glGetProgramivARB) then Exit;
  6553. glGetProgramStringARB := wglGetProcAddress('glGetProgramStringARB');
  6554. if not Assigned(glGetProgramStringARB) then Exit;
  6555. glIsProgramARB := wglGetProcAddress('glIsProgramARB');
  6556. if not Assigned(glIsProgramARB) then Exit;
  6557. Result := TRUE;
  6558. end;
  6559. end;
  6560. function Load_GL_ATI_text_fragment_shader: Boolean;
  6561. var
  6562. extstring: String;
  6563. begin
  6564. Result := FALSE;
  6565. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6566. if glext_ExtensionSupported('GL_ATI_text_fragment_shader', extstring) then
  6567. begin
  6568. Result := TRUE;
  6569. end;
  6570. end;
  6571. function Load_GL_APPLE_client_storage: Boolean;
  6572. var
  6573. extstring: String;
  6574. begin
  6575. Result := FALSE;
  6576. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6577. if glext_ExtensionSupported('GL_APPLE_client_storage', extstring) then
  6578. begin
  6579. Result := TRUE;
  6580. end;
  6581. end;
  6582. function Load_GL_APPLE_element_array: Boolean;
  6583. var
  6584. extstring: String;
  6585. begin
  6586. Result := FALSE;
  6587. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6588. if glext_ExtensionSupported('GL_APPLE_element_array', extstring) then
  6589. begin
  6590. glElementPointerAPPLE := wglGetProcAddress('glElementPointerAPPLE');
  6591. if not Assigned(glElementPointerAPPLE) then Exit;
  6592. glDrawElementArrayAPPLE := wglGetProcAddress('glDrawElementArrayAPPLE');
  6593. if not Assigned(glDrawElementArrayAPPLE) then Exit;
  6594. glDrawRangeElementArrayAPPLE := wglGetProcAddress('glDrawRangeElementArrayAPPLE');
  6595. if not Assigned(glDrawRangeElementArrayAPPLE) then Exit;
  6596. glMultiDrawElementArrayAPPLE := wglGetProcAddress('glMultiDrawElementArrayAPPLE');
  6597. if not Assigned(glMultiDrawElementArrayAPPLE) then Exit;
  6598. glMultiDrawRangeElementArrayAPPLE := wglGetProcAddress('glMultiDrawRangeElementArrayAPPLE');
  6599. if not Assigned(glMultiDrawRangeElementArrayAPPLE) then Exit;
  6600. Result := TRUE;
  6601. end;
  6602. end;
  6603. function Load_GL_APPLE_fence: Boolean;
  6604. var
  6605. extstring: String;
  6606. begin
  6607. Result := FALSE;
  6608. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6609. if glext_ExtensionSupported('GL_APPLE_fence', extstring) then
  6610. begin
  6611. glGenFencesAPPLE := wglGetProcAddress('glGenFencesAPPLE');
  6612. if not Assigned(glGenFencesAPPLE) then Exit;
  6613. glDeleteFencesAPPLE := wglGetProcAddress('glDeleteFencesAPPLE');
  6614. if not Assigned(glDeleteFencesAPPLE) then Exit;
  6615. glSetFenceAPPLE := wglGetProcAddress('glSetFenceAPPLE');
  6616. if not Assigned(glSetFenceAPPLE) then Exit;
  6617. glIsFenceAPPLE := wglGetProcAddress('glIsFenceAPPLE');
  6618. if not Assigned(glIsFenceAPPLE) then Exit;
  6619. glTestFenceAPPLE := wglGetProcAddress('glTestFenceAPPLE');
  6620. if not Assigned(glTestFenceAPPLE) then Exit;
  6621. glFinishFenceAPPLE := wglGetProcAddress('glFinishFenceAPPLE');
  6622. if not Assigned(glFinishFenceAPPLE) then Exit;
  6623. glTestObjectAPPLE := wglGetProcAddress('glTestObjectAPPLE');
  6624. if not Assigned(glTestObjectAPPLE) then Exit;
  6625. glFinishObjectAPPLE := wglGetProcAddress('glFinishObjectAPPLE');
  6626. if not Assigned(glFinishObjectAPPLE) then Exit;
  6627. Result := TRUE;
  6628. end;
  6629. end;
  6630. function Load_GL_APPLE_vertex_array_object: Boolean;
  6631. var
  6632. extstring: String;
  6633. begin
  6634. Result := FALSE;
  6635. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6636. if glext_ExtensionSupported('GL_APPLE_vertex_array_object', extstring) then
  6637. begin
  6638. glBindVertexArrayAPPLE := wglGetProcAddress('glBindVertexArrayAPPLE');
  6639. if not Assigned(glBindVertexArrayAPPLE) then Exit;
  6640. glDeleteVertexArraysAPPLE := wglGetProcAddress('glDeleteVertexArraysAPPLE');
  6641. if not Assigned(glDeleteVertexArraysAPPLE) then Exit;
  6642. glGenVertexArraysAPPLE := wglGetProcAddress('glGenVertexArraysAPPLE');
  6643. if not Assigned(glGenVertexArraysAPPLE) then Exit;
  6644. glIsVertexArrayAPPLE := wglGetProcAddress('glIsVertexArrayAPPLE');
  6645. if not Assigned(glIsVertexArrayAPPLE) then Exit;
  6646. Result := TRUE;
  6647. end;
  6648. end;
  6649. function Load_GL_APPLE_vertex_array_range: Boolean;
  6650. var
  6651. extstring: String;
  6652. begin
  6653. Result := FALSE;
  6654. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6655. if glext_ExtensionSupported('GL_APPLE_vertex_array_range', extstring) then
  6656. begin
  6657. glVertexArrayRangeAPPLE := wglGetProcAddress('glVertexArrayRangeAPPLE');
  6658. if not Assigned(glVertexArrayRangeAPPLE) then Exit;
  6659. glFlushVertexArrayRangeAPPLE := wglGetProcAddress('glFlushVertexArrayRangeAPPLE');
  6660. if not Assigned(glFlushVertexArrayRangeAPPLE) then Exit;
  6661. glVertexArrayParameteriAPPLE := wglGetProcAddress('glVertexArrayParameteriAPPLE');
  6662. if not Assigned(glVertexArrayParameteriAPPLE) then Exit;
  6663. Result := TRUE;
  6664. end;
  6665. end;
  6666. function load_GL_ARB_vertex_buffer_object : boolean;
  6667. var extstring:string;
  6668. begin
  6669. Result:=false;
  6670. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6671. if glext_ExtensionSupported('GL_ARB_vertex_buffer_object',extstring) then
  6672. begin
  6673. glBindBufferARB := wglGetProcAddress('glBindBufferARB');
  6674. if not Assigned(glBindBufferARB) then Exit;
  6675. glDeleteBuffersARB := wglGetProcAddress('glDeleteBuffersARB');
  6676. if not Assigned(glDeleteBuffersARB) then Exit;
  6677. glGenBuffersARB := wglGetProcAddress('glGenBuffersARB');
  6678. if not Assigned(glGenBuffersARB) then Exit;
  6679. glIsBufferARB := wglGetProcAddress('glIsBufferARB');
  6680. if not Assigned(glIsBufferARB) then Exit;
  6681. glBufferDataARB := wglGetProcAddress('glBufferDataARB');
  6682. if not Assigned(glBufferDataARB) then Exit;
  6683. glGetBufferSubDataARB := wglGetProcAddress('glGetBufferSubDataARB');
  6684. if not Assigned(glGetBufferSubDataARB) then Exit;
  6685. glMapBufferARB := wglGetProcAddress('glMapBufferARB');
  6686. if not Assigned(glMapBufferARB) then Exit;
  6687. glUnmapBufferARB := wglGetProcAddress('glUnmapBufferARB');
  6688. if not Assigned(glMapBufferARB) then Exit;
  6689. glGetBufferParameterivARB := wglGetProcAddress('glGetBufferParameterivARB');
  6690. if not Assigned(glGetBufferParameterivARB) then Exit;
  6691. glGetBufferPointervARB := wglGetProcAddress('glGetBufferPointervARB');
  6692. if not Assigned(glGetBufferPointervARB) then Exit;
  6693. Result:=true;
  6694. end;
  6695. end;
  6696. {$IFDEF Windows}
  6697. function Load_WGL_ARB_pixel_format: Boolean;
  6698. var
  6699. extstring: String;
  6700. begin
  6701. Result := FALSE;
  6702. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6703. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6704. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6705. if glext_ExtensionSupported('WGL_ARB_pixel_format', extstring) then
  6706. begin
  6707. wglGetPixelFormatAttribivARB := wglGetProcAddress('wglGetPixelFormatAttribivARB');
  6708. if not Assigned(wglGetPixelFormatAttribivARB) then Exit;
  6709. wglGetPixelFormatAttribfvARB := wglGetProcAddress('wglGetPixelFormatAttribfvARB');
  6710. if not Assigned(wglGetPixelFormatAttribfvARB) then Exit;
  6711. wglChoosePixelFormatARB := wglGetProcAddress('wglChoosePixelFormatARB');
  6712. if not Assigned(wglChoosePixelFormatARB) then Exit;
  6713. Result := TRUE;
  6714. end;
  6715. end;
  6716. function Load_WGL_ARB_make_current_read: Boolean;
  6717. var
  6718. extstring: String;
  6719. begin
  6720. Result := FALSE;
  6721. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6722. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6723. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6724. if glext_ExtensionSupported('WGL_ARB_make_current_read', extstring) then
  6725. begin
  6726. wglMakeContextCurrentARB := wglGetProcAddress('wglMakeContextCurrentARB');
  6727. if not Assigned(wglMakeContextCurrentARB) then Exit;
  6728. wglGetCurrentReadDCARB := wglGetProcAddress('wglGetCurrentReadDCARB');
  6729. if not Assigned(wglGetCurrentReadDCARB) then Exit;
  6730. Result := TRUE;
  6731. end;
  6732. end;
  6733. function Load_WGL_ARB_pbuffer: Boolean;
  6734. var
  6735. extstring: String;
  6736. begin
  6737. Result := FALSE;
  6738. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6739. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6740. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6741. if glext_ExtensionSupported('WGL_ARB_pbuffer', extstring) then
  6742. begin
  6743. wglCreatePbufferARB := wglGetProcAddress('wglCreatePbufferARB');
  6744. if not Assigned(wglCreatePbufferARB) then Exit;
  6745. wglGetPbufferDCARB := wglGetProcAddress('wglGetPbufferDCARB');
  6746. if not Assigned(wglGetPbufferDCARB) then Exit;
  6747. wglReleasePbufferDCARB := wglGetProcAddress('wglReleasePbufferDCARB');
  6748. if not Assigned(wglReleasePbufferDCARB) then Exit;
  6749. wglDestroyPbufferARB := wglGetProcAddress('wglDestroyPbufferARB');
  6750. if not Assigned(wglDestroyPbufferARB) then Exit;
  6751. wglQueryPbufferARB := wglGetProcAddress('wglQueryPbufferARB');
  6752. if not Assigned(wglQueryPbufferARB) then Exit;
  6753. Result := TRUE;
  6754. end;
  6755. end;
  6756. function Load_WGL_EXT_swap_control: Boolean;
  6757. var
  6758. extstring: String;
  6759. begin
  6760. Result := FALSE;
  6761. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6762. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6763. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6764. if glext_ExtensionSupported('WGL_EXT_swap_control', extstring) then
  6765. begin
  6766. wglSwapIntervalEXT := wglGetProcAddress('wglSwapIntervalEXT');
  6767. if not Assigned(wglSwapIntervalEXT) then Exit;
  6768. wglGetSwapIntervalEXT := wglGetProcAddress('wglGetSwapIntervalEXT');
  6769. if not Assigned(wglGetSwapIntervalEXT) then Exit;
  6770. Result := TRUE;
  6771. end;
  6772. end;
  6773. function Load_WGL_ARB_render_texture: Boolean;
  6774. var
  6775. extstring: String;
  6776. begin
  6777. Result := FALSE;
  6778. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6779. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6780. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6781. if glext_ExtensionSupported('WGL_ARB_render_texture', extstring) then
  6782. begin
  6783. wglBindTexImageARB := wglGetProcAddress('wglBindTexImageARB');
  6784. if not Assigned(wglBindTexImageARB) then Exit;
  6785. wglReleaseTexImageARB := wglGetProcAddress('wglReleaseTexImageARB');
  6786. if not Assigned(wglReleaseTexImageARB) then Exit;
  6787. wglSetPbufferAttribARB := wglGetProcAddress('wglSetPbufferAttribARB');
  6788. if not Assigned(wglSetPbufferAttribARB) then Exit;
  6789. Result := TRUE;
  6790. end;
  6791. end;
  6792. function Load_WGL_EXT_extensions_string: Boolean;
  6793. var
  6794. extstring: String;
  6795. begin
  6796. Result := FALSE;
  6797. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6798. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6799. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6800. if glext_ExtensionSupported('WGL_EXT_extensions_string', extstring) then
  6801. begin
  6802. wglGetExtensionsStringEXT := wglGetProcAddress('wglGetExtensionsStringEXT');
  6803. if not Assigned(wglGetExtensionsStringEXT) then Exit;
  6804. Result := TRUE;
  6805. end;
  6806. end;
  6807. function Load_WGL_EXT_make_current_read: Boolean;
  6808. var
  6809. extstring: String;
  6810. begin
  6811. Result := FALSE;
  6812. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6813. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6814. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6815. if glext_ExtensionSupported('WGL_EXT_make_current_read', extstring) then
  6816. begin
  6817. wglMakeContextCurrentEXT := wglGetProcAddress('wglMakeContextCurrentEXT');
  6818. if not Assigned(wglMakeContextCurrentEXT) then Exit;
  6819. wglGetCurrentReadDCEXT := wglGetProcAddress('wglGetCurrentReadDCEXT');
  6820. if not Assigned(wglGetCurrentReadDCEXT) then Exit;
  6821. Result := TRUE;
  6822. end;
  6823. end;
  6824. function Load_WGL_EXT_pbuffer: Boolean;
  6825. var
  6826. extstring: String;
  6827. begin
  6828. Result := FALSE;
  6829. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6830. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6831. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6832. if glext_ExtensionSupported('WGL_EXT_pbuffer', extstring) then
  6833. begin
  6834. wglCreatePbufferEXT := wglGetProcAddress('wglCreatePbufferEXT');
  6835. if not Assigned(wglCreatePbufferEXT) then Exit;
  6836. wglGetPbufferDCEXT := wglGetProcAddress('wglGetPbufferDCEXT');
  6837. if not Assigned(wglGetPbufferDCEXT) then Exit;
  6838. wglReleasePbufferDCEXT := wglGetProcAddress('wglReleasePbufferDCEXT');
  6839. if not Assigned(wglReleasePbufferDCEXT) then Exit;
  6840. wglDestroyPbufferEXT := wglGetProcAddress('wglDestroyPbufferEXT');
  6841. if not Assigned(wglDestroyPbufferEXT) then Exit;
  6842. wglQueryPbufferEXT := wglGetProcAddress('wglQueryPbufferEXT');
  6843. if not Assigned(wglQueryPbufferEXT) then Exit;
  6844. Result := TRUE;
  6845. end;
  6846. end;
  6847. function Load_WGL_EXT_pixel_format: Boolean;
  6848. var
  6849. extstring: String;
  6850. begin
  6851. Result := FALSE;
  6852. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6853. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6854. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6855. if glext_ExtensionSupported('WGL_EXT_pixel_format', extstring) then
  6856. begin
  6857. wglGetPixelFormatAttribivEXT := wglGetProcAddress('wglGetPixelFormatAttribivEXT');
  6858. if not Assigned(wglGetPixelFormatAttribivEXT) then Exit;
  6859. wglGetPixelFormatAttribfvEXT := wglGetProcAddress('wglGetPixelFormatAttribfvEXT');
  6860. if not Assigned(wglGetPixelFormatAttribfvEXT) then Exit;
  6861. wglChoosePixelFormatEXT := wglGetProcAddress('wglChoosePixelFormatEXT');
  6862. if not Assigned(wglChoosePixelFormatEXT) then Exit;
  6863. Result := TRUE;
  6864. end;
  6865. end;
  6866. function Load_WGL_I3D_digital_video_control: Boolean;
  6867. var
  6868. extstring: String;
  6869. begin
  6870. Result := FALSE;
  6871. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6872. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6873. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6874. if glext_ExtensionSupported('WGL_I3D_digital_video_control', extstring) then
  6875. begin
  6876. wglGetDigitalVideoParametersI3D := wglGetProcAddress('wglGetDigitalVideoParametersI3D');
  6877. if not Assigned(wglGetDigitalVideoParametersI3D) then Exit;
  6878. wglSetDigitalVideoParametersI3D := wglGetProcAddress('wglSetDigitalVideoParametersI3D');
  6879. if not Assigned(wglSetDigitalVideoParametersI3D) then Exit;
  6880. Result := TRUE;
  6881. end;
  6882. end;
  6883. function Load_WGL_I3D_gamma: Boolean;
  6884. var
  6885. extstring: String;
  6886. begin
  6887. Result := FALSE;
  6888. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6889. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6890. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6891. if glext_ExtensionSupported('WGL_I3D_gamma', extstring) then
  6892. begin
  6893. wglGetGammaTableParametersI3D := wglGetProcAddress('wglGetGammaTableParametersI3D');
  6894. if not Assigned(wglGetGammaTableParametersI3D) then Exit;
  6895. wglSetGammaTableParametersI3D := wglGetProcAddress('wglSetGammaTableParametersI3D');
  6896. if not Assigned(wglSetGammaTableParametersI3D) then Exit;
  6897. wglGetGammaTableI3D := wglGetProcAddress('wglGetGammaTableI3D');
  6898. if not Assigned(wglGetGammaTableI3D) then Exit;
  6899. wglSetGammaTableI3D := wglGetProcAddress('wglSetGammaTableI3D');
  6900. if not Assigned(wglSetGammaTableI3D) then Exit;
  6901. Result := TRUE;
  6902. end;
  6903. end;
  6904. function Load_WGL_I3D_genlock: Boolean;
  6905. var
  6906. extstring: String;
  6907. begin
  6908. Result := FALSE;
  6909. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6910. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6911. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6912. if glext_ExtensionSupported('WGL_I3D_genlock', extstring) then
  6913. begin
  6914. wglEnableGenlockI3D := wglGetProcAddress('wglEnableGenlockI3D');
  6915. if not Assigned(wglEnableGenlockI3D) then Exit;
  6916. wglDisableGenlockI3D := wglGetProcAddress('wglDisableGenlockI3D');
  6917. if not Assigned(wglDisableGenlockI3D) then Exit;
  6918. wglIsEnabledGenlockI3D := wglGetProcAddress('wglIsEnabledGenlockI3D');
  6919. if not Assigned(wglIsEnabledGenlockI3D) then Exit;
  6920. wglGenlockSourceI3D := wglGetProcAddress('wglGenlockSourceI3D');
  6921. if not Assigned(wglGenlockSourceI3D) then Exit;
  6922. wglGetGenlockSourceI3D := wglGetProcAddress('wglGetGenlockSourceI3D');
  6923. if not Assigned(wglGetGenlockSourceI3D) then Exit;
  6924. wglGenlockSourceEdgeI3D := wglGetProcAddress('wglGenlockSourceEdgeI3D');
  6925. if not Assigned(wglGenlockSourceEdgeI3D) then Exit;
  6926. wglGetGenlockSourceEdgeI3D := wglGetProcAddress('wglGetGenlockSourceEdgeI3D');
  6927. if not Assigned(wglGetGenlockSourceEdgeI3D) then Exit;
  6928. wglGenlockSampleRateI3D := wglGetProcAddress('wglGenlockSampleRateI3D');
  6929. if not Assigned(wglGenlockSampleRateI3D) then Exit;
  6930. wglGetGenlockSampleRateI3D := wglGetProcAddress('wglGetGenlockSampleRateI3D');
  6931. if not Assigned(wglGetGenlockSampleRateI3D) then Exit;
  6932. wglGenlockSourceDelayI3D := wglGetProcAddress('wglGenlockSourceDelayI3D');
  6933. if not Assigned(wglGenlockSourceDelayI3D) then Exit;
  6934. wglGetGenlockSourceDelayI3D := wglGetProcAddress('wglGetGenlockSourceDelayI3D');
  6935. if not Assigned(wglGetGenlockSourceDelayI3D) then Exit;
  6936. wglQueryGenlockMaxSourceDelayI3D := wglGetProcAddress('wglQueryGenlockMaxSourceDelayI3D');
  6937. if not Assigned(wglQueryGenlockMaxSourceDelayI3D) then Exit;
  6938. Result := TRUE;
  6939. end;
  6940. end;
  6941. {$ENDIF}
  6942. function Load_GL_ARB_matrix_palette: Boolean;
  6943. var
  6944. extstring: String;
  6945. begin
  6946. Result := FALSE;
  6947. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6948. if glext_ExtensionSupported('GL_ARB_matrix_palette', extstring) then
  6949. begin
  6950. glCurrentPaletteMatrixARB := wglGetProcAddress('glCurrentPaletteMatrixARB');
  6951. if not Assigned(glCurrentPaletteMatrixARB) then Exit;
  6952. glMatrixIndexubvARB := wglGetProcAddress('glMatrixIndexubvARB');
  6953. if not Assigned(glMatrixIndexubvARB) then Exit;
  6954. glMatrixIndexusvARB := wglGetProcAddress('glMatrixIndexusvARB');
  6955. if not Assigned(glMatrixIndexusvARB) then Exit;
  6956. glMatrixIndexuivARB := wglGetProcAddress('glMatrixIndexuivARB');
  6957. if not Assigned(glMatrixIndexuivARB) then Exit;
  6958. glMatrixIndexPointerARB := wglGetProcAddress('glMatrixIndexPointerARB');
  6959. if not Assigned(glMatrixIndexPointerARB) then Exit;
  6960. Result := TRUE;
  6961. end;
  6962. end;
  6963. function Load_GL_NV_element_array: Boolean;
  6964. var
  6965. extstring: String;
  6966. begin
  6967. Result := FALSE;
  6968. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6969. if glext_ExtensionSupported('GL_NV_element_array', extstring) then
  6970. begin
  6971. glElementPointerNV := wglGetProcAddress('glElementPointerNV');
  6972. if not Assigned(glElementPointerNV) then Exit;
  6973. glDrawElementArrayNV := wglGetProcAddress('glDrawElementArrayNV');
  6974. if not Assigned(glDrawElementArrayNV) then Exit;
  6975. glDrawRangeElementArrayNV := wglGetProcAddress('glDrawRangeElementArrayNV');
  6976. if not Assigned(glDrawRangeElementArrayNV) then Exit;
  6977. glMultiDrawElementArrayNV := wglGetProcAddress('glMultiDrawElementArrayNV');
  6978. if not Assigned(glMultiDrawElementArrayNV) then Exit;
  6979. glMultiDrawRangeElementArrayNV := wglGetProcAddress('glMultiDrawRangeElementArrayNV');
  6980. if not Assigned(glMultiDrawRangeElementArrayNV) then Exit;
  6981. Result := TRUE;
  6982. end;
  6983. end;
  6984. function Load_GL_NV_float_buffer: Boolean;
  6985. var
  6986. extstring: String;
  6987. begin
  6988. Result := FALSE;
  6989. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6990. if glext_ExtensionSupported('GL_NV_float_buffer', extstring) then
  6991. begin
  6992. Result := TRUE;
  6993. end;
  6994. end;
  6995. function Load_GL_NV_fragment_program: Boolean;
  6996. var
  6997. extstring: String;
  6998. begin
  6999. Result := FALSE;
  7000. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7001. if glext_ExtensionSupported('GL_NV_fragment_program', extstring) then
  7002. begin
  7003. glProgramNamedParameter4fNV := wglGetProcAddress('glProgramNamedParameter4fNV');
  7004. if not Assigned(glProgramNamedParameter4fNV) then Exit;
  7005. glProgramNamedParameter4dNV := wglGetProcAddress('glProgramNamedParameter4dNV');
  7006. if not Assigned(glProgramNamedParameter4dNV) then Exit;
  7007. glGetProgramNamedParameterfvNV := wglGetProcAddress('glGetProgramNamedParameterfvNV');
  7008. if not Assigned(glGetProgramNamedParameterfvNV) then Exit;
  7009. glGetProgramNamedParameterdvNV := wglGetProcAddress('glGetProgramNamedParameterdvNV');
  7010. if not Assigned(glGetProgramNamedParameterdvNV) then Exit;
  7011. glProgramLocalParameter4dARB := wglGetProcAddress('glProgramLocalParameter4dARB');
  7012. if not Assigned(glProgramLocalParameter4dARB) then Exit;
  7013. glProgramLocalParameter4dvARB := wglGetProcAddress('glProgramLocalParameter4dvARB');
  7014. if not Assigned(glProgramLocalParameter4dvARB) then Exit;
  7015. glProgramLocalParameter4fARB := wglGetProcAddress('glProgramLocalParameter4fARB');
  7016. if not Assigned(glProgramLocalParameter4fARB) then Exit;
  7017. glProgramLocalParameter4fvARB := wglGetProcAddress('glProgramLocalParameter4fvARB');
  7018. if not Assigned(glProgramLocalParameter4fvARB) then Exit;
  7019. glGetProgramLocalParameterdvARB := wglGetProcAddress('glGetProgramLocalParameterdvARB');
  7020. if not Assigned(glGetProgramLocalParameterdvARB) then Exit;
  7021. glGetProgramLocalParameterfvARB := wglGetProcAddress('glGetProgramLocalParameterfvARB');
  7022. if not Assigned(glGetProgramLocalParameterfvARB) then Exit;
  7023. Result := TRUE;
  7024. end;
  7025. end;
  7026. function Load_GL_NV_primitive_restart: Boolean;
  7027. var
  7028. extstring: String;
  7029. begin
  7030. Result := FALSE;
  7031. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7032. if glext_ExtensionSupported('GL_NV_primitive_restart', extstring) then
  7033. begin
  7034. glPrimitiveRestartNV := wglGetProcAddress('glPrimitiveRestartNV');
  7035. if not Assigned(glPrimitiveRestartNV) then Exit;
  7036. glPrimitiveRestartIndexNV := wglGetProcAddress('glPrimitiveRestartIndexNV');
  7037. if not Assigned(glPrimitiveRestartIndexNV) then Exit;
  7038. Result := TRUE;
  7039. end;
  7040. end;
  7041. function Load_GL_NV_vertex_program2: Boolean;
  7042. var
  7043. extstring: String;
  7044. begin
  7045. Result := FALSE;
  7046. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7047. if glext_ExtensionSupported('GL_NV_vertex_program2', extstring) then
  7048. begin
  7049. Result := TRUE;
  7050. end;
  7051. end;
  7052. {$IFDEF Windows}
  7053. function Load_WGL_NV_render_texture_rectangle: Boolean;
  7054. var
  7055. extstring: String;
  7056. begin
  7057. Result := FALSE;
  7058. @wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  7059. if not Assigned(wglGetExtensionsStringARB) then Exit;
  7060. extstring := wglGetExtensionsStringARB(wglGetCurrentDC);
  7061. if glext_ExtensionSupported('WGL_NV_render_texture_rectangle', extstring) then
  7062. begin
  7063. Result := TRUE;
  7064. end;
  7065. end;
  7066. {$ENDIF}
  7067. function Load_GL_NV_pixel_data_range: Boolean;
  7068. var
  7069. extstring: String;
  7070. begin
  7071. Result := FALSE;
  7072. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7073. if glext_ExtensionSupported('GL_NV_pixel_data_range', extstring) then
  7074. begin
  7075. @glPixelDataRangeNV := wglGetProcAddress('glPixelDataRangeNV');
  7076. if not Assigned(glPixelDataRangeNV) then Exit;
  7077. @glFlushPixelDataRangeNV := wglGetProcAddress('glFlushPixelDataRangeNV');
  7078. if not Assigned(glFlushPixelDataRangeNV) then Exit;
  7079. {$IFDEF Windows}
  7080. @wglAllocateMemoryNV := wglGetProcAddress('wglAllocateMemoryNV');
  7081. if not Assigned(wglAllocateMemoryNV) then Exit;
  7082. @wglFreeMemoryNV := wglGetProcAddress('wglFreeMemoryNV');
  7083. if not Assigned(wglFreeMemoryNV) then Exit;
  7084. {$ENDIF}
  7085. Result := TRUE;
  7086. end;
  7087. end;
  7088. function Load_GL_EXT_texture_rectangle: Boolean;
  7089. var
  7090. extstring: String;
  7091. begin
  7092. Result := FALSE;
  7093. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7094. if glext_ExtensionSupported('GL_EXT_texture_rectangle', extstring) then
  7095. begin
  7096. Result := TRUE;
  7097. end;
  7098. end;
  7099. function Load_GL_S3_s3tc: Boolean;
  7100. var
  7101. extstring: String;
  7102. begin
  7103. Result := FALSE;
  7104. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7105. if glext_ExtensionSupported('GL_S3_s3tc', extstring) then
  7106. begin
  7107. Result := TRUE;
  7108. end;
  7109. end;
  7110. function Load_GL_ATI_draw_buffers: Boolean;
  7111. var
  7112. extstring: String;
  7113. begin
  7114. Result := FALSE;
  7115. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7116. if glext_ExtensionSupported('GL_ATI_draw_buffers', extstring) then
  7117. begin
  7118. @glDrawBuffersATI := wglGetProcAddress('glDrawBuffersATI');
  7119. if not Assigned(glDrawBuffersATI) then Exit;
  7120. Result := TRUE;
  7121. end;
  7122. end;
  7123. {$IFDEF Windows}
  7124. function Load_WGL_ATI_pixel_format_float: Boolean;
  7125. var
  7126. extstring: String;
  7127. begin
  7128. Result := FALSE;
  7129. @wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  7130. if not Assigned(wglGetExtensionsStringARB) then Exit;
  7131. extstring := wglGetExtensionsStringARB(wglGetCurrentDC);
  7132. if glext_ExtensionSupported('WGL_ATI_pixel_format_float', extstring) then
  7133. begin
  7134. Result := TRUE;
  7135. end;
  7136. end;
  7137. {$ENDIF}
  7138. function Load_GL_ATI_texture_env_combine3: Boolean;
  7139. var
  7140. extstring: String;
  7141. begin
  7142. Result := FALSE;
  7143. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7144. if glext_ExtensionSupported('GL_ATI_texture_env_combine3', extstring) then
  7145. begin
  7146. Result := TRUE;
  7147. end;
  7148. end;
  7149. function Load_GL_ATI_texture_float: Boolean;
  7150. var
  7151. extstring: String;
  7152. begin
  7153. Result := FALSE;
  7154. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7155. if glext_ExtensionSupported('GL_ATI_texture_float', extstring) then
  7156. begin
  7157. Result := TRUE;
  7158. end;
  7159. end;
  7160. function Load_GL_NV_texture_expand_normal: Boolean;
  7161. var
  7162. extstring: String;
  7163. begin
  7164. Result := FALSE;
  7165. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7166. if glext_ExtensionSupported('GL_NV_texture_expand_normal', extstring) then
  7167. begin
  7168. Result := TRUE;
  7169. end;
  7170. end;
  7171. function Load_GL_NV_half_float: Boolean;
  7172. var
  7173. extstring: String;
  7174. begin
  7175. Result := FALSE;
  7176. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7177. if glext_ExtensionSupported('GL_NV_half_float', extstring) then
  7178. begin
  7179. @glVertex2hNV := wglGetProcAddress('glVertex2hNV');
  7180. if not Assigned(glVertex2hNV) then Exit;
  7181. @glVertex2hvNV := wglGetProcAddress('glVertex2hvNV');
  7182. if not Assigned(glVertex2hvNV) then Exit;
  7183. @glVertex3hNV := wglGetProcAddress('glVertex3hNV');
  7184. if not Assigned(glVertex3hNV) then Exit;
  7185. @glVertex3hvNV := wglGetProcAddress('glVertex3hvNV');
  7186. if not Assigned(glVertex3hvNV) then Exit;
  7187. @glVertex4hNV := wglGetProcAddress('glVertex4hNV');
  7188. if not Assigned(glVertex4hNV) then Exit;
  7189. @glVertex4hvNV := wglGetProcAddress('glVertex4hvNV');
  7190. if not Assigned(glVertex4hvNV) then Exit;
  7191. @glNormal3hNV := wglGetProcAddress('glNormal3hNV');
  7192. if not Assigned(glNormal3hNV) then Exit;
  7193. @glNormal3hvNV := wglGetProcAddress('glNormal3hvNV');
  7194. if not Assigned(glNormal3hvNV) then Exit;
  7195. @glColor3hNV := wglGetProcAddress('glColor3hNV');
  7196. if not Assigned(glColor3hNV) then Exit;
  7197. @glColor3hvNV := wglGetProcAddress('glColor3hvNV');
  7198. if not Assigned(glColor3hvNV) then Exit;
  7199. @glColor4hNV := wglGetProcAddress('glColor4hNV');
  7200. if not Assigned(glColor4hNV) then Exit;
  7201. @glColor4hvNV := wglGetProcAddress('glColor4hvNV');
  7202. if not Assigned(glColor4hvNV) then Exit;
  7203. @glTexCoord1hNV := wglGetProcAddress('glTexCoord1hNV');
  7204. if not Assigned(glTexCoord1hNV) then Exit;
  7205. @glTexCoord1hvNV := wglGetProcAddress('glTexCoord1hvNV');
  7206. if not Assigned(glTexCoord1hvNV) then Exit;
  7207. @glTexCoord2hNV := wglGetProcAddress('glTexCoord2hNV');
  7208. if not Assigned(glTexCoord2hNV) then Exit;
  7209. @glTexCoord2hvNV := wglGetProcAddress('glTexCoord2hvNV');
  7210. if not Assigned(glTexCoord2hvNV) then Exit;
  7211. @glTexCoord3hNV := wglGetProcAddress('glTexCoord3hNV');
  7212. if not Assigned(glTexCoord3hNV) then Exit;
  7213. @glTexCoord3hvNV := wglGetProcAddress('glTexCoord3hvNV');
  7214. if not Assigned(glTexCoord3hvNV) then Exit;
  7215. @glTexCoord4hNV := wglGetProcAddress('glTexCoord4hNV');
  7216. if not Assigned(glTexCoord4hNV) then Exit;
  7217. @glTexCoord4hvNV := wglGetProcAddress('glTexCoord4hvNV');
  7218. if not Assigned(glTexCoord4hvNV) then Exit;
  7219. @glMultiTexCoord1hNV := wglGetProcAddress('glMultiTexCoord1hNV');
  7220. if not Assigned(glMultiTexCoord1hNV) then Exit;
  7221. @glMultiTexCoord1hvNV := wglGetProcAddress('glMultiTexCoord1hvNV');
  7222. if not Assigned(glMultiTexCoord1hvNV) then Exit;
  7223. @glMultiTexCoord2hNV := wglGetProcAddress('glMultiTexCoord2hNV');
  7224. if not Assigned(glMultiTexCoord2hNV) then Exit;
  7225. @glMultiTexCoord2hvNV := wglGetProcAddress('glMultiTexCoord2hvNV');
  7226. if not Assigned(glMultiTexCoord2hvNV) then Exit;
  7227. @glMultiTexCoord3hNV := wglGetProcAddress('glMultiTexCoord3hNV');
  7228. if not Assigned(glMultiTexCoord3hNV) then Exit;
  7229. @glMultiTexCoord3hvNV := wglGetProcAddress('glMultiTexCoord3hvNV');
  7230. if not Assigned(glMultiTexCoord3hvNV) then Exit;
  7231. @glMultiTexCoord4hNV := wglGetProcAddress('glMultiTexCoord4hNV');
  7232. if not Assigned(glMultiTexCoord4hNV) then Exit;
  7233. @glMultiTexCoord4hvNV := wglGetProcAddress('glMultiTexCoord4hvNV');
  7234. if not Assigned(glMultiTexCoord4hvNV) then Exit;
  7235. @glFogCoordhNV := wglGetProcAddress('glFogCoordhNV');
  7236. if not Assigned(glFogCoordhNV) then Exit;
  7237. @glFogCoordhvNV := wglGetProcAddress('glFogCoordhvNV');
  7238. if not Assigned(glFogCoordhvNV) then Exit;
  7239. @glSecondaryColor3hNV := wglGetProcAddress('glSecondaryColor3hNV');
  7240. if not Assigned(glSecondaryColor3hNV) then Exit;
  7241. @glSecondaryColor3hvNV := wglGetProcAddress('glSecondaryColor3hvNV');
  7242. if not Assigned(glSecondaryColor3hvNV) then Exit;
  7243. @glVertexWeighthNV := wglGetProcAddress('glVertexWeighthNV');
  7244. if not Assigned(glVertexWeighthNV) then Exit;
  7245. @glVertexWeighthvNV := wglGetProcAddress('glVertexWeighthvNV');
  7246. if not Assigned(glVertexWeighthvNV) then Exit;
  7247. @glVertexAttrib1hNV := wglGetProcAddress('glVertexAttrib1hNV');
  7248. if not Assigned(glVertexAttrib1hNV) then Exit;
  7249. @glVertexAttrib1hvNV := wglGetProcAddress('glVertexAttrib1hvNV');
  7250. if not Assigned(glVertexAttrib1hvNV) then Exit;
  7251. @glVertexAttrib2hNV := wglGetProcAddress('glVertexAttrib2hNV');
  7252. if not Assigned(glVertexAttrib2hNV) then Exit;
  7253. @glVertexAttrib2hvNV := wglGetProcAddress('glVertexAttrib2hvNV');
  7254. if not Assigned(glVertexAttrib2hvNV) then Exit;
  7255. @glVertexAttrib3hNV := wglGetProcAddress('glVertexAttrib3hNV');
  7256. if not Assigned(glVertexAttrib3hNV) then Exit;
  7257. @glVertexAttrib3hvNV := wglGetProcAddress('glVertexAttrib3hvNV');
  7258. if not Assigned(glVertexAttrib3hvNV) then Exit;
  7259. @glVertexAttrib4hNV := wglGetProcAddress('glVertexAttrib4hNV');
  7260. if not Assigned(glVertexAttrib4hNV) then Exit;
  7261. @glVertexAttrib4hvNV := wglGetProcAddress('glVertexAttrib4hvNV');
  7262. if not Assigned(glVertexAttrib4hvNV) then Exit;
  7263. @glVertexAttribs1hvNV := wglGetProcAddress('glVertexAttribs1hvNV');
  7264. if not Assigned(glVertexAttribs1hvNV) then Exit;
  7265. @glVertexAttribs2hvNV := wglGetProcAddress('glVertexAttribs2hvNV');
  7266. if not Assigned(glVertexAttribs2hvNV) then Exit;
  7267. @glVertexAttribs3hvNV := wglGetProcAddress('glVertexAttribs3hvNV');
  7268. if not Assigned(glVertexAttribs3hvNV) then Exit;
  7269. @glVertexAttribs4hvNV := wglGetProcAddress('glVertexAttribs4hvNV');
  7270. if not Assigned(glVertexAttribs4hvNV) then Exit;
  7271. Result := TRUE;
  7272. end;
  7273. end;
  7274. function Load_GL_ATI_map_object_buffer: Boolean;
  7275. var
  7276. extstring: String;
  7277. begin
  7278. Result := FALSE;
  7279. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7280. if glext_ExtensionSupported('GL_ATI_map_object_buffer', extstring) then
  7281. begin
  7282. @glMapObjectBufferATI := wglGetProcAddress('glMapObjectBufferATI');
  7283. if not Assigned(glMapObjectBufferATI) then Exit;
  7284. @glUnmapObjectBufferATI := wglGetProcAddress('glUnmapObjectBufferATI');
  7285. if not Assigned(glUnmapObjectBufferATI) then Exit;
  7286. Result := TRUE;
  7287. end;
  7288. end;
  7289. function Load_GL_ATI_separate_stencil: Boolean;
  7290. var
  7291. extstring: String;
  7292. begin
  7293. Result := FALSE;
  7294. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7295. if glext_ExtensionSupported('GL_ATI_separate_stencil', extstring) then
  7296. begin
  7297. @glStencilOpSeparateATI := wglGetProcAddress('glStencilOpSeparateATI');
  7298. if not Assigned(glStencilOpSeparateATI) then Exit;
  7299. @glStencilFuncSeparateATI := wglGetProcAddress('glStencilFuncSeparateATI');
  7300. if not Assigned(glStencilFuncSeparateATI) then Exit;
  7301. Result := TRUE;
  7302. end;
  7303. end;
  7304. function Load_GL_ATI_vertex_attrib_array_object: Boolean;
  7305. var
  7306. extstring: String;
  7307. begin
  7308. Result := FALSE;
  7309. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7310. if glext_ExtensionSupported('GL_ATI_vertex_attrib_array_object', extstring) then
  7311. begin
  7312. @glVertexAttribArrayObjectATI := wglGetProcAddress('glVertexAttribArrayObjectATI');
  7313. if not Assigned(glVertexAttribArrayObjectATI) then Exit;
  7314. @glGetVertexAttribArrayObjectfvATI := wglGetProcAddress('glGetVertexAttribArrayObjectfvATI');
  7315. if not Assigned(glGetVertexAttribArrayObjectfvATI) then Exit;
  7316. @glGetVertexAttribArrayObjectivATI := wglGetProcAddress('glGetVertexAttribArrayObjectivATI');
  7317. if not Assigned(glGetVertexAttribArrayObjectivATI) then Exit;
  7318. Result := TRUE;
  7319. end;
  7320. end;
  7321. function Load_GL_ARB_occlusion_query: Boolean;
  7322. var
  7323. extstring: String;
  7324. begin
  7325. Result := FALSE;
  7326. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7327. if glext_ExtensionSupported('GL_ARB_occlusion_query', extstring) then
  7328. begin
  7329. @glGenQueriesARB := wglGetProcAddress('glGenQueriesARB');
  7330. if not Assigned(glGenQueriesARB) then Exit;
  7331. @glDeleteQueriesARB := wglGetProcAddress('glDeleteQueriesARB');
  7332. if not Assigned(glDeleteQueriesARB) then Exit;
  7333. @glIsQueryARB := wglGetProcAddress('glIsQueryARB');
  7334. if not Assigned(glIsQueryARB) then Exit;
  7335. @glBeginQueryARB := wglGetProcAddress('glBeginQueryARB');
  7336. if not Assigned(glBeginQueryARB) then Exit;
  7337. @glEndQueryARB := wglGetProcAddress('glEndQueryARB');
  7338. if not Assigned(glEndQueryARB) then Exit;
  7339. @glGetQueryivARB := wglGetProcAddress('glGetQueryivARB');
  7340. if not Assigned(glGetQueryivARB) then Exit;
  7341. @glGetQueryObjectivARB := wglGetProcAddress('glGetQueryObjectivARB');
  7342. if not Assigned(glGetQueryObjectivARB) then Exit;
  7343. @glGetQueryObjectuivARB := wglGetProcAddress('glGetQueryObjectuivARB');
  7344. if not Assigned(glGetQueryObjectuivARB) then Exit;
  7345. Result := TRUE;
  7346. end;
  7347. end;
  7348. function Load_GL_ARB_shader_objects: Boolean;
  7349. var
  7350. extstring: String;
  7351. begin
  7352. Result := FALSE;
  7353. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7354. if glext_ExtensionSupported('GL_ARB_shader_objects', extstring) then
  7355. begin
  7356. @glDeleteObjectARB := wglGetProcAddress('glDeleteObjectARB');
  7357. if not Assigned(glDeleteObjectARB) then Exit;
  7358. @glGetHandleARB := wglGetProcAddress('glGetHandleARB');
  7359. if not Assigned(glGetHandleARB) then Exit;
  7360. @glDetachObjectARB := wglGetProcAddress('glDetachObjectARB');
  7361. if not Assigned(glDetachObjectARB) then Exit;
  7362. @glCreateShaderObjectARB := wglGetProcAddress('glCreateShaderObjectARB');
  7363. if not Assigned(glCreateShaderObjectARB) then Exit;
  7364. @glShaderSourceARB := wglGetProcAddress('glShaderSourceARB');
  7365. if not Assigned(glShaderSourceARB) then Exit;
  7366. @glCompileShaderARB := wglGetProcAddress('glCompileShaderARB');
  7367. if not Assigned(glCompileShaderARB) then Exit;
  7368. @glCreateProgramObjectARB := wglGetProcAddress('glCreateProgramObjectARB');
  7369. if not Assigned(glCreateProgramObjectARB) then Exit;
  7370. @glAttachObjectARB := wglGetProcAddress('glAttachObjectARB');
  7371. if not Assigned(glAttachObjectARB) then Exit;
  7372. @glLinkProgramARB := wglGetProcAddress('glLinkProgramARB');
  7373. if not Assigned(glLinkProgramARB) then Exit;
  7374. @glUseProgramObjectARB := wglGetProcAddress('glUseProgramObjectARB');
  7375. if not Assigned(glUseProgramObjectARB) then Exit;
  7376. @glValidateProgramARB := wglGetProcAddress('glValidateProgramARB');
  7377. if not Assigned(glValidateProgramARB) then Exit;
  7378. @glUniform1fARB := wglGetProcAddress('glUniform1fARB');
  7379. if not Assigned(glUniform1fARB) then Exit;
  7380. @glUniform2fARB := wglGetProcAddress('glUniform2fARB');
  7381. if not Assigned(glUniform2fARB) then Exit;
  7382. @glUniform3fARB := wglGetProcAddress('glUniform3fARB');
  7383. if not Assigned(glUniform3fARB) then Exit;
  7384. @glUniform4fARB := wglGetProcAddress('glUniform4fARB');
  7385. if not Assigned(glUniform4fARB) then Exit;
  7386. @glUniform1iARB := wglGetProcAddress('glUniform1iARB');
  7387. if not Assigned(glUniform1iARB) then Exit;
  7388. @glUniform2iARB := wglGetProcAddress('glUniform2iARB');
  7389. if not Assigned(glUniform2iARB) then Exit;
  7390. @glUniform3iARB := wglGetProcAddress('glUniform3iARB');
  7391. if not Assigned(glUniform3iARB) then Exit;
  7392. @glUniform4iARB := wglGetProcAddress('glUniform4iARB');
  7393. if not Assigned(glUniform4iARB) then Exit;
  7394. @glUniform1fvARB := wglGetProcAddress('glUniform1fvARB');
  7395. if not Assigned(glUniform1fvARB) then Exit;
  7396. @glUniform2fvARB := wglGetProcAddress('glUniform2fvARB');
  7397. if not Assigned(glUniform2fvARB) then Exit;
  7398. @glUniform3fvARB := wglGetProcAddress('glUniform3fvARB');
  7399. if not Assigned(glUniform3fvARB) then Exit;
  7400. @glUniform4fvARB := wglGetProcAddress('glUniform4fvARB');
  7401. if not Assigned(glUniform4fvARB) then Exit;
  7402. @glUniform1ivARB := wglGetProcAddress('glUniform1ivARB');
  7403. if not Assigned(glUniform1ivARB) then Exit;
  7404. @glUniform2ivARB := wglGetProcAddress('glUniform2ivARB');
  7405. if not Assigned(glUniform2ivARB) then Exit;
  7406. @glUniform3ivARB := wglGetProcAddress('glUniform3ivARB');
  7407. if not Assigned(glUniform3ivARB) then Exit;
  7408. @glUniform4ivARB := wglGetProcAddress('glUniform4ivARB');
  7409. if not Assigned(glUniform4ivARB) then Exit;
  7410. @glUniformMatrix2fvARB := wglGetProcAddress('glUniformMatrix2fvARB');
  7411. if not Assigned(glUniformMatrix2fvARB) then Exit;
  7412. @glUniformMatrix3fvARB := wglGetProcAddress('glUniformMatrix3fvARB');
  7413. if not Assigned(glUniformMatrix3fvARB) then Exit;
  7414. @glUniformMatrix4fvARB := wglGetProcAddress('glUniformMatrix4fvARB');
  7415. if not Assigned(glUniformMatrix4fvARB) then Exit;
  7416. @glGetObjectParameterfvARB := wglGetProcAddress('glGetObjectParameterfvARB');
  7417. if not Assigned(glGetObjectParameterfvARB) then Exit;
  7418. @glGetObjectParameterivARB := wglGetProcAddress('glGetObjectParameterivARB');
  7419. if not Assigned(glGetObjectParameterivARB) then Exit;
  7420. @glGetInfoLogARB := wglGetProcAddress('glGetInfoLogARB');
  7421. if not Assigned(glGetInfoLogARB) then Exit;
  7422. @glGetAttachedObjectsARB := wglGetProcAddress('glGetAttachedObjectsARB');
  7423. if not Assigned(glGetAttachedObjectsARB) then Exit;
  7424. @glGetUniformLocationARB := wglGetProcAddress('glGetUniformLocationARB');
  7425. if not Assigned(glGetUniformLocationARB) then Exit;
  7426. @glGetActiveUniformARB := wglGetProcAddress('glGetActiveUniformARB');
  7427. if not Assigned(glGetActiveUniformARB) then Exit;
  7428. @glGetUniformfvARB := wglGetProcAddress('glGetUniformfvARB');
  7429. if not Assigned(glGetUniformfvARB) then Exit;
  7430. @glGetUniformivARB := wglGetProcAddress('glGetUniformivARB');
  7431. if not Assigned(glGetUniformivARB) then Exit;
  7432. @glGetShaderSourceARB := wglGetProcAddress('glGetShaderSourceARB');
  7433. if not Assigned(glGetShaderSourceARB) then Exit;
  7434. Result := TRUE;
  7435. end;
  7436. end;
  7437. function Load_GL_ARB_vertex_shader: Boolean;
  7438. var
  7439. extstring: String;
  7440. begin
  7441. Result := FALSE;
  7442. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7443. if glext_ExtensionSupported('GL_ARB_vertex_shader', extstring) then
  7444. begin
  7445. @glVertexAttrib1fARB := wglGetProcAddress('glVertexAttrib1fARB');
  7446. if not Assigned(glVertexAttrib1fARB) then Exit;
  7447. @glVertexAttrib1sARB := wglGetProcAddress('glVertexAttrib1sARB');
  7448. if not Assigned(glVertexAttrib1sARB) then Exit;
  7449. @glVertexAttrib1dARB := wglGetProcAddress('glVertexAttrib1dARB');
  7450. if not Assigned(glVertexAttrib1dARB) then Exit;
  7451. @glVertexAttrib2fARB := wglGetProcAddress('glVertexAttrib2fARB');
  7452. if not Assigned(glVertexAttrib2fARB) then Exit;
  7453. @glVertexAttrib2sARB := wglGetProcAddress('glVertexAttrib2sARB');
  7454. if not Assigned(glVertexAttrib2sARB) then Exit;
  7455. @glVertexAttrib2dARB := wglGetProcAddress('glVertexAttrib2dARB');
  7456. if not Assigned(glVertexAttrib2dARB) then Exit;
  7457. @glVertexAttrib3fARB := wglGetProcAddress('glVertexAttrib3fARB');
  7458. if not Assigned(glVertexAttrib3fARB) then Exit;
  7459. @glVertexAttrib3sARB := wglGetProcAddress('glVertexAttrib3sARB');
  7460. if not Assigned(glVertexAttrib3sARB) then Exit;
  7461. @glVertexAttrib3dARB := wglGetProcAddress('glVertexAttrib3dARB');
  7462. if not Assigned(glVertexAttrib3dARB) then Exit;
  7463. @glVertexAttrib4fARB := wglGetProcAddress('glVertexAttrib4fARB');
  7464. if not Assigned(glVertexAttrib4fARB) then Exit;
  7465. @glVertexAttrib4sARB := wglGetProcAddress('glVertexAttrib4sARB');
  7466. if not Assigned(glVertexAttrib4sARB) then Exit;
  7467. @glVertexAttrib4dARB := wglGetProcAddress('glVertexAttrib4dARB');
  7468. if not Assigned(glVertexAttrib4dARB) then Exit;
  7469. @glVertexAttrib4NubARB := wglGetProcAddress('glVertexAttrib4NubARB');
  7470. if not Assigned(glVertexAttrib4NubARB) then Exit;
  7471. @glVertexAttrib1fvARB := wglGetProcAddress('glVertexAttrib1fvARB');
  7472. if not Assigned(glVertexAttrib1fvARB) then Exit;
  7473. @glVertexAttrib1svARB := wglGetProcAddress('glVertexAttrib1svARB');
  7474. if not Assigned(glVertexAttrib1svARB) then Exit;
  7475. @glVertexAttrib1dvARB := wglGetProcAddress('glVertexAttrib1dvARB');
  7476. if not Assigned(glVertexAttrib1dvARB) then Exit;
  7477. @glVertexAttrib2fvARB := wglGetProcAddress('glVertexAttrib2fvARB');
  7478. if not Assigned(glVertexAttrib2fvARB) then Exit;
  7479. @glVertexAttrib2svARB := wglGetProcAddress('glVertexAttrib2svARB');
  7480. if not Assigned(glVertexAttrib2svARB) then Exit;
  7481. @glVertexAttrib2dvARB := wglGetProcAddress('glVertexAttrib2dvARB');
  7482. if not Assigned(glVertexAttrib2dvARB) then Exit;
  7483. @glVertexAttrib3fvARB := wglGetProcAddress('glVertexAttrib3fvARB');
  7484. if not Assigned(glVertexAttrib3fvARB) then Exit;
  7485. @glVertexAttrib3svARB := wglGetProcAddress('glVertexAttrib3svARB');
  7486. if not Assigned(glVertexAttrib3svARB) then Exit;
  7487. @glVertexAttrib3dvARB := wglGetProcAddress('glVertexAttrib3dvARB');
  7488. if not Assigned(glVertexAttrib3dvARB) then Exit;
  7489. @glVertexAttrib4fvARB := wglGetProcAddress('glVertexAttrib4fvARB');
  7490. if not Assigned(glVertexAttrib4fvARB) then Exit;
  7491. @glVertexAttrib4svARB := wglGetProcAddress('glVertexAttrib4svARB');
  7492. if not Assigned(glVertexAttrib4svARB) then Exit;
  7493. @glVertexAttrib4dvARB := wglGetProcAddress('glVertexAttrib4dvARB');
  7494. if not Assigned(glVertexAttrib4dvARB) then Exit;
  7495. @glVertexAttrib4ivARB := wglGetProcAddress('glVertexAttrib4ivARB');
  7496. if not Assigned(glVertexAttrib4ivARB) then Exit;
  7497. @glVertexAttrib4bvARB := wglGetProcAddress('glVertexAttrib4bvARB');
  7498. if not Assigned(glVertexAttrib4bvARB) then Exit;
  7499. @glVertexAttrib4ubvARB := wglGetProcAddress('glVertexAttrib4ubvARB');
  7500. if not Assigned(glVertexAttrib4ubvARB) then Exit;
  7501. @glVertexAttrib4usvARB := wglGetProcAddress('glVertexAttrib4usvARB');
  7502. if not Assigned(glVertexAttrib4usvARB) then Exit;
  7503. @glVertexAttrib4uivARB := wglGetProcAddress('glVertexAttrib4uivARB');
  7504. if not Assigned(glVertexAttrib4uivARB) then Exit;
  7505. @glVertexAttrib4NbvARB := wglGetProcAddress('glVertexAttrib4NbvARB');
  7506. if not Assigned(glVertexAttrib4NbvARB) then Exit;
  7507. @glVertexAttrib4NsvARB := wglGetProcAddress('glVertexAttrib4NsvARB');
  7508. if not Assigned(glVertexAttrib4NsvARB) then Exit;
  7509. @glVertexAttrib4NivARB := wglGetProcAddress('glVertexAttrib4NivARB');
  7510. if not Assigned(glVertexAttrib4NivARB) then Exit;
  7511. @glVertexAttrib4NubvARB := wglGetProcAddress('glVertexAttrib4NubvARB');
  7512. if not Assigned(glVertexAttrib4NubvARB) then Exit;
  7513. @glVertexAttrib4NusvARB := wglGetProcAddress('glVertexAttrib4NusvARB');
  7514. if not Assigned(glVertexAttrib4NusvARB) then Exit;
  7515. @glVertexAttrib4NuivARB := wglGetProcAddress('glVertexAttrib4NuivARB');
  7516. if not Assigned(glVertexAttrib4NuivARB) then Exit;
  7517. @glVertexAttribPointerARB := wglGetProcAddress('glVertexAttribPointerARB');
  7518. if not Assigned(glVertexAttribPointerARB) then Exit;
  7519. @glEnableVertexAttribArrayARB := wglGetProcAddress('glEnableVertexAttribArrayARB');
  7520. if not Assigned(glEnableVertexAttribArrayARB) then Exit;
  7521. @glDisableVertexAttribArrayARB := wglGetProcAddress('glDisableVertexAttribArrayARB');
  7522. if not Assigned(glDisableVertexAttribArrayARB) then Exit;
  7523. @glBindAttribLocationARB := wglGetProcAddress('glBindAttribLocationARB');
  7524. if not Assigned(glBindAttribLocationARB) then Exit;
  7525. @glGetActiveAttribARB := wglGetProcAddress('glGetActiveAttribARB');
  7526. if not Assigned(glGetActiveAttribARB) then Exit;
  7527. @glGetAttribLocationARB := wglGetProcAddress('glGetAttribLocationARB');
  7528. if not Assigned(glGetAttribLocationARB) then Exit;
  7529. @glGetVertexAttribdvARB := wglGetProcAddress('glGetVertexAttribdvARB');
  7530. if not Assigned(glGetVertexAttribdvARB) then Exit;
  7531. @glGetVertexAttribfvARB := wglGetProcAddress('glGetVertexAttribfvARB');
  7532. if not Assigned(glGetVertexAttribfvARB) then Exit;
  7533. @glGetVertexAttribivARB := wglGetProcAddress('glGetVertexAttribivARB');
  7534. if not Assigned(glGetVertexAttribivARB) then Exit;
  7535. @glGetVertexAttribPointervARB := wglGetProcAddress('glGetVertexAttribPointervARB');
  7536. if not Assigned(glGetVertexAttribPointervARB) then Exit;
  7537. Result := TRUE;
  7538. end;
  7539. end;
  7540. function Load_GL_ARB_fragment_shader: Boolean;
  7541. var
  7542. extstring: String;
  7543. begin
  7544. Result := FALSE;
  7545. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7546. if glext_ExtensionSupported('GL_ARB_fragment_shader', extstring) then
  7547. begin
  7548. Result := TRUE;
  7549. end;
  7550. end;
  7551. function Load_GL_ARB_shading_language_100: Boolean;
  7552. var
  7553. extstring: String;
  7554. begin
  7555. Result := FALSE;
  7556. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7557. if glext_ExtensionSupported('GL_ARB_shading_language_100', extstring) then
  7558. begin
  7559. Result := TRUE;
  7560. end;
  7561. end;
  7562. function Load_GL_ARB_texture_non_power_of_two: Boolean;
  7563. var
  7564. extstring: String;
  7565. begin
  7566. Result := FALSE;
  7567. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7568. if glext_ExtensionSupported('GL_ARB_texture_non_power_of_two', extstring) then
  7569. begin
  7570. Result := TRUE;
  7571. end;
  7572. end;
  7573. function Load_GL_ARB_point_sprite: Boolean;
  7574. var
  7575. extstring: String;
  7576. begin
  7577. Result := FALSE;
  7578. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7579. if glext_ExtensionSupported('GL_ARB_point_sprite', extstring) then
  7580. begin
  7581. Result := TRUE;
  7582. end;
  7583. end;
  7584. function Load_GL_EXT_depth_bounds_test: Boolean;
  7585. var
  7586. extstring: String;
  7587. begin
  7588. Result := FALSE;
  7589. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7590. if glext_ExtensionSupported('GL_EXT_depth_bounds_test', extstring) then
  7591. begin
  7592. @glDepthBoundsEXT := wglGetProcAddress('glDepthBoundsEXT');
  7593. if not Assigned(glDepthBoundsEXT) then Exit;
  7594. Result := TRUE;
  7595. end;
  7596. end;
  7597. function Load_GL_EXT_texture_mirror_clamp: Boolean;
  7598. var
  7599. extstring: String;
  7600. begin
  7601. Result := FALSE;
  7602. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7603. if glext_ExtensionSupported('GL_EXT_texture_mirror_clamp', extstring) then
  7604. begin
  7605. Result := TRUE;
  7606. end;
  7607. end;
  7608. function Load_GL_EXT_blend_equation_separate: Boolean;
  7609. var
  7610. extstring: String;
  7611. begin
  7612. Result := FALSE;
  7613. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7614. if glext_ExtensionSupported('GL_EXT_blend_equation_separate', extstring) then
  7615. begin
  7616. @glBlendEquationSeparateEXT := wglGetProcAddress('glBlendEquationSeparateEXT');
  7617. if not Assigned(glBlendEquationSeparateEXT) then Exit;
  7618. Result := TRUE;
  7619. end;
  7620. end;
  7621. function Load_GL_MESA_pack_invert: Boolean;
  7622. var
  7623. extstring: String;
  7624. begin
  7625. Result := FALSE;
  7626. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7627. if glext_ExtensionSupported('GL_MESA_pack_invert', extstring) then
  7628. begin
  7629. Result := TRUE;
  7630. end;
  7631. end;
  7632. function Load_GL_MESA_ycbcr_texture: Boolean;
  7633. var
  7634. extstring: String;
  7635. begin
  7636. Result := FALSE;
  7637. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7638. if glext_ExtensionSupported('GL_MESA_ycbcr_texture', extstring) then
  7639. begin
  7640. Result := TRUE;
  7641. end;
  7642. end;
  7643. function Load_GL_ARB_fragment_program_shadow: Boolean;
  7644. var
  7645. extstring: String;
  7646. begin
  7647. Result := FALSE;
  7648. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7649. if glext_ExtensionSupported('GL_ARB_fragment_program_shadow', extstring) then
  7650. begin
  7651. Result := TRUE;
  7652. end;
  7653. end;
  7654. function Load_GL_NV_fragment_program_option: Boolean;
  7655. var
  7656. extstring: String;
  7657. begin
  7658. Result := FALSE;
  7659. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7660. if glext_ExtensionSupported('GL_NV_fragment_program_option', extstring) then
  7661. begin
  7662. Result := TRUE;
  7663. end;
  7664. end;
  7665. function Load_GL_EXT_pixel_buffer_object: Boolean;
  7666. var
  7667. extstring: String;
  7668. begin
  7669. Result := FALSE;
  7670. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7671. if glext_ExtensionSupported('GL_EXT_pixel_buffer_object', extstring) then
  7672. begin
  7673. Result := TRUE;
  7674. end;
  7675. end;
  7676. function Load_GL_NV_fragment_program2: Boolean;
  7677. var
  7678. extstring: String;
  7679. begin
  7680. Result := FALSE;
  7681. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7682. if glext_ExtensionSupported('GL_NV_fragment_program2', extstring) then
  7683. begin
  7684. Result := TRUE;
  7685. end;
  7686. end;
  7687. function Load_GL_NV_vertex_program2_option: Boolean;
  7688. var
  7689. extstring: String;
  7690. begin
  7691. Result := FALSE;
  7692. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7693. if glext_ExtensionSupported('GL_NV_vertex_program2_option', extstring) then
  7694. begin
  7695. Result := TRUE;
  7696. end;
  7697. end;
  7698. function Load_GL_NV_vertex_program3: Boolean;
  7699. var
  7700. extstring: String;
  7701. begin
  7702. Result := FALSE;
  7703. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7704. if glext_ExtensionSupported('GL_NV_vertex_program3', extstring) then
  7705. begin
  7706. Result := TRUE;
  7707. end;
  7708. end;
  7709. function Load_GL_ARB_draw_buffers: Boolean;
  7710. var
  7711. extstring: PChar;
  7712. begin
  7713. Result := FALSE;
  7714. extstring := glGetString(GL_EXTENSIONS);
  7715. if glext_ExtensionSupported('GL_ARB_draw_buffers', extstring) then
  7716. begin
  7717. glDrawBuffersARB := wglGetProcAddress('glDrawBuffersARB');
  7718. if not Assigned(glDrawBuffersARB) then Exit;
  7719. Result := TRUE;
  7720. end;
  7721. end;
  7722. function Load_GL_ARB_texture_rectangle: Boolean;
  7723. var
  7724. extstring: PChar;
  7725. begin
  7726. Result := FALSE;
  7727. extstring := glGetString(GL_EXTENSIONS);
  7728. if glext_ExtensionSupported('GL_ARB_texture_rectangle', extstring) then
  7729. begin
  7730. Result := TRUE;
  7731. end;
  7732. end;
  7733. function Load_GL_ARB_color_buffer_float: Boolean;
  7734. var
  7735. extstring: PChar;
  7736. begin
  7737. Result := FALSE;
  7738. extstring := glGetString(GL_EXTENSIONS);
  7739. if glext_ExtensionSupported('GL_ARB_color_buffer_float', extstring) then
  7740. begin
  7741. glClampColorARB := wglGetProcAddress('glClampColorARB');
  7742. if not Assigned(glClampColorARB) then Exit;
  7743. Result := TRUE;
  7744. end;
  7745. end;
  7746. function Load_GL_ARB_half_float_pixel: Boolean;
  7747. var
  7748. extstring: PChar;
  7749. begin
  7750. Result := FALSE;
  7751. extstring := glGetString(GL_EXTENSIONS);
  7752. if glext_ExtensionSupported('GL_ARB_half_float_pixel', extstring) then
  7753. begin
  7754. Result := TRUE;
  7755. end;
  7756. end;
  7757. function Load_GL_ARB_texture_float: Boolean;
  7758. var
  7759. extstring: PChar;
  7760. begin
  7761. Result := FALSE;
  7762. extstring := glGetString(GL_EXTENSIONS);
  7763. if glext_ExtensionSupported('GL_ARB_texture_float', extstring) then
  7764. begin
  7765. Result := TRUE;
  7766. end;
  7767. end;
  7768. function Load_GL_EXT_texture_compression_dxt1: Boolean;
  7769. var
  7770. extstring: PChar;
  7771. begin
  7772. Result := FALSE;
  7773. extstring := glGetString(GL_EXTENSIONS);
  7774. if glext_ExtensionSupported('GL_EXT_texture_compression_dxt1', extstring) then
  7775. begin
  7776. Result := TRUE;
  7777. end;
  7778. end;
  7779. function Load_GL_ARB_pixel_buffer_object: Boolean;
  7780. var
  7781. extstring: PChar;
  7782. begin
  7783. Result := FALSE;
  7784. extstring := glGetString(GL_EXTENSIONS);
  7785. if glext_ExtensionSupported('GL_ARB_pixel_buffer_object', extstring) then
  7786. begin
  7787. Result := TRUE;
  7788. end;
  7789. end;
  7790. function Load_GL_EXT_framebuffer_object: Boolean;
  7791. var
  7792. extstring: PChar;
  7793. begin
  7794. Result := FALSE;
  7795. extstring := glGetString(GL_EXTENSIONS);
  7796. if glext_ExtensionSupported('GL_EXT_framebuffer_object', extstring) then
  7797. begin
  7798. glIsRenderbufferEXT := wglGetProcAddress('glIsRenderbufferEXT');
  7799. if not Assigned(glIsRenderbufferEXT) then Exit;
  7800. glBindRenderbufferEXT := wglGetProcAddress('glBindRenderbufferEXT');
  7801. if not Assigned(glBindRenderbufferEXT) then Exit;
  7802. glDeleteRenderbuffersEXT := wglGetProcAddress('glDeleteRenderbuffersEXT');
  7803. if not Assigned(glDeleteRenderbuffersEXT) then Exit;
  7804. glGenRenderbuffersEXT := wglGetProcAddress('glGenRenderbuffersEXT');
  7805. if not Assigned(glGenRenderbuffersEXT) then Exit;
  7806. glRenderbufferStorageEXT := wglGetProcAddress('glRenderbufferStorageEXT');
  7807. if not Assigned(glRenderbufferStorageEXT) then Exit;
  7808. glGetRenderbufferParameterivEXT := wglGetProcAddress('glGetRenderbufferParameterivEXT');
  7809. if not Assigned(glGetRenderbufferParameterivEXT) then Exit;
  7810. glIsFramebufferEXT := wglGetProcAddress('glIsFramebufferEXT');
  7811. if not Assigned(glIsFramebufferEXT) then Exit;
  7812. glBindFramebufferEXT := wglGetProcAddress('glBindFramebufferEXT');
  7813. if not Assigned(glBindFramebufferEXT) then Exit;
  7814. glDeleteFramebuffersEXT := wglGetProcAddress('glDeleteFramebuffersEXT');
  7815. if not Assigned(glDeleteFramebuffersEXT) then Exit;
  7816. glGenFramebuffersEXT := wglGetProcAddress('glGenFramebuffersEXT');
  7817. if not Assigned(glGenFramebuffersEXT) then Exit;
  7818. glCheckFramebufferStatusEXT := wglGetProcAddress('glCheckFramebufferStatusEXT');
  7819. if not Assigned(glCheckFramebufferStatusEXT) then Exit;
  7820. glFramebufferTexture1DEXT := wglGetProcAddress('glFramebufferTexture1DEXT');
  7821. if not Assigned(glFramebufferTexture1DEXT) then Exit;
  7822. glFramebufferTexture2DEXT := wglGetProcAddress('glFramebufferTexture2DEXT');
  7823. if not Assigned(glFramebufferTexture2DEXT) then Exit;
  7824. glFramebufferTexture3DEXT := wglGetProcAddress('glFramebufferTexture3DEXT');
  7825. if not Assigned(glFramebufferTexture3DEXT) then Exit;
  7826. glFramebufferRenderbufferEXT := wglGetProcAddress('glFramebufferRenderbufferEXT');
  7827. if not Assigned(glFramebufferRenderbufferEXT) then Exit;
  7828. glGetFramebufferAttachmentParameterivEXT := wglGetProcAddress('glGetFramebufferAttachmentParameterivEXT');
  7829. if not Assigned(glGetFramebufferAttachmentParameterivEXT) then Exit;
  7830. glGenerateMipmapEXT := wglGetProcAddress('glGenerateMipmapEXT');
  7831. if not Assigned(glGenerateMipmapEXT) then Exit;
  7832. Result := TRUE;
  7833. end;
  7834. end;
  7835. function Load_GL_version_1_4: Boolean;
  7836. var
  7837. extstring: String;
  7838. begin
  7839. Result := FALSE;
  7840. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7841. glBlendFuncSeparate := wglGetProcAddress('glBlendFuncSeparate');
  7842. if not Assigned(glBlendFuncSeparate) then Exit;
  7843. glFogCoordf := wglGetProcAddress('glFogCoordf');
  7844. if not Assigned(glFogCoordf) then Exit;
  7845. glFogCoordfv := wglGetProcAddress('glFogCoordfv');
  7846. if not Assigned(glFogCoordfv) then Exit;
  7847. glFogCoordd := wglGetProcAddress('glFogCoordd');
  7848. if not Assigned(glFogCoordd) then Exit;
  7849. glFogCoorddv := wglGetProcAddress('glFogCoorddv');
  7850. if not Assigned(glFogCoorddv) then Exit;
  7851. glFogCoordPointer := wglGetProcAddress('glFogCoordPointer');
  7852. if not Assigned(glFogCoordPointer) then Exit;
  7853. glMultiDrawArrays := wglGetProcAddress('glMultiDrawArrays');
  7854. if not Assigned(glMultiDrawArrays) then Exit;
  7855. glMultiDrawElements := wglGetProcAddress('glMultiDrawElements');
  7856. if not Assigned(glMultiDrawElements) then Exit;
  7857. glPointParameterf := wglGetProcAddress('glPointParameterf');
  7858. if not Assigned(glPointParameterf) then Exit;
  7859. glPointParameterfv := wglGetProcAddress('glPointParameterfv');
  7860. if not Assigned(glPointParameterfv) then Exit;
  7861. glPointParameteri := wglGetProcAddress('glPointParameteri');
  7862. if not Assigned(glPointParameteri) then Exit;
  7863. glPointParameteriv := wglGetProcAddress('glPointParameteriv');
  7864. if not Assigned(glPointParameteriv) then Exit;
  7865. glSecondaryColor3b := wglGetProcAddress('glSecondaryColor3b');
  7866. if not Assigned(glSecondaryColor3b) then Exit;
  7867. glSecondaryColor3bv := wglGetProcAddress('glSecondaryColor3bv');
  7868. if not Assigned(glSecondaryColor3bv) then Exit;
  7869. glSecondaryColor3d := wglGetProcAddress('glSecondaryColor3d');
  7870. if not Assigned(glSecondaryColor3d) then Exit;
  7871. glSecondaryColor3dv := wglGetProcAddress('glSecondaryColor3dv');
  7872. if not Assigned(glSecondaryColor3dv) then Exit;
  7873. glSecondaryColor3f := wglGetProcAddress('glSecondaryColor3f');
  7874. if not Assigned(glSecondaryColor3f) then Exit;
  7875. glSecondaryColor3fv := wglGetProcAddress('glSecondaryColor3fv');
  7876. if not Assigned(glSecondaryColor3fv) then Exit;
  7877. glSecondaryColor3i := wglGetProcAddress('glSecondaryColor3i');
  7878. if not Assigned(glSecondaryColor3i) then Exit;
  7879. glSecondaryColor3iv := wglGetProcAddress('glSecondaryColor3iv');
  7880. if not Assigned(glSecondaryColor3iv) then Exit;
  7881. glSecondaryColor3s := wglGetProcAddress('glSecondaryColor3s');
  7882. if not Assigned(glSecondaryColor3s) then Exit;
  7883. glSecondaryColor3sv := wglGetProcAddress('glSecondaryColor3sv');
  7884. if not Assigned(glSecondaryColor3sv) then Exit;
  7885. glSecondaryColor3ub := wglGetProcAddress('glSecondaryColor3ub');
  7886. if not Assigned(glSecondaryColor3ub) then Exit;
  7887. glSecondaryColor3ubv := wglGetProcAddress('glSecondaryColor3ubv');
  7888. if not Assigned(glSecondaryColor3ubv) then Exit;
  7889. glSecondaryColor3ui := wglGetProcAddress('glSecondaryColor3ui');
  7890. if not Assigned(glSecondaryColor3ui) then Exit;
  7891. glSecondaryColor3uiv := wglGetProcAddress('glSecondaryColor3uiv');
  7892. if not Assigned(glSecondaryColor3uiv) then Exit;
  7893. glSecondaryColor3us := wglGetProcAddress('glSecondaryColor3us');
  7894. if not Assigned(glSecondaryColor3us) then Exit;
  7895. glSecondaryColor3usv := wglGetProcAddress('glSecondaryColor3usv');
  7896. if not Assigned(glSecondaryColor3usv) then Exit;
  7897. glSecondaryColorPointer := wglGetProcAddress('glSecondaryColorPointer');
  7898. if not Assigned(glSecondaryColorPointer) then Exit;
  7899. glWindowPos2d := wglGetProcAddress('glWindowPos2d');
  7900. if not Assigned(glWindowPos2d) then Exit;
  7901. glWindowPos2dv := wglGetProcAddress('glWindowPos2dv');
  7902. if not Assigned(glWindowPos2dv) then Exit;
  7903. glWindowPos2f := wglGetProcAddress('glWindowPos2f');
  7904. if not Assigned(glWindowPos2f) then Exit;
  7905. glWindowPos2fv := wglGetProcAddress('glWindowPos2fv');
  7906. if not Assigned(glWindowPos2fv) then Exit;
  7907. glWindowPos2i := wglGetProcAddress('glWindowPos2i');
  7908. if not Assigned(glWindowPos2i) then Exit;
  7909. glWindowPos2iv := wglGetProcAddress('glWindowPos2iv');
  7910. if not Assigned(glWindowPos2iv) then Exit;
  7911. glWindowPos2s := wglGetProcAddress('glWindowPos2s');
  7912. if not Assigned(glWindowPos2s) then Exit;
  7913. glWindowPos2sv := wglGetProcAddress('glWindowPos2sv');
  7914. if not Assigned(glWindowPos2sv) then Exit;
  7915. glWindowPos3d := wglGetProcAddress('glWindowPos3d');
  7916. if not Assigned(glWindowPos3d) then Exit;
  7917. glWindowPos3dv := wglGetProcAddress('glWindowPos3dv');
  7918. if not Assigned(glWindowPos3dv) then Exit;
  7919. glWindowPos3f := wglGetProcAddress('glWindowPos3f');
  7920. if not Assigned(glWindowPos3f) then Exit;
  7921. glWindowPos3fv := wglGetProcAddress('glWindowPos3fv');
  7922. if not Assigned(glWindowPos3fv) then Exit;
  7923. glWindowPos3i := wglGetProcAddress('glWindowPos3i');
  7924. if not Assigned(glWindowPos3i) then Exit;
  7925. glWindowPos3iv := wglGetProcAddress('glWindowPos3iv');
  7926. if not Assigned(glWindowPos3iv) then Exit;
  7927. glWindowPos3s := wglGetProcAddress('glWindowPos3s');
  7928. if not Assigned(glWindowPos3s) then Exit;
  7929. glWindowPos3sv := wglGetProcAddress('glWindowPos3sv');
  7930. if not Assigned(glWindowPos3sv) then Exit;
  7931. Result := Load_GL_version_1_3;
  7932. end;
  7933. function Load_GL_version_1_5: Boolean;
  7934. var
  7935. extstring: String;
  7936. begin
  7937. Result := FALSE;
  7938. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7939. glGenQueries := wglGetProcAddress('glGenQueries');
  7940. if not Assigned(glGenQueries) then Exit;
  7941. glDeleteQueries := wglGetProcAddress('glDeleteQueries');
  7942. if not Assigned(glDeleteQueries) then Exit;
  7943. glIsQuery := wglGetProcAddress('glIsQuery');
  7944. if not Assigned(glIsQuery) then Exit;
  7945. glBeginQuery := wglGetProcAddress('glBeginQuery');
  7946. if not Assigned(glBeginQuery) then Exit;
  7947. glEndQuery := wglGetProcAddress('glEndQuery');
  7948. if not Assigned(glEndQuery) then Exit;
  7949. glGetQueryiv := wglGetProcAddress('glGetQueryiv');
  7950. if not Assigned(glGetQueryiv) then Exit;
  7951. glGetQueryObjectiv := wglGetProcAddress('glGetQueryObjectiv');
  7952. if not Assigned(glGetQueryObjectiv) then Exit;
  7953. glGetQueryObjectuiv := wglGetProcAddress('glGetQueryObjectuiv');
  7954. if not Assigned(glGetQueryObjectuiv) then Exit;
  7955. glBindBuffer := wglGetProcAddress('glBindBuffer');
  7956. if not Assigned(glBindBuffer) then Exit;
  7957. glDeleteBuffers := wglGetProcAddress('glDeleteBuffers');
  7958. if not Assigned(glDeleteBuffers) then Exit;
  7959. glGenBuffers := wglGetProcAddress('glGenBuffers');
  7960. if not Assigned(glGenBuffers) then Exit;
  7961. glIsBuffer := wglGetProcAddress('glIsBuffer');
  7962. if not Assigned(glIsBuffer) then Exit;
  7963. glBufferData := wglGetProcAddress('glBufferData');
  7964. if not Assigned(glBufferData) then Exit;
  7965. glBufferSubData := wglGetProcAddress('glBufferSubData');
  7966. if not Assigned(glBufferSubData) then Exit;
  7967. glGetBufferSubData := wglGetProcAddress('glGetBufferSubData');
  7968. if not Assigned(glGetBufferSubData) then Exit;
  7969. glMapBuffer := wglGetProcAddress('glMapBuffer');
  7970. if not Assigned(glMapBuffer) then Exit;
  7971. glUnmapBuffer := wglGetProcAddress('glUnmapBuffer');
  7972. if not Assigned(glUnmapBuffer) then Exit;
  7973. glGetBufferParameteriv := wglGetProcAddress('glGetBufferParameteriv');
  7974. if not Assigned(glGetBufferParameteriv) then Exit;
  7975. glGetBufferPointerv := wglGetProcAddress('glGetBufferPointerv');
  7976. if not Assigned(glGetBufferPointerv) then Exit;
  7977. Result := Load_GL_version_1_4;
  7978. end;
  7979. function Load_GL_version_2_0: Boolean;
  7980. var
  7981. extstring: String;
  7982. begin
  7983. Result := FALSE;
  7984. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7985. glBlendEquationSeparate := wglGetProcAddress('glBlendEquationSeparate');
  7986. if not Assigned(glBlendEquationSeparate) then Exit;
  7987. glDrawBuffers := wglGetProcAddress('glDrawBuffers');
  7988. if not Assigned(glDrawBuffers) then Exit;
  7989. glStencilOpSeparate := wglGetProcAddress('glStencilOpSeparate');
  7990. if not Assigned(glStencilOpSeparate) then Exit;
  7991. glStencilFuncSeparate := wglGetProcAddress('glStencilFuncSeparate');
  7992. if not Assigned(glStencilFuncSeparate) then Exit;
  7993. glStencilMaskSeparate := wglGetProcAddress('glStencilMaskSeparate');
  7994. if not Assigned(glStencilMaskSeparate) then Exit;
  7995. glAttachShader := wglGetProcAddress('glAttachShader');
  7996. if not Assigned(glAttachShader) then Exit;
  7997. glBindAttribLocation := wglGetProcAddress('glBindAttribLocation');
  7998. if not Assigned(glBindAttribLocation) then Exit;
  7999. glCompileShader := wglGetProcAddress('glCompileShader');
  8000. if not Assigned(glCompileShader) then Exit;
  8001. glCreateProgram := wglGetProcAddress('glCreateProgram');
  8002. if not Assigned(glCreateProgram) then Exit;
  8003. glCreateShader := wglGetProcAddress('glCreateShader');
  8004. if not Assigned(glCreateShader) then Exit;
  8005. glDeleteProgram := wglGetProcAddress('glDeleteProgram');
  8006. if not Assigned(glDeleteProgram) then Exit;
  8007. glDeleteShader := wglGetProcAddress('glDeleteShader');
  8008. if not Assigned(glDeleteShader) then Exit;
  8009. glDetachShader := wglGetProcAddress('glDetachShader');
  8010. if not Assigned(glDetachShader) then Exit;
  8011. glDisableVertexAttribArray := wglGetProcAddress('glDisableVertexAttribArray');
  8012. if not Assigned(glDisableVertexAttribArray) then Exit;
  8013. glEnableVertexAttribArray := wglGetProcAddress('glEnableVertexAttribArray');
  8014. if not Assigned(glEnableVertexAttribArray) then Exit;
  8015. glGetActiveAttrib := wglGetProcAddress('glGetActiveAttrib');
  8016. if not Assigned(glGetActiveAttrib) then Exit;
  8017. glGetActiveUniform := wglGetProcAddress('glGetActiveUniform');
  8018. if not Assigned(glGetActiveUniform) then Exit;
  8019. glGetAttachedShaders := wglGetProcAddress('glGetAttachedShaders');
  8020. if not Assigned(glGetAttachedShaders) then Exit;
  8021. glGetAttribLocation := wglGetProcAddress('glGetAttribLocation');
  8022. if not Assigned(glGetAttribLocation) then Exit;
  8023. glGetProgramiv := wglGetProcAddress('glGetProgramiv');
  8024. if not Assigned(glGetProgramiv) then Exit;
  8025. glGetProgramInfoLog := wglGetProcAddress('glGetProgramInfoLog');
  8026. if not Assigned(glGetProgramInfoLog) then Exit;
  8027. glGetShaderiv := wglGetProcAddress('glGetShaderiv');
  8028. if not Assigned(glGetShaderiv) then Exit;
  8029. glGetShaderInfoLog := wglGetProcAddress('glGetShaderInfoLog');
  8030. if not Assigned(glGetShaderInfoLog) then Exit;
  8031. glGetShaderSource := wglGetProcAddress('glGetShaderSource');
  8032. if not Assigned(glGetShaderSource) then Exit;
  8033. glGetUniformLocation := wglGetProcAddress('glGetUniformLocation');
  8034. if not Assigned(glGetUniformLocation) then Exit;
  8035. glGetUniformfv := wglGetProcAddress('glGetUniformfv');
  8036. if not Assigned(glGetUniformfv) then Exit;
  8037. glGetUniformiv := wglGetProcAddress('glGetUniformiv');
  8038. if not Assigned(glGetUniformiv) then Exit;
  8039. glGetVertexAttribdv := wglGetProcAddress('glGetVertexAttribdv');
  8040. if not Assigned(glGetVertexAttribdv) then Exit;
  8041. glGetVertexAttribfv := wglGetProcAddress('glGetVertexAttribfv');
  8042. if not Assigned(glGetVertexAttribfv) then Exit;
  8043. glGetVertexAttribiv := wglGetProcAddress('glGetVertexAttribiv');
  8044. if not Assigned(glGetVertexAttribiv) then Exit;
  8045. glGetVertexAttribPointerv := wglGetProcAddress('glGetVertexAttribPointerv');
  8046. if not Assigned(glGetVertexAttribPointerv) then Exit;
  8047. glIsProgram := wglGetProcAddress('glIsProgram');
  8048. if not Assigned(glIsProgram) then Exit;
  8049. glIsShader := wglGetProcAddress('glIsShader');
  8050. if not Assigned(glIsShader) then Exit;
  8051. glLinkProgram := wglGetProcAddress('glLinkProgram');
  8052. if not Assigned(glLinkProgram) then Exit;
  8053. glShaderSource := wglGetProcAddress('glShaderSource');
  8054. if not Assigned(glShaderSource) then Exit;
  8055. glUseProgram := wglGetProcAddress('glUseProgram');
  8056. if not Assigned(glUseProgram) then Exit;
  8057. glUniform1f := wglGetProcAddress('glUniform1f');
  8058. if not Assigned(glUniform1f) then Exit;
  8059. glUniform2f := wglGetProcAddress('glUniform2f');
  8060. if not Assigned(glUniform2f) then Exit;
  8061. glUniform3f := wglGetProcAddress('glUniform3f');
  8062. if not Assigned(glUniform3f) then Exit;
  8063. glUniform4f := wglGetProcAddress('glUniform4f');
  8064. if not Assigned(glUniform4f) then Exit;
  8065. glUniform1i := wglGetProcAddress('glUniform1i');
  8066. if not Assigned(glUniform1i) then Exit;
  8067. glUniform2i := wglGetProcAddress('glUniform2i');
  8068. if not Assigned(glUniform2i) then Exit;
  8069. glUniform3i := wglGetProcAddress('glUniform3i');
  8070. if not Assigned(glUniform3i) then Exit;
  8071. glUniform4i := wglGetProcAddress('glUniform4i');
  8072. if not Assigned(glUniform4i) then Exit;
  8073. glUniform1fv := wglGetProcAddress('glUniform1fv');
  8074. if not Assigned(glUniform1fv) then Exit;
  8075. glUniform2fv := wglGetProcAddress('glUniform2fv');
  8076. if not Assigned(glUniform2fv) then Exit;
  8077. glUniform3fv := wglGetProcAddress('glUniform3fv');
  8078. if not Assigned(glUniform3fv) then Exit;
  8079. glUniform4fv := wglGetProcAddress('glUniform4fv');
  8080. if not Assigned(glUniform4fv) then Exit;
  8081. glUniform1iv := wglGetProcAddress('glUniform1iv');
  8082. if not Assigned(glUniform1iv) then Exit;
  8083. glUniform2iv := wglGetProcAddress('glUniform2iv');
  8084. if not Assigned(glUniform2iv) then Exit;
  8085. glUniform3iv := wglGetProcAddress('glUniform3iv');
  8086. if not Assigned(glUniform3iv) then Exit;
  8087. glUniform4iv := wglGetProcAddress('glUniform4iv');
  8088. if not Assigned(glUniform4iv) then Exit;
  8089. glUniformMatrix2fv := wglGetProcAddress('glUniformMatrix2fv');
  8090. if not Assigned(glUniformMatrix2fv) then Exit;
  8091. glUniformMatrix3fv := wglGetProcAddress('glUniformMatrix3fv');
  8092. if not Assigned(glUniformMatrix3fv) then Exit;
  8093. glUniformMatrix4fv := wglGetProcAddress('glUniformMatrix4fv');
  8094. if not Assigned(glUniformMatrix4fv) then Exit;
  8095. glValidateProgram := wglGetProcAddress('glValidateProgram');
  8096. if not Assigned(glValidateProgram) then Exit;
  8097. glVertexAttrib1d := wglGetProcAddress('glVertexAttrib1d');
  8098. if not Assigned(glVertexAttrib1d) then Exit;
  8099. glVertexAttrib1dv := wglGetProcAddress('glVertexAttrib1dv');
  8100. if not Assigned(glVertexAttrib1dv) then Exit;
  8101. glVertexAttrib1f := wglGetProcAddress('glVertexAttrib1f');
  8102. if not Assigned(glVertexAttrib1f) then Exit;
  8103. glVertexAttrib1fv := wglGetProcAddress('glVertexAttrib1fv');
  8104. if not Assigned(glVertexAttrib1fv) then Exit;
  8105. glVertexAttrib1s := wglGetProcAddress('glVertexAttrib1s');
  8106. if not Assigned(glVertexAttrib1s) then Exit;
  8107. glVertexAttrib1sv := wglGetProcAddress('glVertexAttrib1sv');
  8108. if not Assigned(glVertexAttrib1sv) then Exit;
  8109. glVertexAttrib2d := wglGetProcAddress('glVertexAttrib2d');
  8110. if not Assigned(glVertexAttrib2d) then Exit;
  8111. glVertexAttrib2dv := wglGetProcAddress('glVertexAttrib2dv');
  8112. if not Assigned(glVertexAttrib2dv) then Exit;
  8113. glVertexAttrib2f := wglGetProcAddress('glVertexAttrib2f');
  8114. if not Assigned(glVertexAttrib2f) then Exit;
  8115. glVertexAttrib2fv := wglGetProcAddress('glVertexAttrib2fv');
  8116. if not Assigned(glVertexAttrib2fv) then Exit;
  8117. glVertexAttrib2s := wglGetProcAddress('glVertexAttrib2s');
  8118. if not Assigned(glVertexAttrib2s) then Exit;
  8119. glVertexAttrib2sv := wglGetProcAddress('glVertexAttrib2sv');
  8120. if not Assigned(glVertexAttrib2sv) then Exit;
  8121. glVertexAttrib3d := wglGetProcAddress('glVertexAttrib3d');
  8122. if not Assigned(glVertexAttrib3d) then Exit;
  8123. glVertexAttrib3dv := wglGetProcAddress('glVertexAttrib3dv');
  8124. if not Assigned(glVertexAttrib3dv) then Exit;
  8125. glVertexAttrib3f := wglGetProcAddress('glVertexAttrib3f');
  8126. if not Assigned(glVertexAttrib3f) then Exit;
  8127. glVertexAttrib3fv := wglGetProcAddress('glVertexAttrib3fv');
  8128. if not Assigned(glVertexAttrib3fv) then Exit;
  8129. glVertexAttrib3s := wglGetProcAddress('glVertexAttrib3s');
  8130. if not Assigned(glVertexAttrib3s) then Exit;
  8131. glVertexAttrib3sv := wglGetProcAddress('glVertexAttrib3sv');
  8132. if not Assigned(glVertexAttrib3sv) then Exit;
  8133. glVertexAttrib4Nbv := wglGetProcAddress('glVertexAttrib4Nbv');
  8134. if not Assigned(glVertexAttrib4Nbv) then Exit;
  8135. glVertexAttrib4Niv := wglGetProcAddress('glVertexAttrib4Niv');
  8136. if not Assigned(glVertexAttrib4Niv) then Exit;
  8137. glVertexAttrib4Nsv := wglGetProcAddress('glVertexAttrib4Nsv');
  8138. if not Assigned(glVertexAttrib4Nsv) then Exit;
  8139. glVertexAttrib4Nub := wglGetProcAddress('glVertexAttrib4Nub');
  8140. if not Assigned(glVertexAttrib4Nub) then Exit;
  8141. glVertexAttrib4Nubv := wglGetProcAddress('glVertexAttrib4Nubv');
  8142. if not Assigned(glVertexAttrib4Nubv) then Exit;
  8143. glVertexAttrib4Nuiv := wglGetProcAddress('glVertexAttrib4Nuiv');
  8144. if not Assigned(glVertexAttrib4Nuiv) then Exit;
  8145. glVertexAttrib4Nusv := wglGetProcAddress('glVertexAttrib4Nusv');
  8146. if not Assigned(glVertexAttrib4Nusv) then Exit;
  8147. glVertexAttrib4bv := wglGetProcAddress('glVertexAttrib4bv');
  8148. if not Assigned(glVertexAttrib4bv) then Exit;
  8149. glVertexAttrib4d := wglGetProcAddress('glVertexAttrib4d');
  8150. if not Assigned(glVertexAttrib4d) then Exit;
  8151. glVertexAttrib4dv := wglGetProcAddress('glVertexAttrib4dv');
  8152. if not Assigned(glVertexAttrib4dv) then Exit;
  8153. glVertexAttrib4f := wglGetProcAddress('glVertexAttrib4f');
  8154. if not Assigned(glVertexAttrib4f) then Exit;
  8155. glVertexAttrib4fv := wglGetProcAddress('glVertexAttrib4fv');
  8156. if not Assigned(glVertexAttrib4fv) then Exit;
  8157. glVertexAttrib4iv := wglGetProcAddress('glVertexAttrib4iv');
  8158. if not Assigned(glVertexAttrib4iv) then Exit;
  8159. glVertexAttrib4s := wglGetProcAddress('glVertexAttrib4s');
  8160. if not Assigned(glVertexAttrib4s) then Exit;
  8161. glVertexAttrib4sv := wglGetProcAddress('glVertexAttrib4sv');
  8162. if not Assigned(glVertexAttrib4sv) then Exit;
  8163. glVertexAttrib4ubv := wglGetProcAddress('glVertexAttrib4ubv');
  8164. if not Assigned(glVertexAttrib4ubv) then Exit;
  8165. glVertexAttrib4uiv := wglGetProcAddress('glVertexAttrib4uiv');
  8166. if not Assigned(glVertexAttrib4uiv) then Exit;
  8167. glVertexAttrib4usv := wglGetProcAddress('glVertexAttrib4usv');
  8168. if not Assigned(glVertexAttrib4usv) then Exit;
  8169. glVertexAttribPointer := wglGetProcAddress('glVertexAttribPointer');
  8170. if not Assigned(glVertexAttribPointer) then Exit;
  8171. Result := Load_GL_version_1_5;
  8172. end;
  8173. function glext_LoadExtension(ext: String): Boolean;
  8174. begin
  8175. Result := FALSE;
  8176. if ext = 'GL_version_1_2' then Result := Load_GL_version_1_2
  8177. else if ext = 'GL_ARB_imaging' then Result := Load_GL_ARB_imaging
  8178. else if ext = 'GL_version_1_3' then Result := Load_GL_version_1_3
  8179. else if ext = 'GL_ARB_multitexture' then Result := Load_GL_ARB_multitexture
  8180. else if ext = 'GL_ARB_transpose_matrix' then Result := Load_GL_ARB_transpose_matrix
  8181. else if ext = 'GL_ARB_multisample' then Result := Load_GL_ARB_multisample
  8182. else if ext = 'GL_ARB_texture_env_add' then Result := Load_GL_ARB_texture_env_add
  8183. {$IFDEF Windows}
  8184. else if ext = 'WGL_ARB_extensions_string' then Result := Load_WGL_ARB_extensions_string
  8185. else if ext = 'WGL_ARB_buffer_region' then Result := Load_WGL_ARB_buffer_region
  8186. {$ENDIF}
  8187. else if ext = 'GL_ARB_texture_cube_map' then Result := Load_GL_ARB_texture_cube_map
  8188. else if ext = 'GL_ARB_depth_texture' then Result := Load_GL_ARB_depth_texture
  8189. else if ext = 'GL_ARB_point_parameters' then Result := Load_GL_ARB_point_parameters
  8190. else if ext = 'GL_ARB_shadow' then Result := Load_GL_ARB_shadow
  8191. else if ext = 'GL_ARB_shadow_ambient' then Result := Load_GL_ARB_shadow_ambient
  8192. else if ext = 'GL_ARB_texture_border_clamp' then Result := Load_GL_ARB_texture_border_clamp
  8193. else if ext = 'GL_ARB_texture_compression' then Result := Load_GL_ARB_texture_compression
  8194. else if ext = 'GL_ARB_texture_env_combine' then Result := Load_GL_ARB_texture_env_combine
  8195. else if ext = 'GL_ARB_texture_env_crossbar' then Result := Load_GL_ARB_texture_env_crossbar
  8196. else if ext = 'GL_ARB_texture_env_dot3' then Result := Load_GL_ARB_texture_env_dot3
  8197. else if ext = 'GL_ARB_texture_mirrored_repeat' then Result := Load_GL_ARB_texture_mirrored_repeat
  8198. else if ext = 'GL_ARB_vertex_blend' then Result := Load_GL_ARB_vertex_blend
  8199. else if ext = 'GL_ARB_vertex_program' then Result := Load_GL_ARB_vertex_program
  8200. else if ext = 'GL_ARB_window_pos' then Result := Load_GL_ARB_window_pos
  8201. else if ext = 'GL_EXT_422_pixels' then Result := Load_GL_EXT_422_pixels
  8202. else if ext = 'GL_EXT_abgr' then Result := Load_GL_EXT_abgr
  8203. else if ext = 'GL_EXT_bgra' then Result := Load_GL_EXT_bgra
  8204. else if ext = 'GL_EXT_blend_color' then Result := Load_GL_EXT_blend_color
  8205. else if ext = 'GL_EXT_blend_func_separate' then Result := Load_GL_EXT_blend_func_separate
  8206. else if ext = 'GL_EXT_blend_logic_op' then Result := Load_GL_EXT_blend_logic_op
  8207. else if ext = 'GL_EXT_blend_minmax' then Result := Load_GL_EXT_blend_minmax
  8208. else if ext = 'GL_EXT_blend_subtract' then Result := Load_GL_EXT_blend_subtract
  8209. else if ext = 'GL_EXT_clip_volume_hint' then Result := Load_GL_EXT_clip_volume_hint
  8210. else if ext = 'GL_EXT_color_subtable' then Result := Load_GL_EXT_color_subtable
  8211. else if ext = 'GL_EXT_compiled_vertex_array' then Result := Load_GL_EXT_compiled_vertex_array
  8212. else if ext = 'GL_EXT_convolution' then Result := Load_GL_EXT_convolution
  8213. else if ext = 'GL_EXT_fog_coord' then Result := Load_GL_EXT_fog_coord
  8214. else if ext = 'GL_EXT_histogram' then Result := Load_GL_EXT_histogram
  8215. else if ext = 'GL_EXT_multi_draw_arrays' then Result := Load_GL_EXT_multi_draw_arrays
  8216. else if ext = 'GL_EXT_packed_pixels' then Result := Load_GL_EXT_packed_pixels
  8217. else if ext = 'GL_EXT_paletted_texture' then Result := Load_GL_EXT_paletted_texture
  8218. else if ext = 'GL_EXT_point_parameters' then Result := Load_GL_EXT_point_parameters
  8219. else if ext = 'GL_EXT_polygon_offset' then Result := Load_GL_EXT_polygon_offset
  8220. else if ext = 'GL_EXT_secondary_color' then Result := Load_GL_EXT_secondary_color
  8221. else if ext = 'GL_EXT_separate_specular_color' then Result := Load_GL_EXT_separate_specular_color
  8222. else if ext = 'GL_EXT_shadow_funcs' then Result := Load_GL_EXT_shadow_funcs
  8223. else if ext = 'GL_EXT_shared_texture_palette' then Result := Load_GL_EXT_shared_texture_palette
  8224. else if ext = 'GL_EXT_stencil_two_side' then Result := Load_GL_EXT_stencil_two_side
  8225. else if ext = 'GL_EXT_stencil_wrap' then Result := Load_GL_EXT_stencil_wrap
  8226. else if ext = 'GL_EXT_subtexture' then Result := Load_GL_EXT_subtexture
  8227. else if ext = 'GL_EXT_texture3D' then Result := Load_GL_EXT_texture3D
  8228. else if ext = 'GL_EXT_texture_compression_s3tc' then Result := Load_GL_EXT_texture_compression_s3tc
  8229. else if ext = 'GL_EXT_texture_env_add' then Result := Load_GL_EXT_texture_env_add
  8230. else if ext = 'GL_EXT_texture_env_combine' then Result := Load_GL_EXT_texture_env_combine
  8231. else if ext = 'GL_EXT_texture_env_dot3' then Result := Load_GL_EXT_texture_env_dot3
  8232. else if ext = 'GL_EXT_texture_filter_anisotropic' then Result := Load_GL_EXT_texture_filter_anisotropic
  8233. else if ext = 'GL_EXT_texture_lod_bias' then Result := Load_GL_EXT_texture_lod_bias
  8234. else if ext = 'GL_EXT_texture_object' then Result := Load_GL_EXT_texture_object
  8235. else if ext = 'GL_EXT_vertex_array' then Result := Load_GL_EXT_vertex_array
  8236. else if ext = 'GL_EXT_vertex_shader' then Result := Load_GL_EXT_vertex_shader
  8237. else if ext = 'GL_EXT_vertex_weighting' then Result := Load_GL_EXT_vertex_weighting
  8238. else if ext = 'GL_HP_occlusion_test' then Result := Load_GL_HP_occlusion_test
  8239. else if ext = 'GL_NV_blend_square' then Result := Load_GL_NV_blend_square
  8240. else if ext = 'GL_NV_copy_depth_to_color' then Result := Load_GL_NV_copy_depth_to_color
  8241. else if ext = 'GL_NV_depth_clamp' then Result := Load_GL_NV_depth_clamp
  8242. else if ext = 'GL_NV_evaluators' then Result := Load_GL_NV_evaluators
  8243. else if ext = 'GL_NV_fence' then Result := Load_GL_NV_fence
  8244. else if ext = 'GL_NV_fog_distance' then Result := Load_GL_NV_fog_distance
  8245. else if ext = 'GL_NV_light_max_exponent' then Result := Load_GL_NV_light_max_exponent
  8246. else if ext = 'GL_NV_multisample_filter_hint' then Result := Load_GL_NV_multisample_filter_hint
  8247. else if ext = 'GL_NV_occlusion_query' then Result := Load_GL_NV_occlusion_query
  8248. else if ext = 'GL_NV_packed_depth_stencil' then Result := Load_GL_NV_packed_depth_stencil
  8249. else if ext = 'GL_NV_point_sprite' then Result := Load_GL_NV_point_sprite
  8250. else if ext = 'GL_NV_register_combiners' then Result := Load_GL_NV_register_combiners
  8251. else if ext = 'GL_NV_register_combiners2' then Result := Load_GL_NV_register_combiners2
  8252. else if ext = 'GL_NV_texgen_emboss' then Result := Load_GL_NV_texgen_emboss
  8253. else if ext = 'GL_NV_texgen_reflection' then Result := Load_GL_NV_texgen_reflection
  8254. else if ext = 'GL_NV_texture_compression_vtc' then Result := Load_GL_NV_texture_compression_vtc
  8255. else if ext = 'GL_NV_texture_env_combine4' then Result := Load_GL_NV_texture_env_combine4
  8256. else if ext = 'GL_NV_texture_rectangle' then Result := Load_GL_NV_texture_rectangle
  8257. else if ext = 'GL_NV_texture_shader' then Result := Load_GL_NV_texture_shader
  8258. else if ext = 'GL_NV_texture_shader2' then Result := Load_GL_NV_texture_shader2
  8259. else if ext = 'GL_NV_texture_shader3' then Result := Load_GL_NV_texture_shader3
  8260. else if ext = 'GL_NV_vertex_array_range' then Result := Load_GL_NV_vertex_array_range
  8261. else if ext = 'GL_NV_vertex_array_range2' then Result := Load_GL_NV_vertex_array_range2
  8262. else if ext = 'GL_NV_vertex_program' then Result := Load_GL_NV_vertex_program
  8263. else if ext = 'GL_NV_vertex_program1_1' then Result := Load_GL_NV_vertex_program1_1
  8264. else if ext = 'GL_ATI_element_array' then Result := Load_GL_ATI_element_array
  8265. else if ext = 'GL_ATI_envmap_bumpmap' then Result := Load_GL_ATI_envmap_bumpmap
  8266. else if ext = 'GL_ATI_fragment_shader' then Result := Load_GL_ATI_fragment_shader
  8267. else if ext = 'GL_ATI_pn_triangles' then Result := Load_GL_ATI_pn_triangles
  8268. else if ext = 'GL_ATI_texture_mirror_once' then Result := Load_GL_ATI_texture_mirror_once
  8269. else if ext = 'GL_ATI_vertex_array_object' then Result := Load_GL_ATI_vertex_array_object
  8270. else if ext = 'GL_ATI_vertex_streams' then Result := Load_GL_ATI_vertex_streams
  8271. {$IFDEF Windows}
  8272. else if ext = 'WGL_I3D_image_buffer' then Result := Load_WGL_I3D_image_buffer
  8273. else if ext = 'WGL_I3D_swap_frame_lock' then Result := Load_WGL_I3D_swap_frame_lock
  8274. else if ext = 'WGL_I3D_swap_frame_usage' then Result := Load_WGL_I3D_swap_frame_usage
  8275. {$ENDIF}
  8276. else if ext = 'GL_3DFX_texture_compression_FXT1' then Result := Load_GL_3DFX_texture_compression_FXT1
  8277. else if ext = 'GL_IBM_cull_vertex' then Result := Load_GL_IBM_cull_vertex
  8278. else if ext = 'GL_IBM_multimode_draw_arrays' then Result := Load_GL_IBM_multimode_draw_arrays
  8279. else if ext = 'GL_IBM_raster_pos_clip' then Result := Load_GL_IBM_raster_pos_clip
  8280. else if ext = 'GL_IBM_texture_mirrored_repeat' then Result := Load_GL_IBM_texture_mirrored_repeat
  8281. else if ext = 'GL_IBM_vertex_array_lists' then Result := Load_GL_IBM_vertex_array_lists
  8282. else if ext = 'GL_MESA_resize_buffers' then Result := Load_GL_MESA_resize_buffers
  8283. else if ext = 'GL_MESA_window_pos' then Result := Load_GL_MESA_window_pos
  8284. else if ext = 'GL_OML_interlace' then Result := Load_GL_OML_interlace
  8285. else if ext = 'GL_OML_resample' then Result := Load_GL_OML_resample
  8286. else if ext = 'GL_OML_subsample' then Result := Load_GL_OML_subsample
  8287. else if ext = 'GL_SGIS_generate_mipmap' then Result := Load_GL_SGIS_generate_mipmap
  8288. else if ext = 'GL_SGIS_multisample' then Result := Load_GL_SGIS_multisample
  8289. else if ext = 'GL_SGIS_pixel_texture' then Result := Load_GL_SGIS_pixel_texture
  8290. else if ext = 'GL_SGIS_texture_border_clamp' then Result := Load_GL_SGIS_texture_border_clamp
  8291. else if ext = 'GL_SGIS_texture_color_mask' then Result := Load_GL_SGIS_texture_color_mask
  8292. else if ext = 'GL_SGIS_texture_edge_clamp' then Result := Load_GL_SGIS_texture_edge_clamp
  8293. else if ext = 'GL_SGIS_texture_lod' then Result := Load_GL_SGIS_texture_lod
  8294. else if ext = 'GL_SGIS_depth_texture' then Result := Load_GL_SGIS_depth_texture
  8295. else if ext = 'GL_SGIX_fog_offset' then Result := Load_GL_SGIX_fog_offset
  8296. else if ext = 'GL_SGIX_interlace' then Result := Load_GL_SGIX_interlace
  8297. else if ext = 'GL_SGIX_shadow_ambient' then Result := Load_GL_SGIX_shadow_ambient
  8298. else if ext = 'GL_SGI_color_matrix' then Result := Load_GL_SGI_color_matrix
  8299. else if ext = 'GL_SGI_color_table' then Result := Load_GL_SGI_color_table
  8300. else if ext = 'GL_SGI_texture_color_table' then Result := Load_GL_SGI_texture_color_table
  8301. else if ext = 'GL_SUN_vertex' then Result := Load_GL_SUN_vertex
  8302. else if ext = 'GL_ARB_fragment_program' then Result := Load_GL_ARB_fragment_program
  8303. else if ext = 'GL_ATI_text_fragment_shader' then Result := Load_GL_ATI_text_fragment_shader
  8304. else if ext = 'GL_APPLE_client_storage' then Result := Load_GL_APPLE_client_storage
  8305. else if ext = 'GL_APPLE_element_array' then Result := Load_GL_APPLE_element_array
  8306. else if ext = 'GL_APPLE_fence' then Result := Load_GL_APPLE_fence
  8307. else if ext = 'GL_APPLE_vertex_array_object' then Result := Load_GL_APPLE_vertex_array_object
  8308. else if ext = 'GL_APPLE_vertex_array_range' then Result := Load_GL_APPLE_vertex_array_range
  8309. {$IFDEF Windows}
  8310. else if ext = 'WGL_ARB_pixel_format' then Result := Load_WGL_ARB_pixel_format
  8311. else if ext = 'WGL_ARB_make_current_read' then Result := Load_WGL_ARB_make_current_read
  8312. else if ext = 'WGL_ARB_pbuffer' then Result := Load_WGL_ARB_pbuffer
  8313. else if ext = 'WGL_EXT_swap_control' then Result := Load_WGL_EXT_swap_control
  8314. else if ext = 'WGL_ARB_render_texture' then Result := Load_WGL_ARB_render_texture
  8315. else if ext = 'WGL_EXT_extensions_string' then Result := Load_WGL_EXT_extensions_string
  8316. else if ext = 'WGL_EXT_make_current_read' then Result := Load_WGL_EXT_make_current_read
  8317. else if ext = 'WGL_EXT_pbuffer' then Result := Load_WGL_EXT_pbuffer
  8318. else if ext = 'WGL_EXT_pixel_format' then Result := Load_WGL_EXT_pixel_format
  8319. else if ext = 'WGL_I3D_digital_video_control' then Result := Load_WGL_I3D_digital_video_control
  8320. else if ext = 'WGL_I3D_gamma' then Result := Load_WGL_I3D_gamma
  8321. else if ext = 'WGL_I3D_genlock' then Result := Load_WGL_I3D_genlock
  8322. {$ENDIF}
  8323. else if ext = 'GL_ARB_matrix_palette' then Result := Load_GL_ARB_matrix_palette
  8324. else if ext = 'GL_NV_element_array' then Result := Load_GL_NV_element_array
  8325. else if ext = 'GL_NV_float_buffer' then Result := Load_GL_NV_float_buffer
  8326. else if ext = 'GL_NV_fragment_program' then Result := Load_GL_NV_fragment_program
  8327. else if ext = 'GL_NV_primitive_restart' then Result := Load_GL_NV_primitive_restart
  8328. else if ext = 'GL_NV_vertex_program2' then Result := Load_GL_NV_vertex_program2
  8329. {$IFDEF Windows}
  8330. else if ext = 'WGL_NV_render_texture_rectangle' then Result := Load_WGL_NV_render_texture_rectangle
  8331. {$ENDIF}
  8332. else if ext = 'GL_NV_pixel_data_range' then Result := Load_GL_NV_pixel_data_range
  8333. else if ext = 'GL_EXT_texture_rectangle' then Result := Load_GL_EXT_texture_rectangle
  8334. else if ext = 'GL_S3_s3tc' then Result := Load_GL_S3_s3tc
  8335. else if ext = 'GL_ATI_draw_buffers' then Result := Load_GL_ATI_draw_buffers
  8336. {$IFDEF Windows}
  8337. else if ext = 'WGL_ATI_pixel_format_float' then Result := Load_WGL_ATI_pixel_format_float
  8338. {$ENDIF}
  8339. else if ext = 'GL_ATI_texture_env_combine3' then Result := Load_GL_ATI_texture_env_combine3
  8340. else if ext = 'GL_ATI_texture_float' then Result := Load_GL_ATI_texture_float
  8341. else if ext = 'GL_NV_texture_expand_normal' then Result := Load_GL_NV_texture_expand_normal
  8342. else if ext = 'GL_NV_half_float' then Result := Load_GL_NV_half_float
  8343. else if ext = 'GL_ATI_map_object_buffer' then Result := Load_GL_ATI_map_object_buffer
  8344. else if ext = 'GL_ATI_separate_stencil' then Result := Load_GL_ATI_separate_stencil
  8345. else if ext = 'GL_ATI_vertex_attrib_array_object' then Result := Load_GL_ATI_vertex_attrib_array_object
  8346. else if ext = 'GL_ARB_vertex_buffer_object' then Result := Load_GL_ARB_vertex_buffer_object
  8347. else if ext = 'GL_ARB_occlusion_query' then Result := Load_GL_ARB_occlusion_query
  8348. else if ext = 'GL_ARB_shader_objects' then Result := Load_GL_ARB_shader_objects
  8349. else if ext = 'GL_ARB_vertex_shader' then Result := Load_GL_ARB_vertex_shader
  8350. else if ext = 'GL_ARB_fragment_shader' then Result := Load_GL_ARB_fragment_shader
  8351. else if ext = 'GL_ARB_shading_language_100' then Result := Load_GL_ARB_shading_language_100
  8352. else if ext = 'GL_ARB_texture_non_power_of_two' then Result := Load_GL_ARB_texture_non_power_of_two
  8353. else if ext = 'GL_ARB_point_sprite' then Result := Load_GL_ARB_point_sprite
  8354. else if ext = 'GL_EXT_depth_bounds_test' then Result := Load_GL_EXT_depth_bounds_test
  8355. else if ext = 'GL_EXT_texture_mirror_clamp' then Result := Load_GL_EXT_texture_mirror_clamp
  8356. else if ext = 'GL_EXT_blend_equation_separate' then Result := Load_GL_EXT_blend_equation_separate
  8357. else if ext = 'GL_MESA_pack_invert' then Result := Load_GL_MESA_pack_invert
  8358. else if ext = 'GL_MESA_ycbcr_texture' then Result := Load_GL_MESA_ycbcr_texture
  8359. else if ext = 'GL_ARB_fragment_program_shadow' then Result := Load_GL_ARB_fragment_program_shadow
  8360. else if ext = 'GL_NV_fragment_program_option' then Result := Load_GL_NV_fragment_program_option
  8361. else if ext = 'GL_EXT_pixel_buffer_object' then Result := Load_GL_EXT_pixel_buffer_object
  8362. else if ext = 'GL_NV_fragment_program2' then Result := Load_GL_NV_fragment_program2
  8363. else if ext = 'GL_NV_vertex_program2_option' then Result := Load_GL_NV_vertex_program2_option
  8364. else if ext = 'GL_NV_vertex_program3' then Result := Load_GL_NV_vertex_program3
  8365. else if ext = 'GL_ARB_draw_buffers' then Result := Load_GL_ARB_draw_buffers
  8366. else if ext = 'GL_ARB_texture_rectangle' then Result := Load_GL_ARB_texture_rectangle
  8367. else if ext = 'GL_ARB_color_buffer_float' then Result := Load_GL_ARB_color_buffer_float
  8368. else if ext = 'GL_ARB_half_float_pixel' then Result := Load_GL_ARB_half_float_pixel
  8369. else if ext = 'GL_ARB_texture_float' then Result := Load_GL_ARB_texture_float
  8370. else if ext = 'GL_EXT_texture_compression_dxt1' then Result := Load_GL_EXT_texture_compression_dxt1
  8371. else if ext = 'GL_ARB_pixel_buffer_object' then Result := Load_GL_ARB_pixel_buffer_object
  8372. else if ext = 'GL_EXT_framebuffer_object' then Result := Load_GL_EXT_framebuffer_object
  8373. else if ext = 'GL_version_1_4' then Result := Load_GL_version_1_4
  8374. else if ext = 'GL_version_1_5' then Result := Load_GL_version_1_5
  8375. else if ext = 'GL_version_2_0' then Result := Load_GL_version_2_0
  8376. end;
  8377. end.