glext.pp 387 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547
  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 = Integer;
  48. TGLintptr = GLintptr;
  49. PGLintptr = ^GLintptr;
  50. GLsizeiptr = Integer;
  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. glFogCoordfEXfloat: procedure(coord: GLfloat); extdecl;
  929. glFogCoorddEXdouble: procedure(coord: GLdouble); extdecl;
  930. glFogCoordfvEXfloat: procedure(coord: GLfloat); extdecl;
  931. glFogCoorddvEXdouble: procedure(coord: GLdouble); 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(Integer(where) + Length(extension));
  3872. if (where = start) or (PChar(Integer(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. var
  3886. extstring: String;
  3887. begin
  3888. Result := FALSE;
  3889. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3890. glBlendColor := wglGetProcAddress('glBlendColor');
  3891. if not Assigned(glBlendColor) then Exit;
  3892. glBlendEquation := wglGetProcAddress('glBlendEquation');
  3893. if not Assigned(glBlendEquation) then Exit;
  3894. glDrawRangeElements := wglGetProcAddress('glDrawRangeElements');
  3895. if not Assigned(glDrawRangeElements) then Exit;
  3896. glColorTable := wglGetProcAddress('glColorTable');
  3897. if not Assigned(glColorTable) then Exit;
  3898. glColorTableParameterfv := wglGetProcAddress('glColorTableParameterfv');
  3899. if not Assigned(glColorTableParameterfv) then Exit;
  3900. glColorTableParameteriv := wglGetProcAddress('glColorTableParameteriv');
  3901. if not Assigned(glColorTableParameteriv) then Exit;
  3902. glCopyColorTable := wglGetProcAddress('glCopyColorTable');
  3903. if not Assigned(glCopyColorTable) then Exit;
  3904. glGetColorTable := wglGetProcAddress('glGetColorTable');
  3905. if not Assigned(glGetColorTable) then Exit;
  3906. glGetColorTableParameterfv := wglGetProcAddress('glGetColorTableParameterfv');
  3907. if not Assigned(glGetColorTableParameterfv) then Exit;
  3908. glGetColorTableParameteriv := wglGetProcAddress('glGetColorTableParameteriv');
  3909. if not Assigned(glGetColorTableParameteriv) then Exit;
  3910. glColorSubTable := wglGetProcAddress('glColorSubTable');
  3911. if not Assigned(glColorSubTable) then Exit;
  3912. glCopyColorSubTable := wglGetProcAddress('glCopyColorSubTable');
  3913. if not Assigned(glCopyColorSubTable) then Exit;
  3914. glConvolutionFilter1D := wglGetProcAddress('glConvolutionFilter1D');
  3915. if not Assigned(glConvolutionFilter1D) then Exit;
  3916. glConvolutionFilter2D := wglGetProcAddress('glConvolutionFilter2D');
  3917. if not Assigned(glConvolutionFilter2D) then Exit;
  3918. glConvolutionParameterf := wglGetProcAddress('glConvolutionParameterf');
  3919. if not Assigned(glConvolutionParameterf) then Exit;
  3920. glConvolutionParameterfv := wglGetProcAddress('glConvolutionParameterfv');
  3921. if not Assigned(glConvolutionParameterfv) then Exit;
  3922. glConvolutionParameteri := wglGetProcAddress('glConvolutionParameteri');
  3923. if not Assigned(glConvolutionParameteri) then Exit;
  3924. glConvolutionParameteriv := wglGetProcAddress('glConvolutionParameteriv');
  3925. if not Assigned(glConvolutionParameteriv) then Exit;
  3926. glCopyConvolutionFilter1D := wglGetProcAddress('glCopyConvolutionFilter1D');
  3927. if not Assigned(glCopyConvolutionFilter1D) then Exit;
  3928. glCopyConvolutionFilter2D := wglGetProcAddress('glCopyConvolutionFilter2D');
  3929. if not Assigned(glCopyConvolutionFilter2D) then Exit;
  3930. glGetConvolutionFilter := wglGetProcAddress('glGetConvolutionFilter');
  3931. if not Assigned(glGetConvolutionFilter) then Exit;
  3932. glGetConvolutionParameterfv := wglGetProcAddress('glGetConvolutionParameterfv');
  3933. if not Assigned(glGetConvolutionParameterfv) then Exit;
  3934. glGetConvolutionParameteriv := wglGetProcAddress('glGetConvolutionParameteriv');
  3935. if not Assigned(glGetConvolutionParameteriv) then Exit;
  3936. glGetSeparableFilter := wglGetProcAddress('glGetSeparableFilter');
  3937. if not Assigned(glGetSeparableFilter) then Exit;
  3938. glSeparableFilter2D := wglGetProcAddress('glSeparableFilter2D');
  3939. if not Assigned(glSeparableFilter2D) then Exit;
  3940. glGetHistogram := wglGetProcAddress('glGetHistogram');
  3941. if not Assigned(glGetHistogram) then Exit;
  3942. glGetHistogramParameterfv := wglGetProcAddress('glGetHistogramParameterfv');
  3943. if not Assigned(glGetHistogramParameterfv) then Exit;
  3944. glGetHistogramParameteriv := wglGetProcAddress('glGetHistogramParameteriv');
  3945. if not Assigned(glGetHistogramParameteriv) then Exit;
  3946. glGetMinmax := wglGetProcAddress('glGetMinmax');
  3947. if not Assigned(glGetMinmax) then Exit;
  3948. glGetMinmaxParameterfv := wglGetProcAddress('glGetMinmaxParameterfv');
  3949. if not Assigned(glGetMinmaxParameterfv) then Exit;
  3950. glGetMinmaxParameteriv := wglGetProcAddress('glGetMinmaxParameteriv');
  3951. if not Assigned(glGetMinmaxParameteriv) then Exit;
  3952. glHistogram := wglGetProcAddress('glHistogram');
  3953. if not Assigned(glHistogram) then Exit;
  3954. glMinmax := wglGetProcAddress('glMinmax');
  3955. if not Assigned(glMinmax) then Exit;
  3956. glResetHistogram := wglGetProcAddress('glResetHistogram');
  3957. if not Assigned(glResetHistogram) then Exit;
  3958. glResetMinmax := wglGetProcAddress('glResetMinmax');
  3959. if not Assigned(glResetMinmax) then Exit;
  3960. glTexImage3D := wglGetProcAddress('glTexImage3D');
  3961. if not Assigned(glTexImage3D) then Exit;
  3962. glTexSubImage3D := wglGetProcAddress('glTexSubImage3D');
  3963. if not Assigned(glTexSubImage3D) then Exit;
  3964. glCopyTexSubImage3D := wglGetProcAddress('glCopyTexSubImage3D');
  3965. if not Assigned(glCopyTexSubImage3D) then Exit;
  3966. Result := TRUE;
  3967. end;
  3968. function Load_GL_ARB_imaging: Boolean;
  3969. var
  3970. extstring: String;
  3971. begin
  3972. Result := FALSE;
  3973. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3974. if glext_ExtensionSupported('GL_ARB_imaging', extstring) then
  3975. begin
  3976. Result := TRUE;
  3977. end;
  3978. end;
  3979. function Load_GL_version_1_3: Boolean;
  3980. var
  3981. extstring: String;
  3982. begin
  3983. Result := FALSE;
  3984. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  3985. glActiveTexture := wglGetProcAddress('glActiveTexture');
  3986. if not Assigned(glActiveTexture) then Exit;
  3987. glClientActiveTexture := wglGetProcAddress('glClientActiveTexture');
  3988. if not Assigned(glClientActiveTexture) then Exit;
  3989. glMultiTexCoord1d := wglGetProcAddress('glMultiTexCoord1d');
  3990. if not Assigned(glMultiTexCoord1d) then Exit;
  3991. glMultiTexCoord1dv := wglGetProcAddress('glMultiTexCoord1dv');
  3992. if not Assigned(glMultiTexCoord1dv) then Exit;
  3993. glMultiTexCoord1f := wglGetProcAddress('glMultiTexCoord1f');
  3994. if not Assigned(glMultiTexCoord1f) then Exit;
  3995. glMultiTexCoord1fv := wglGetProcAddress('glMultiTexCoord1fv');
  3996. if not Assigned(glMultiTexCoord1fv) then Exit;
  3997. glMultiTexCoord1i := wglGetProcAddress('glMultiTexCoord1i');
  3998. if not Assigned(glMultiTexCoord1i) then Exit;
  3999. glMultiTexCoord1iv := wglGetProcAddress('glMultiTexCoord1iv');
  4000. if not Assigned(glMultiTexCoord1iv) then Exit;
  4001. glMultiTexCoord1s := wglGetProcAddress('glMultiTexCoord1s');
  4002. if not Assigned(glMultiTexCoord1s) then Exit;
  4003. glMultiTexCoord1sv := wglGetProcAddress('glMultiTexCoord1sv');
  4004. if not Assigned(glMultiTexCoord1sv) then Exit;
  4005. glMultiTexCoord2d := wglGetProcAddress('glMultiTexCoord2d');
  4006. if not Assigned(glMultiTexCoord2d) then Exit;
  4007. glMultiTexCoord2dv := wglGetProcAddress('glMultiTexCoord2dv');
  4008. if not Assigned(glMultiTexCoord2dv) then Exit;
  4009. glMultiTexCoord2f := wglGetProcAddress('glMultiTexCoord2f');
  4010. if not Assigned(glMultiTexCoord2f) then Exit;
  4011. glMultiTexCoord2fv := wglGetProcAddress('glMultiTexCoord2fv');
  4012. if not Assigned(glMultiTexCoord2fv) then Exit;
  4013. glMultiTexCoord2i := wglGetProcAddress('glMultiTexCoord2i');
  4014. if not Assigned(glMultiTexCoord2i) then Exit;
  4015. glMultiTexCoord2iv := wglGetProcAddress('glMultiTexCoord2iv');
  4016. if not Assigned(glMultiTexCoord2iv) then Exit;
  4017. glMultiTexCoord2s := wglGetProcAddress('glMultiTexCoord2s');
  4018. if not Assigned(glMultiTexCoord2s) then Exit;
  4019. glMultiTexCoord2sv := wglGetProcAddress('glMultiTexCoord2sv');
  4020. if not Assigned(glMultiTexCoord2sv) then Exit;
  4021. glMultiTexCoord3d := wglGetProcAddress('glMultiTexCoord3d');
  4022. if not Assigned(glMultiTexCoord3d) then Exit;
  4023. glMultiTexCoord3dv := wglGetProcAddress('glMultiTexCoord3dv');
  4024. if not Assigned(glMultiTexCoord3dv) then Exit;
  4025. glMultiTexCoord3f := wglGetProcAddress('glMultiTexCoord3f');
  4026. if not Assigned(glMultiTexCoord3f) then Exit;
  4027. glMultiTexCoord3fv := wglGetProcAddress('glMultiTexCoord3fv');
  4028. if not Assigned(glMultiTexCoord3fv) then Exit;
  4029. glMultiTexCoord3i := wglGetProcAddress('glMultiTexCoord3i');
  4030. if not Assigned(glMultiTexCoord3i) then Exit;
  4031. glMultiTexCoord3iv := wglGetProcAddress('glMultiTexCoord3iv');
  4032. if not Assigned(glMultiTexCoord3iv) then Exit;
  4033. glMultiTexCoord3s := wglGetProcAddress('glMultiTexCoord3s');
  4034. if not Assigned(glMultiTexCoord3s) then Exit;
  4035. glMultiTexCoord3sv := wglGetProcAddress('glMultiTexCoord3sv');
  4036. if not Assigned(glMultiTexCoord3sv) then Exit;
  4037. glMultiTexCoord4d := wglGetProcAddress('glMultiTexCoord4d');
  4038. if not Assigned(glMultiTexCoord4d) then Exit;
  4039. glMultiTexCoord4dv := wglGetProcAddress('glMultiTexCoord4dv');
  4040. if not Assigned(glMultiTexCoord4dv) then Exit;
  4041. glMultiTexCoord4f := wglGetProcAddress('glMultiTexCoord4f');
  4042. if not Assigned(glMultiTexCoord4f) then Exit;
  4043. glMultiTexCoord4fv := wglGetProcAddress('glMultiTexCoord4fv');
  4044. if not Assigned(glMultiTexCoord4fv) then Exit;
  4045. glMultiTexCoord4i := wglGetProcAddress('glMultiTexCoord4i');
  4046. if not Assigned(glMultiTexCoord4i) then Exit;
  4047. glMultiTexCoord4iv := wglGetProcAddress('glMultiTexCoord4iv');
  4048. if not Assigned(glMultiTexCoord4iv) then Exit;
  4049. glMultiTexCoord4s := wglGetProcAddress('glMultiTexCoord4s');
  4050. if not Assigned(glMultiTexCoord4s) then Exit;
  4051. glMultiTexCoord4sv := wglGetProcAddress('glMultiTexCoord4sv');
  4052. if not Assigned(glMultiTexCoord4sv) then Exit;
  4053. glLoadTransposeMatrixf := wglGetProcAddress('glLoadTransposeMatrixf');
  4054. if not Assigned(glLoadTransposeMatrixf) then Exit;
  4055. glLoadTransposeMatrixd := wglGetProcAddress('glLoadTransposeMatrixd');
  4056. if not Assigned(glLoadTransposeMatrixd) then Exit;
  4057. glMultTransposeMatrixf := wglGetProcAddress('glMultTransposeMatrixf');
  4058. if not Assigned(glMultTransposeMatrixf) then Exit;
  4059. glMultTransposeMatrixd := wglGetProcAddress('glMultTransposeMatrixd');
  4060. if not Assigned(glMultTransposeMatrixd) then Exit;
  4061. glSampleCoverage := wglGetProcAddress('glSampleCoverage');
  4062. if not Assigned(glSampleCoverage) then Exit;
  4063. glCompressedTexImage3D := wglGetProcAddress('glCompressedTexImage3D');
  4064. if not Assigned(glCompressedTexImage3D) then Exit;
  4065. glCompressedTexImage2D := wglGetProcAddress('glCompressedTexImage2D');
  4066. if not Assigned(glCompressedTexImage2D) then Exit;
  4067. glCompressedTexImage1D := wglGetProcAddress('glCompressedTexImage1D');
  4068. if not Assigned(glCompressedTexImage1D) then Exit;
  4069. glCompressedTexSubImage3D := wglGetProcAddress('glCompressedTexSubImage3D');
  4070. if not Assigned(glCompressedTexSubImage3D) then Exit;
  4071. glCompressedTexSubImage2D := wglGetProcAddress('glCompressedTexSubImage2D');
  4072. if not Assigned(glCompressedTexSubImage2D) then Exit;
  4073. glCompressedTexSubImage1D := wglGetProcAddress('glCompressedTexSubImage1D');
  4074. if not Assigned(glCompressedTexSubImage1D) then Exit;
  4075. glGetCompressedTexImage := wglGetProcAddress('glGetCompressedTexImage');
  4076. if not Assigned(glGetCompressedTexImage) then Exit;
  4077. Result := TRUE;
  4078. end;
  4079. function Load_GL_ARB_multitexture: Boolean;
  4080. var
  4081. extstring: String;
  4082. begin
  4083. Result := FALSE;
  4084. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4085. if glext_ExtensionSupported('GL_ARB_multitexture', extstring) then
  4086. begin
  4087. glActiveTextureARB := wglGetProcAddress('glActiveTextureARB');
  4088. if not Assigned(glActiveTextureARB) then Exit;
  4089. glClientActiveTextureARB := wglGetProcAddress('glClientActiveTextureARB');
  4090. if not Assigned(glClientActiveTextureARB) then Exit;
  4091. glMultiTexCoord1dARB := wglGetProcAddress('glMultiTexCoord1dARB');
  4092. if not Assigned(glMultiTexCoord1dARB) then Exit;
  4093. glMultiTexCoord1dvARB := wglGetProcAddress('glMultiTexCoord1dvARB');
  4094. if not Assigned(glMultiTexCoord1dvARB) then Exit;
  4095. glMultiTexCoord1fARB := wglGetProcAddress('glMultiTexCoord1fARB');
  4096. if not Assigned(glMultiTexCoord1fARB) then Exit;
  4097. glMultiTexCoord1fvARB := wglGetProcAddress('glMultiTexCoord1fvARB');
  4098. if not Assigned(glMultiTexCoord1fvARB) then Exit;
  4099. glMultiTexCoord1iARB := wglGetProcAddress('glMultiTexCoord1iARB');
  4100. if not Assigned(glMultiTexCoord1iARB) then Exit;
  4101. glMultiTexCoord1ivARB := wglGetProcAddress('glMultiTexCoord1ivARB');
  4102. if not Assigned(glMultiTexCoord1ivARB) then Exit;
  4103. glMultiTexCoord1sARB := wglGetProcAddress('glMultiTexCoord1sARB');
  4104. if not Assigned(glMultiTexCoord1sARB) then Exit;
  4105. glMultiTexCoord1svARB := wglGetProcAddress('glMultiTexCoord1svARB');
  4106. if not Assigned(glMultiTexCoord1svARB) then Exit;
  4107. glMultiTexCoord2dARB := wglGetProcAddress('glMultiTexCoord2dARB');
  4108. if not Assigned(glMultiTexCoord2dARB) then Exit;
  4109. glMultiTexCoord2dvARB := wglGetProcAddress('glMultiTexCoord2dvARB');
  4110. if not Assigned(glMultiTexCoord2dvARB) then Exit;
  4111. glMultiTexCoord2fARB := wglGetProcAddress('glMultiTexCoord2fARB');
  4112. if not Assigned(glMultiTexCoord2fARB) then Exit;
  4113. glMultiTexCoord2fvARB := wglGetProcAddress('glMultiTexCoord2fvARB');
  4114. if not Assigned(glMultiTexCoord2fvARB) then Exit;
  4115. glMultiTexCoord2iARB := wglGetProcAddress('glMultiTexCoord2iARB');
  4116. if not Assigned(glMultiTexCoord2iARB) then Exit;
  4117. glMultiTexCoord2ivARB := wglGetProcAddress('glMultiTexCoord2ivARB');
  4118. if not Assigned(glMultiTexCoord2ivARB) then Exit;
  4119. glMultiTexCoord2sARB := wglGetProcAddress('glMultiTexCoord2sARB');
  4120. if not Assigned(glMultiTexCoord2sARB) then Exit;
  4121. glMultiTexCoord2svARB := wglGetProcAddress('glMultiTexCoord2svARB');
  4122. if not Assigned(glMultiTexCoord2svARB) then Exit;
  4123. glMultiTexCoord3dARB := wglGetProcAddress('glMultiTexCoord3dARB');
  4124. if not Assigned(glMultiTexCoord3dARB) then Exit;
  4125. glMultiTexCoord3dvARB := wglGetProcAddress('glMultiTexCoord3dvARB');
  4126. if not Assigned(glMultiTexCoord3dvARB) then Exit;
  4127. glMultiTexCoord3fARB := wglGetProcAddress('glMultiTexCoord3fARB');
  4128. if not Assigned(glMultiTexCoord3fARB) then Exit;
  4129. glMultiTexCoord3fvARB := wglGetProcAddress('glMultiTexCoord3fvARB');
  4130. if not Assigned(glMultiTexCoord3fvARB) then Exit;
  4131. glMultiTexCoord3iARB := wglGetProcAddress('glMultiTexCoord3iARB');
  4132. if not Assigned(glMultiTexCoord3iARB) then Exit;
  4133. glMultiTexCoord3ivARB := wglGetProcAddress('glMultiTexCoord3ivARB');
  4134. if not Assigned(glMultiTexCoord3ivARB) then Exit;
  4135. glMultiTexCoord3sARB := wglGetProcAddress('glMultiTexCoord3sARB');
  4136. if not Assigned(glMultiTexCoord3sARB) then Exit;
  4137. glMultiTexCoord3svARB := wglGetProcAddress('glMultiTexCoord3svARB');
  4138. if not Assigned(glMultiTexCoord3svARB) then Exit;
  4139. glMultiTexCoord4dARB := wglGetProcAddress('glMultiTexCoord4dARB');
  4140. if not Assigned(glMultiTexCoord4dARB) then Exit;
  4141. glMultiTexCoord4dvARB := wglGetProcAddress('glMultiTexCoord4dvARB');
  4142. if not Assigned(glMultiTexCoord4dvARB) then Exit;
  4143. glMultiTexCoord4fARB := wglGetProcAddress('glMultiTexCoord4fARB');
  4144. if not Assigned(glMultiTexCoord4fARB) then Exit;
  4145. glMultiTexCoord4fvARB := wglGetProcAddress('glMultiTexCoord4fvARB');
  4146. if not Assigned(glMultiTexCoord4fvARB) then Exit;
  4147. glMultiTexCoord4iARB := wglGetProcAddress('glMultiTexCoord4iARB');
  4148. if not Assigned(glMultiTexCoord4iARB) then Exit;
  4149. glMultiTexCoord4ivARB := wglGetProcAddress('glMultiTexCoord4ivARB');
  4150. if not Assigned(glMultiTexCoord4ivARB) then Exit;
  4151. glMultiTexCoord4sARB := wglGetProcAddress('glMultiTexCoord4sARB');
  4152. if not Assigned(glMultiTexCoord4sARB) then Exit;
  4153. glMultiTexCoord4svARB := wglGetProcAddress('glMultiTexCoord4svARB');
  4154. if not Assigned(glMultiTexCoord4svARB) then Exit;
  4155. Result := TRUE;
  4156. end;
  4157. end;
  4158. function Load_GL_ARB_transpose_matrix: Boolean;
  4159. var
  4160. extstring: String;
  4161. begin
  4162. Result := FALSE;
  4163. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4164. if glext_ExtensionSupported('GL_ARB_transpose_matrix', extstring) then
  4165. begin
  4166. glLoadTransposeMatrixfARB := wglGetProcAddress('glLoadTransposeMatrixfARB');
  4167. if not Assigned(glLoadTransposeMatrixfARB) then Exit;
  4168. glLoadTransposeMatrixdARB := wglGetProcAddress('glLoadTransposeMatrixdARB');
  4169. if not Assigned(glLoadTransposeMatrixdARB) then Exit;
  4170. glMultTransposeMatrixfARB := wglGetProcAddress('glMultTransposeMatrixfARB');
  4171. if not Assigned(glMultTransposeMatrixfARB) then Exit;
  4172. glMultTransposeMatrixdARB := wglGetProcAddress('glMultTransposeMatrixdARB');
  4173. if not Assigned(glMultTransposeMatrixdARB) then Exit;
  4174. Result := TRUE;
  4175. end;
  4176. end;
  4177. function Load_GL_ARB_multisample: Boolean;
  4178. var
  4179. extstring: String;
  4180. begin
  4181. Result := FALSE;
  4182. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4183. if glext_ExtensionSupported('GL_ARB_multisample', extstring) then
  4184. begin
  4185. glSampleCoverageARB := wglGetProcAddress('glSampleCoverageARB');
  4186. if not Assigned(glSampleCoverageARB) then Exit;
  4187. Result := TRUE;
  4188. end;
  4189. end;
  4190. function Load_GL_ARB_texture_env_add: Boolean;
  4191. var
  4192. extstring: String;
  4193. begin
  4194. Result := FALSE;
  4195. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4196. if glext_ExtensionSupported('GL_ARB_texture_env_add', extstring) then
  4197. begin
  4198. Result := TRUE;
  4199. end;
  4200. end;
  4201. {$IFDEF Windows}
  4202. function Load_WGL_ARB_extensions_string: Boolean;
  4203. var
  4204. extstring: String;
  4205. begin
  4206. Result := FALSE;
  4207. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  4208. if not Assigned(wglGetExtensionsStringARB) then Exit;
  4209. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  4210. if glext_ExtensionSupported('WGL_ARB_extensions_string', extstring) then
  4211. begin
  4212. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  4213. if not Assigned(wglGetExtensionsStringARB) then Exit;
  4214. Result := TRUE;
  4215. end;
  4216. end;
  4217. function Load_WGL_ARB_buffer_region: Boolean;
  4218. var
  4219. extstring: String;
  4220. begin
  4221. Result := FALSE;
  4222. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  4223. if not Assigned(wglGetExtensionsStringARB) then Exit;
  4224. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  4225. if glext_ExtensionSupported('WGL_ARB_buffer_region', extstring) then
  4226. begin
  4227. wglCreateBufferRegionARB := wglGetProcAddress('wglCreateBufferRegionARB');
  4228. if not Assigned(wglCreateBufferRegionARB) then Exit;
  4229. wglDeleteBufferRegionARB := wglGetProcAddress('wglDeleteBufferRegionARB');
  4230. if not Assigned(wglDeleteBufferRegionARB) then Exit;
  4231. wglSaveBufferRegionARB := wglGetProcAddress('wglSaveBufferRegionARB');
  4232. if not Assigned(wglSaveBufferRegionARB) then Exit;
  4233. wglRestoreBufferRegionARB := wglGetProcAddress('wglRestoreBufferRegionARB');
  4234. if not Assigned(wglRestoreBufferRegionARB) then Exit;
  4235. Result := TRUE;
  4236. end;
  4237. end;
  4238. {$ENDIF}
  4239. function Load_GL_ARB_texture_cube_map: Boolean;
  4240. var
  4241. extstring: String;
  4242. begin
  4243. Result := FALSE;
  4244. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4245. if glext_ExtensionSupported('GL_ARB_texture_cube_map', extstring) then
  4246. begin
  4247. Result := TRUE;
  4248. end;
  4249. end;
  4250. function Load_GL_ARB_depth_texture: Boolean;
  4251. var
  4252. extstring: String;
  4253. begin
  4254. Result := FALSE;
  4255. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4256. if glext_ExtensionSupported('GL_ARB_depth_texture', extstring) then
  4257. begin
  4258. Result := TRUE;
  4259. end;
  4260. end;
  4261. function Load_GL_ARB_point_parameters: Boolean;
  4262. var
  4263. extstring: String;
  4264. begin
  4265. Result := FALSE;
  4266. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4267. if glext_ExtensionSupported('GL_ARB_point_parameters', extstring) then
  4268. begin
  4269. glPointParameterfARB := wglGetProcAddress('glPointParameterfARB');
  4270. if not Assigned(glPointParameterfARB) then Exit;
  4271. glPointParameterfvARB := wglGetProcAddress('glPointParameterfvARB');
  4272. if not Assigned(glPointParameterfvARB) then Exit;
  4273. Result := TRUE;
  4274. end;
  4275. end;
  4276. function Load_GL_ARB_shadow: Boolean;
  4277. var
  4278. extstring: String;
  4279. begin
  4280. Result := FALSE;
  4281. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4282. if glext_ExtensionSupported('GL_ARB_shadow', extstring) then
  4283. begin
  4284. Result := TRUE;
  4285. end;
  4286. end;
  4287. function Load_GL_ARB_shadow_ambient: Boolean;
  4288. var
  4289. extstring: String;
  4290. begin
  4291. Result := FALSE;
  4292. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4293. if glext_ExtensionSupported('GL_ARB_shadow_ambient', extstring) then
  4294. begin
  4295. Result := TRUE;
  4296. end;
  4297. end;
  4298. function Load_GL_ARB_texture_border_clamp: Boolean;
  4299. var
  4300. extstring: String;
  4301. begin
  4302. Result := FALSE;
  4303. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4304. if glext_ExtensionSupported('GL_ARB_texture_border_clamp', extstring) then
  4305. begin
  4306. Result := TRUE;
  4307. end;
  4308. end;
  4309. function Load_GL_ARB_texture_compression: Boolean;
  4310. var
  4311. extstring: String;
  4312. begin
  4313. Result := FALSE;
  4314. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4315. if glext_ExtensionSupported('GL_ARB_texture_compression', extstring) then
  4316. begin
  4317. glCompressedTexImage3DARB := wglGetProcAddress('glCompressedTexImage3DARB');
  4318. if not Assigned(glCompressedTexImage3DARB) then Exit;
  4319. glCompressedTexImage2DARB := wglGetProcAddress('glCompressedTexImage2DARB');
  4320. if not Assigned(glCompressedTexImage2DARB) then Exit;
  4321. glCompressedTexImage1DARB := wglGetProcAddress('glCompressedTexImage1DARB');
  4322. if not Assigned(glCompressedTexImage1DARB) then Exit;
  4323. glCompressedTexSubImage3DARB := wglGetProcAddress('glCompressedTexSubImage3DARB');
  4324. if not Assigned(glCompressedTexSubImage3DARB) then Exit;
  4325. glCompressedTexSubImage2DARB := wglGetProcAddress('glCompressedTexSubImage2DARB');
  4326. if not Assigned(glCompressedTexSubImage2DARB) then Exit;
  4327. glCompressedTexSubImage1DARB := wglGetProcAddress('glCompressedTexSubImage1DARB');
  4328. if not Assigned(glCompressedTexSubImage1DARB) then Exit;
  4329. glGetCompressedTexImageARB := wglGetProcAddress('glGetCompressedTexImageARB');
  4330. if not Assigned(glGetCompressedTexImageARB) then Exit;
  4331. Result := TRUE;
  4332. end;
  4333. end;
  4334. function Load_GL_ARB_texture_env_combine: Boolean;
  4335. var
  4336. extstring: String;
  4337. begin
  4338. Result := FALSE;
  4339. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4340. if glext_ExtensionSupported('GL_ARB_texture_env_combine', extstring) then
  4341. begin
  4342. Result := TRUE;
  4343. end;
  4344. end;
  4345. function Load_GL_ARB_texture_env_crossbar: Boolean;
  4346. var
  4347. extstring: String;
  4348. begin
  4349. Result := FALSE;
  4350. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4351. if glext_ExtensionSupported('GL_ARB_texture_env_crossbar', extstring) then
  4352. begin
  4353. Result := TRUE;
  4354. end;
  4355. end;
  4356. function Load_GL_ARB_texture_env_dot3: Boolean;
  4357. var
  4358. extstring: String;
  4359. begin
  4360. Result := FALSE;
  4361. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4362. if glext_ExtensionSupported('GL_ARB_texture_env_dot3', extstring) then
  4363. begin
  4364. Result := TRUE;
  4365. end;
  4366. end;
  4367. function Load_GL_ARB_texture_mirrored_repeat: Boolean;
  4368. var
  4369. extstring: String;
  4370. begin
  4371. Result := FALSE;
  4372. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4373. if glext_ExtensionSupported('GL_ARB_texture_mirrored_repeat', extstring) then
  4374. begin
  4375. Result := TRUE;
  4376. end;
  4377. end;
  4378. function Load_GL_ARB_vertex_blend: Boolean;
  4379. var
  4380. extstring: String;
  4381. begin
  4382. Result := FALSE;
  4383. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4384. if glext_ExtensionSupported('GL_ARB_vertex_blend', extstring) then
  4385. begin
  4386. glWeightbvARB := wglGetProcAddress('glWeightbvARB');
  4387. if not Assigned(glWeightbvARB) then Exit;
  4388. glWeightsvARB := wglGetProcAddress('glWeightsvARB');
  4389. if not Assigned(glWeightsvARB) then Exit;
  4390. glWeightivARB := wglGetProcAddress('glWeightivARB');
  4391. if not Assigned(glWeightivARB) then Exit;
  4392. glWeightfvARB := wglGetProcAddress('glWeightfvARB');
  4393. if not Assigned(glWeightfvARB) then Exit;
  4394. glWeightdvARB := wglGetProcAddress('glWeightdvARB');
  4395. if not Assigned(glWeightdvARB) then Exit;
  4396. glWeightvARB := wglGetProcAddress('glWeightvARB');
  4397. if not Assigned(glWeightvARB) then Exit;
  4398. glWeightubvARB := wglGetProcAddress('glWeightubvARB');
  4399. if not Assigned(glWeightubvARB) then Exit;
  4400. glWeightusvARB := wglGetProcAddress('glWeightusvARB');
  4401. if not Assigned(glWeightusvARB) then Exit;
  4402. glWeightuivARB := wglGetProcAddress('glWeightuivARB');
  4403. if not Assigned(glWeightuivARB) then Exit;
  4404. glWeightPointerARB := wglGetProcAddress('glWeightPointerARB');
  4405. if not Assigned(glWeightPointerARB) then Exit;
  4406. glVertexBlendARB := wglGetProcAddress('glVertexBlendARB');
  4407. if not Assigned(glVertexBlendARB) then Exit;
  4408. Result := TRUE;
  4409. end;
  4410. end;
  4411. function Load_GL_ARB_vertex_program: Boolean;
  4412. var
  4413. extstring: String;
  4414. begin
  4415. Result := FALSE;
  4416. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4417. if glext_ExtensionSupported('GL_ARB_vertex_program', extstring) then
  4418. begin
  4419. glVertexAttrib1sARB := wglGetProcAddress('glVertexAttrib1sARB');
  4420. if not Assigned(glVertexAttrib1sARB) then Exit;
  4421. glVertexAttrib1fARB := wglGetProcAddress('glVertexAttrib1fARB');
  4422. if not Assigned(glVertexAttrib1fARB) then Exit;
  4423. glVertexAttrib1dARB := wglGetProcAddress('glVertexAttrib1dARB');
  4424. if not Assigned(glVertexAttrib1dARB) then Exit;
  4425. glVertexAttrib2sARB := wglGetProcAddress('glVertexAttrib2sARB');
  4426. if not Assigned(glVertexAttrib2sARB) then Exit;
  4427. glVertexAttrib2fARB := wglGetProcAddress('glVertexAttrib2fARB');
  4428. if not Assigned(glVertexAttrib2fARB) then Exit;
  4429. glVertexAttrib2dARB := wglGetProcAddress('glVertexAttrib2dARB');
  4430. if not Assigned(glVertexAttrib2dARB) then Exit;
  4431. glVertexAttrib3sARB := wglGetProcAddress('glVertexAttrib3sARB');
  4432. if not Assigned(glVertexAttrib3sARB) then Exit;
  4433. glVertexAttrib3fARB := wglGetProcAddress('glVertexAttrib3fARB');
  4434. if not Assigned(glVertexAttrib3fARB) then Exit;
  4435. glVertexAttrib3dARB := wglGetProcAddress('glVertexAttrib3dARB');
  4436. if not Assigned(glVertexAttrib3dARB) then Exit;
  4437. glVertexAttrib4sARB := wglGetProcAddress('glVertexAttrib4sARB');
  4438. if not Assigned(glVertexAttrib4sARB) then Exit;
  4439. glVertexAttrib4fARB := wglGetProcAddress('glVertexAttrib4fARB');
  4440. if not Assigned(glVertexAttrib4fARB) then Exit;
  4441. glVertexAttrib4dARB := wglGetProcAddress('glVertexAttrib4dARB');
  4442. if not Assigned(glVertexAttrib4dARB) then Exit;
  4443. glVertexAttrib4NubARB := wglGetProcAddress('glVertexAttrib4NubARB');
  4444. if not Assigned(glVertexAttrib4NubARB) then Exit;
  4445. glVertexAttrib1svARB := wglGetProcAddress('glVertexAttrib1svARB');
  4446. if not Assigned(glVertexAttrib1svARB) then Exit;
  4447. glVertexAttrib1fvARB := wglGetProcAddress('glVertexAttrib1fvARB');
  4448. if not Assigned(glVertexAttrib1fvARB) then Exit;
  4449. glVertexAttrib1dvARB := wglGetProcAddress('glVertexAttrib1dvARB');
  4450. if not Assigned(glVertexAttrib1dvARB) then Exit;
  4451. glVertexAttrib2svARB := wglGetProcAddress('glVertexAttrib2svARB');
  4452. if not Assigned(glVertexAttrib2svARB) then Exit;
  4453. glVertexAttrib2fvARB := wglGetProcAddress('glVertexAttrib2fvARB');
  4454. if not Assigned(glVertexAttrib2fvARB) then Exit;
  4455. glVertexAttrib2dvARB := wglGetProcAddress('glVertexAttrib2dvARB');
  4456. if not Assigned(glVertexAttrib2dvARB) then Exit;
  4457. glVertexAttrib3svARB := wglGetProcAddress('glVertexAttrib3svARB');
  4458. if not Assigned(glVertexAttrib3svARB) then Exit;
  4459. glVertexAttrib3fvARB := wglGetProcAddress('glVertexAttrib3fvARB');
  4460. if not Assigned(glVertexAttrib3fvARB) then Exit;
  4461. glVertexAttrib3dvARB := wglGetProcAddress('glVertexAttrib3dvARB');
  4462. if not Assigned(glVertexAttrib3dvARB) then Exit;
  4463. glVertexAttrib4bvARB := wglGetProcAddress('glVertexAttrib4bvARB');
  4464. if not Assigned(glVertexAttrib4bvARB) then Exit;
  4465. glVertexAttrib4svARB := wglGetProcAddress('glVertexAttrib4svARB');
  4466. if not Assigned(glVertexAttrib4svARB) then Exit;
  4467. glVertexAttrib4ivARB := wglGetProcAddress('glVertexAttrib4ivARB');
  4468. if not Assigned(glVertexAttrib4ivARB) then Exit;
  4469. glVertexAttrib4ubvARB := wglGetProcAddress('glVertexAttrib4ubvARB');
  4470. if not Assigned(glVertexAttrib4ubvARB) then Exit;
  4471. glVertexAttrib4usvARB := wglGetProcAddress('glVertexAttrib4usvARB');
  4472. if not Assigned(glVertexAttrib4usvARB) then Exit;
  4473. glVertexAttrib4uivARB := wglGetProcAddress('glVertexAttrib4uivARB');
  4474. if not Assigned(glVertexAttrib4uivARB) then Exit;
  4475. glVertexAttrib4fvARB := wglGetProcAddress('glVertexAttrib4fvARB');
  4476. if not Assigned(glVertexAttrib4fvARB) then Exit;
  4477. glVertexAttrib4dvARB := wglGetProcAddress('glVertexAttrib4dvARB');
  4478. if not Assigned(glVertexAttrib4dvARB) then Exit;
  4479. glVertexAttrib4NbvARB := wglGetProcAddress('glVertexAttrib4NbvARB');
  4480. if not Assigned(glVertexAttrib4NbvARB) then Exit;
  4481. glVertexAttrib4NsvARB := wglGetProcAddress('glVertexAttrib4NsvARB');
  4482. if not Assigned(glVertexAttrib4NsvARB) then Exit;
  4483. glVertexAttrib4NivARB := wglGetProcAddress('glVertexAttrib4NivARB');
  4484. if not Assigned(glVertexAttrib4NivARB) then Exit;
  4485. glVertexAttrib4NubvARB := wglGetProcAddress('glVertexAttrib4NubvARB');
  4486. if not Assigned(glVertexAttrib4NubvARB) then Exit;
  4487. glVertexAttrib4NusvARB := wglGetProcAddress('glVertexAttrib4NusvARB');
  4488. if not Assigned(glVertexAttrib4NusvARB) then Exit;
  4489. glVertexAttrib4NuivARB := wglGetProcAddress('glVertexAttrib4NuivARB');
  4490. if not Assigned(glVertexAttrib4NuivARB) then Exit;
  4491. glVertexAttribPointerARB := wglGetProcAddress('glVertexAttribPointerARB');
  4492. if not Assigned(glVertexAttribPointerARB) then Exit;
  4493. glEnableVertexAttribArrayARB := wglGetProcAddress('glEnableVertexAttribArrayARB');
  4494. if not Assigned(glEnableVertexAttribArrayARB) then Exit;
  4495. glDisableVertexAttribArrayARB := wglGetProcAddress('glDisableVertexAttribArrayARB');
  4496. if not Assigned(glDisableVertexAttribArrayARB) then Exit;
  4497. glProgramStringARB := wglGetProcAddress('glProgramStringARB');
  4498. if not Assigned(glProgramStringARB) then Exit;
  4499. glBindProgramARB := wglGetProcAddress('glBindProgramARB');
  4500. if not Assigned(glBindProgramARB) then Exit;
  4501. glDeleteProgramsARB := wglGetProcAddress('glDeleteProgramsARB');
  4502. if not Assigned(glDeleteProgramsARB) then Exit;
  4503. glGenProgramsARB := wglGetProcAddress('glGenProgramsARB');
  4504. if not Assigned(glGenProgramsARB) then Exit;
  4505. glProgramEnvParameter4dARB := wglGetProcAddress('glProgramEnvParameter4dARB');
  4506. if not Assigned(glProgramEnvParameter4dARB) then Exit;
  4507. glProgramEnvParameter4dvARB := wglGetProcAddress('glProgramEnvParameter4dvARB');
  4508. if not Assigned(glProgramEnvParameter4dvARB) then Exit;
  4509. glProgramEnvParameter4fARB := wglGetProcAddress('glProgramEnvParameter4fARB');
  4510. if not Assigned(glProgramEnvParameter4fARB) then Exit;
  4511. glProgramEnvParameter4fvARB := wglGetProcAddress('glProgramEnvParameter4fvARB');
  4512. if not Assigned(glProgramEnvParameter4fvARB) then Exit;
  4513. glProgramLocalParameter4dARB := wglGetProcAddress('glProgramLocalParameter4dARB');
  4514. if not Assigned(glProgramLocalParameter4dARB) then Exit;
  4515. glProgramLocalParameter4dvARB := wglGetProcAddress('glProgramLocalParameter4dvARB');
  4516. if not Assigned(glProgramLocalParameter4dvARB) then Exit;
  4517. glProgramLocalParameter4fARB := wglGetProcAddress('glProgramLocalParameter4fARB');
  4518. if not Assigned(glProgramLocalParameter4fARB) then Exit;
  4519. glProgramLocalParameter4fvARB := wglGetProcAddress('glProgramLocalParameter4fvARB');
  4520. if not Assigned(glProgramLocalParameter4fvARB) then Exit;
  4521. glGetProgramEnvParameterdvARB := wglGetProcAddress('glGetProgramEnvParameterdvARB');
  4522. if not Assigned(glGetProgramEnvParameterdvARB) then Exit;
  4523. glGetProgramEnvParameterfvARB := wglGetProcAddress('glGetProgramEnvParameterfvARB');
  4524. if not Assigned(glGetProgramEnvParameterfvARB) then Exit;
  4525. glGetProgramLocalParameterdvARB := wglGetProcAddress('glGetProgramLocalParameterdvARB');
  4526. if not Assigned(glGetProgramLocalParameterdvARB) then Exit;
  4527. glGetProgramLocalParameterfvARB := wglGetProcAddress('glGetProgramLocalParameterfvARB');
  4528. if not Assigned(glGetProgramLocalParameterfvARB) then Exit;
  4529. glGetProgramivARB := wglGetProcAddress('glGetProgramivARB');
  4530. if not Assigned(glGetProgramivARB) then Exit;
  4531. glGetProgramStringARB := wglGetProcAddress('glGetProgramStringARB');
  4532. if not Assigned(glGetProgramStringARB) then Exit;
  4533. glGetVertexAttribdvARB := wglGetProcAddress('glGetVertexAttribdvARB');
  4534. if not Assigned(glGetVertexAttribdvARB) then Exit;
  4535. glGetVertexAttribfvARB := wglGetProcAddress('glGetVertexAttribfvARB');
  4536. if not Assigned(glGetVertexAttribfvARB) then Exit;
  4537. glGetVertexAttribivARB := wglGetProcAddress('glGetVertexAttribivARB');
  4538. if not Assigned(glGetVertexAttribivARB) then Exit;
  4539. glGetVertexAttribPointervARB := wglGetProcAddress('glGetVertexAttribPointervARB');
  4540. if not Assigned(glGetVertexAttribPointervARB) then Exit;
  4541. glIsProgramARB := wglGetProcAddress('glIsProgramARB');
  4542. if not Assigned(glIsProgramARB) then Exit;
  4543. Result := TRUE;
  4544. end;
  4545. end;
  4546. function Load_GL_ARB_window_pos: Boolean;
  4547. var
  4548. extstring: String;
  4549. begin
  4550. Result := FALSE;
  4551. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4552. if glext_ExtensionSupported('GL_ARB_window_pos', extstring) then
  4553. begin
  4554. glWindowPos2dARB := wglGetProcAddress('glWindowPos2dARB');
  4555. if not Assigned(glWindowPos2dARB) then Exit;
  4556. glWindowPos2fARB := wglGetProcAddress('glWindowPos2fARB');
  4557. if not Assigned(glWindowPos2fARB) then Exit;
  4558. glWindowPos2iARB := wglGetProcAddress('glWindowPos2iARB');
  4559. if not Assigned(glWindowPos2iARB) then Exit;
  4560. glWindowPos2sARB := wglGetProcAddress('glWindowPos2sARB');
  4561. if not Assigned(glWindowPos2sARB) then Exit;
  4562. glWindowPos2dvARB := wglGetProcAddress('glWindowPos2dvARB');
  4563. if not Assigned(glWindowPos2dvARB) then Exit;
  4564. glWindowPos2fvARB := wglGetProcAddress('glWindowPos2fvARB');
  4565. if not Assigned(glWindowPos2fvARB) then Exit;
  4566. glWindowPos2ivARB := wglGetProcAddress('glWindowPos2ivARB');
  4567. if not Assigned(glWindowPos2ivARB) then Exit;
  4568. glWindowPos2svARB := wglGetProcAddress('glWindowPos2svARB');
  4569. if not Assigned(glWindowPos2svARB) then Exit;
  4570. glWindowPos3dARB := wglGetProcAddress('glWindowPos3dARB');
  4571. if not Assigned(glWindowPos3dARB) then Exit;
  4572. glWindowPos3fARB := wglGetProcAddress('glWindowPos3fARB');
  4573. if not Assigned(glWindowPos3fARB) then Exit;
  4574. glWindowPos3iARB := wglGetProcAddress('glWindowPos3iARB');
  4575. if not Assigned(glWindowPos3iARB) then Exit;
  4576. glWindowPos3sARB := wglGetProcAddress('glWindowPos3sARB');
  4577. if not Assigned(glWindowPos3sARB) then Exit;
  4578. glWindowPos3dvARB := wglGetProcAddress('glWindowPos3dvARB');
  4579. if not Assigned(glWindowPos3dvARB) then Exit;
  4580. glWindowPos3fvARB := wglGetProcAddress('glWindowPos3fvARB');
  4581. if not Assigned(glWindowPos3fvARB) then Exit;
  4582. glWindowPos3ivARB := wglGetProcAddress('glWindowPos3ivARB');
  4583. if not Assigned(glWindowPos3ivARB) then Exit;
  4584. glWindowPos3svARB := wglGetProcAddress('glWindowPos3svARB');
  4585. if not Assigned(glWindowPos3svARB) then Exit;
  4586. Result := TRUE;
  4587. end;
  4588. end;
  4589. function Load_GL_EXT_422_pixels: Boolean;
  4590. var
  4591. extstring: String;
  4592. begin
  4593. Result := FALSE;
  4594. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4595. if glext_ExtensionSupported('GL_EXT_422_pixels', extstring) then
  4596. begin
  4597. Result := TRUE;
  4598. end;
  4599. end;
  4600. function Load_GL_EXT_abgr: Boolean;
  4601. var
  4602. extstring: String;
  4603. begin
  4604. Result := FALSE;
  4605. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4606. if glext_ExtensionSupported('GL_EXT_abgr', extstring) then
  4607. begin
  4608. Result := TRUE;
  4609. end;
  4610. end;
  4611. function Load_GL_EXT_bgra: Boolean;
  4612. var
  4613. extstring: String;
  4614. begin
  4615. Result := FALSE;
  4616. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4617. if glext_ExtensionSupported('GL_EXT_bgra', extstring) then
  4618. begin
  4619. Result := TRUE;
  4620. end;
  4621. end;
  4622. function Load_GL_EXT_blend_color: Boolean;
  4623. var
  4624. extstring: String;
  4625. begin
  4626. Result := FALSE;
  4627. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4628. if glext_ExtensionSupported('GL_EXT_blend_color', extstring) then
  4629. begin
  4630. glBlendColorEXT := wglGetProcAddress('glBlendColorEXT');
  4631. if not Assigned(glBlendColorEXT) then Exit;
  4632. Result := TRUE;
  4633. end;
  4634. end;
  4635. function Load_GL_EXT_blend_func_separate: Boolean;
  4636. var
  4637. extstring: String;
  4638. begin
  4639. Result := FALSE;
  4640. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4641. if glext_ExtensionSupported('GL_EXT_blend_func_separate', extstring) then
  4642. begin
  4643. glBlendFuncSeparateEXT := wglGetProcAddress('glBlendFuncSeparateEXT');
  4644. if not Assigned(glBlendFuncSeparateEXT) then Exit;
  4645. Result := TRUE;
  4646. end;
  4647. end;
  4648. function Load_GL_EXT_blend_logic_op: Boolean;
  4649. var
  4650. extstring: String;
  4651. begin
  4652. Result := FALSE;
  4653. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4654. if glext_ExtensionSupported('GL_EXT_blend_logic_op', extstring) then
  4655. begin
  4656. Result := TRUE;
  4657. end;
  4658. end;
  4659. function Load_GL_EXT_blend_minmax: Boolean;
  4660. var
  4661. extstring: String;
  4662. begin
  4663. Result := FALSE;
  4664. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4665. if glext_ExtensionSupported('GL_EXT_blend_minmax', extstring) then
  4666. begin
  4667. glBlendEquationEXT := wglGetProcAddress('glBlendEquationEXT');
  4668. if not Assigned(glBlendEquationEXT) then Exit;
  4669. Result := TRUE;
  4670. end;
  4671. end;
  4672. function Load_GL_EXT_blend_subtract: Boolean;
  4673. var
  4674. extstring: String;
  4675. begin
  4676. Result := FALSE;
  4677. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4678. if glext_ExtensionSupported('GL_EXT_blend_subtract', extstring) then
  4679. begin
  4680. Result := TRUE;
  4681. end;
  4682. end;
  4683. function Load_GL_EXT_clip_volume_hint: Boolean;
  4684. var
  4685. extstring: String;
  4686. begin
  4687. Result := FALSE;
  4688. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4689. if glext_ExtensionSupported('GL_EXT_clip_volume_hint', extstring) then
  4690. begin
  4691. Result := TRUE;
  4692. end;
  4693. end;
  4694. function Load_GL_EXT_color_subtable: Boolean;
  4695. var
  4696. extstring: String;
  4697. begin
  4698. Result := FALSE;
  4699. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4700. if glext_ExtensionSupported('GL_EXT_color_subtable', extstring) then
  4701. begin
  4702. glColorSubTableEXT := wglGetProcAddress('glColorSubTableEXT');
  4703. if not Assigned(glColorSubTableEXT) then Exit;
  4704. glCopyColorSubTableEXT := wglGetProcAddress('glCopyColorSubTableEXT');
  4705. if not Assigned(glCopyColorSubTableEXT) then Exit;
  4706. Result := TRUE;
  4707. end;
  4708. end;
  4709. function Load_GL_EXT_compiled_vertex_array: Boolean;
  4710. var
  4711. extstring: String;
  4712. begin
  4713. Result := FALSE;
  4714. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4715. if glext_ExtensionSupported('GL_EXT_compiled_vertex_array', extstring) then
  4716. begin
  4717. glLockArraysEXT := wglGetProcAddress('glLockArraysEXT');
  4718. if not Assigned(glLockArraysEXT) then Exit;
  4719. glUnlockArraysEXT := wglGetProcAddress('glUnlockArraysEXT');
  4720. if not Assigned(glUnlockArraysEXT) then Exit;
  4721. Result := TRUE;
  4722. end;
  4723. end;
  4724. function Load_GL_EXT_convolution: Boolean;
  4725. var
  4726. extstring: String;
  4727. begin
  4728. Result := FALSE;
  4729. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4730. if glext_ExtensionSupported('GL_EXT_convolution', extstring) then
  4731. begin
  4732. glConvolutionFilter1DEXT := wglGetProcAddress('glConvolutionFilter1DEXT');
  4733. if not Assigned(glConvolutionFilter1DEXT) then Exit;
  4734. glConvolutionFilter2DEXT := wglGetProcAddress('glConvolutionFilter2DEXT');
  4735. if not Assigned(glConvolutionFilter2DEXT) then Exit;
  4736. glCopyConvolutionFilter1DEXT := wglGetProcAddress('glCopyConvolutionFilter1DEXT');
  4737. if not Assigned(glCopyConvolutionFilter1DEXT) then Exit;
  4738. glCopyConvolutionFilter2DEXT := wglGetProcAddress('glCopyConvolutionFilter2DEXT');
  4739. if not Assigned(glCopyConvolutionFilter2DEXT) then Exit;
  4740. glGetConvolutionFilterEXT := wglGetProcAddress('glGetConvolutionFilterEXT');
  4741. if not Assigned(glGetConvolutionFilterEXT) then Exit;
  4742. glSeparableFilter2DEXT := wglGetProcAddress('glSeparableFilter2DEXT');
  4743. if not Assigned(glSeparableFilter2DEXT) then Exit;
  4744. glGetSeparableFilterEXT := wglGetProcAddress('glGetSeparableFilterEXT');
  4745. if not Assigned(glGetSeparableFilterEXT) then Exit;
  4746. glConvolutionParameteriEXT := wglGetProcAddress('glConvolutionParameteriEXT');
  4747. if not Assigned(glConvolutionParameteriEXT) then Exit;
  4748. glConvolutionParameterivEXT := wglGetProcAddress('glConvolutionParameterivEXT');
  4749. if not Assigned(glConvolutionParameterivEXT) then Exit;
  4750. glConvolutionParameterfEXT := wglGetProcAddress('glConvolutionParameterfEXT');
  4751. if not Assigned(glConvolutionParameterfEXT) then Exit;
  4752. glConvolutionParameterfvEXT := wglGetProcAddress('glConvolutionParameterfvEXT');
  4753. if not Assigned(glConvolutionParameterfvEXT) then Exit;
  4754. glGetConvolutionParameterivEXT := wglGetProcAddress('glGetConvolutionParameterivEXT');
  4755. if not Assigned(glGetConvolutionParameterivEXT) then Exit;
  4756. glGetConvolutionParameterfvEXT := wglGetProcAddress('glGetConvolutionParameterfvEXT');
  4757. if not Assigned(glGetConvolutionParameterfvEXT) then Exit;
  4758. Result := TRUE;
  4759. end;
  4760. end;
  4761. function Load_GL_EXT_fog_coord: Boolean;
  4762. var
  4763. extstring: String;
  4764. begin
  4765. Result := FALSE;
  4766. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4767. if glext_ExtensionSupported('GL_EXT_fog_coord', extstring) then
  4768. begin
  4769. glFogCoordfEXfloat := wglGetProcAddress('glFogCoordfEXfloat');
  4770. if not Assigned(glFogCoordfEXfloat) then Exit;
  4771. glFogCoorddEXdouble := wglGetProcAddress('glFogCoorddEXdouble');
  4772. if not Assigned(glFogCoorddEXdouble) then Exit;
  4773. glFogCoordfvEXfloat := wglGetProcAddress('glFogCoordfvEXfloat');
  4774. if not Assigned(glFogCoordfvEXfloat) then Exit;
  4775. glFogCoorddvEXdouble := wglGetProcAddress('glFogCoorddvEXdouble');
  4776. if not Assigned(glFogCoorddvEXdouble) then Exit;
  4777. glFogCoordPointerEXT := wglGetProcAddress('glFogCoordPointerEXT');
  4778. if not Assigned(glFogCoordPointerEXT) then Exit;
  4779. Result := TRUE;
  4780. end;
  4781. end;
  4782. function Load_GL_EXT_histogram: Boolean;
  4783. var
  4784. extstring: String;
  4785. begin
  4786. Result := FALSE;
  4787. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4788. if glext_ExtensionSupported('GL_EXT_histogram', extstring) then
  4789. begin
  4790. glHistogramEXT := wglGetProcAddress('glHistogramEXT');
  4791. if not Assigned(glHistogramEXT) then Exit;
  4792. glResetHistogramEXT := wglGetProcAddress('glResetHistogramEXT');
  4793. if not Assigned(glResetHistogramEXT) then Exit;
  4794. glGetHistogramEXT := wglGetProcAddress('glGetHistogramEXT');
  4795. if not Assigned(glGetHistogramEXT) then Exit;
  4796. glGetHistogramParameterivEXT := wglGetProcAddress('glGetHistogramParameterivEXT');
  4797. if not Assigned(glGetHistogramParameterivEXT) then Exit;
  4798. glGetHistogramParameterfvEXT := wglGetProcAddress('glGetHistogramParameterfvEXT');
  4799. if not Assigned(glGetHistogramParameterfvEXT) then Exit;
  4800. glMinmaxEXT := wglGetProcAddress('glMinmaxEXT');
  4801. if not Assigned(glMinmaxEXT) then Exit;
  4802. glResetMinmaxEXT := wglGetProcAddress('glResetMinmaxEXT');
  4803. if not Assigned(glResetMinmaxEXT) then Exit;
  4804. glGetMinmaxEXT := wglGetProcAddress('glGetMinmaxEXT');
  4805. if not Assigned(glGetMinmaxEXT) then Exit;
  4806. glGetMinmaxParameterivEXT := wglGetProcAddress('glGetMinmaxParameterivEXT');
  4807. if not Assigned(glGetMinmaxParameterivEXT) then Exit;
  4808. glGetMinmaxParameterfvEXT := wglGetProcAddress('glGetMinmaxParameterfvEXT');
  4809. if not Assigned(glGetMinmaxParameterfvEXT) then Exit;
  4810. Result := TRUE;
  4811. end;
  4812. end;
  4813. function Load_GL_EXT_multi_draw_arrays: Boolean;
  4814. var
  4815. extstring: String;
  4816. begin
  4817. Result := FALSE;
  4818. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4819. if glext_ExtensionSupported('GL_EXT_multi_draw_arrays', extstring) then
  4820. begin
  4821. glMultiDrawArraysEXT := wglGetProcAddress('glMultiDrawArraysEXT');
  4822. if not Assigned(glMultiDrawArraysEXT) then Exit;
  4823. glMultiDrawElementsEXT := wglGetProcAddress('glMultiDrawElementsEXT');
  4824. if not Assigned(glMultiDrawElementsEXT) then Exit;
  4825. Result := TRUE;
  4826. end;
  4827. end;
  4828. function Load_GL_EXT_packed_pixels: Boolean;
  4829. var
  4830. extstring: String;
  4831. begin
  4832. Result := FALSE;
  4833. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4834. if glext_ExtensionSupported('GL_EXT_packed_pixels', extstring) then
  4835. begin
  4836. Result := TRUE;
  4837. end;
  4838. end;
  4839. function Load_GL_EXT_paletted_texture: Boolean;
  4840. var
  4841. extstring: String;
  4842. begin
  4843. Result := FALSE;
  4844. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4845. if glext_ExtensionSupported('GL_EXT_paletted_texture', extstring) then
  4846. begin
  4847. glColorTableEXT := wglGetProcAddress('glColorTableEXT');
  4848. if not Assigned(glColorTableEXT) then Exit;
  4849. glColorSubTableEXT := wglGetProcAddress('glColorSubTableEXT');
  4850. if not Assigned(glColorSubTableEXT) then Exit;
  4851. glGetColorTableEXT := wglGetProcAddress('glGetColorTableEXT');
  4852. if not Assigned(glGetColorTableEXT) then Exit;
  4853. glGetColorTableParameterivEXT := wglGetProcAddress('glGetColorTableParameterivEXT');
  4854. if not Assigned(glGetColorTableParameterivEXT) then Exit;
  4855. glGetColorTableParameterfvEXT := wglGetProcAddress('glGetColorTableParameterfvEXT');
  4856. if not Assigned(glGetColorTableParameterfvEXT) then Exit;
  4857. Result := TRUE;
  4858. end;
  4859. end;
  4860. function Load_GL_EXT_point_parameters: Boolean;
  4861. var
  4862. extstring: String;
  4863. begin
  4864. Result := FALSE;
  4865. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4866. if glext_ExtensionSupported('GL_EXT_point_parameters', extstring) then
  4867. begin
  4868. glPointParameterfEXT := wglGetProcAddress('glPointParameterfEXT');
  4869. if not Assigned(glPointParameterfEXT) then Exit;
  4870. glPointParameterfvEXT := wglGetProcAddress('glPointParameterfvEXT');
  4871. if not Assigned(glPointParameterfvEXT) then Exit;
  4872. Result := TRUE;
  4873. end;
  4874. end;
  4875. function Load_GL_EXT_polygon_offset: Boolean;
  4876. var
  4877. extstring: String;
  4878. begin
  4879. Result := FALSE;
  4880. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4881. if glext_ExtensionSupported('GL_EXT_polygon_offset', extstring) then
  4882. begin
  4883. glPolygonOffsetEXT := wglGetProcAddress('glPolygonOffsetEXT');
  4884. if not Assigned(glPolygonOffsetEXT) then Exit;
  4885. Result := TRUE;
  4886. end;
  4887. end;
  4888. function Load_GL_EXT_secondary_color: Boolean;
  4889. var
  4890. extstring: String;
  4891. begin
  4892. Result := FALSE;
  4893. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4894. if glext_ExtensionSupported('GL_EXT_secondary_color', extstring) then
  4895. begin
  4896. glSecondaryColor3bEXT := wglGetProcAddress('glSecondaryColor3bEXT');
  4897. if not Assigned(glSecondaryColor3bEXT) then Exit;
  4898. glSecondaryColor3sEXT := wglGetProcAddress('glSecondaryColor3sEXT');
  4899. if not Assigned(glSecondaryColor3sEXT) then Exit;
  4900. glSecondaryColor3iEXT := wglGetProcAddress('glSecondaryColor3iEXT');
  4901. if not Assigned(glSecondaryColor3iEXT) then Exit;
  4902. glSecondaryColor3fEXT := wglGetProcAddress('glSecondaryColor3fEXT');
  4903. if not Assigned(glSecondaryColor3fEXT) then Exit;
  4904. glSecondaryColor3dEXT := wglGetProcAddress('glSecondaryColor3dEXT');
  4905. if not Assigned(glSecondaryColor3dEXT) then Exit;
  4906. glSecondaryColor3ubEXT := wglGetProcAddress('glSecondaryColor3ubEXT');
  4907. if not Assigned(glSecondaryColor3ubEXT) then Exit;
  4908. glSecondaryColor3usEXT := wglGetProcAddress('glSecondaryColor3usEXT');
  4909. if not Assigned(glSecondaryColor3usEXT) then Exit;
  4910. glSecondaryColor3uiEXT := wglGetProcAddress('glSecondaryColor3uiEXT');
  4911. if not Assigned(glSecondaryColor3uiEXT) then Exit;
  4912. glSecondaryColor3bvEXT := wglGetProcAddress('glSecondaryColor3bvEXT');
  4913. if not Assigned(glSecondaryColor3bvEXT) then Exit;
  4914. glSecondaryColor3svEXT := wglGetProcAddress('glSecondaryColor3svEXT');
  4915. if not Assigned(glSecondaryColor3svEXT) then Exit;
  4916. glSecondaryColor3ivEXT := wglGetProcAddress('glSecondaryColor3ivEXT');
  4917. if not Assigned(glSecondaryColor3ivEXT) then Exit;
  4918. glSecondaryColor3fvEXT := wglGetProcAddress('glSecondaryColor3fvEXT');
  4919. if not Assigned(glSecondaryColor3fvEXT) then Exit;
  4920. glSecondaryColor3dvEXT := wglGetProcAddress('glSecondaryColor3dvEXT');
  4921. if not Assigned(glSecondaryColor3dvEXT) then Exit;
  4922. glSecondaryColor3ubvEXT := wglGetProcAddress('glSecondaryColor3ubvEXT');
  4923. if not Assigned(glSecondaryColor3ubvEXT) then Exit;
  4924. glSecondaryColor3usvEXT := wglGetProcAddress('glSecondaryColor3usvEXT');
  4925. if not Assigned(glSecondaryColor3usvEXT) then Exit;
  4926. glSecondaryColor3uivEXT := wglGetProcAddress('glSecondaryColor3uivEXT');
  4927. if not Assigned(glSecondaryColor3uivEXT) then Exit;
  4928. glSecondaryColorPointerEXT := wglGetProcAddress('glSecondaryColorPointerEXT');
  4929. if not Assigned(glSecondaryColorPointerEXT) then Exit;
  4930. Result := TRUE;
  4931. end;
  4932. end;
  4933. function Load_GL_EXT_separate_specular_color: Boolean;
  4934. var
  4935. extstring: String;
  4936. begin
  4937. Result := FALSE;
  4938. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4939. if glext_ExtensionSupported('GL_EXT_separate_specular_color', extstring) then
  4940. begin
  4941. Result := TRUE;
  4942. end;
  4943. end;
  4944. function Load_GL_EXT_shadow_funcs: Boolean;
  4945. var
  4946. extstring: String;
  4947. begin
  4948. Result := FALSE;
  4949. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4950. if glext_ExtensionSupported('GL_EXT_shadow_funcs', extstring) then
  4951. begin
  4952. Result := TRUE;
  4953. end;
  4954. end;
  4955. function Load_GL_EXT_shared_texture_palette: Boolean;
  4956. var
  4957. extstring: String;
  4958. begin
  4959. Result := FALSE;
  4960. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4961. if glext_ExtensionSupported('GL_EXT_shared_texture_palette', extstring) then
  4962. begin
  4963. Result := TRUE;
  4964. end;
  4965. end;
  4966. function Load_GL_EXT_stencil_two_side: Boolean;
  4967. var
  4968. extstring: String;
  4969. begin
  4970. Result := FALSE;
  4971. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4972. if glext_ExtensionSupported('GL_EXT_stencil_two_side', extstring) then
  4973. begin
  4974. glActiveStencilFaceEXT := wglGetProcAddress('glActiveStencilFaceEXT');
  4975. if not Assigned(glActiveStencilFaceEXT) then Exit;
  4976. Result := TRUE;
  4977. end;
  4978. end;
  4979. function Load_GL_EXT_stencil_wrap: Boolean;
  4980. var
  4981. extstring: String;
  4982. begin
  4983. Result := FALSE;
  4984. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4985. if glext_ExtensionSupported('GL_EXT_stencil_wrap', extstring) then
  4986. begin
  4987. Result := TRUE;
  4988. end;
  4989. end;
  4990. function Load_GL_EXT_subtexture: Boolean;
  4991. var
  4992. extstring: String;
  4993. begin
  4994. Result := FALSE;
  4995. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  4996. if glext_ExtensionSupported('GL_EXT_subtexture', extstring) then
  4997. begin
  4998. glTexSubImage1DEXT := wglGetProcAddress('glTexSubImage1DEXT');
  4999. if not Assigned(glTexSubImage1DEXT) then Exit;
  5000. glTexSubImage2DEXT := wglGetProcAddress('glTexSubImage2DEXT');
  5001. if not Assigned(glTexSubImage2DEXT) then Exit;
  5002. glTexSubImage3DEXT := wglGetProcAddress('glTexSubImage3DEXT');
  5003. if not Assigned(glTexSubImage3DEXT) then Exit;
  5004. Result := TRUE;
  5005. end;
  5006. end;
  5007. function Load_GL_EXT_texture3D: Boolean;
  5008. var
  5009. extstring: String;
  5010. begin
  5011. Result := FALSE;
  5012. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5013. if glext_ExtensionSupported('GL_EXT_texture3D', extstring) then
  5014. begin
  5015. glTexImage3DEXT := wglGetProcAddress('glTexImage3DEXT');
  5016. if not Assigned(glTexImage3DEXT) then Exit;
  5017. Result := TRUE;
  5018. end;
  5019. end;
  5020. function Load_GL_EXT_texture_compression_s3tc: Boolean;
  5021. var
  5022. extstring: String;
  5023. begin
  5024. Result := FALSE;
  5025. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5026. if glext_ExtensionSupported('GL_EXT_texture_compression_s3tc', extstring) then
  5027. begin
  5028. Result := TRUE;
  5029. end;
  5030. end;
  5031. function Load_GL_EXT_texture_env_add: Boolean;
  5032. var
  5033. extstring: String;
  5034. begin
  5035. Result := FALSE;
  5036. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5037. if glext_ExtensionSupported('GL_EXT_texture_env_add', extstring) then
  5038. begin
  5039. Result := TRUE;
  5040. end;
  5041. end;
  5042. function Load_GL_EXT_texture_env_combine: Boolean;
  5043. var
  5044. extstring: String;
  5045. begin
  5046. Result := FALSE;
  5047. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5048. if glext_ExtensionSupported('GL_EXT_texture_env_combine', extstring) then
  5049. begin
  5050. Result := TRUE;
  5051. end;
  5052. end;
  5053. function Load_GL_EXT_texture_env_dot3: Boolean;
  5054. var
  5055. extstring: String;
  5056. begin
  5057. Result := FALSE;
  5058. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5059. if glext_ExtensionSupported('GL_EXT_texture_env_dot3', extstring) then
  5060. begin
  5061. Result := TRUE;
  5062. end;
  5063. end;
  5064. function Load_GL_EXT_texture_filter_anisotropic: Boolean;
  5065. var
  5066. extstring: String;
  5067. begin
  5068. Result := FALSE;
  5069. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5070. if glext_ExtensionSupported('GL_EXT_texture_filter_anisotropic', extstring) then
  5071. begin
  5072. Result := TRUE;
  5073. end;
  5074. end;
  5075. function Load_GL_EXT_texture_lod_bias: Boolean;
  5076. var
  5077. extstring: String;
  5078. begin
  5079. Result := FALSE;
  5080. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5081. if glext_ExtensionSupported('GL_EXT_texture_lod_bias', extstring) then
  5082. begin
  5083. Result := TRUE;
  5084. end;
  5085. end;
  5086. function Load_GL_EXT_texture_object: Boolean;
  5087. var
  5088. extstring: String;
  5089. begin
  5090. Result := FALSE;
  5091. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5092. if glext_ExtensionSupported('GL_EXT_texture_object', extstring) then
  5093. begin
  5094. glGenTexturesEXT := wglGetProcAddress('glGenTexturesEXT');
  5095. if not Assigned(glGenTexturesEXT) then Exit;
  5096. glDeleteTexturesEXT := wglGetProcAddress('glDeleteTexturesEXT');
  5097. if not Assigned(glDeleteTexturesEXT) then Exit;
  5098. glBindTextureEXT := wglGetProcAddress('glBindTextureEXT');
  5099. if not Assigned(glBindTextureEXT) then Exit;
  5100. glPrioritizeTexturesEXT := wglGetProcAddress('glPrioritizeTexturesEXT');
  5101. if not Assigned(glPrioritizeTexturesEXT) then Exit;
  5102. glAreTexturesResidentEXT := wglGetProcAddress('glAreTexturesResidentEXT');
  5103. if not Assigned(glAreTexturesResidentEXT) then Exit;
  5104. glIsTextureEXT := wglGetProcAddress('glIsTextureEXT');
  5105. if not Assigned(glIsTextureEXT) then Exit;
  5106. Result := TRUE;
  5107. end;
  5108. end;
  5109. function Load_GL_EXT_vertex_array: Boolean;
  5110. var
  5111. extstring: String;
  5112. begin
  5113. Result := FALSE;
  5114. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5115. if glext_ExtensionSupported('GL_EXT_vertex_array', extstring) then
  5116. begin
  5117. glArrayElementEXT := wglGetProcAddress('glArrayElementEXT');
  5118. if not Assigned(glArrayElementEXT) then Exit;
  5119. glDrawArraysEXT := wglGetProcAddress('glDrawArraysEXT');
  5120. if not Assigned(glDrawArraysEXT) then Exit;
  5121. glVertexPointerEXT := wglGetProcAddress('glVertexPointerEXT');
  5122. if not Assigned(glVertexPointerEXT) then Exit;
  5123. glNormalPointerEXT := wglGetProcAddress('glNormalPointerEXT');
  5124. if not Assigned(glNormalPointerEXT) then Exit;
  5125. glColorPointerEXT := wglGetProcAddress('glColorPointerEXT');
  5126. if not Assigned(glColorPointerEXT) then Exit;
  5127. glIndexPointerEXT := wglGetProcAddress('glIndexPointerEXT');
  5128. if not Assigned(glIndexPointerEXT) then Exit;
  5129. glTexCoordPointerEXT := wglGetProcAddress('glTexCoordPointerEXT');
  5130. if not Assigned(glTexCoordPointerEXT) then Exit;
  5131. glEdgeFlagPointerEXT := wglGetProcAddress('glEdgeFlagPointerEXT');
  5132. if not Assigned(glEdgeFlagPointerEXT) then Exit;
  5133. glGetPointervEXT := wglGetProcAddress('glGetPointervEXT');
  5134. if not Assigned(glGetPointervEXT) then Exit;
  5135. Result := TRUE;
  5136. end;
  5137. end;
  5138. function Load_GL_EXT_vertex_shader: Boolean;
  5139. var
  5140. extstring: String;
  5141. begin
  5142. Result := FALSE;
  5143. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5144. if glext_ExtensionSupported('GL_EXT_vertex_shader', extstring) then
  5145. begin
  5146. glBeginVertexShaderEXT := wglGetProcAddress('glBeginVertexShaderEXT');
  5147. if not Assigned(glBeginVertexShaderEXT) then Exit;
  5148. glEndVertexShaderEXT := wglGetProcAddress('glEndVertexShaderEXT');
  5149. if not Assigned(glEndVertexShaderEXT) then Exit;
  5150. glBindVertexShaderEXT := wglGetProcAddress('glBindVertexShaderEXT');
  5151. if not Assigned(glBindVertexShaderEXT) then Exit;
  5152. glGenVertexShadersEXT := wglGetProcAddress('glGenVertexShadersEXT');
  5153. if not Assigned(glGenVertexShadersEXT) then Exit;
  5154. glDeleteVertexShaderEXT := wglGetProcAddress('glDeleteVertexShaderEXT');
  5155. if not Assigned(glDeleteVertexShaderEXT) then Exit;
  5156. glShaderOp1EXT := wglGetProcAddress('glShaderOp1EXT');
  5157. if not Assigned(glShaderOp1EXT) then Exit;
  5158. glShaderOp2EXT := wglGetProcAddress('glShaderOp2EXT');
  5159. if not Assigned(glShaderOp2EXT) then Exit;
  5160. glShaderOp3EXT := wglGetProcAddress('glShaderOp3EXT');
  5161. if not Assigned(glShaderOp3EXT) then Exit;
  5162. glSwizzleEXT := wglGetProcAddress('glSwizzleEXT');
  5163. if not Assigned(glSwizzleEXT) then Exit;
  5164. glWriteMaskEXT := wglGetProcAddress('glWriteMaskEXT');
  5165. if not Assigned(glWriteMaskEXT) then Exit;
  5166. glInsertComponentEXT := wglGetProcAddress('glInsertComponentEXT');
  5167. if not Assigned(glInsertComponentEXT) then Exit;
  5168. glExtractComponentEXT := wglGetProcAddress('glExtractComponentEXT');
  5169. if not Assigned(glExtractComponentEXT) then Exit;
  5170. glGenSymbolsEXT := wglGetProcAddress('glGenSymbolsEXT');
  5171. if not Assigned(glGenSymbolsEXT) then Exit;
  5172. glSetInvariantEXT := wglGetProcAddress('glSetInvariantEXT');
  5173. if not Assigned(glSetInvariantEXT) then Exit;
  5174. glSetLocalConstantEXT := wglGetProcAddress('glSetLocalConstantEXT');
  5175. if not Assigned(glSetLocalConstantEXT) then Exit;
  5176. glVariantbvEXT := wglGetProcAddress('glVariantbvEXT');
  5177. if not Assigned(glVariantbvEXT) then Exit;
  5178. glVariantsvEXT := wglGetProcAddress('glVariantsvEXT');
  5179. if not Assigned(glVariantsvEXT) then Exit;
  5180. glVariantivEXT := wglGetProcAddress('glVariantivEXT');
  5181. if not Assigned(glVariantivEXT) then Exit;
  5182. glVariantfvEXT := wglGetProcAddress('glVariantfvEXT');
  5183. if not Assigned(glVariantfvEXT) then Exit;
  5184. glVariantdvEXT := wglGetProcAddress('glVariantdvEXT');
  5185. if not Assigned(glVariantdvEXT) then Exit;
  5186. glVariantubvEXT := wglGetProcAddress('glVariantubvEXT');
  5187. if not Assigned(glVariantubvEXT) then Exit;
  5188. glVariantusvEXT := wglGetProcAddress('glVariantusvEXT');
  5189. if not Assigned(glVariantusvEXT) then Exit;
  5190. glVariantuivEXT := wglGetProcAddress('glVariantuivEXT');
  5191. if not Assigned(glVariantuivEXT) then Exit;
  5192. glVariantPointerEXT := wglGetProcAddress('glVariantPointerEXT');
  5193. if not Assigned(glVariantPointerEXT) then Exit;
  5194. glEnableVariantClientStateEXT := wglGetProcAddress('glEnableVariantClientStateEXT');
  5195. if not Assigned(glEnableVariantClientStateEXT) then Exit;
  5196. glDisableVariantClientStateEXT := wglGetProcAddress('glDisableVariantClientStateEXT');
  5197. if not Assigned(glDisableVariantClientStateEXT) then Exit;
  5198. glBindLightParameterEXT := wglGetProcAddress('glBindLightParameterEXT');
  5199. if not Assigned(glBindLightParameterEXT) then Exit;
  5200. glBindMaterialParameterEXT := wglGetProcAddress('glBindMaterialParameterEXT');
  5201. if not Assigned(glBindMaterialParameterEXT) then Exit;
  5202. glBindTexGenParameterEXT := wglGetProcAddress('glBindTexGenParameterEXT');
  5203. if not Assigned(glBindTexGenParameterEXT) then Exit;
  5204. glBindTextureUnitParameterEXT := wglGetProcAddress('glBindTextureUnitParameterEXT');
  5205. if not Assigned(glBindTextureUnitParameterEXT) then Exit;
  5206. glBindParameterEXT := wglGetProcAddress('glBindParameterEXT');
  5207. if not Assigned(glBindParameterEXT) then Exit;
  5208. glIsVariantEnabledEXT := wglGetProcAddress('glIsVariantEnabledEXT');
  5209. if not Assigned(glIsVariantEnabledEXT) then Exit;
  5210. glGetVariantBooleanvEXT := wglGetProcAddress('glGetVariantBooleanvEXT');
  5211. if not Assigned(glGetVariantBooleanvEXT) then Exit;
  5212. glGetVariantIntegervEXT := wglGetProcAddress('glGetVariantIntegervEXT');
  5213. if not Assigned(glGetVariantIntegervEXT) then Exit;
  5214. glGetVariantFloatvEXT := wglGetProcAddress('glGetVariantFloatvEXT');
  5215. if not Assigned(glGetVariantFloatvEXT) then Exit;
  5216. glGetVariantPointervEXT := wglGetProcAddress('glGetVariantPointervEXT');
  5217. if not Assigned(glGetVariantPointervEXT) then Exit;
  5218. glGetInvariantBooleanvEXT := wglGetProcAddress('glGetInvariantBooleanvEXT');
  5219. if not Assigned(glGetInvariantBooleanvEXT) then Exit;
  5220. glGetInvariantIntegervEXT := wglGetProcAddress('glGetInvariantIntegervEXT');
  5221. if not Assigned(glGetInvariantIntegervEXT) then Exit;
  5222. glGetInvariantFloatvEXT := wglGetProcAddress('glGetInvariantFloatvEXT');
  5223. if not Assigned(glGetInvariantFloatvEXT) then Exit;
  5224. glGetLocalConstantBooleanvEXT := wglGetProcAddress('glGetLocalConstantBooleanvEXT');
  5225. if not Assigned(glGetLocalConstantBooleanvEXT) then Exit;
  5226. glGetLocalConstantIntegervEXT := wglGetProcAddress('glGetLocalConstantIntegervEXT');
  5227. if not Assigned(glGetLocalConstantIntegervEXT) then Exit;
  5228. glGetLocalConstantFloatvEXT := wglGetProcAddress('glGetLocalConstantFloatvEXT');
  5229. if not Assigned(glGetLocalConstantFloatvEXT) then Exit;
  5230. Result := TRUE;
  5231. end;
  5232. end;
  5233. function Load_GL_EXT_vertex_weighting: Boolean;
  5234. var
  5235. extstring: String;
  5236. begin
  5237. Result := FALSE;
  5238. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5239. if glext_ExtensionSupported('GL_EXT_vertex_weighting', extstring) then
  5240. begin
  5241. glVertexWeightfEXT := wglGetProcAddress('glVertexWeightfEXT');
  5242. if not Assigned(glVertexWeightfEXT) then Exit;
  5243. glVertexWeightfvEXT := wglGetProcAddress('glVertexWeightfvEXT');
  5244. if not Assigned(glVertexWeightfvEXT) then Exit;
  5245. glVertexWeightPointerEXT := wglGetProcAddress('glVertexWeightPointerEXT');
  5246. if not Assigned(glVertexWeightPointerEXT) then Exit;
  5247. Result := TRUE;
  5248. end;
  5249. end;
  5250. function Load_GL_HP_occlusion_test: Boolean;
  5251. var
  5252. extstring: String;
  5253. begin
  5254. Result := FALSE;
  5255. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5256. if glext_ExtensionSupported('GL_HP_occlusion_test', extstring) then
  5257. begin
  5258. Result := TRUE;
  5259. end;
  5260. end;
  5261. function Load_GL_NV_blend_square: Boolean;
  5262. var
  5263. extstring: String;
  5264. begin
  5265. Result := FALSE;
  5266. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5267. if glext_ExtensionSupported('GL_NV_blend_square', extstring) then
  5268. begin
  5269. Result := TRUE;
  5270. end;
  5271. end;
  5272. function Load_GL_NV_copy_depth_to_color: Boolean;
  5273. var
  5274. extstring: String;
  5275. begin
  5276. Result := FALSE;
  5277. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5278. if glext_ExtensionSupported('GL_NV_copy_depth_to_color', extstring) then
  5279. begin
  5280. Result := TRUE;
  5281. end;
  5282. end;
  5283. function Load_GL_NV_depth_clamp: Boolean;
  5284. var
  5285. extstring: String;
  5286. begin
  5287. Result := FALSE;
  5288. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5289. if glext_ExtensionSupported('GL_NV_depth_clamp', extstring) then
  5290. begin
  5291. Result := TRUE;
  5292. end;
  5293. end;
  5294. function Load_GL_NV_evaluators: Boolean;
  5295. var
  5296. extstring: String;
  5297. begin
  5298. Result := FALSE;
  5299. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5300. if glext_ExtensionSupported('GL_NV_evaluators', extstring) then
  5301. begin
  5302. glMapControlPointsNV := wglGetProcAddress('glMapControlPointsNV');
  5303. if not Assigned(glMapControlPointsNV) then Exit;
  5304. glMapParameterivNV := wglGetProcAddress('glMapParameterivNV');
  5305. if not Assigned(glMapParameterivNV) then Exit;
  5306. glMapParameterfvNV := wglGetProcAddress('glMapParameterfvNV');
  5307. if not Assigned(glMapParameterfvNV) then Exit;
  5308. glGetMapControlPointsNV := wglGetProcAddress('glGetMapControlPointsNV');
  5309. if not Assigned(glGetMapControlPointsNV) then Exit;
  5310. glGetMapParameterivNV := wglGetProcAddress('glGetMapParameterivNV');
  5311. if not Assigned(glGetMapParameterivNV) then Exit;
  5312. glGetMapParameterfvNV := wglGetProcAddress('glGetMapParameterfvNV');
  5313. if not Assigned(glGetMapParameterfvNV) then Exit;
  5314. glGetMapAttribParameterivNV := wglGetProcAddress('glGetMapAttribParameterivNV');
  5315. if not Assigned(glGetMapAttribParameterivNV) then Exit;
  5316. glGetMapAttribParameterfvNV := wglGetProcAddress('glGetMapAttribParameterfvNV');
  5317. if not Assigned(glGetMapAttribParameterfvNV) then Exit;
  5318. glEvalMapsNV := wglGetProcAddress('glEvalMapsNV');
  5319. if not Assigned(glEvalMapsNV) then Exit;
  5320. Result := TRUE;
  5321. end;
  5322. end;
  5323. function Load_GL_NV_fence: Boolean;
  5324. var
  5325. extstring: String;
  5326. begin
  5327. Result := FALSE;
  5328. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5329. if glext_ExtensionSupported('GL_NV_fence', extstring) then
  5330. begin
  5331. glGenFencesNV := wglGetProcAddress('glGenFencesNV');
  5332. if not Assigned(glGenFencesNV) then Exit;
  5333. glDeleteFencesNV := wglGetProcAddress('glDeleteFencesNV');
  5334. if not Assigned(glDeleteFencesNV) then Exit;
  5335. glSetFenceNV := wglGetProcAddress('glSetFenceNV');
  5336. if not Assigned(glSetFenceNV) then Exit;
  5337. glTestFenceNV := wglGetProcAddress('glTestFenceNV');
  5338. if not Assigned(glTestFenceNV) then Exit;
  5339. glFinishFenceNV := wglGetProcAddress('glFinishFenceNV');
  5340. if not Assigned(glFinishFenceNV) then Exit;
  5341. glIsFenceNV := wglGetProcAddress('glIsFenceNV');
  5342. if not Assigned(glIsFenceNV) then Exit;
  5343. glGetFenceivNV := wglGetProcAddress('glGetFenceivNV');
  5344. if not Assigned(glGetFenceivNV) then Exit;
  5345. Result := TRUE;
  5346. end;
  5347. end;
  5348. function Load_GL_NV_fog_distance: Boolean;
  5349. var
  5350. extstring: String;
  5351. begin
  5352. Result := FALSE;
  5353. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5354. if glext_ExtensionSupported('GL_NV_fog_distance', extstring) then
  5355. begin
  5356. Result := TRUE;
  5357. end;
  5358. end;
  5359. function Load_GL_NV_light_max_exponent: Boolean;
  5360. var
  5361. extstring: String;
  5362. begin
  5363. Result := FALSE;
  5364. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5365. if glext_ExtensionSupported('GL_NV_light_max_exponent', extstring) then
  5366. begin
  5367. Result := TRUE;
  5368. end;
  5369. end;
  5370. function Load_GL_NV_multisample_filter_hint: Boolean;
  5371. var
  5372. extstring: String;
  5373. begin
  5374. Result := FALSE;
  5375. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5376. if glext_ExtensionSupported('GL_NV_multisample_filter_hint', extstring) then
  5377. begin
  5378. Result := TRUE;
  5379. end;
  5380. end;
  5381. function Load_GL_NV_occlusion_query: Boolean;
  5382. var
  5383. extstring: String;
  5384. begin
  5385. Result := FALSE;
  5386. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5387. if glext_ExtensionSupported('GL_NV_occlusion_query', extstring) then
  5388. begin
  5389. glGenOcclusionQueriesNV := wglGetProcAddress('glGenOcclusionQueriesNV');
  5390. if not Assigned(glGenOcclusionQueriesNV) then Exit;
  5391. glDeleteOcclusionQueriesNV := wglGetProcAddress('glDeleteOcclusionQueriesNV');
  5392. if not Assigned(glDeleteOcclusionQueriesNV) then Exit;
  5393. glIsOcclusionQueryNV := wglGetProcAddress('glIsOcclusionQueryNV');
  5394. if not Assigned(glIsOcclusionQueryNV) then Exit;
  5395. glBeginOcclusionQueryNV := wglGetProcAddress('glBeginOcclusionQueryNV');
  5396. if not Assigned(glBeginOcclusionQueryNV) then Exit;
  5397. glEndOcclusionQueryNV := wglGetProcAddress('glEndOcclusionQueryNV');
  5398. if not Assigned(glEndOcclusionQueryNV) then Exit;
  5399. glGetOcclusionQueryivNV := wglGetProcAddress('glGetOcclusionQueryivNV');
  5400. if not Assigned(glGetOcclusionQueryivNV) then Exit;
  5401. glGetOcclusionQueryuivNV := wglGetProcAddress('glGetOcclusionQueryuivNV');
  5402. if not Assigned(glGetOcclusionQueryuivNV) then Exit;
  5403. Result := TRUE;
  5404. end;
  5405. end;
  5406. function Load_GL_NV_packed_depth_stencil: Boolean;
  5407. var
  5408. extstring: String;
  5409. begin
  5410. Result := FALSE;
  5411. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5412. if glext_ExtensionSupported('GL_NV_packed_depth_stencil', extstring) then
  5413. begin
  5414. Result := TRUE;
  5415. end;
  5416. end;
  5417. function Load_GL_NV_point_sprite: Boolean;
  5418. var
  5419. extstring: String;
  5420. begin
  5421. Result := FALSE;
  5422. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5423. if glext_ExtensionSupported('GL_NV_point_sprite', extstring) then
  5424. begin
  5425. glPointParameteriNV := wglGetProcAddress('glPointParameteriNV');
  5426. if not Assigned(glPointParameteriNV) then Exit;
  5427. glPointParameterivNV := wglGetProcAddress('glPointParameterivNV');
  5428. if not Assigned(glPointParameterivNV) then Exit;
  5429. Result := TRUE;
  5430. end;
  5431. end;
  5432. function Load_GL_NV_register_combiners: Boolean;
  5433. var
  5434. extstring: String;
  5435. begin
  5436. Result := FALSE;
  5437. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5438. if glext_ExtensionSupported('GL_NV_register_combiners', extstring) then
  5439. begin
  5440. glCombinerParameterfvNV := wglGetProcAddress('glCombinerParameterfvNV');
  5441. if not Assigned(glCombinerParameterfvNV) then Exit;
  5442. glCombinerParameterivNV := wglGetProcAddress('glCombinerParameterivNV');
  5443. if not Assigned(glCombinerParameterivNV) then Exit;
  5444. glCombinerParameterfNV := wglGetProcAddress('glCombinerParameterfNV');
  5445. if not Assigned(glCombinerParameterfNV) then Exit;
  5446. glCombinerParameteriNV := wglGetProcAddress('glCombinerParameteriNV');
  5447. if not Assigned(glCombinerParameteriNV) then Exit;
  5448. glCombinerInputNV := wglGetProcAddress('glCombinerInputNV');
  5449. if not Assigned(glCombinerInputNV) then Exit;
  5450. glCombinerOutputNV := wglGetProcAddress('glCombinerOutputNV');
  5451. if not Assigned(glCombinerOutputNV) then Exit;
  5452. glFinalCombinerInputNV := wglGetProcAddress('glFinalCombinerInputNV');
  5453. if not Assigned(glFinalCombinerInputNV) then Exit;
  5454. glGetCombinerInputParameterfvNV := wglGetProcAddress('glGetCombinerInputParameterfvNV');
  5455. if not Assigned(glGetCombinerInputParameterfvNV) then Exit;
  5456. glGetCombinerInputParameterivNV := wglGetProcAddress('glGetCombinerInputParameterivNV');
  5457. if not Assigned(glGetCombinerInputParameterivNV) then Exit;
  5458. glGetCombinerOutputParameterfvNV := wglGetProcAddress('glGetCombinerOutputParameterfvNV');
  5459. if not Assigned(glGetCombinerOutputParameterfvNV) then Exit;
  5460. glGetCombinerOutputParameterivNV := wglGetProcAddress('glGetCombinerOutputParameterivNV');
  5461. if not Assigned(glGetCombinerOutputParameterivNV) then Exit;
  5462. glGetFinalCombinerInputParameterfvNV := wglGetProcAddress('glGetFinalCombinerInputParameterfvNV');
  5463. if not Assigned(glGetFinalCombinerInputParameterfvNV) then Exit;
  5464. glGetFinalCombinerInputParameterivNV := wglGetProcAddress('glGetFinalCombinerInputParameterivNV');
  5465. if not Assigned(glGetFinalCombinerInputParameterivNV) then Exit;
  5466. Result := TRUE;
  5467. end;
  5468. end;
  5469. function Load_GL_NV_register_combiners2: Boolean;
  5470. var
  5471. extstring: String;
  5472. begin
  5473. Result := FALSE;
  5474. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5475. if glext_ExtensionSupported('GL_NV_register_combiners2', extstring) then
  5476. begin
  5477. glCombinerStageParameterfvNV := wglGetProcAddress('glCombinerStageParameterfvNV');
  5478. if not Assigned(glCombinerStageParameterfvNV) then Exit;
  5479. glGetCombinerStageParameterfvNV := wglGetProcAddress('glGetCombinerStageParameterfvNV');
  5480. if not Assigned(glGetCombinerStageParameterfvNV) then Exit;
  5481. Result := TRUE;
  5482. end;
  5483. end;
  5484. function Load_GL_NV_texgen_emboss: Boolean;
  5485. var
  5486. extstring: String;
  5487. begin
  5488. Result := FALSE;
  5489. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5490. if glext_ExtensionSupported('GL_NV_texgen_emboss', extstring) then
  5491. begin
  5492. Result := TRUE;
  5493. end;
  5494. end;
  5495. function Load_GL_NV_texgen_reflection: Boolean;
  5496. var
  5497. extstring: String;
  5498. begin
  5499. Result := FALSE;
  5500. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5501. if glext_ExtensionSupported('GL_NV_texgen_reflection', extstring) then
  5502. begin
  5503. Result := TRUE;
  5504. end;
  5505. end;
  5506. function Load_GL_NV_texture_compression_vtc: Boolean;
  5507. var
  5508. extstring: String;
  5509. begin
  5510. Result := FALSE;
  5511. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5512. if glext_ExtensionSupported('GL_NV_texture_compression_vtc', extstring) then
  5513. begin
  5514. Result := TRUE;
  5515. end;
  5516. end;
  5517. function Load_GL_NV_texture_env_combine4: Boolean;
  5518. var
  5519. extstring: String;
  5520. begin
  5521. Result := FALSE;
  5522. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5523. if glext_ExtensionSupported('GL_NV_texture_env_combine4', extstring) then
  5524. begin
  5525. Result := TRUE;
  5526. end;
  5527. end;
  5528. function Load_GL_NV_texture_rectangle: Boolean;
  5529. var
  5530. extstring: String;
  5531. begin
  5532. Result := FALSE;
  5533. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5534. if glext_ExtensionSupported('GL_NV_texture_rectangle', extstring) then
  5535. begin
  5536. Result := TRUE;
  5537. end;
  5538. end;
  5539. function Load_GL_NV_texture_shader: Boolean;
  5540. var
  5541. extstring: String;
  5542. begin
  5543. Result := FALSE;
  5544. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5545. if glext_ExtensionSupported('GL_NV_texture_shader', extstring) then
  5546. begin
  5547. Result := TRUE;
  5548. end;
  5549. end;
  5550. function Load_GL_NV_texture_shader2: Boolean;
  5551. var
  5552. extstring: String;
  5553. begin
  5554. Result := FALSE;
  5555. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5556. if glext_ExtensionSupported('GL_NV_texture_shader2', extstring) then
  5557. begin
  5558. Result := TRUE;
  5559. end;
  5560. end;
  5561. function Load_GL_NV_texture_shader3: Boolean;
  5562. var
  5563. extstring: String;
  5564. begin
  5565. Result := FALSE;
  5566. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5567. if glext_ExtensionSupported('GL_NV_texture_shader3', extstring) then
  5568. begin
  5569. Result := TRUE;
  5570. end;
  5571. end;
  5572. function Load_GL_NV_vertex_array_range: Boolean;
  5573. var
  5574. extstring: String;
  5575. begin
  5576. Result := FALSE;
  5577. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5578. if glext_ExtensionSupported('GL_NV_vertex_array_range', extstring) then
  5579. begin
  5580. glVertexArrayRangeNV := wglGetProcAddress('glVertexArrayRangeNV');
  5581. if not Assigned(glVertexArrayRangeNV) then Exit;
  5582. glFlushVertexArrayRangeNV := wglGetProcAddress('glFlushVertexArrayRangeNV');
  5583. if not Assigned(glFlushVertexArrayRangeNV) then Exit;
  5584. {$IFDEF Windows}
  5585. wglAllocateMemoryNV := wglGetProcAddress('wglAllocateMemoryNV');
  5586. if not Assigned(wglAllocateMemoryNV) then Exit;
  5587. wglFreeMemoryNV := wglGetProcAddress('wglFreeMemoryNV');
  5588. if not Assigned(wglFreeMemoryNV) then Exit;
  5589. {$ENDIF}
  5590. Result := TRUE;
  5591. end;
  5592. end;
  5593. function Load_GL_NV_vertex_array_range2: Boolean;
  5594. var
  5595. extstring: String;
  5596. begin
  5597. Result := FALSE;
  5598. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5599. if glext_ExtensionSupported('GL_NV_vertex_array_range2', extstring) then
  5600. begin
  5601. Result := TRUE;
  5602. end;
  5603. end;
  5604. function Load_GL_NV_vertex_program: Boolean;
  5605. var
  5606. extstring: String;
  5607. begin
  5608. Result := FALSE;
  5609. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5610. if glext_ExtensionSupported('GL_NV_vertex_program', extstring) then
  5611. begin
  5612. glBindProgramNV := wglGetProcAddress('glBindProgramNV');
  5613. if not Assigned(glBindProgramNV) then Exit;
  5614. glDeleteProgramsNV := wglGetProcAddress('glDeleteProgramsNV');
  5615. if not Assigned(glDeleteProgramsNV) then Exit;
  5616. glExecuteProgramNV := wglGetProcAddress('glExecuteProgramNV');
  5617. if not Assigned(glExecuteProgramNV) then Exit;
  5618. glGenProgramsNV := wglGetProcAddress('glGenProgramsNV');
  5619. if not Assigned(glGenProgramsNV) then Exit;
  5620. glAreProgramsResidentNV := wglGetProcAddress('glAreProgramsResidentNV');
  5621. if not Assigned(glAreProgramsResidentNV) then Exit;
  5622. glRequestResidentProgramsNV := wglGetProcAddress('glRequestResidentProgramsNV');
  5623. if not Assigned(glRequestResidentProgramsNV) then Exit;
  5624. glGetProgramParameterfvNV := wglGetProcAddress('glGetProgramParameterfvNV');
  5625. if not Assigned(glGetProgramParameterfvNV) then Exit;
  5626. glGetProgramParameterdvNV := wglGetProcAddress('glGetProgramParameterdvNV');
  5627. if not Assigned(glGetProgramParameterdvNV) then Exit;
  5628. glGetProgramivNV := wglGetProcAddress('glGetProgramivNV');
  5629. if not Assigned(glGetProgramivNV) then Exit;
  5630. glGetProgramStringNV := wglGetProcAddress('glGetProgramStringNV');
  5631. if not Assigned(glGetProgramStringNV) then Exit;
  5632. glGetTrackMatrixivNV := wglGetProcAddress('glGetTrackMatrixivNV');
  5633. if not Assigned(glGetTrackMatrixivNV) then Exit;
  5634. glGetVertexAttribdvNV := wglGetProcAddress('glGetVertexAttribdvNV');
  5635. if not Assigned(glGetVertexAttribdvNV) then Exit;
  5636. glGetVertexAttribfvNV := wglGetProcAddress('glGetVertexAttribfvNV');
  5637. if not Assigned(glGetVertexAttribfvNV) then Exit;
  5638. glGetVertexAttribivNV := wglGetProcAddress('glGetVertexAttribivNV');
  5639. if not Assigned(glGetVertexAttribivNV) then Exit;
  5640. glGetVertexAttribPointervNV := wglGetProcAddress('glGetVertexAttribPointervNV');
  5641. if not Assigned(glGetVertexAttribPointervNV) then Exit;
  5642. glIsProgramNV := wglGetProcAddress('glIsProgramNV');
  5643. if not Assigned(glIsProgramNV) then Exit;
  5644. glLoadProgramNV := wglGetProcAddress('glLoadProgramNV');
  5645. if not Assigned(glLoadProgramNV) then Exit;
  5646. glProgramParameter4fNV := wglGetProcAddress('glProgramParameter4fNV');
  5647. if not Assigned(glProgramParameter4fNV) then Exit;
  5648. glProgramParameter4fvNV := wglGetProcAddress('glProgramParameter4fvNV');
  5649. if not Assigned(glProgramParameter4fvNV) then Exit;
  5650. glProgramParameters4dvNV := wglGetProcAddress('glProgramParameters4dvNV');
  5651. if not Assigned(glProgramParameters4dvNV) then Exit;
  5652. glProgramParameters4fvNV := wglGetProcAddress('glProgramParameters4fvNV');
  5653. if not Assigned(glProgramParameters4fvNV) then Exit;
  5654. glTrackMatrixNV := wglGetProcAddress('glTrackMatrixNV');
  5655. if not Assigned(glTrackMatrixNV) then Exit;
  5656. glVertexAttribPointerNV := wglGetProcAddress('glVertexAttribPointerNV');
  5657. if not Assigned(glVertexAttribPointerNV) then Exit;
  5658. glVertexAttrib1sNV := wglGetProcAddress('glVertexAttrib1sNV');
  5659. if not Assigned(glVertexAttrib1sNV) then Exit;
  5660. glVertexAttrib1fNV := wglGetProcAddress('glVertexAttrib1fNV');
  5661. if not Assigned(glVertexAttrib1fNV) then Exit;
  5662. glVertexAttrib1dNV := wglGetProcAddress('glVertexAttrib1dNV');
  5663. if not Assigned(glVertexAttrib1dNV) then Exit;
  5664. glVertexAttrib2sNV := wglGetProcAddress('glVertexAttrib2sNV');
  5665. if not Assigned(glVertexAttrib2sNV) then Exit;
  5666. glVertexAttrib2fNV := wglGetProcAddress('glVertexAttrib2fNV');
  5667. if not Assigned(glVertexAttrib2fNV) then Exit;
  5668. glVertexAttrib2dNV := wglGetProcAddress('glVertexAttrib2dNV');
  5669. if not Assigned(glVertexAttrib2dNV) then Exit;
  5670. glVertexAttrib3sNV := wglGetProcAddress('glVertexAttrib3sNV');
  5671. if not Assigned(glVertexAttrib3sNV) then Exit;
  5672. glVertexAttrib3fNV := wglGetProcAddress('glVertexAttrib3fNV');
  5673. if not Assigned(glVertexAttrib3fNV) then Exit;
  5674. glVertexAttrib3dNV := wglGetProcAddress('glVertexAttrib3dNV');
  5675. if not Assigned(glVertexAttrib3dNV) then Exit;
  5676. glVertexAttrib4sNV := wglGetProcAddress('glVertexAttrib4sNV');
  5677. if not Assigned(glVertexAttrib4sNV) then Exit;
  5678. glVertexAttrib4fNV := wglGetProcAddress('glVertexAttrib4fNV');
  5679. if not Assigned(glVertexAttrib4fNV) then Exit;
  5680. glVertexAttrib4dNV := wglGetProcAddress('glVertexAttrib4dNV');
  5681. if not Assigned(glVertexAttrib4dNV) then Exit;
  5682. glVertexAttrib4ubNV := wglGetProcAddress('glVertexAttrib4ubNV');
  5683. if not Assigned(glVertexAttrib4ubNV) then Exit;
  5684. glVertexAttrib1svNV := wglGetProcAddress('glVertexAttrib1svNV');
  5685. if not Assigned(glVertexAttrib1svNV) then Exit;
  5686. glVertexAttrib1fvNV := wglGetProcAddress('glVertexAttrib1fvNV');
  5687. if not Assigned(glVertexAttrib1fvNV) then Exit;
  5688. glVertexAttrib1dvNV := wglGetProcAddress('glVertexAttrib1dvNV');
  5689. if not Assigned(glVertexAttrib1dvNV) then Exit;
  5690. glVertexAttrib2svNV := wglGetProcAddress('glVertexAttrib2svNV');
  5691. if not Assigned(glVertexAttrib2svNV) then Exit;
  5692. glVertexAttrib2fvNV := wglGetProcAddress('glVertexAttrib2fvNV');
  5693. if not Assigned(glVertexAttrib2fvNV) then Exit;
  5694. glVertexAttrib2dvNV := wglGetProcAddress('glVertexAttrib2dvNV');
  5695. if not Assigned(glVertexAttrib2dvNV) then Exit;
  5696. glVertexAttrib3svNV := wglGetProcAddress('glVertexAttrib3svNV');
  5697. if not Assigned(glVertexAttrib3svNV) then Exit;
  5698. glVertexAttrib3fvNV := wglGetProcAddress('glVertexAttrib3fvNV');
  5699. if not Assigned(glVertexAttrib3fvNV) then Exit;
  5700. glVertexAttrib3dvNV := wglGetProcAddress('glVertexAttrib3dvNV');
  5701. if not Assigned(glVertexAttrib3dvNV) then Exit;
  5702. glVertexAttrib4svNV := wglGetProcAddress('glVertexAttrib4svNV');
  5703. if not Assigned(glVertexAttrib4svNV) then Exit;
  5704. glVertexAttrib4fvNV := wglGetProcAddress('glVertexAttrib4fvNV');
  5705. if not Assigned(glVertexAttrib4fvNV) then Exit;
  5706. glVertexAttrib4dvNV := wglGetProcAddress('glVertexAttrib4dvNV');
  5707. if not Assigned(glVertexAttrib4dvNV) then Exit;
  5708. glVertexAttrib4ubvNV := wglGetProcAddress('glVertexAttrib4ubvNV');
  5709. if not Assigned(glVertexAttrib4ubvNV) then Exit;
  5710. glVertexAttribs1svNV := wglGetProcAddress('glVertexAttribs1svNV');
  5711. if not Assigned(glVertexAttribs1svNV) then Exit;
  5712. glVertexAttribs1fvNV := wglGetProcAddress('glVertexAttribs1fvNV');
  5713. if not Assigned(glVertexAttribs1fvNV) then Exit;
  5714. glVertexAttribs1dvNV := wglGetProcAddress('glVertexAttribs1dvNV');
  5715. if not Assigned(glVertexAttribs1dvNV) then Exit;
  5716. glVertexAttribs2svNV := wglGetProcAddress('glVertexAttribs2svNV');
  5717. if not Assigned(glVertexAttribs2svNV) then Exit;
  5718. glVertexAttribs2fvNV := wglGetProcAddress('glVertexAttribs2fvNV');
  5719. if not Assigned(glVertexAttribs2fvNV) then Exit;
  5720. glVertexAttribs2dvNV := wglGetProcAddress('glVertexAttribs2dvNV');
  5721. if not Assigned(glVertexAttribs2dvNV) then Exit;
  5722. glVertexAttribs3svNV := wglGetProcAddress('glVertexAttribs3svNV');
  5723. if not Assigned(glVertexAttribs3svNV) then Exit;
  5724. glVertexAttribs3fvNV := wglGetProcAddress('glVertexAttribs3fvNV');
  5725. if not Assigned(glVertexAttribs3fvNV) then Exit;
  5726. glVertexAttribs3dvNV := wglGetProcAddress('glVertexAttribs3dvNV');
  5727. if not Assigned(glVertexAttribs3dvNV) then Exit;
  5728. glVertexAttribs4svNV := wglGetProcAddress('glVertexAttribs4svNV');
  5729. if not Assigned(glVertexAttribs4svNV) then Exit;
  5730. glVertexAttribs4fvNV := wglGetProcAddress('glVertexAttribs4fvNV');
  5731. if not Assigned(glVertexAttribs4fvNV) then Exit;
  5732. glVertexAttribs4dvNV := wglGetProcAddress('glVertexAttribs4dvNV');
  5733. if not Assigned(glVertexAttribs4dvNV) then Exit;
  5734. glVertexAttribs4ubvNV := wglGetProcAddress('glVertexAttribs4ubvNV');
  5735. if not Assigned(glVertexAttribs4ubvNV) then Exit;
  5736. Result := TRUE;
  5737. end;
  5738. end;
  5739. function Load_GL_NV_vertex_program1_1: Boolean;
  5740. var
  5741. extstring: String;
  5742. begin
  5743. Result := FALSE;
  5744. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5745. if glext_ExtensionSupported('GL_NV_vertex_program1_1', extstring) then
  5746. begin
  5747. Result := TRUE;
  5748. end;
  5749. end;
  5750. function Load_GL_ATI_element_array: Boolean;
  5751. var
  5752. extstring: String;
  5753. begin
  5754. Result := FALSE;
  5755. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5756. if glext_ExtensionSupported('GL_ATI_element_array', extstring) then
  5757. begin
  5758. glElementPointerATI := wglGetProcAddress('glElementPointerATI');
  5759. if not Assigned(glElementPointerATI) then Exit;
  5760. glDrawElementArrayATI := wglGetProcAddress('glDrawElementArrayATI');
  5761. if not Assigned(glDrawElementArrayATI) then Exit;
  5762. glDrawRangeElementArrayATI := wglGetProcAddress('glDrawRangeElementArrayATI');
  5763. if not Assigned(glDrawRangeElementArrayATI) then Exit;
  5764. Result := TRUE;
  5765. end;
  5766. end;
  5767. function Load_GL_ATI_envmap_bumpmap: Boolean;
  5768. var
  5769. extstring: String;
  5770. begin
  5771. Result := FALSE;
  5772. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5773. if glext_ExtensionSupported('GL_ATI_envmap_bumpmap', extstring) then
  5774. begin
  5775. glTexBumpParameterivATI := wglGetProcAddress('glTexBumpParameterivATI');
  5776. if not Assigned(glTexBumpParameterivATI) then Exit;
  5777. glTexBumpParameterfvATI := wglGetProcAddress('glTexBumpParameterfvATI');
  5778. if not Assigned(glTexBumpParameterfvATI) then Exit;
  5779. glGetTexBumpParameterivATI := wglGetProcAddress('glGetTexBumpParameterivATI');
  5780. if not Assigned(glGetTexBumpParameterivATI) then Exit;
  5781. glGetTexBumpParameterfvATI := wglGetProcAddress('glGetTexBumpParameterfvATI');
  5782. if not Assigned(glGetTexBumpParameterfvATI) then Exit;
  5783. Result := TRUE;
  5784. end;
  5785. end;
  5786. function Load_GL_ATI_fragment_shader: Boolean;
  5787. var
  5788. extstring: String;
  5789. begin
  5790. Result := FALSE;
  5791. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5792. if glext_ExtensionSupported('GL_ATI_fragment_shader', extstring) then
  5793. begin
  5794. glGenFragmentShadersATI := wglGetProcAddress('glGenFragmentShadersATI');
  5795. if not Assigned(glGenFragmentShadersATI) then Exit;
  5796. glBindFragmentShaderATI := wglGetProcAddress('glBindFragmentShaderATI');
  5797. if not Assigned(glBindFragmentShaderATI) then Exit;
  5798. glDeleteFragmentShaderATI := wglGetProcAddress('glDeleteFragmentShaderATI');
  5799. if not Assigned(glDeleteFragmentShaderATI) then Exit;
  5800. glBeginFragmentShaderATI := wglGetProcAddress('glBeginFragmentShaderATI');
  5801. if not Assigned(glBeginFragmentShaderATI) then Exit;
  5802. glEndFragmentShaderATI := wglGetProcAddress('glEndFragmentShaderATI');
  5803. if not Assigned(glEndFragmentShaderATI) then Exit;
  5804. glPassTexCoordATI := wglGetProcAddress('glPassTexCoordATI');
  5805. if not Assigned(glPassTexCoordATI) then Exit;
  5806. glSampleMapATI := wglGetProcAddress('glSampleMapATI');
  5807. if not Assigned(glSampleMapATI) then Exit;
  5808. glColorFragmentOp1ATI := wglGetProcAddress('glColorFragmentOp1ATI');
  5809. if not Assigned(glColorFragmentOp1ATI) then Exit;
  5810. glColorFragmentOp2ATI := wglGetProcAddress('glColorFragmentOp2ATI');
  5811. if not Assigned(glColorFragmentOp2ATI) then Exit;
  5812. glColorFragmentOp3ATI := wglGetProcAddress('glColorFragmentOp3ATI');
  5813. if not Assigned(glColorFragmentOp3ATI) then Exit;
  5814. glAlphaFragmentOp1ATI := wglGetProcAddress('glAlphaFragmentOp1ATI');
  5815. if not Assigned(glAlphaFragmentOp1ATI) then Exit;
  5816. glAlphaFragmentOp2ATI := wglGetProcAddress('glAlphaFragmentOp2ATI');
  5817. if not Assigned(glAlphaFragmentOp2ATI) then Exit;
  5818. glAlphaFragmentOp3ATI := wglGetProcAddress('glAlphaFragmentOp3ATI');
  5819. if not Assigned(glAlphaFragmentOp3ATI) then Exit;
  5820. glSetFragmentShaderConstantATI := wglGetProcAddress('glSetFragmentShaderConstantATI');
  5821. if not Assigned(glSetFragmentShaderConstantATI) then Exit;
  5822. Result := TRUE;
  5823. end;
  5824. end;
  5825. function Load_GL_ATI_pn_triangles: Boolean;
  5826. var
  5827. extstring: String;
  5828. begin
  5829. Result := FALSE;
  5830. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5831. if glext_ExtensionSupported('GL_ATI_pn_triangles', extstring) then
  5832. begin
  5833. glPNTrianglesiATI := wglGetProcAddress('glPNTrianglesiATI');
  5834. if not Assigned(glPNTrianglesiATI) then Exit;
  5835. glPNTrianglesfATI := wglGetProcAddress('glPNTrianglesfATI');
  5836. if not Assigned(glPNTrianglesfATI) then Exit;
  5837. Result := TRUE;
  5838. end;
  5839. end;
  5840. function Load_GL_ATI_texture_mirror_once: Boolean;
  5841. var
  5842. extstring: String;
  5843. begin
  5844. Result := FALSE;
  5845. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5846. if glext_ExtensionSupported('GL_ATI_texture_mirror_once', extstring) then
  5847. begin
  5848. Result := TRUE;
  5849. end;
  5850. end;
  5851. function Load_GL_ATI_vertex_array_object: Boolean;
  5852. var
  5853. extstring: String;
  5854. begin
  5855. Result := FALSE;
  5856. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5857. if glext_ExtensionSupported('GL_ATI_vertex_array_object', extstring) then
  5858. begin
  5859. glNewObjectBufferATI := wglGetProcAddress('glNewObjectBufferATI');
  5860. if not Assigned(glNewObjectBufferATI) then Exit;
  5861. glIsObjectBufferATI := wglGetProcAddress('glIsObjectBufferATI');
  5862. if not Assigned(glIsObjectBufferATI) then Exit;
  5863. glUpdateObjectBufferATI := wglGetProcAddress('glUpdateObjectBufferATI');
  5864. if not Assigned(glUpdateObjectBufferATI) then Exit;
  5865. glGetObjectBufferfvATI := wglGetProcAddress('glGetObjectBufferfvATI');
  5866. if not Assigned(glGetObjectBufferfvATI) then Exit;
  5867. glGetObjectBufferivATI := wglGetProcAddress('glGetObjectBufferivATI');
  5868. if not Assigned(glGetObjectBufferivATI) then Exit;
  5869. glDeleteObjectBufferATI := wglGetProcAddress('glDeleteObjectBufferATI');
  5870. if not Assigned(glDeleteObjectBufferATI) then Exit;
  5871. glArrayObjectATI := wglGetProcAddress('glArrayObjectATI');
  5872. if not Assigned(glArrayObjectATI) then Exit;
  5873. glGetArrayObjectfvATI := wglGetProcAddress('glGetArrayObjectfvATI');
  5874. if not Assigned(glGetArrayObjectfvATI) then Exit;
  5875. glGetArrayObjectivATI := wglGetProcAddress('glGetArrayObjectivATI');
  5876. if not Assigned(glGetArrayObjectivATI) then Exit;
  5877. glVariantArrayObjectATI := wglGetProcAddress('glVariantArrayObjectATI');
  5878. if not Assigned(glVariantArrayObjectATI) then Exit;
  5879. glGetVariantArrayObjectfvATI := wglGetProcAddress('glGetVariantArrayObjectfvATI');
  5880. if not Assigned(glGetVariantArrayObjectfvATI) then Exit;
  5881. glGetVariantArrayObjectivATI := wglGetProcAddress('glGetVariantArrayObjectivATI');
  5882. if not Assigned(glGetVariantArrayObjectivATI) then Exit;
  5883. Result := TRUE;
  5884. end;
  5885. end;
  5886. function Load_GL_ATI_vertex_streams: Boolean;
  5887. var
  5888. extstring: String;
  5889. begin
  5890. Result := FALSE;
  5891. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  5892. if glext_ExtensionSupported('GL_ATI_vertex_streams', extstring) then
  5893. begin
  5894. glVertexStream1s := wglGetProcAddress('glVertexStream1s');
  5895. if not Assigned(glVertexStream1s) then Exit;
  5896. glVertexStream1i := wglGetProcAddress('glVertexStream1i');
  5897. if not Assigned(glVertexStream1i) then Exit;
  5898. glVertexStream1f := wglGetProcAddress('glVertexStream1f');
  5899. if not Assigned(glVertexStream1f) then Exit;
  5900. glVertexStream1d := wglGetProcAddress('glVertexStream1d');
  5901. if not Assigned(glVertexStream1d) then Exit;
  5902. glVertexStream1sv := wglGetProcAddress('glVertexStream1sv');
  5903. if not Assigned(glVertexStream1sv) then Exit;
  5904. glVertexStream1iv := wglGetProcAddress('glVertexStream1iv');
  5905. if not Assigned(glVertexStream1iv) then Exit;
  5906. glVertexStream1fv := wglGetProcAddress('glVertexStream1fv');
  5907. if not Assigned(glVertexStream1fv) then Exit;
  5908. glVertexStream1dv := wglGetProcAddress('glVertexStream1dv');
  5909. if not Assigned(glVertexStream1dv) then Exit;
  5910. glVertexStream2s := wglGetProcAddress('glVertexStream2s');
  5911. if not Assigned(glVertexStream2s) then Exit;
  5912. glVertexStream2i := wglGetProcAddress('glVertexStream2i');
  5913. if not Assigned(glVertexStream2i) then Exit;
  5914. glVertexStream2f := wglGetProcAddress('glVertexStream2f');
  5915. if not Assigned(glVertexStream2f) then Exit;
  5916. glVertexStream2d := wglGetProcAddress('glVertexStream2d');
  5917. if not Assigned(glVertexStream2d) then Exit;
  5918. glVertexStream2sv := wglGetProcAddress('glVertexStream2sv');
  5919. if not Assigned(glVertexStream2sv) then Exit;
  5920. glVertexStream2iv := wglGetProcAddress('glVertexStream2iv');
  5921. if not Assigned(glVertexStream2iv) then Exit;
  5922. glVertexStream2fv := wglGetProcAddress('glVertexStream2fv');
  5923. if not Assigned(glVertexStream2fv) then Exit;
  5924. glVertexStream2dv := wglGetProcAddress('glVertexStream2dv');
  5925. if not Assigned(glVertexStream2dv) then Exit;
  5926. glVertexStream3s := wglGetProcAddress('glVertexStream3s');
  5927. if not Assigned(glVertexStream3s) then Exit;
  5928. glVertexStream3i := wglGetProcAddress('glVertexStream3i');
  5929. if not Assigned(glVertexStream3i) then Exit;
  5930. glVertexStream3f := wglGetProcAddress('glVertexStream3f');
  5931. if not Assigned(glVertexStream3f) then Exit;
  5932. glVertexStream3d := wglGetProcAddress('glVertexStream3d');
  5933. if not Assigned(glVertexStream3d) then Exit;
  5934. glVertexStream3sv := wglGetProcAddress('glVertexStream3sv');
  5935. if not Assigned(glVertexStream3sv) then Exit;
  5936. glVertexStream3iv := wglGetProcAddress('glVertexStream3iv');
  5937. if not Assigned(glVertexStream3iv) then Exit;
  5938. glVertexStream3fv := wglGetProcAddress('glVertexStream3fv');
  5939. if not Assigned(glVertexStream3fv) then Exit;
  5940. glVertexStream3dv := wglGetProcAddress('glVertexStream3dv');
  5941. if not Assigned(glVertexStream3dv) then Exit;
  5942. glVertexStream4s := wglGetProcAddress('glVertexStream4s');
  5943. if not Assigned(glVertexStream4s) then Exit;
  5944. glVertexStream4i := wglGetProcAddress('glVertexStream4i');
  5945. if not Assigned(glVertexStream4i) then Exit;
  5946. glVertexStream4f := wglGetProcAddress('glVertexStream4f');
  5947. if not Assigned(glVertexStream4f) then Exit;
  5948. glVertexStream4d := wglGetProcAddress('glVertexStream4d');
  5949. if not Assigned(glVertexStream4d) then Exit;
  5950. glVertexStream4sv := wglGetProcAddress('glVertexStream4sv');
  5951. if not Assigned(glVertexStream4sv) then Exit;
  5952. glVertexStream4iv := wglGetProcAddress('glVertexStream4iv');
  5953. if not Assigned(glVertexStream4iv) then Exit;
  5954. glVertexStream4fv := wglGetProcAddress('glVertexStream4fv');
  5955. if not Assigned(glVertexStream4fv) then Exit;
  5956. glVertexStream4dv := wglGetProcAddress('glVertexStream4dv');
  5957. if not Assigned(glVertexStream4dv) then Exit;
  5958. glNormalStream3b := wglGetProcAddress('glNormalStream3b');
  5959. if not Assigned(glNormalStream3b) then Exit;
  5960. glNormalStream3s := wglGetProcAddress('glNormalStream3s');
  5961. if not Assigned(glNormalStream3s) then Exit;
  5962. glNormalStream3i := wglGetProcAddress('glNormalStream3i');
  5963. if not Assigned(glNormalStream3i) then Exit;
  5964. glNormalStream3f := wglGetProcAddress('glNormalStream3f');
  5965. if not Assigned(glNormalStream3f) then Exit;
  5966. glNormalStream3d := wglGetProcAddress('glNormalStream3d');
  5967. if not Assigned(glNormalStream3d) then Exit;
  5968. glNormalStream3bv := wglGetProcAddress('glNormalStream3bv');
  5969. if not Assigned(glNormalStream3bv) then Exit;
  5970. glNormalStream3sv := wglGetProcAddress('glNormalStream3sv');
  5971. if not Assigned(glNormalStream3sv) then Exit;
  5972. glNormalStream3iv := wglGetProcAddress('glNormalStream3iv');
  5973. if not Assigned(glNormalStream3iv) then Exit;
  5974. glNormalStream3fv := wglGetProcAddress('glNormalStream3fv');
  5975. if not Assigned(glNormalStream3fv) then Exit;
  5976. glNormalStream3dv := wglGetProcAddress('glNormalStream3dv');
  5977. if not Assigned(glNormalStream3dv) then Exit;
  5978. glClientActiveVertexStream := wglGetProcAddress('glClientActiveVertexStream');
  5979. if not Assigned(glClientActiveVertexStream) then Exit;
  5980. glVertexBlendEnvi := wglGetProcAddress('glVertexBlendEnvi');
  5981. if not Assigned(glVertexBlendEnvi) then Exit;
  5982. glVertexBlendEnvf := wglGetProcAddress('glVertexBlendEnvf');
  5983. if not Assigned(glVertexBlendEnvf) then Exit;
  5984. Result := TRUE;
  5985. end;
  5986. end;
  5987. {$IFDEF Windows}
  5988. function Load_WGL_I3D_image_buffer: Boolean;
  5989. var
  5990. extstring: String;
  5991. begin
  5992. Result := FALSE;
  5993. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  5994. if not Assigned(wglGetExtensionsStringARB) then Exit;
  5995. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  5996. if glext_ExtensionSupported('WGL_I3D_image_buffer', extstring) then
  5997. begin
  5998. wglCreateImageBufferI3D := wglGetProcAddress('wglCreateImageBufferI3D');
  5999. if not Assigned(wglCreateImageBufferI3D) then Exit;
  6000. wglDestroyImageBufferI3D := wglGetProcAddress('wglDestroyImageBufferI3D');
  6001. if not Assigned(wglDestroyImageBufferI3D) then Exit;
  6002. wglAssociateImageBufferEventsI3D := wglGetProcAddress('wglAssociateImageBufferEventsI3D');
  6003. if not Assigned(wglAssociateImageBufferEventsI3D) then Exit;
  6004. wglReleaseImageBufferEventsI3D := wglGetProcAddress('wglReleaseImageBufferEventsI3D');
  6005. if not Assigned(wglReleaseImageBufferEventsI3D) then Exit;
  6006. Result := TRUE;
  6007. end;
  6008. end;
  6009. function Load_WGL_I3D_swap_frame_lock: Boolean;
  6010. var
  6011. extstring: String;
  6012. begin
  6013. Result := FALSE;
  6014. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6015. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6016. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6017. if glext_ExtensionSupported('WGL_I3D_swap_frame_lock', extstring) then
  6018. begin
  6019. wglEnableFrameLockI3D := wglGetProcAddress('wglEnableFrameLockI3D');
  6020. if not Assigned(wglEnableFrameLockI3D) then Exit;
  6021. wglDisableFrameLockI3D := wglGetProcAddress('wglDisableFrameLockI3D');
  6022. if not Assigned(wglDisableFrameLockI3D) then Exit;
  6023. wglIsEnabledFrameLockI3D := wglGetProcAddress('wglIsEnabledFrameLockI3D');
  6024. if not Assigned(wglIsEnabledFrameLockI3D) then Exit;
  6025. wglQueryFrameLockMasterI3D := wglGetProcAddress('wglQueryFrameLockMasterI3D');
  6026. if not Assigned(wglQueryFrameLockMasterI3D) then Exit;
  6027. Result := TRUE;
  6028. end;
  6029. end;
  6030. function Load_WGL_I3D_swap_frame_usage: Boolean;
  6031. var
  6032. extstring: String;
  6033. begin
  6034. Result := FALSE;
  6035. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6036. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6037. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6038. if glext_ExtensionSupported('WGL_I3D_swap_frame_usage', extstring) then
  6039. begin
  6040. wglGetFrameUsageI3D := wglGetProcAddress('wglGetFrameUsageI3D');
  6041. if not Assigned(wglGetFrameUsageI3D) then Exit;
  6042. wglBeginFrameTrackingI3D := wglGetProcAddress('wglBeginFrameTrackingI3D');
  6043. if not Assigned(wglBeginFrameTrackingI3D) then Exit;
  6044. wglEndFrameTrackingI3D := wglGetProcAddress('wglEndFrameTrackingI3D');
  6045. if not Assigned(wglEndFrameTrackingI3D) then Exit;
  6046. wglQueryFrameTrackingI3D := wglGetProcAddress('wglQueryFrameTrackingI3D');
  6047. if not Assigned(wglQueryFrameTrackingI3D) then Exit;
  6048. Result := TRUE;
  6049. end;
  6050. end;
  6051. {$ENDIF}
  6052. function Load_GL_3DFX_texture_compression_FXT1: Boolean;
  6053. var
  6054. extstring: String;
  6055. begin
  6056. Result := FALSE;
  6057. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6058. if glext_ExtensionSupported('GL_3DFX_texture_compression_FXT1', extstring) then
  6059. begin
  6060. Result := TRUE;
  6061. end;
  6062. end;
  6063. function Load_GL_IBM_cull_vertex: Boolean;
  6064. var
  6065. extstring: String;
  6066. begin
  6067. Result := FALSE;
  6068. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6069. if glext_ExtensionSupported('GL_IBM_cull_vertex', extstring) then
  6070. begin
  6071. Result := TRUE;
  6072. end;
  6073. end;
  6074. function Load_GL_IBM_multimode_draw_arrays: Boolean;
  6075. var
  6076. extstring: String;
  6077. begin
  6078. Result := FALSE;
  6079. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6080. if glext_ExtensionSupported('GL_IBM_multimode_draw_arrays', extstring) then
  6081. begin
  6082. glMultiModeDrawArraysIBM := wglGetProcAddress('glMultiModeDrawArraysIBM');
  6083. if not Assigned(glMultiModeDrawArraysIBM) then Exit;
  6084. glMultiModeDrawElementsIBM := wglGetProcAddress('glMultiModeDrawElementsIBM');
  6085. if not Assigned(glMultiModeDrawElementsIBM) then Exit;
  6086. Result := TRUE;
  6087. end;
  6088. end;
  6089. function Load_GL_IBM_raster_pos_clip: Boolean;
  6090. var
  6091. extstring: String;
  6092. begin
  6093. Result := FALSE;
  6094. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6095. if glext_ExtensionSupported('GL_IBM_raster_pos_clip', extstring) then
  6096. begin
  6097. Result := TRUE;
  6098. end;
  6099. end;
  6100. function Load_GL_IBM_texture_mirrored_repeat: Boolean;
  6101. var
  6102. extstring: String;
  6103. begin
  6104. Result := FALSE;
  6105. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6106. if glext_ExtensionSupported('GL_IBM_texture_mirrored_repeat', extstring) then
  6107. begin
  6108. Result := TRUE;
  6109. end;
  6110. end;
  6111. function Load_GL_IBM_vertex_array_lists: Boolean;
  6112. var
  6113. extstring: String;
  6114. begin
  6115. Result := FALSE;
  6116. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6117. if glext_ExtensionSupported('GL_IBM_vertex_array_lists', extstring) then
  6118. begin
  6119. glColorPointerListIBM := wglGetProcAddress('glColorPointerListIBM');
  6120. if not Assigned(glColorPointerListIBM) then Exit;
  6121. glSecondaryColorPointerListIBM := wglGetProcAddress('glSecondaryColorPointerListIBM');
  6122. if not Assigned(glSecondaryColorPointerListIBM) then Exit;
  6123. glEdgeFlagPointerListIBM := wglGetProcAddress('glEdgeFlagPointerListIBM');
  6124. if not Assigned(glEdgeFlagPointerListIBM) then Exit;
  6125. glFogCoordPointerListIBM := wglGetProcAddress('glFogCoordPointerListIBM');
  6126. if not Assigned(glFogCoordPointerListIBM) then Exit;
  6127. glNormalPointerListIBM := wglGetProcAddress('glNormalPointerListIBM');
  6128. if not Assigned(glNormalPointerListIBM) then Exit;
  6129. glTexCoordPointerListIBM := wglGetProcAddress('glTexCoordPointerListIBM');
  6130. if not Assigned(glTexCoordPointerListIBM) then Exit;
  6131. glVertexPointerListIBM := wglGetProcAddress('glVertexPointerListIBM');
  6132. if not Assigned(glVertexPointerListIBM) then Exit;
  6133. Result := TRUE;
  6134. end;
  6135. end;
  6136. function Load_GL_MESA_resize_buffers: Boolean;
  6137. var
  6138. extstring: String;
  6139. begin
  6140. Result := FALSE;
  6141. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6142. if glext_ExtensionSupported('GL_MESA_resize_buffers', extstring) then
  6143. begin
  6144. glResizeBuffersMESA := wglGetProcAddress('glResizeBuffersMESA');
  6145. if not Assigned(glResizeBuffersMESA) then Exit;
  6146. Result := TRUE;
  6147. end;
  6148. end;
  6149. function Load_GL_MESA_window_pos: Boolean;
  6150. var
  6151. extstring: String;
  6152. begin
  6153. Result := FALSE;
  6154. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6155. if glext_ExtensionSupported('GL_MESA_window_pos', extstring) then
  6156. begin
  6157. glWindowPos2dMESA := wglGetProcAddress('glWindowPos2dMESA');
  6158. if not Assigned(glWindowPos2dMESA) then Exit;
  6159. glWindowPos2fMESA := wglGetProcAddress('glWindowPos2fMESA');
  6160. if not Assigned(glWindowPos2fMESA) then Exit;
  6161. glWindowPos2iMESA := wglGetProcAddress('glWindowPos2iMESA');
  6162. if not Assigned(glWindowPos2iMESA) then Exit;
  6163. glWindowPos2sMESA := wglGetProcAddress('glWindowPos2sMESA');
  6164. if not Assigned(glWindowPos2sMESA) then Exit;
  6165. glWindowPos2ivMESA := wglGetProcAddress('glWindowPos2ivMESA');
  6166. if not Assigned(glWindowPos2ivMESA) then Exit;
  6167. glWindowPos2svMESA := wglGetProcAddress('glWindowPos2svMESA');
  6168. if not Assigned(glWindowPos2svMESA) then Exit;
  6169. glWindowPos2fvMESA := wglGetProcAddress('glWindowPos2fvMESA');
  6170. if not Assigned(glWindowPos2fvMESA) then Exit;
  6171. glWindowPos2dvMESA := wglGetProcAddress('glWindowPos2dvMESA');
  6172. if not Assigned(glWindowPos2dvMESA) then Exit;
  6173. glWindowPos3iMESA := wglGetProcAddress('glWindowPos3iMESA');
  6174. if not Assigned(glWindowPos3iMESA) then Exit;
  6175. glWindowPos3sMESA := wglGetProcAddress('glWindowPos3sMESA');
  6176. if not Assigned(glWindowPos3sMESA) then Exit;
  6177. glWindowPos3fMESA := wglGetProcAddress('glWindowPos3fMESA');
  6178. if not Assigned(glWindowPos3fMESA) then Exit;
  6179. glWindowPos3dMESA := wglGetProcAddress('glWindowPos3dMESA');
  6180. if not Assigned(glWindowPos3dMESA) then Exit;
  6181. glWindowPos3ivMESA := wglGetProcAddress('glWindowPos3ivMESA');
  6182. if not Assigned(glWindowPos3ivMESA) then Exit;
  6183. glWindowPos3svMESA := wglGetProcAddress('glWindowPos3svMESA');
  6184. if not Assigned(glWindowPos3svMESA) then Exit;
  6185. glWindowPos3fvMESA := wglGetProcAddress('glWindowPos3fvMESA');
  6186. if not Assigned(glWindowPos3fvMESA) then Exit;
  6187. glWindowPos3dvMESA := wglGetProcAddress('glWindowPos3dvMESA');
  6188. if not Assigned(glWindowPos3dvMESA) then Exit;
  6189. glWindowPos4iMESA := wglGetProcAddress('glWindowPos4iMESA');
  6190. if not Assigned(glWindowPos4iMESA) then Exit;
  6191. glWindowPos4sMESA := wglGetProcAddress('glWindowPos4sMESA');
  6192. if not Assigned(glWindowPos4sMESA) then Exit;
  6193. glWindowPos4fMESA := wglGetProcAddress('glWindowPos4fMESA');
  6194. if not Assigned(glWindowPos4fMESA) then Exit;
  6195. glWindowPos4dMESA := wglGetProcAddress('glWindowPos4dMESA');
  6196. if not Assigned(glWindowPos4dMESA) then Exit;
  6197. glWindowPos4ivMESA := wglGetProcAddress('glWindowPos4ivMESA');
  6198. if not Assigned(glWindowPos4ivMESA) then Exit;
  6199. glWindowPos4svMESA := wglGetProcAddress('glWindowPos4svMESA');
  6200. if not Assigned(glWindowPos4svMESA) then Exit;
  6201. glWindowPos4fvMESA := wglGetProcAddress('glWindowPos4fvMESA');
  6202. if not Assigned(glWindowPos4fvMESA) then Exit;
  6203. glWindowPos4dvMESA := wglGetProcAddress('glWindowPos4dvMESA');
  6204. if not Assigned(glWindowPos4dvMESA) then Exit;
  6205. Result := TRUE;
  6206. end;
  6207. end;
  6208. function Load_GL_OML_interlace: Boolean;
  6209. var
  6210. extstring: String;
  6211. begin
  6212. Result := FALSE;
  6213. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6214. if glext_ExtensionSupported('GL_OML_interlace', extstring) then
  6215. begin
  6216. Result := TRUE;
  6217. end;
  6218. end;
  6219. function Load_GL_OML_resample: Boolean;
  6220. var
  6221. extstring: String;
  6222. begin
  6223. Result := FALSE;
  6224. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6225. if glext_ExtensionSupported('GL_OML_resample', extstring) then
  6226. begin
  6227. Result := TRUE;
  6228. end;
  6229. end;
  6230. function Load_GL_OML_subsample: Boolean;
  6231. var
  6232. extstring: String;
  6233. begin
  6234. Result := FALSE;
  6235. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6236. if glext_ExtensionSupported('GL_OML_subsample', extstring) then
  6237. begin
  6238. Result := TRUE;
  6239. end;
  6240. end;
  6241. function Load_GL_SGIS_generate_mipmap: Boolean;
  6242. var
  6243. extstring: String;
  6244. begin
  6245. Result := FALSE;
  6246. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6247. if glext_ExtensionSupported('GL_SGIS_generate_mipmap', extstring) then
  6248. begin
  6249. Result := TRUE;
  6250. end;
  6251. end;
  6252. function Load_GL_SGIS_multisample: Boolean;
  6253. var
  6254. extstring: String;
  6255. begin
  6256. Result := FALSE;
  6257. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6258. if glext_ExtensionSupported('GL_SGIS_multisample', extstring) then
  6259. begin
  6260. glSampleMaskSGIS := wglGetProcAddress('glSampleMaskSGIS');
  6261. if not Assigned(glSampleMaskSGIS) then Exit;
  6262. glSamplePatternSGIS := wglGetProcAddress('glSamplePatternSGIS');
  6263. if not Assigned(glSamplePatternSGIS) then Exit;
  6264. Result := TRUE;
  6265. end;
  6266. end;
  6267. function Load_GL_SGIS_pixel_texture: Boolean;
  6268. var
  6269. extstring: String;
  6270. begin
  6271. Result := FALSE;
  6272. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6273. if glext_ExtensionSupported('GL_SGIS_pixel_texture', extstring) then
  6274. begin
  6275. glPixelTexGenParameteriSGIS := wglGetProcAddress('glPixelTexGenParameteriSGIS');
  6276. if not Assigned(glPixelTexGenParameteriSGIS) then Exit;
  6277. glPixelTexGenParameterfSGIS := wglGetProcAddress('glPixelTexGenParameterfSGIS');
  6278. if not Assigned(glPixelTexGenParameterfSGIS) then Exit;
  6279. glGetPixelTexGenParameterivSGIS := wglGetProcAddress('glGetPixelTexGenParameterivSGIS');
  6280. if not Assigned(glGetPixelTexGenParameterivSGIS) then Exit;
  6281. glGetPixelTexGenParameterfvSGIS := wglGetProcAddress('glGetPixelTexGenParameterfvSGIS');
  6282. if not Assigned(glGetPixelTexGenParameterfvSGIS) then Exit;
  6283. Result := TRUE;
  6284. end;
  6285. end;
  6286. function Load_GL_SGIS_texture_border_clamp: Boolean;
  6287. var
  6288. extstring: String;
  6289. begin
  6290. Result := FALSE;
  6291. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6292. if glext_ExtensionSupported('GL_SGIS_texture_border_clamp', extstring) then
  6293. begin
  6294. Result := TRUE;
  6295. end;
  6296. end;
  6297. function Load_GL_SGIS_texture_color_mask: Boolean;
  6298. var
  6299. extstring: String;
  6300. begin
  6301. Result := FALSE;
  6302. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6303. if glext_ExtensionSupported('GL_SGIS_texture_color_mask', extstring) then
  6304. begin
  6305. glTextureColorMaskSGIS := wglGetProcAddress('glTextureColorMaskSGIS');
  6306. if not Assigned(glTextureColorMaskSGIS) then Exit;
  6307. Result := TRUE;
  6308. end;
  6309. end;
  6310. function Load_GL_SGIS_texture_edge_clamp: Boolean;
  6311. var
  6312. extstring: String;
  6313. begin
  6314. Result := FALSE;
  6315. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6316. if glext_ExtensionSupported('GL_SGIS_texture_edge_clamp', extstring) then
  6317. begin
  6318. Result := TRUE;
  6319. end;
  6320. end;
  6321. function Load_GL_SGIS_texture_lod: Boolean;
  6322. var
  6323. extstring: String;
  6324. begin
  6325. Result := FALSE;
  6326. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6327. if glext_ExtensionSupported('GL_SGIS_texture_lod', extstring) then
  6328. begin
  6329. Result := TRUE;
  6330. end;
  6331. end;
  6332. function Load_GL_SGIS_depth_texture: Boolean;
  6333. var
  6334. extstring: String;
  6335. begin
  6336. Result := FALSE;
  6337. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6338. if glext_ExtensionSupported('GL_SGIS_depth_texture', extstring) then
  6339. begin
  6340. Result := TRUE;
  6341. end;
  6342. end;
  6343. function Load_GL_SGIX_fog_offset: Boolean;
  6344. var
  6345. extstring: String;
  6346. begin
  6347. Result := FALSE;
  6348. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6349. if glext_ExtensionSupported('GL_SGIX_fog_offset', extstring) then
  6350. begin
  6351. Result := TRUE;
  6352. end;
  6353. end;
  6354. function Load_GL_SGIX_interlace: Boolean;
  6355. var
  6356. extstring: String;
  6357. begin
  6358. Result := FALSE;
  6359. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6360. if glext_ExtensionSupported('GL_SGIX_interlace', extstring) then
  6361. begin
  6362. Result := TRUE;
  6363. end;
  6364. end;
  6365. function Load_GL_SGIX_shadow_ambient: Boolean;
  6366. var
  6367. extstring: String;
  6368. begin
  6369. Result := FALSE;
  6370. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6371. if glext_ExtensionSupported('GL_SGIX_shadow_ambient', extstring) then
  6372. begin
  6373. Result := TRUE;
  6374. end;
  6375. end;
  6376. function Load_GL_SGI_color_matrix: Boolean;
  6377. var
  6378. extstring: String;
  6379. begin
  6380. Result := FALSE;
  6381. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6382. if glext_ExtensionSupported('GL_SGI_color_matrix', extstring) then
  6383. begin
  6384. Result := TRUE;
  6385. end;
  6386. end;
  6387. function Load_GL_SGI_color_table: Boolean;
  6388. var
  6389. extstring: String;
  6390. begin
  6391. Result := FALSE;
  6392. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6393. if glext_ExtensionSupported('GL_SGI_color_table', extstring) then
  6394. begin
  6395. glColorTableSGI := wglGetProcAddress('glColorTableSGI');
  6396. if not Assigned(glColorTableSGI) then Exit;
  6397. glCopyColorTableSGI := wglGetProcAddress('glCopyColorTableSGI');
  6398. if not Assigned(glCopyColorTableSGI) then Exit;
  6399. glColorTableParameterivSGI := wglGetProcAddress('glColorTableParameterivSGI');
  6400. if not Assigned(glColorTableParameterivSGI) then Exit;
  6401. glColorTableParameterfvSGI := wglGetProcAddress('glColorTableParameterfvSGI');
  6402. if not Assigned(glColorTableParameterfvSGI) then Exit;
  6403. glGetColorTableSGI := wglGetProcAddress('glGetColorTableSGI');
  6404. if not Assigned(glGetColorTableSGI) then Exit;
  6405. glGetColorTableParameterivSGI := wglGetProcAddress('glGetColorTableParameterivSGI');
  6406. if not Assigned(glGetColorTableParameterivSGI) then Exit;
  6407. glGetColorTableParameterfvSGI := wglGetProcAddress('glGetColorTableParameterfvSGI');
  6408. if not Assigned(glGetColorTableParameterfvSGI) then Exit;
  6409. Result := TRUE;
  6410. end;
  6411. end;
  6412. function Load_GL_SGI_texture_color_table: Boolean;
  6413. var
  6414. extstring: String;
  6415. begin
  6416. Result := FALSE;
  6417. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6418. if glext_ExtensionSupported('GL_SGI_texture_color_table', extstring) then
  6419. begin
  6420. Result := TRUE;
  6421. end;
  6422. end;
  6423. function Load_GL_SUN_vertex: Boolean;
  6424. var
  6425. extstring: String;
  6426. begin
  6427. Result := FALSE;
  6428. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6429. if glext_ExtensionSupported('GL_SUN_vertex', extstring) then
  6430. begin
  6431. glColor4ubVertex2fSUN := wglGetProcAddress('glColor4ubVertex2fSUN');
  6432. if not Assigned(glColor4ubVertex2fSUN) then Exit;
  6433. glColor4ubVertex2fvSUN := wglGetProcAddress('glColor4ubVertex2fvSUN');
  6434. if not Assigned(glColor4ubVertex2fvSUN) then Exit;
  6435. glColor4ubVertex3fSUN := wglGetProcAddress('glColor4ubVertex3fSUN');
  6436. if not Assigned(glColor4ubVertex3fSUN) then Exit;
  6437. glColor4ubVertex3fvSUN := wglGetProcAddress('glColor4ubVertex3fvSUN');
  6438. if not Assigned(glColor4ubVertex3fvSUN) then Exit;
  6439. glColor3fVertex3fSUN := wglGetProcAddress('glColor3fVertex3fSUN');
  6440. if not Assigned(glColor3fVertex3fSUN) then Exit;
  6441. glColor3fVertex3fvSUN := wglGetProcAddress('glColor3fVertex3fvSUN');
  6442. if not Assigned(glColor3fVertex3fvSUN) then Exit;
  6443. glNormal3fVertex3fSUN := wglGetProcAddress('glNormal3fVertex3fSUN');
  6444. if not Assigned(glNormal3fVertex3fSUN) then Exit;
  6445. glNormal3fVertex3fvSUN := wglGetProcAddress('glNormal3fVertex3fvSUN');
  6446. if not Assigned(glNormal3fVertex3fvSUN) then Exit;
  6447. glColor4fNormal3fVertex3fSUN := wglGetProcAddress('glColor4fNormal3fVertex3fSUN');
  6448. if not Assigned(glColor4fNormal3fVertex3fSUN) then Exit;
  6449. glColor4fNormal3fVertex3fvSUN := wglGetProcAddress('glColor4fNormal3fVertex3fvSUN');
  6450. if not Assigned(glColor4fNormal3fVertex3fvSUN) then Exit;
  6451. glTexCoord2fVertex3fSUN := wglGetProcAddress('glTexCoord2fVertex3fSUN');
  6452. if not Assigned(glTexCoord2fVertex3fSUN) then Exit;
  6453. glTexCoord2fVertex3fvSUN := wglGetProcAddress('glTexCoord2fVertex3fvSUN');
  6454. if not Assigned(glTexCoord2fVertex3fvSUN) then Exit;
  6455. glTexCoord4fVertex4fSUN := wglGetProcAddress('glTexCoord4fVertex4fSUN');
  6456. if not Assigned(glTexCoord4fVertex4fSUN) then Exit;
  6457. glTexCoord4fVertex4fvSUN := wglGetProcAddress('glTexCoord4fVertex4fvSUN');
  6458. if not Assigned(glTexCoord4fVertex4fvSUN) then Exit;
  6459. glTexCoord2fColor4ubVertex3fSUN := wglGetProcAddress('glTexCoord2fColor4ubVertex3fSUN');
  6460. if not Assigned(glTexCoord2fColor4ubVertex3fSUN) then Exit;
  6461. glTexCoord2fColor4ubVertex3fvSUN := wglGetProcAddress('glTexCoord2fColor4ubVertex3fvSUN');
  6462. if not Assigned(glTexCoord2fColor4ubVertex3fvSUN) then Exit;
  6463. glTexCoord2fColor3fVertex3fSUN := wglGetProcAddress('glTexCoord2fColor3fVertex3fSUN');
  6464. if not Assigned(glTexCoord2fColor3fVertex3fSUN) then Exit;
  6465. glTexCoord2fColor3fVertex3fvSUN := wglGetProcAddress('glTexCoord2fColor3fVertex3fvSUN');
  6466. if not Assigned(glTexCoord2fColor3fVertex3fvSUN) then Exit;
  6467. glTexCoord2fNormal3fVertex3fSUN := wglGetProcAddress('glTexCoord2fNormal3fVertex3fSUN');
  6468. if not Assigned(glTexCoord2fNormal3fVertex3fSUN) then Exit;
  6469. glTexCoord2fNormal3fVertex3fvSUN := wglGetProcAddress('glTexCoord2fNormal3fVertex3fvSUN');
  6470. if not Assigned(glTexCoord2fNormal3fVertex3fvSUN) then Exit;
  6471. glTexCoord2fColor4fNormal3fVertex3fSUN := wglGetProcAddress('glTexCoord2fColor4fNormal3fVertex3fSUN');
  6472. if not Assigned(glTexCoord2fColor4fNormal3fVertex3fSUN) then Exit;
  6473. glTexCoord2fColor4fNormal3fVertex3fvSUN := wglGetProcAddress('glTexCoord2fColor4fNormal3fVertex3fvSUN');
  6474. if not Assigned(glTexCoord2fColor4fNormal3fVertex3fvSUN) then Exit;
  6475. glTexCoord4fColor4fNormal3fVertex4fSUN := wglGetProcAddress('glTexCoord4fColor4fNormal3fVertex4fSUN');
  6476. if not Assigned(glTexCoord4fColor4fNormal3fVertex4fSUN) then Exit;
  6477. glTexCoord4fColor4fNormal3fVertex4fvSUN := wglGetProcAddress('glTexCoord4fColor4fNormal3fVertex4fvSUN');
  6478. if not Assigned(glTexCoord4fColor4fNormal3fVertex4fvSUN) then Exit;
  6479. glReplacementCodeuiVertex3fSUN := wglGetProcAddress('glReplacementCodeuiVertex3fSUN');
  6480. if not Assigned(glReplacementCodeuiVertex3fSUN) then Exit;
  6481. glReplacementCodeuiVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiVertex3fvSUN');
  6482. if not Assigned(glReplacementCodeuiVertex3fvSUN) then Exit;
  6483. glReplacementCodeuiColor4ubVertex3fSUN := wglGetProcAddress('glReplacementCodeuiColor4ubVertex3fSUN');
  6484. if not Assigned(glReplacementCodeuiColor4ubVertex3fSUN) then Exit;
  6485. glReplacementCodeuiColor4ubVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiColor4ubVertex3fvSUN');
  6486. if not Assigned(glReplacementCodeuiColor4ubVertex3fvSUN) then Exit;
  6487. glReplacementCodeuiColor3fVertex3fSUN := wglGetProcAddress('glReplacementCodeuiColor3fVertex3fSUN');
  6488. if not Assigned(glReplacementCodeuiColor3fVertex3fSUN) then Exit;
  6489. glReplacementCodeuiColor3fVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiColor3fVertex3fvSUN');
  6490. if not Assigned(glReplacementCodeuiColor3fVertex3fvSUN) then Exit;
  6491. glReplacementCodeuiNormal3fVertex3fSUN := wglGetProcAddress('glReplacementCodeuiNormal3fVertex3fSUN');
  6492. if not Assigned(glReplacementCodeuiNormal3fVertex3fSUN) then Exit;
  6493. glReplacementCodeuiNormal3fVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiNormal3fVertex3fvSUN');
  6494. if not Assigned(glReplacementCodeuiNormal3fVertex3fvSUN) then Exit;
  6495. glReplacementCodeuiColor4fNormal3fVertex3fSUN := wglGetProcAddress('glReplacementCodeuiColor4fNormal3fVertex3fSUN');
  6496. if not Assigned(glReplacementCodeuiColor4fNormal3fVertex3fSUN) then Exit;
  6497. glReplacementCodeuiColor4fNormal3fVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiColor4fNormal3fVertex3fvSUN');
  6498. if not Assigned(glReplacementCodeuiColor4fNormal3fVertex3fvSUN) then Exit;
  6499. glReplacementCodeuiTexCoord2fVertex3fSUN := wglGetProcAddress('glReplacementCodeuiTexCoord2fVertex3fSUN');
  6500. if not Assigned(glReplacementCodeuiTexCoord2fVertex3fSUN) then Exit;
  6501. glReplacementCodeuiTexCoord2fVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiTexCoord2fVertex3fvSUN');
  6502. if not Assigned(glReplacementCodeuiTexCoord2fVertex3fvSUN) then Exit;
  6503. glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN := wglGetProcAddress('glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN');
  6504. if not Assigned(glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN) then Exit;
  6505. glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN');
  6506. if not Assigned(glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN) then Exit;
  6507. glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN := wglGetProcAddress('glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN');
  6508. if not Assigned(glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN) then Exit;
  6509. glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN := wglGetProcAddress('glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN');
  6510. if not Assigned(glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN) then Exit;
  6511. Result := TRUE;
  6512. end;
  6513. end;
  6514. function Load_GL_ARB_fragment_program: Boolean;
  6515. var
  6516. extstring: String;
  6517. begin
  6518. Result := FALSE;
  6519. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6520. if glext_ExtensionSupported('GL_ARB_fragment_program', extstring) then
  6521. begin
  6522. glProgramStringARB := wglGetProcAddress('glProgramStringARB');
  6523. if not Assigned(glProgramStringARB) then Exit;
  6524. glBindProgramARB := wglGetProcAddress('glBindProgramARB');
  6525. if not Assigned(glBindProgramARB) then Exit;
  6526. glDeleteProgramsARB := wglGetProcAddress('glDeleteProgramsARB');
  6527. if not Assigned(glDeleteProgramsARB) then Exit;
  6528. glGenProgramsARB := wglGetProcAddress('glGenProgramsARB');
  6529. if not Assigned(glGenProgramsARB) then Exit;
  6530. glProgramEnvParameter4dARB := wglGetProcAddress('glProgramEnvParameter4dARB');
  6531. if not Assigned(glProgramEnvParameter4dARB) then Exit;
  6532. glProgramEnvParameter4dvARB := wglGetProcAddress('glProgramEnvParameter4dvARB');
  6533. if not Assigned(glProgramEnvParameter4dvARB) then Exit;
  6534. glProgramEnvParameter4fARB := wglGetProcAddress('glProgramEnvParameter4fARB');
  6535. if not Assigned(glProgramEnvParameter4fARB) then Exit;
  6536. glProgramEnvParameter4fvARB := wglGetProcAddress('glProgramEnvParameter4fvARB');
  6537. if not Assigned(glProgramEnvParameter4fvARB) then Exit;
  6538. glProgramLocalParameter4dARB := wglGetProcAddress('glProgramLocalParameter4dARB');
  6539. if not Assigned(glProgramLocalParameter4dARB) then Exit;
  6540. glProgramLocalParameter4dvARB := wglGetProcAddress('glProgramLocalParameter4dvARB');
  6541. if not Assigned(glProgramLocalParameter4dvARB) then Exit;
  6542. glProgramLocalParameter4fARB := wglGetProcAddress('glProgramLocalParameter4fARB');
  6543. if not Assigned(glProgramLocalParameter4fARB) then Exit;
  6544. glProgramLocalParameter4fvARB := wglGetProcAddress('glProgramLocalParameter4fvARB');
  6545. if not Assigned(glProgramLocalParameter4fvARB) then Exit;
  6546. glGetProgramEnvParameterdvARB := wglGetProcAddress('glGetProgramEnvParameterdvARB');
  6547. if not Assigned(glGetProgramEnvParameterdvARB) then Exit;
  6548. glGetProgramEnvParameterfvARB := wglGetProcAddress('glGetProgramEnvParameterfvARB');
  6549. if not Assigned(glGetProgramEnvParameterfvARB) then Exit;
  6550. glGetProgramLocalParameterdvARB := wglGetProcAddress('glGetProgramLocalParameterdvARB');
  6551. if not Assigned(glGetProgramLocalParameterdvARB) then Exit;
  6552. glGetProgramLocalParameterfvARB := wglGetProcAddress('glGetProgramLocalParameterfvARB');
  6553. if not Assigned(glGetProgramLocalParameterfvARB) then Exit;
  6554. glGetProgramivARB := wglGetProcAddress('glGetProgramivARB');
  6555. if not Assigned(glGetProgramivARB) then Exit;
  6556. glGetProgramStringARB := wglGetProcAddress('glGetProgramStringARB');
  6557. if not Assigned(glGetProgramStringARB) then Exit;
  6558. glIsProgramARB := wglGetProcAddress('glIsProgramARB');
  6559. if not Assigned(glIsProgramARB) then Exit;
  6560. Result := TRUE;
  6561. end;
  6562. end;
  6563. function Load_GL_ATI_text_fragment_shader: Boolean;
  6564. var
  6565. extstring: String;
  6566. begin
  6567. Result := FALSE;
  6568. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6569. if glext_ExtensionSupported('GL_ATI_text_fragment_shader', extstring) then
  6570. begin
  6571. Result := TRUE;
  6572. end;
  6573. end;
  6574. function Load_GL_APPLE_client_storage: Boolean;
  6575. var
  6576. extstring: String;
  6577. begin
  6578. Result := FALSE;
  6579. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6580. if glext_ExtensionSupported('GL_APPLE_client_storage', extstring) then
  6581. begin
  6582. Result := TRUE;
  6583. end;
  6584. end;
  6585. function Load_GL_APPLE_element_array: Boolean;
  6586. var
  6587. extstring: String;
  6588. begin
  6589. Result := FALSE;
  6590. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6591. if glext_ExtensionSupported('GL_APPLE_element_array', extstring) then
  6592. begin
  6593. glElementPointerAPPLE := wglGetProcAddress('glElementPointerAPPLE');
  6594. if not Assigned(glElementPointerAPPLE) then Exit;
  6595. glDrawElementArrayAPPLE := wglGetProcAddress('glDrawElementArrayAPPLE');
  6596. if not Assigned(glDrawElementArrayAPPLE) then Exit;
  6597. glDrawRangeElementArrayAPPLE := wglGetProcAddress('glDrawRangeElementArrayAPPLE');
  6598. if not Assigned(glDrawRangeElementArrayAPPLE) then Exit;
  6599. glMultiDrawElementArrayAPPLE := wglGetProcAddress('glMultiDrawElementArrayAPPLE');
  6600. if not Assigned(glMultiDrawElementArrayAPPLE) then Exit;
  6601. glMultiDrawRangeElementArrayAPPLE := wglGetProcAddress('glMultiDrawRangeElementArrayAPPLE');
  6602. if not Assigned(glMultiDrawRangeElementArrayAPPLE) then Exit;
  6603. Result := TRUE;
  6604. end;
  6605. end;
  6606. function Load_GL_APPLE_fence: Boolean;
  6607. var
  6608. extstring: String;
  6609. begin
  6610. Result := FALSE;
  6611. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6612. if glext_ExtensionSupported('GL_APPLE_fence', extstring) then
  6613. begin
  6614. glGenFencesAPPLE := wglGetProcAddress('glGenFencesAPPLE');
  6615. if not Assigned(glGenFencesAPPLE) then Exit;
  6616. glDeleteFencesAPPLE := wglGetProcAddress('glDeleteFencesAPPLE');
  6617. if not Assigned(glDeleteFencesAPPLE) then Exit;
  6618. glSetFenceAPPLE := wglGetProcAddress('glSetFenceAPPLE');
  6619. if not Assigned(glSetFenceAPPLE) then Exit;
  6620. glIsFenceAPPLE := wglGetProcAddress('glIsFenceAPPLE');
  6621. if not Assigned(glIsFenceAPPLE) then Exit;
  6622. glTestFenceAPPLE := wglGetProcAddress('glTestFenceAPPLE');
  6623. if not Assigned(glTestFenceAPPLE) then Exit;
  6624. glFinishFenceAPPLE := wglGetProcAddress('glFinishFenceAPPLE');
  6625. if not Assigned(glFinishFenceAPPLE) then Exit;
  6626. glTestObjectAPPLE := wglGetProcAddress('glTestObjectAPPLE');
  6627. if not Assigned(glTestObjectAPPLE) then Exit;
  6628. glFinishObjectAPPLE := wglGetProcAddress('glFinishObjectAPPLE');
  6629. if not Assigned(glFinishObjectAPPLE) then Exit;
  6630. Result := TRUE;
  6631. end;
  6632. end;
  6633. function Load_GL_APPLE_vertex_array_object: Boolean;
  6634. var
  6635. extstring: String;
  6636. begin
  6637. Result := FALSE;
  6638. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6639. if glext_ExtensionSupported('GL_APPLE_vertex_array_object', extstring) then
  6640. begin
  6641. glBindVertexArrayAPPLE := wglGetProcAddress('glBindVertexArrayAPPLE');
  6642. if not Assigned(glBindVertexArrayAPPLE) then Exit;
  6643. glDeleteVertexArraysAPPLE := wglGetProcAddress('glDeleteVertexArraysAPPLE');
  6644. if not Assigned(glDeleteVertexArraysAPPLE) then Exit;
  6645. glGenVertexArraysAPPLE := wglGetProcAddress('glGenVertexArraysAPPLE');
  6646. if not Assigned(glGenVertexArraysAPPLE) then Exit;
  6647. glIsVertexArrayAPPLE := wglGetProcAddress('glIsVertexArrayAPPLE');
  6648. if not Assigned(glIsVertexArrayAPPLE) then Exit;
  6649. Result := TRUE;
  6650. end;
  6651. end;
  6652. function Load_GL_APPLE_vertex_array_range: Boolean;
  6653. var
  6654. extstring: String;
  6655. begin
  6656. Result := FALSE;
  6657. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6658. if glext_ExtensionSupported('GL_APPLE_vertex_array_range', extstring) then
  6659. begin
  6660. glVertexArrayRangeAPPLE := wglGetProcAddress('glVertexArrayRangeAPPLE');
  6661. if not Assigned(glVertexArrayRangeAPPLE) then Exit;
  6662. glFlushVertexArrayRangeAPPLE := wglGetProcAddress('glFlushVertexArrayRangeAPPLE');
  6663. if not Assigned(glFlushVertexArrayRangeAPPLE) then Exit;
  6664. glVertexArrayParameteriAPPLE := wglGetProcAddress('glVertexArrayParameteriAPPLE');
  6665. if not Assigned(glVertexArrayParameteriAPPLE) then Exit;
  6666. Result := TRUE;
  6667. end;
  6668. end;
  6669. function load_GL_ARB_vertex_buffer_object : boolean;
  6670. var extstring:string;
  6671. begin
  6672. load_GL_ARB_vertex_buffer_object:=false;
  6673. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6674. if glext_ExtensionSupported('GL_ARB_vertex_buffer_object',extstring) then
  6675. begin
  6676. glBindBufferARB := wglGetProcAddress('glBindBufferARB');
  6677. if not Assigned(glBindBufferARB) then Exit;
  6678. glDeleteBuffersARB := wglGetProcAddress('glDeleteBuffersARB');
  6679. if not Assigned(glDeleteBuffersARB) then Exit;
  6680. glGenBuffersARB := wglGetProcAddress('glGenBuffersARB');
  6681. if not Assigned(glGenBuffersARB) then Exit;
  6682. glIsBufferARB := wglGetProcAddress('glIsBufferARB');
  6683. if not Assigned(glIsBufferARB) then Exit;
  6684. glBufferDataARB := wglGetProcAddress('glBufferDataARB');
  6685. if not Assigned(glBufferDataARB) then Exit;
  6686. glGetBufferSubDataARB := wglGetProcAddress('glGetBufferSubDataARB');
  6687. if not Assigned(glGetBufferSubDataARB) then Exit;
  6688. glMapBufferARB := wglGetProcAddress('glMapBufferARB');
  6689. if not Assigned(glMapBufferARB) then Exit;
  6690. glUnmapBufferARB := wglGetProcAddress('glUnmapBufferARB');
  6691. if not Assigned(glMapBufferARB) then Exit;
  6692. glGetBufferParameterivARB := wglGetProcAddress('glGetBufferParameterivARB');
  6693. if not Assigned(glGetBufferParameterivARB) then Exit;
  6694. glGetBufferPointervARB := wglGetProcAddress('glGetBufferPointervARB');
  6695. if not Assigned(glGetBufferPointervARB) then Exit;
  6696. end;
  6697. load_GL_ARB_vertex_buffer_object:=true;
  6698. end;
  6699. {$IFDEF Windows}
  6700. function Load_WGL_ARB_pixel_format: Boolean;
  6701. var
  6702. extstring: String;
  6703. begin
  6704. Result := FALSE;
  6705. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6706. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6707. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6708. if glext_ExtensionSupported('WGL_ARB_pixel_format', extstring) then
  6709. begin
  6710. wglGetPixelFormatAttribivARB := wglGetProcAddress('wglGetPixelFormatAttribivARB');
  6711. if not Assigned(wglGetPixelFormatAttribivARB) then Exit;
  6712. wglGetPixelFormatAttribfvARB := wglGetProcAddress('wglGetPixelFormatAttribfvARB');
  6713. if not Assigned(wglGetPixelFormatAttribfvARB) then Exit;
  6714. wglChoosePixelFormatARB := wglGetProcAddress('wglChoosePixelFormatARB');
  6715. if not Assigned(wglChoosePixelFormatARB) then Exit;
  6716. Result := TRUE;
  6717. end;
  6718. end;
  6719. function Load_WGL_ARB_make_current_read: Boolean;
  6720. var
  6721. extstring: String;
  6722. begin
  6723. Result := FALSE;
  6724. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6725. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6726. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6727. if glext_ExtensionSupported('WGL_ARB_make_current_read', extstring) then
  6728. begin
  6729. wglMakeContextCurrentARB := wglGetProcAddress('wglMakeContextCurrentARB');
  6730. if not Assigned(wglMakeContextCurrentARB) then Exit;
  6731. wglGetCurrentReadDCARB := wglGetProcAddress('wglGetCurrentReadDCARB');
  6732. if not Assigned(wglGetCurrentReadDCARB) then Exit;
  6733. Result := TRUE;
  6734. end;
  6735. end;
  6736. function Load_WGL_ARB_pbuffer: Boolean;
  6737. var
  6738. extstring: String;
  6739. begin
  6740. Result := FALSE;
  6741. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6742. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6743. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6744. if glext_ExtensionSupported('WGL_ARB_pbuffer', extstring) then
  6745. begin
  6746. wglCreatePbufferARB := wglGetProcAddress('wglCreatePbufferARB');
  6747. if not Assigned(wglCreatePbufferARB) then Exit;
  6748. wglGetPbufferDCARB := wglGetProcAddress('wglGetPbufferDCARB');
  6749. if not Assigned(wglGetPbufferDCARB) then Exit;
  6750. wglReleasePbufferDCARB := wglGetProcAddress('wglReleasePbufferDCARB');
  6751. if not Assigned(wglReleasePbufferDCARB) then Exit;
  6752. wglDestroyPbufferARB := wglGetProcAddress('wglDestroyPbufferARB');
  6753. if not Assigned(wglDestroyPbufferARB) then Exit;
  6754. wglQueryPbufferARB := wglGetProcAddress('wglQueryPbufferARB');
  6755. if not Assigned(wglQueryPbufferARB) then Exit;
  6756. Result := TRUE;
  6757. end;
  6758. end;
  6759. function Load_WGL_EXT_swap_control: Boolean;
  6760. var
  6761. extstring: String;
  6762. begin
  6763. Result := FALSE;
  6764. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6765. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6766. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6767. if glext_ExtensionSupported('WGL_EXT_swap_control', extstring) then
  6768. begin
  6769. wglSwapIntervalEXT := wglGetProcAddress('wglSwapIntervalEXT');
  6770. if not Assigned(wglSwapIntervalEXT) then Exit;
  6771. wglGetSwapIntervalEXT := wglGetProcAddress('wglGetSwapIntervalEXT');
  6772. if not Assigned(wglGetSwapIntervalEXT) then Exit;
  6773. Result := TRUE;
  6774. end;
  6775. end;
  6776. function Load_WGL_ARB_render_texture: Boolean;
  6777. var
  6778. extstring: String;
  6779. begin
  6780. Result := FALSE;
  6781. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6782. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6783. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6784. if glext_ExtensionSupported('WGL_ARB_render_texture', extstring) then
  6785. begin
  6786. wglBindTexImageARB := wglGetProcAddress('wglBindTexImageARB');
  6787. if not Assigned(wglBindTexImageARB) then Exit;
  6788. wglReleaseTexImageARB := wglGetProcAddress('wglReleaseTexImageARB');
  6789. if not Assigned(wglReleaseTexImageARB) then Exit;
  6790. wglSetPbufferAttribARB := wglGetProcAddress('wglSetPbufferAttribARB');
  6791. if not Assigned(wglSetPbufferAttribARB) then Exit;
  6792. Result := TRUE;
  6793. end;
  6794. end;
  6795. function Load_WGL_EXT_extensions_string: Boolean;
  6796. var
  6797. extstring: String;
  6798. begin
  6799. Result := FALSE;
  6800. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6801. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6802. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6803. if glext_ExtensionSupported('WGL_EXT_extensions_string', extstring) then
  6804. begin
  6805. wglGetExtensionsStringEXT := wglGetProcAddress('wglGetExtensionsStringEXT');
  6806. if not Assigned(wglGetExtensionsStringEXT) then Exit;
  6807. Result := TRUE;
  6808. end;
  6809. end;
  6810. function Load_WGL_EXT_make_current_read: Boolean;
  6811. var
  6812. extstring: String;
  6813. begin
  6814. Result := FALSE;
  6815. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6816. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6817. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6818. if glext_ExtensionSupported('WGL_EXT_make_current_read', extstring) then
  6819. begin
  6820. wglMakeContextCurrentEXT := wglGetProcAddress('wglMakeContextCurrentEXT');
  6821. if not Assigned(wglMakeContextCurrentEXT) then Exit;
  6822. wglGetCurrentReadDCEXT := wglGetProcAddress('wglGetCurrentReadDCEXT');
  6823. if not Assigned(wglGetCurrentReadDCEXT) then Exit;
  6824. Result := TRUE;
  6825. end;
  6826. end;
  6827. function Load_WGL_EXT_pbuffer: Boolean;
  6828. var
  6829. extstring: String;
  6830. begin
  6831. Result := FALSE;
  6832. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6833. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6834. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6835. if glext_ExtensionSupported('WGL_EXT_pbuffer', extstring) then
  6836. begin
  6837. wglCreatePbufferEXT := wglGetProcAddress('wglCreatePbufferEXT');
  6838. if not Assigned(wglCreatePbufferEXT) then Exit;
  6839. wglGetPbufferDCEXT := wglGetProcAddress('wglGetPbufferDCEXT');
  6840. if not Assigned(wglGetPbufferDCEXT) then Exit;
  6841. wglReleasePbufferDCEXT := wglGetProcAddress('wglReleasePbufferDCEXT');
  6842. if not Assigned(wglReleasePbufferDCEXT) then Exit;
  6843. wglDestroyPbufferEXT := wglGetProcAddress('wglDestroyPbufferEXT');
  6844. if not Assigned(wglDestroyPbufferEXT) then Exit;
  6845. wglQueryPbufferEXT := wglGetProcAddress('wglQueryPbufferEXT');
  6846. if not Assigned(wglQueryPbufferEXT) then Exit;
  6847. Result := TRUE;
  6848. end;
  6849. end;
  6850. function Load_WGL_EXT_pixel_format: Boolean;
  6851. var
  6852. extstring: String;
  6853. begin
  6854. Result := FALSE;
  6855. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6856. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6857. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6858. if glext_ExtensionSupported('WGL_EXT_pixel_format', extstring) then
  6859. begin
  6860. wglGetPixelFormatAttribivEXT := wglGetProcAddress('wglGetPixelFormatAttribivEXT');
  6861. if not Assigned(wglGetPixelFormatAttribivEXT) then Exit;
  6862. wglGetPixelFormatAttribfvEXT := wglGetProcAddress('wglGetPixelFormatAttribfvEXT');
  6863. if not Assigned(wglGetPixelFormatAttribfvEXT) then Exit;
  6864. wglChoosePixelFormatEXT := wglGetProcAddress('wglChoosePixelFormatEXT');
  6865. if not Assigned(wglChoosePixelFormatEXT) then Exit;
  6866. Result := TRUE;
  6867. end;
  6868. end;
  6869. function Load_WGL_I3D_digital_video_control: Boolean;
  6870. var
  6871. extstring: String;
  6872. begin
  6873. Result := FALSE;
  6874. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6875. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6876. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6877. if glext_ExtensionSupported('WGL_I3D_digital_video_control', extstring) then
  6878. begin
  6879. wglGetDigitalVideoParametersI3D := wglGetProcAddress('wglGetDigitalVideoParametersI3D');
  6880. if not Assigned(wglGetDigitalVideoParametersI3D) then Exit;
  6881. wglSetDigitalVideoParametersI3D := wglGetProcAddress('wglSetDigitalVideoParametersI3D');
  6882. if not Assigned(wglSetDigitalVideoParametersI3D) then Exit;
  6883. Result := TRUE;
  6884. end;
  6885. end;
  6886. function Load_WGL_I3D_gamma: Boolean;
  6887. var
  6888. extstring: String;
  6889. begin
  6890. Result := FALSE;
  6891. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6892. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6893. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6894. if glext_ExtensionSupported('WGL_I3D_gamma', extstring) then
  6895. begin
  6896. wglGetGammaTableParametersI3D := wglGetProcAddress('wglGetGammaTableParametersI3D');
  6897. if not Assigned(wglGetGammaTableParametersI3D) then Exit;
  6898. wglSetGammaTableParametersI3D := wglGetProcAddress('wglSetGammaTableParametersI3D');
  6899. if not Assigned(wglSetGammaTableParametersI3D) then Exit;
  6900. wglGetGammaTableI3D := wglGetProcAddress('wglGetGammaTableI3D');
  6901. if not Assigned(wglGetGammaTableI3D) then Exit;
  6902. wglSetGammaTableI3D := wglGetProcAddress('wglSetGammaTableI3D');
  6903. if not Assigned(wglSetGammaTableI3D) then Exit;
  6904. Result := TRUE;
  6905. end;
  6906. end;
  6907. function Load_WGL_I3D_genlock: Boolean;
  6908. var
  6909. extstring: String;
  6910. begin
  6911. Result := FALSE;
  6912. wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  6913. if not Assigned(wglGetExtensionsStringARB) then Exit;
  6914. extstring := String(PChar(wglGetExtensionsStringARB(wglGetCurrentDC)));
  6915. if glext_ExtensionSupported('WGL_I3D_genlock', extstring) then
  6916. begin
  6917. wglEnableGenlockI3D := wglGetProcAddress('wglEnableGenlockI3D');
  6918. if not Assigned(wglEnableGenlockI3D) then Exit;
  6919. wglDisableGenlockI3D := wglGetProcAddress('wglDisableGenlockI3D');
  6920. if not Assigned(wglDisableGenlockI3D) then Exit;
  6921. wglIsEnabledGenlockI3D := wglGetProcAddress('wglIsEnabledGenlockI3D');
  6922. if not Assigned(wglIsEnabledGenlockI3D) then Exit;
  6923. wglGenlockSourceI3D := wglGetProcAddress('wglGenlockSourceI3D');
  6924. if not Assigned(wglGenlockSourceI3D) then Exit;
  6925. wglGetGenlockSourceI3D := wglGetProcAddress('wglGetGenlockSourceI3D');
  6926. if not Assigned(wglGetGenlockSourceI3D) then Exit;
  6927. wglGenlockSourceEdgeI3D := wglGetProcAddress('wglGenlockSourceEdgeI3D');
  6928. if not Assigned(wglGenlockSourceEdgeI3D) then Exit;
  6929. wglGetGenlockSourceEdgeI3D := wglGetProcAddress('wglGetGenlockSourceEdgeI3D');
  6930. if not Assigned(wglGetGenlockSourceEdgeI3D) then Exit;
  6931. wglGenlockSampleRateI3D := wglGetProcAddress('wglGenlockSampleRateI3D');
  6932. if not Assigned(wglGenlockSampleRateI3D) then Exit;
  6933. wglGetGenlockSampleRateI3D := wglGetProcAddress('wglGetGenlockSampleRateI3D');
  6934. if not Assigned(wglGetGenlockSampleRateI3D) then Exit;
  6935. wglGenlockSourceDelayI3D := wglGetProcAddress('wglGenlockSourceDelayI3D');
  6936. if not Assigned(wglGenlockSourceDelayI3D) then Exit;
  6937. wglGetGenlockSourceDelayI3D := wglGetProcAddress('wglGetGenlockSourceDelayI3D');
  6938. if not Assigned(wglGetGenlockSourceDelayI3D) then Exit;
  6939. wglQueryGenlockMaxSourceDelayI3D := wglGetProcAddress('wglQueryGenlockMaxSourceDelayI3D');
  6940. if not Assigned(wglQueryGenlockMaxSourceDelayI3D) then Exit;
  6941. Result := TRUE;
  6942. end;
  6943. end;
  6944. {$ENDIF}
  6945. function Load_GL_ARB_matrix_palette: Boolean;
  6946. var
  6947. extstring: String;
  6948. begin
  6949. Result := FALSE;
  6950. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6951. if glext_ExtensionSupported('GL_ARB_matrix_palette', extstring) then
  6952. begin
  6953. glCurrentPaletteMatrixARB := wglGetProcAddress('glCurrentPaletteMatrixARB');
  6954. if not Assigned(glCurrentPaletteMatrixARB) then Exit;
  6955. glMatrixIndexubvARB := wglGetProcAddress('glMatrixIndexubvARB');
  6956. if not Assigned(glMatrixIndexubvARB) then Exit;
  6957. glMatrixIndexusvARB := wglGetProcAddress('glMatrixIndexusvARB');
  6958. if not Assigned(glMatrixIndexusvARB) then Exit;
  6959. glMatrixIndexuivARB := wglGetProcAddress('glMatrixIndexuivARB');
  6960. if not Assigned(glMatrixIndexuivARB) then Exit;
  6961. glMatrixIndexPointerARB := wglGetProcAddress('glMatrixIndexPointerARB');
  6962. if not Assigned(glMatrixIndexPointerARB) then Exit;
  6963. Result := TRUE;
  6964. end;
  6965. end;
  6966. function Load_GL_NV_element_array: Boolean;
  6967. var
  6968. extstring: String;
  6969. begin
  6970. Result := FALSE;
  6971. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6972. if glext_ExtensionSupported('GL_NV_element_array', extstring) then
  6973. begin
  6974. glElementPointerNV := wglGetProcAddress('glElementPointerNV');
  6975. if not Assigned(glElementPointerNV) then Exit;
  6976. glDrawElementArrayNV := wglGetProcAddress('glDrawElementArrayNV');
  6977. if not Assigned(glDrawElementArrayNV) then Exit;
  6978. glDrawRangeElementArrayNV := wglGetProcAddress('glDrawRangeElementArrayNV');
  6979. if not Assigned(glDrawRangeElementArrayNV) then Exit;
  6980. glMultiDrawElementArrayNV := wglGetProcAddress('glMultiDrawElementArrayNV');
  6981. if not Assigned(glMultiDrawElementArrayNV) then Exit;
  6982. glMultiDrawRangeElementArrayNV := wglGetProcAddress('glMultiDrawRangeElementArrayNV');
  6983. if not Assigned(glMultiDrawRangeElementArrayNV) then Exit;
  6984. Result := TRUE;
  6985. end;
  6986. end;
  6987. function Load_GL_NV_float_buffer: Boolean;
  6988. var
  6989. extstring: String;
  6990. begin
  6991. Result := FALSE;
  6992. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  6993. if glext_ExtensionSupported('GL_NV_float_buffer', extstring) then
  6994. begin
  6995. Result := TRUE;
  6996. end;
  6997. end;
  6998. function Load_GL_NV_fragment_program: Boolean;
  6999. var
  7000. extstring: String;
  7001. begin
  7002. Result := FALSE;
  7003. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7004. if glext_ExtensionSupported('GL_NV_fragment_program', extstring) then
  7005. begin
  7006. glProgramNamedParameter4fNV := wglGetProcAddress('glProgramNamedParameter4fNV');
  7007. if not Assigned(glProgramNamedParameter4fNV) then Exit;
  7008. glProgramNamedParameter4dNV := wglGetProcAddress('glProgramNamedParameter4dNV');
  7009. if not Assigned(glProgramNamedParameter4dNV) then Exit;
  7010. glGetProgramNamedParameterfvNV := wglGetProcAddress('glGetProgramNamedParameterfvNV');
  7011. if not Assigned(glGetProgramNamedParameterfvNV) then Exit;
  7012. glGetProgramNamedParameterdvNV := wglGetProcAddress('glGetProgramNamedParameterdvNV');
  7013. if not Assigned(glGetProgramNamedParameterdvNV) then Exit;
  7014. glProgramLocalParameter4dARB := wglGetProcAddress('glProgramLocalParameter4dARB');
  7015. if not Assigned(glProgramLocalParameter4dARB) then Exit;
  7016. glProgramLocalParameter4dvARB := wglGetProcAddress('glProgramLocalParameter4dvARB');
  7017. if not Assigned(glProgramLocalParameter4dvARB) then Exit;
  7018. glProgramLocalParameter4fARB := wglGetProcAddress('glProgramLocalParameter4fARB');
  7019. if not Assigned(glProgramLocalParameter4fARB) then Exit;
  7020. glProgramLocalParameter4fvARB := wglGetProcAddress('glProgramLocalParameter4fvARB');
  7021. if not Assigned(glProgramLocalParameter4fvARB) then Exit;
  7022. glGetProgramLocalParameterdvARB := wglGetProcAddress('glGetProgramLocalParameterdvARB');
  7023. if not Assigned(glGetProgramLocalParameterdvARB) then Exit;
  7024. glGetProgramLocalParameterfvARB := wglGetProcAddress('glGetProgramLocalParameterfvARB');
  7025. if not Assigned(glGetProgramLocalParameterfvARB) then Exit;
  7026. Result := TRUE;
  7027. end;
  7028. end;
  7029. function Load_GL_NV_primitive_restart: Boolean;
  7030. var
  7031. extstring: String;
  7032. begin
  7033. Result := FALSE;
  7034. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7035. if glext_ExtensionSupported('GL_NV_primitive_restart', extstring) then
  7036. begin
  7037. glPrimitiveRestartNV := wglGetProcAddress('glPrimitiveRestartNV');
  7038. if not Assigned(glPrimitiveRestartNV) then Exit;
  7039. glPrimitiveRestartIndexNV := wglGetProcAddress('glPrimitiveRestartIndexNV');
  7040. if not Assigned(glPrimitiveRestartIndexNV) then Exit;
  7041. Result := TRUE;
  7042. end;
  7043. end;
  7044. function Load_GL_NV_vertex_program2: Boolean;
  7045. var
  7046. extstring: String;
  7047. begin
  7048. Result := FALSE;
  7049. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7050. if glext_ExtensionSupported('GL_NV_vertex_program2', extstring) then
  7051. begin
  7052. Result := TRUE;
  7053. end;
  7054. end;
  7055. {$IFDEF Windows}
  7056. function Load_WGL_NV_render_texture_rectangle: Boolean;
  7057. var
  7058. extstring: String;
  7059. begin
  7060. Result := FALSE;
  7061. @wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  7062. if not Assigned(wglGetExtensionsStringARB) then Exit;
  7063. extstring := wglGetExtensionsStringARB(wglGetCurrentDC);
  7064. if glext_ExtensionSupported('WGL_NV_render_texture_rectangle', extstring) then
  7065. begin
  7066. Result := TRUE;
  7067. end;
  7068. end;
  7069. {$ENDIF}
  7070. function Load_GL_NV_pixel_data_range: Boolean;
  7071. var
  7072. extstring: String;
  7073. begin
  7074. Result := FALSE;
  7075. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7076. if glext_ExtensionSupported('GL_NV_pixel_data_range', extstring) then
  7077. begin
  7078. @glPixelDataRangeNV := wglGetProcAddress('glPixelDataRangeNV');
  7079. if not Assigned(glPixelDataRangeNV) then Exit;
  7080. @glFlushPixelDataRangeNV := wglGetProcAddress('glFlushPixelDataRangeNV');
  7081. if not Assigned(glFlushPixelDataRangeNV) then Exit;
  7082. {$IFDEF Windows}
  7083. @wglAllocateMemoryNV := wglGetProcAddress('wglAllocateMemoryNV');
  7084. if not Assigned(wglAllocateMemoryNV) then Exit;
  7085. @wglFreeMemoryNV := wglGetProcAddress('wglFreeMemoryNV');
  7086. if not Assigned(wglFreeMemoryNV) then Exit;
  7087. {$ENDIF}
  7088. Result := TRUE;
  7089. end;
  7090. end;
  7091. function Load_GL_EXT_texture_rectangle: Boolean;
  7092. var
  7093. extstring: String;
  7094. begin
  7095. Result := FALSE;
  7096. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7097. if glext_ExtensionSupported('GL_EXT_texture_rectangle', extstring) then
  7098. begin
  7099. Result := TRUE;
  7100. end;
  7101. end;
  7102. function Load_GL_S3_s3tc: Boolean;
  7103. var
  7104. extstring: String;
  7105. begin
  7106. Result := FALSE;
  7107. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7108. if glext_ExtensionSupported('GL_S3_s3tc', extstring) then
  7109. begin
  7110. Result := TRUE;
  7111. end;
  7112. end;
  7113. function Load_GL_ATI_draw_buffers: Boolean;
  7114. var
  7115. extstring: String;
  7116. begin
  7117. Result := FALSE;
  7118. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7119. if glext_ExtensionSupported('GL_ATI_draw_buffers', extstring) then
  7120. begin
  7121. @glDrawBuffersATI := wglGetProcAddress('glDrawBuffersATI');
  7122. if not Assigned(glDrawBuffersATI) then Exit;
  7123. Result := TRUE;
  7124. end;
  7125. end;
  7126. {$IFDEF Windows}
  7127. function Load_WGL_ATI_pixel_format_float: Boolean;
  7128. var
  7129. extstring: String;
  7130. begin
  7131. Result := FALSE;
  7132. @wglGetExtensionsStringARB := wglGetProcAddress('wglGetExtensionsStringARB');
  7133. if not Assigned(wglGetExtensionsStringARB) then Exit;
  7134. extstring := wglGetExtensionsStringARB(wglGetCurrentDC);
  7135. if glext_ExtensionSupported('WGL_ATI_pixel_format_float', extstring) then
  7136. begin
  7137. Result := TRUE;
  7138. end;
  7139. end;
  7140. {$ENDIF}
  7141. function Load_GL_ATI_texture_env_combine3: Boolean;
  7142. var
  7143. extstring: String;
  7144. begin
  7145. Result := FALSE;
  7146. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7147. if glext_ExtensionSupported('GL_ATI_texture_env_combine3', extstring) then
  7148. begin
  7149. Result := TRUE;
  7150. end;
  7151. end;
  7152. function Load_GL_ATI_texture_float: Boolean;
  7153. var
  7154. extstring: String;
  7155. begin
  7156. Result := FALSE;
  7157. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7158. if glext_ExtensionSupported('GL_ATI_texture_float', extstring) then
  7159. begin
  7160. Result := TRUE;
  7161. end;
  7162. end;
  7163. function Load_GL_NV_texture_expand_normal: Boolean;
  7164. var
  7165. extstring: String;
  7166. begin
  7167. Result := FALSE;
  7168. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7169. if glext_ExtensionSupported('GL_NV_texture_expand_normal', extstring) then
  7170. begin
  7171. Result := TRUE;
  7172. end;
  7173. end;
  7174. function Load_GL_NV_half_float: Boolean;
  7175. var
  7176. extstring: String;
  7177. begin
  7178. Result := FALSE;
  7179. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7180. if glext_ExtensionSupported('GL_NV_half_float', extstring) then
  7181. begin
  7182. @glVertex2hNV := wglGetProcAddress('glVertex2hNV');
  7183. if not Assigned(glVertex2hNV) then Exit;
  7184. @glVertex2hvNV := wglGetProcAddress('glVertex2hvNV');
  7185. if not Assigned(glVertex2hvNV) then Exit;
  7186. @glVertex3hNV := wglGetProcAddress('glVertex3hNV');
  7187. if not Assigned(glVertex3hNV) then Exit;
  7188. @glVertex3hvNV := wglGetProcAddress('glVertex3hvNV');
  7189. if not Assigned(glVertex3hvNV) then Exit;
  7190. @glVertex4hNV := wglGetProcAddress('glVertex4hNV');
  7191. if not Assigned(glVertex4hNV) then Exit;
  7192. @glVertex4hvNV := wglGetProcAddress('glVertex4hvNV');
  7193. if not Assigned(glVertex4hvNV) then Exit;
  7194. @glNormal3hNV := wglGetProcAddress('glNormal3hNV');
  7195. if not Assigned(glNormal3hNV) then Exit;
  7196. @glNormal3hvNV := wglGetProcAddress('glNormal3hvNV');
  7197. if not Assigned(glNormal3hvNV) then Exit;
  7198. @glColor3hNV := wglGetProcAddress('glColor3hNV');
  7199. if not Assigned(glColor3hNV) then Exit;
  7200. @glColor3hvNV := wglGetProcAddress('glColor3hvNV');
  7201. if not Assigned(glColor3hvNV) then Exit;
  7202. @glColor4hNV := wglGetProcAddress('glColor4hNV');
  7203. if not Assigned(glColor4hNV) then Exit;
  7204. @glColor4hvNV := wglGetProcAddress('glColor4hvNV');
  7205. if not Assigned(glColor4hvNV) then Exit;
  7206. @glTexCoord1hNV := wglGetProcAddress('glTexCoord1hNV');
  7207. if not Assigned(glTexCoord1hNV) then Exit;
  7208. @glTexCoord1hvNV := wglGetProcAddress('glTexCoord1hvNV');
  7209. if not Assigned(glTexCoord1hvNV) then Exit;
  7210. @glTexCoord2hNV := wglGetProcAddress('glTexCoord2hNV');
  7211. if not Assigned(glTexCoord2hNV) then Exit;
  7212. @glTexCoord2hvNV := wglGetProcAddress('glTexCoord2hvNV');
  7213. if not Assigned(glTexCoord2hvNV) then Exit;
  7214. @glTexCoord3hNV := wglGetProcAddress('glTexCoord3hNV');
  7215. if not Assigned(glTexCoord3hNV) then Exit;
  7216. @glTexCoord3hvNV := wglGetProcAddress('glTexCoord3hvNV');
  7217. if not Assigned(glTexCoord3hvNV) then Exit;
  7218. @glTexCoord4hNV := wglGetProcAddress('glTexCoord4hNV');
  7219. if not Assigned(glTexCoord4hNV) then Exit;
  7220. @glTexCoord4hvNV := wglGetProcAddress('glTexCoord4hvNV');
  7221. if not Assigned(glTexCoord4hvNV) then Exit;
  7222. @glMultiTexCoord1hNV := wglGetProcAddress('glMultiTexCoord1hNV');
  7223. if not Assigned(glMultiTexCoord1hNV) then Exit;
  7224. @glMultiTexCoord1hvNV := wglGetProcAddress('glMultiTexCoord1hvNV');
  7225. if not Assigned(glMultiTexCoord1hvNV) then Exit;
  7226. @glMultiTexCoord2hNV := wglGetProcAddress('glMultiTexCoord2hNV');
  7227. if not Assigned(glMultiTexCoord2hNV) then Exit;
  7228. @glMultiTexCoord2hvNV := wglGetProcAddress('glMultiTexCoord2hvNV');
  7229. if not Assigned(glMultiTexCoord2hvNV) then Exit;
  7230. @glMultiTexCoord3hNV := wglGetProcAddress('glMultiTexCoord3hNV');
  7231. if not Assigned(glMultiTexCoord3hNV) then Exit;
  7232. @glMultiTexCoord3hvNV := wglGetProcAddress('glMultiTexCoord3hvNV');
  7233. if not Assigned(glMultiTexCoord3hvNV) then Exit;
  7234. @glMultiTexCoord4hNV := wglGetProcAddress('glMultiTexCoord4hNV');
  7235. if not Assigned(glMultiTexCoord4hNV) then Exit;
  7236. @glMultiTexCoord4hvNV := wglGetProcAddress('glMultiTexCoord4hvNV');
  7237. if not Assigned(glMultiTexCoord4hvNV) then Exit;
  7238. @glFogCoordhNV := wglGetProcAddress('glFogCoordhNV');
  7239. if not Assigned(glFogCoordhNV) then Exit;
  7240. @glFogCoordhvNV := wglGetProcAddress('glFogCoordhvNV');
  7241. if not Assigned(glFogCoordhvNV) then Exit;
  7242. @glSecondaryColor3hNV := wglGetProcAddress('glSecondaryColor3hNV');
  7243. if not Assigned(glSecondaryColor3hNV) then Exit;
  7244. @glSecondaryColor3hvNV := wglGetProcAddress('glSecondaryColor3hvNV');
  7245. if not Assigned(glSecondaryColor3hvNV) then Exit;
  7246. @glVertexWeighthNV := wglGetProcAddress('glVertexWeighthNV');
  7247. if not Assigned(glVertexWeighthNV) then Exit;
  7248. @glVertexWeighthvNV := wglGetProcAddress('glVertexWeighthvNV');
  7249. if not Assigned(glVertexWeighthvNV) then Exit;
  7250. @glVertexAttrib1hNV := wglGetProcAddress('glVertexAttrib1hNV');
  7251. if not Assigned(glVertexAttrib1hNV) then Exit;
  7252. @glVertexAttrib1hvNV := wglGetProcAddress('glVertexAttrib1hvNV');
  7253. if not Assigned(glVertexAttrib1hvNV) then Exit;
  7254. @glVertexAttrib2hNV := wglGetProcAddress('glVertexAttrib2hNV');
  7255. if not Assigned(glVertexAttrib2hNV) then Exit;
  7256. @glVertexAttrib2hvNV := wglGetProcAddress('glVertexAttrib2hvNV');
  7257. if not Assigned(glVertexAttrib2hvNV) then Exit;
  7258. @glVertexAttrib3hNV := wglGetProcAddress('glVertexAttrib3hNV');
  7259. if not Assigned(glVertexAttrib3hNV) then Exit;
  7260. @glVertexAttrib3hvNV := wglGetProcAddress('glVertexAttrib3hvNV');
  7261. if not Assigned(glVertexAttrib3hvNV) then Exit;
  7262. @glVertexAttrib4hNV := wglGetProcAddress('glVertexAttrib4hNV');
  7263. if not Assigned(glVertexAttrib4hNV) then Exit;
  7264. @glVertexAttrib4hvNV := wglGetProcAddress('glVertexAttrib4hvNV');
  7265. if not Assigned(glVertexAttrib4hvNV) then Exit;
  7266. @glVertexAttribs1hvNV := wglGetProcAddress('glVertexAttribs1hvNV');
  7267. if not Assigned(glVertexAttribs1hvNV) then Exit;
  7268. @glVertexAttribs2hvNV := wglGetProcAddress('glVertexAttribs2hvNV');
  7269. if not Assigned(glVertexAttribs2hvNV) then Exit;
  7270. @glVertexAttribs3hvNV := wglGetProcAddress('glVertexAttribs3hvNV');
  7271. if not Assigned(glVertexAttribs3hvNV) then Exit;
  7272. @glVertexAttribs4hvNV := wglGetProcAddress('glVertexAttribs4hvNV');
  7273. if not Assigned(glVertexAttribs4hvNV) then Exit;
  7274. Result := TRUE;
  7275. end;
  7276. end;
  7277. function Load_GL_ATI_map_object_buffer: Boolean;
  7278. var
  7279. extstring: String;
  7280. begin
  7281. Result := FALSE;
  7282. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7283. if glext_ExtensionSupported('GL_ATI_map_object_buffer', extstring) then
  7284. begin
  7285. @glMapObjectBufferATI := wglGetProcAddress('glMapObjectBufferATI');
  7286. if not Assigned(glMapObjectBufferATI) then Exit;
  7287. @glUnmapObjectBufferATI := wglGetProcAddress('glUnmapObjectBufferATI');
  7288. if not Assigned(glUnmapObjectBufferATI) then Exit;
  7289. Result := TRUE;
  7290. end;
  7291. end;
  7292. function Load_GL_ATI_separate_stencil: Boolean;
  7293. var
  7294. extstring: String;
  7295. begin
  7296. Result := FALSE;
  7297. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7298. if glext_ExtensionSupported('GL_ATI_separate_stencil', extstring) then
  7299. begin
  7300. @glStencilOpSeparateATI := wglGetProcAddress('glStencilOpSeparateATI');
  7301. if not Assigned(glStencilOpSeparateATI) then Exit;
  7302. @glStencilFuncSeparateATI := wglGetProcAddress('glStencilFuncSeparateATI');
  7303. if not Assigned(glStencilFuncSeparateATI) then Exit;
  7304. Result := TRUE;
  7305. end;
  7306. end;
  7307. function Load_GL_ATI_vertex_attrib_array_object: Boolean;
  7308. var
  7309. extstring: String;
  7310. begin
  7311. Result := FALSE;
  7312. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7313. if glext_ExtensionSupported('GL_ATI_vertex_attrib_array_object', extstring) then
  7314. begin
  7315. @glVertexAttribArrayObjectATI := wglGetProcAddress('glVertexAttribArrayObjectATI');
  7316. if not Assigned(glVertexAttribArrayObjectATI) then Exit;
  7317. @glGetVertexAttribArrayObjectfvATI := wglGetProcAddress('glGetVertexAttribArrayObjectfvATI');
  7318. if not Assigned(glGetVertexAttribArrayObjectfvATI) then Exit;
  7319. @glGetVertexAttribArrayObjectivATI := wglGetProcAddress('glGetVertexAttribArrayObjectivATI');
  7320. if not Assigned(glGetVertexAttribArrayObjectivATI) then Exit;
  7321. Result := TRUE;
  7322. end;
  7323. end;
  7324. function Load_GL_ARB_occlusion_query: Boolean;
  7325. var
  7326. extstring: String;
  7327. begin
  7328. Result := FALSE;
  7329. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7330. if glext_ExtensionSupported('GL_ARB_occlusion_query', extstring) then
  7331. begin
  7332. @glGenQueriesARB := wglGetProcAddress('glGenQueriesARB');
  7333. if not Assigned(glGenQueriesARB) then Exit;
  7334. @glDeleteQueriesARB := wglGetProcAddress('glDeleteQueriesARB');
  7335. if not Assigned(glDeleteQueriesARB) then Exit;
  7336. @glIsQueryARB := wglGetProcAddress('glIsQueryARB');
  7337. if not Assigned(glIsQueryARB) then Exit;
  7338. @glBeginQueryARB := wglGetProcAddress('glBeginQueryARB');
  7339. if not Assigned(glBeginQueryARB) then Exit;
  7340. @glEndQueryARB := wglGetProcAddress('glEndQueryARB');
  7341. if not Assigned(glEndQueryARB) then Exit;
  7342. @glGetQueryivARB := wglGetProcAddress('glGetQueryivARB');
  7343. if not Assigned(glGetQueryivARB) then Exit;
  7344. @glGetQueryObjectivARB := wglGetProcAddress('glGetQueryObjectivARB');
  7345. if not Assigned(glGetQueryObjectivARB) then Exit;
  7346. @glGetQueryObjectuivARB := wglGetProcAddress('glGetQueryObjectuivARB');
  7347. if not Assigned(glGetQueryObjectuivARB) then Exit;
  7348. Result := TRUE;
  7349. end;
  7350. end;
  7351. function Load_GL_ARB_shader_objects: Boolean;
  7352. var
  7353. extstring: String;
  7354. begin
  7355. Result := FALSE;
  7356. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7357. if glext_ExtensionSupported('GL_ARB_shader_objects', extstring) then
  7358. begin
  7359. @glDeleteObjectARB := wglGetProcAddress('glDeleteObjectARB');
  7360. if not Assigned(glDeleteObjectARB) then Exit;
  7361. @glGetHandleARB := wglGetProcAddress('glGetHandleARB');
  7362. if not Assigned(glGetHandleARB) then Exit;
  7363. @glDetachObjectARB := wglGetProcAddress('glDetachObjectARB');
  7364. if not Assigned(glDetachObjectARB) then Exit;
  7365. @glCreateShaderObjectARB := wglGetProcAddress('glCreateShaderObjectARB');
  7366. if not Assigned(glCreateShaderObjectARB) then Exit;
  7367. @glShaderSourceARB := wglGetProcAddress('glShaderSourceARB');
  7368. if not Assigned(glShaderSourceARB) then Exit;
  7369. @glCompileShaderARB := wglGetProcAddress('glCompileShaderARB');
  7370. if not Assigned(glCompileShaderARB) then Exit;
  7371. @glCreateProgramObjectARB := wglGetProcAddress('glCreateProgramObjectARB');
  7372. if not Assigned(glCreateProgramObjectARB) then Exit;
  7373. @glAttachObjectARB := wglGetProcAddress('glAttachObjectARB');
  7374. if not Assigned(glAttachObjectARB) then Exit;
  7375. @glLinkProgramARB := wglGetProcAddress('glLinkProgramARB');
  7376. if not Assigned(glLinkProgramARB) then Exit;
  7377. @glUseProgramObjectARB := wglGetProcAddress('glUseProgramObjectARB');
  7378. if not Assigned(glUseProgramObjectARB) then Exit;
  7379. @glValidateProgramARB := wglGetProcAddress('glValidateProgramARB');
  7380. if not Assigned(glValidateProgramARB) then Exit;
  7381. @glUniform1fARB := wglGetProcAddress('glUniform1fARB');
  7382. if not Assigned(glUniform1fARB) then Exit;
  7383. @glUniform2fARB := wglGetProcAddress('glUniform2fARB');
  7384. if not Assigned(glUniform2fARB) then Exit;
  7385. @glUniform3fARB := wglGetProcAddress('glUniform3fARB');
  7386. if not Assigned(glUniform3fARB) then Exit;
  7387. @glUniform4fARB := wglGetProcAddress('glUniform4fARB');
  7388. if not Assigned(glUniform4fARB) then Exit;
  7389. @glUniform1iARB := wglGetProcAddress('glUniform1iARB');
  7390. if not Assigned(glUniform1iARB) then Exit;
  7391. @glUniform2iARB := wglGetProcAddress('glUniform2iARB');
  7392. if not Assigned(glUniform2iARB) then Exit;
  7393. @glUniform3iARB := wglGetProcAddress('glUniform3iARB');
  7394. if not Assigned(glUniform3iARB) then Exit;
  7395. @glUniform4iARB := wglGetProcAddress('glUniform4iARB');
  7396. if not Assigned(glUniform4iARB) then Exit;
  7397. @glUniform1fvARB := wglGetProcAddress('glUniform1fvARB');
  7398. if not Assigned(glUniform1fvARB) then Exit;
  7399. @glUniform2fvARB := wglGetProcAddress('glUniform2fvARB');
  7400. if not Assigned(glUniform2fvARB) then Exit;
  7401. @glUniform3fvARB := wglGetProcAddress('glUniform3fvARB');
  7402. if not Assigned(glUniform3fvARB) then Exit;
  7403. @glUniform4fvARB := wglGetProcAddress('glUniform4fvARB');
  7404. if not Assigned(glUniform4fvARB) then Exit;
  7405. @glUniform1ivARB := wglGetProcAddress('glUniform1ivARB');
  7406. if not Assigned(glUniform1ivARB) then Exit;
  7407. @glUniform2ivARB := wglGetProcAddress('glUniform2ivARB');
  7408. if not Assigned(glUniform2ivARB) then Exit;
  7409. @glUniform3ivARB := wglGetProcAddress('glUniform3ivARB');
  7410. if not Assigned(glUniform3ivARB) then Exit;
  7411. @glUniform4ivARB := wglGetProcAddress('glUniform4ivARB');
  7412. if not Assigned(glUniform4ivARB) then Exit;
  7413. @glUniformMatrix2fvARB := wglGetProcAddress('glUniformMatrix2fvARB');
  7414. if not Assigned(glUniformMatrix2fvARB) then Exit;
  7415. @glUniformMatrix3fvARB := wglGetProcAddress('glUniformMatrix3fvARB');
  7416. if not Assigned(glUniformMatrix3fvARB) then Exit;
  7417. @glUniformMatrix4fvARB := wglGetProcAddress('glUniformMatrix4fvARB');
  7418. if not Assigned(glUniformMatrix4fvARB) then Exit;
  7419. @glGetObjectParameterfvARB := wglGetProcAddress('glGetObjectParameterfvARB');
  7420. if not Assigned(glGetObjectParameterfvARB) then Exit;
  7421. @glGetObjectParameterivARB := wglGetProcAddress('glGetObjectParameterivARB');
  7422. if not Assigned(glGetObjectParameterivARB) then Exit;
  7423. @glGetInfoLogARB := wglGetProcAddress('glGetInfoLogARB');
  7424. if not Assigned(glGetInfoLogARB) then Exit;
  7425. @glGetAttachedObjectsARB := wglGetProcAddress('glGetAttachedObjectsARB');
  7426. if not Assigned(glGetAttachedObjectsARB) then Exit;
  7427. @glGetUniformLocationARB := wglGetProcAddress('glGetUniformLocationARB');
  7428. if not Assigned(glGetUniformLocationARB) then Exit;
  7429. @glGetActiveUniformARB := wglGetProcAddress('glGetActiveUniformARB');
  7430. if not Assigned(glGetActiveUniformARB) then Exit;
  7431. @glGetUniformfvARB := wglGetProcAddress('glGetUniformfvARB');
  7432. if not Assigned(glGetUniformfvARB) then Exit;
  7433. @glGetUniformivARB := wglGetProcAddress('glGetUniformivARB');
  7434. if not Assigned(glGetUniformivARB) then Exit;
  7435. @glGetShaderSourceARB := wglGetProcAddress('glGetShaderSourceARB');
  7436. if not Assigned(glGetShaderSourceARB) then Exit;
  7437. Result := TRUE;
  7438. end;
  7439. end;
  7440. function Load_GL_ARB_vertex_shader: Boolean;
  7441. var
  7442. extstring: String;
  7443. begin
  7444. Result := FALSE;
  7445. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7446. if glext_ExtensionSupported('GL_ARB_vertex_shader', extstring) then
  7447. begin
  7448. @glVertexAttrib1fARB := wglGetProcAddress('glVertexAttrib1fARB');
  7449. if not Assigned(glVertexAttrib1fARB) then Exit;
  7450. @glVertexAttrib1sARB := wglGetProcAddress('glVertexAttrib1sARB');
  7451. if not Assigned(glVertexAttrib1sARB) then Exit;
  7452. @glVertexAttrib1dARB := wglGetProcAddress('glVertexAttrib1dARB');
  7453. if not Assigned(glVertexAttrib1dARB) then Exit;
  7454. @glVertexAttrib2fARB := wglGetProcAddress('glVertexAttrib2fARB');
  7455. if not Assigned(glVertexAttrib2fARB) then Exit;
  7456. @glVertexAttrib2sARB := wglGetProcAddress('glVertexAttrib2sARB');
  7457. if not Assigned(glVertexAttrib2sARB) then Exit;
  7458. @glVertexAttrib2dARB := wglGetProcAddress('glVertexAttrib2dARB');
  7459. if not Assigned(glVertexAttrib2dARB) then Exit;
  7460. @glVertexAttrib3fARB := wglGetProcAddress('glVertexAttrib3fARB');
  7461. if not Assigned(glVertexAttrib3fARB) then Exit;
  7462. @glVertexAttrib3sARB := wglGetProcAddress('glVertexAttrib3sARB');
  7463. if not Assigned(glVertexAttrib3sARB) then Exit;
  7464. @glVertexAttrib3dARB := wglGetProcAddress('glVertexAttrib3dARB');
  7465. if not Assigned(glVertexAttrib3dARB) then Exit;
  7466. @glVertexAttrib4fARB := wglGetProcAddress('glVertexAttrib4fARB');
  7467. if not Assigned(glVertexAttrib4fARB) then Exit;
  7468. @glVertexAttrib4sARB := wglGetProcAddress('glVertexAttrib4sARB');
  7469. if not Assigned(glVertexAttrib4sARB) then Exit;
  7470. @glVertexAttrib4dARB := wglGetProcAddress('glVertexAttrib4dARB');
  7471. if not Assigned(glVertexAttrib4dARB) then Exit;
  7472. @glVertexAttrib4NubARB := wglGetProcAddress('glVertexAttrib4NubARB');
  7473. if not Assigned(glVertexAttrib4NubARB) then Exit;
  7474. @glVertexAttrib1fvARB := wglGetProcAddress('glVertexAttrib1fvARB');
  7475. if not Assigned(glVertexAttrib1fvARB) then Exit;
  7476. @glVertexAttrib1svARB := wglGetProcAddress('glVertexAttrib1svARB');
  7477. if not Assigned(glVertexAttrib1svARB) then Exit;
  7478. @glVertexAttrib1dvARB := wglGetProcAddress('glVertexAttrib1dvARB');
  7479. if not Assigned(glVertexAttrib1dvARB) then Exit;
  7480. @glVertexAttrib2fvARB := wglGetProcAddress('glVertexAttrib2fvARB');
  7481. if not Assigned(glVertexAttrib2fvARB) then Exit;
  7482. @glVertexAttrib2svARB := wglGetProcAddress('glVertexAttrib2svARB');
  7483. if not Assigned(glVertexAttrib2svARB) then Exit;
  7484. @glVertexAttrib2dvARB := wglGetProcAddress('glVertexAttrib2dvARB');
  7485. if not Assigned(glVertexAttrib2dvARB) then Exit;
  7486. @glVertexAttrib3fvARB := wglGetProcAddress('glVertexAttrib3fvARB');
  7487. if not Assigned(glVertexAttrib3fvARB) then Exit;
  7488. @glVertexAttrib3svARB := wglGetProcAddress('glVertexAttrib3svARB');
  7489. if not Assigned(glVertexAttrib3svARB) then Exit;
  7490. @glVertexAttrib3dvARB := wglGetProcAddress('glVertexAttrib3dvARB');
  7491. if not Assigned(glVertexAttrib3dvARB) then Exit;
  7492. @glVertexAttrib4fvARB := wglGetProcAddress('glVertexAttrib4fvARB');
  7493. if not Assigned(glVertexAttrib4fvARB) then Exit;
  7494. @glVertexAttrib4svARB := wglGetProcAddress('glVertexAttrib4svARB');
  7495. if not Assigned(glVertexAttrib4svARB) then Exit;
  7496. @glVertexAttrib4dvARB := wglGetProcAddress('glVertexAttrib4dvARB');
  7497. if not Assigned(glVertexAttrib4dvARB) then Exit;
  7498. @glVertexAttrib4ivARB := wglGetProcAddress('glVertexAttrib4ivARB');
  7499. if not Assigned(glVertexAttrib4ivARB) then Exit;
  7500. @glVertexAttrib4bvARB := wglGetProcAddress('glVertexAttrib4bvARB');
  7501. if not Assigned(glVertexAttrib4bvARB) then Exit;
  7502. @glVertexAttrib4ubvARB := wglGetProcAddress('glVertexAttrib4ubvARB');
  7503. if not Assigned(glVertexAttrib4ubvARB) then Exit;
  7504. @glVertexAttrib4usvARB := wglGetProcAddress('glVertexAttrib4usvARB');
  7505. if not Assigned(glVertexAttrib4usvARB) then Exit;
  7506. @glVertexAttrib4uivARB := wglGetProcAddress('glVertexAttrib4uivARB');
  7507. if not Assigned(glVertexAttrib4uivARB) then Exit;
  7508. @glVertexAttrib4NbvARB := wglGetProcAddress('glVertexAttrib4NbvARB');
  7509. if not Assigned(glVertexAttrib4NbvARB) then Exit;
  7510. @glVertexAttrib4NsvARB := wglGetProcAddress('glVertexAttrib4NsvARB');
  7511. if not Assigned(glVertexAttrib4NsvARB) then Exit;
  7512. @glVertexAttrib4NivARB := wglGetProcAddress('glVertexAttrib4NivARB');
  7513. if not Assigned(glVertexAttrib4NivARB) then Exit;
  7514. @glVertexAttrib4NubvARB := wglGetProcAddress('glVertexAttrib4NubvARB');
  7515. if not Assigned(glVertexAttrib4NubvARB) then Exit;
  7516. @glVertexAttrib4NusvARB := wglGetProcAddress('glVertexAttrib4NusvARB');
  7517. if not Assigned(glVertexAttrib4NusvARB) then Exit;
  7518. @glVertexAttrib4NuivARB := wglGetProcAddress('glVertexAttrib4NuivARB');
  7519. if not Assigned(glVertexAttrib4NuivARB) then Exit;
  7520. @glVertexAttribPointerARB := wglGetProcAddress('glVertexAttribPointerARB');
  7521. if not Assigned(glVertexAttribPointerARB) then Exit;
  7522. @glEnableVertexAttribArrayARB := wglGetProcAddress('glEnableVertexAttribArrayARB');
  7523. if not Assigned(glEnableVertexAttribArrayARB) then Exit;
  7524. @glDisableVertexAttribArrayARB := wglGetProcAddress('glDisableVertexAttribArrayARB');
  7525. if not Assigned(glDisableVertexAttribArrayARB) then Exit;
  7526. @glBindAttribLocationARB := wglGetProcAddress('glBindAttribLocationARB');
  7527. if not Assigned(glBindAttribLocationARB) then Exit;
  7528. @glGetActiveAttribARB := wglGetProcAddress('glGetActiveAttribARB');
  7529. if not Assigned(glGetActiveAttribARB) then Exit;
  7530. @glGetAttribLocationARB := wglGetProcAddress('glGetAttribLocationARB');
  7531. if not Assigned(glGetAttribLocationARB) then Exit;
  7532. @glGetVertexAttribdvARB := wglGetProcAddress('glGetVertexAttribdvARB');
  7533. if not Assigned(glGetVertexAttribdvARB) then Exit;
  7534. @glGetVertexAttribfvARB := wglGetProcAddress('glGetVertexAttribfvARB');
  7535. if not Assigned(glGetVertexAttribfvARB) then Exit;
  7536. @glGetVertexAttribivARB := wglGetProcAddress('glGetVertexAttribivARB');
  7537. if not Assigned(glGetVertexAttribivARB) then Exit;
  7538. @glGetVertexAttribPointervARB := wglGetProcAddress('glGetVertexAttribPointervARB');
  7539. if not Assigned(glGetVertexAttribPointervARB) then Exit;
  7540. Result := TRUE;
  7541. end;
  7542. end;
  7543. function Load_GL_ARB_fragment_shader: Boolean;
  7544. var
  7545. extstring: String;
  7546. begin
  7547. Result := FALSE;
  7548. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7549. if glext_ExtensionSupported('GL_ARB_fragment_shader', extstring) then
  7550. begin
  7551. Result := TRUE;
  7552. end;
  7553. end;
  7554. function Load_GL_ARB_shading_language_100: Boolean;
  7555. var
  7556. extstring: String;
  7557. begin
  7558. Result := FALSE;
  7559. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7560. if glext_ExtensionSupported('GL_ARB_shading_language_100', extstring) then
  7561. begin
  7562. Result := TRUE;
  7563. end;
  7564. end;
  7565. function Load_GL_ARB_texture_non_power_of_two: Boolean;
  7566. var
  7567. extstring: String;
  7568. begin
  7569. Result := FALSE;
  7570. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7571. if glext_ExtensionSupported('GL_ARB_texture_non_power_of_two', extstring) then
  7572. begin
  7573. Result := TRUE;
  7574. end;
  7575. end;
  7576. function Load_GL_ARB_point_sprite: Boolean;
  7577. var
  7578. extstring: String;
  7579. begin
  7580. Result := FALSE;
  7581. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7582. if glext_ExtensionSupported('GL_ARB_point_sprite', extstring) then
  7583. begin
  7584. Result := TRUE;
  7585. end;
  7586. end;
  7587. function Load_GL_EXT_depth_bounds_test: Boolean;
  7588. var
  7589. extstring: String;
  7590. begin
  7591. Result := FALSE;
  7592. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7593. if glext_ExtensionSupported('GL_EXT_depth_bounds_test', extstring) then
  7594. begin
  7595. @glDepthBoundsEXT := wglGetProcAddress('glDepthBoundsEXT');
  7596. if not Assigned(glDepthBoundsEXT) then Exit;
  7597. Result := TRUE;
  7598. end;
  7599. end;
  7600. function Load_GL_EXT_texture_mirror_clamp: Boolean;
  7601. var
  7602. extstring: String;
  7603. begin
  7604. Result := FALSE;
  7605. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7606. if glext_ExtensionSupported('GL_EXT_texture_mirror_clamp', extstring) then
  7607. begin
  7608. Result := TRUE;
  7609. end;
  7610. end;
  7611. function Load_GL_EXT_blend_equation_separate: Boolean;
  7612. var
  7613. extstring: String;
  7614. begin
  7615. Result := FALSE;
  7616. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7617. if glext_ExtensionSupported('GL_EXT_blend_equation_separate', extstring) then
  7618. begin
  7619. @glBlendEquationSeparateEXT := wglGetProcAddress('glBlendEquationSeparateEXT');
  7620. if not Assigned(glBlendEquationSeparateEXT) then Exit;
  7621. Result := TRUE;
  7622. end;
  7623. end;
  7624. function Load_GL_MESA_pack_invert: Boolean;
  7625. var
  7626. extstring: String;
  7627. begin
  7628. Result := FALSE;
  7629. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7630. if glext_ExtensionSupported('GL_MESA_pack_invert', extstring) then
  7631. begin
  7632. Result := TRUE;
  7633. end;
  7634. end;
  7635. function Load_GL_MESA_ycbcr_texture: Boolean;
  7636. var
  7637. extstring: String;
  7638. begin
  7639. Result := FALSE;
  7640. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7641. if glext_ExtensionSupported('GL_MESA_ycbcr_texture', extstring) then
  7642. begin
  7643. Result := TRUE;
  7644. end;
  7645. end;
  7646. function Load_GL_ARB_fragment_program_shadow: Boolean;
  7647. var
  7648. extstring: String;
  7649. begin
  7650. Result := FALSE;
  7651. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7652. if glext_ExtensionSupported('GL_ARB_fragment_program_shadow', extstring) then
  7653. begin
  7654. Result := TRUE;
  7655. end;
  7656. end;
  7657. function Load_GL_NV_fragment_program_option: Boolean;
  7658. var
  7659. extstring: String;
  7660. begin
  7661. Result := FALSE;
  7662. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7663. if glext_ExtensionSupported('GL_NV_fragment_program_option', extstring) then
  7664. begin
  7665. Result := TRUE;
  7666. end;
  7667. end;
  7668. function Load_GL_EXT_pixel_buffer_object: Boolean;
  7669. var
  7670. extstring: String;
  7671. begin
  7672. Result := FALSE;
  7673. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7674. if glext_ExtensionSupported('GL_EXT_pixel_buffer_object', extstring) then
  7675. begin
  7676. Result := TRUE;
  7677. end;
  7678. end;
  7679. function Load_GL_NV_fragment_program2: Boolean;
  7680. var
  7681. extstring: String;
  7682. begin
  7683. Result := FALSE;
  7684. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7685. if glext_ExtensionSupported('GL_NV_fragment_program2', extstring) then
  7686. begin
  7687. Result := TRUE;
  7688. end;
  7689. end;
  7690. function Load_GL_NV_vertex_program2_option: Boolean;
  7691. var
  7692. extstring: String;
  7693. begin
  7694. Result := FALSE;
  7695. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7696. if glext_ExtensionSupported('GL_NV_vertex_program2_option', extstring) then
  7697. begin
  7698. Result := TRUE;
  7699. end;
  7700. end;
  7701. function Load_GL_NV_vertex_program3: Boolean;
  7702. var
  7703. extstring: String;
  7704. begin
  7705. Result := FALSE;
  7706. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7707. if glext_ExtensionSupported('GL_NV_vertex_program3', extstring) then
  7708. begin
  7709. Result := TRUE;
  7710. end;
  7711. end;
  7712. function Load_GL_ARB_draw_buffers: Boolean;
  7713. var
  7714. extstring: PChar;
  7715. begin
  7716. Result := FALSE;
  7717. extstring := glGetString(GL_EXTENSIONS);
  7718. if glext_ExtensionSupported('GL_ARB_draw_buffers', extstring) then
  7719. begin
  7720. glDrawBuffersARB := wglGetProcAddress('glDrawBuffersARB');
  7721. if not Assigned(glDrawBuffersARB) then Exit;
  7722. Result := TRUE;
  7723. end;
  7724. end;
  7725. function Load_GL_ARB_texture_rectangle: Boolean;
  7726. var
  7727. extstring: PChar;
  7728. begin
  7729. Result := FALSE;
  7730. extstring := glGetString(GL_EXTENSIONS);
  7731. if glext_ExtensionSupported('GL_ARB_texture_rectangle', extstring) then
  7732. begin
  7733. Result := TRUE;
  7734. end;
  7735. end;
  7736. function Load_GL_ARB_color_buffer_float: Boolean;
  7737. var
  7738. extstring: PChar;
  7739. begin
  7740. Result := FALSE;
  7741. extstring := glGetString(GL_EXTENSIONS);
  7742. if glext_ExtensionSupported('GL_ARB_color_buffer_float', extstring) then
  7743. begin
  7744. glClampColorARB := wglGetProcAddress('glClampColorARB');
  7745. if not Assigned(glClampColorARB) then Exit;
  7746. Result := TRUE;
  7747. end;
  7748. end;
  7749. function Load_GL_ARB_half_float_pixel: Boolean;
  7750. var
  7751. extstring: PChar;
  7752. begin
  7753. Result := FALSE;
  7754. extstring := glGetString(GL_EXTENSIONS);
  7755. if glext_ExtensionSupported('GL_ARB_half_float_pixel', extstring) then
  7756. begin
  7757. Result := TRUE;
  7758. end;
  7759. end;
  7760. function Load_GL_ARB_texture_float: Boolean;
  7761. var
  7762. extstring: PChar;
  7763. begin
  7764. Result := FALSE;
  7765. extstring := glGetString(GL_EXTENSIONS);
  7766. if glext_ExtensionSupported('GL_ARB_texture_float', extstring) then
  7767. begin
  7768. Result := TRUE;
  7769. end;
  7770. end;
  7771. function Load_GL_EXT_texture_compression_dxt1: Boolean;
  7772. var
  7773. extstring: PChar;
  7774. begin
  7775. Result := FALSE;
  7776. extstring := glGetString(GL_EXTENSIONS);
  7777. if glext_ExtensionSupported('GL_EXT_texture_compression_dxt1', extstring) then
  7778. begin
  7779. Result := TRUE;
  7780. end;
  7781. end;
  7782. function Load_GL_ARB_pixel_buffer_object: Boolean;
  7783. var
  7784. extstring: PChar;
  7785. begin
  7786. Result := FALSE;
  7787. extstring := glGetString(GL_EXTENSIONS);
  7788. if glext_ExtensionSupported('GL_ARB_pixel_buffer_object', extstring) then
  7789. begin
  7790. Result := TRUE;
  7791. end;
  7792. end;
  7793. function Load_GL_EXT_framebuffer_object: Boolean;
  7794. var
  7795. extstring: PChar;
  7796. begin
  7797. Result := FALSE;
  7798. extstring := glGetString(GL_EXTENSIONS);
  7799. if glext_ExtensionSupported('GL_EXT_framebuffer_object', extstring) then
  7800. begin
  7801. glIsRenderbufferEXT := wglGetProcAddress('glIsRenderbufferEXT');
  7802. if not Assigned(glIsRenderbufferEXT) then Exit;
  7803. glBindRenderbufferEXT := wglGetProcAddress('glBindRenderbufferEXT');
  7804. if not Assigned(glBindRenderbufferEXT) then Exit;
  7805. glDeleteRenderbuffersEXT := wglGetProcAddress('glDeleteRenderbuffersEXT');
  7806. if not Assigned(glDeleteRenderbuffersEXT) then Exit;
  7807. glGenRenderbuffersEXT := wglGetProcAddress('glGenRenderbuffersEXT');
  7808. if not Assigned(glGenRenderbuffersEXT) then Exit;
  7809. glRenderbufferStorageEXT := wglGetProcAddress('glRenderbufferStorageEXT');
  7810. if not Assigned(glRenderbufferStorageEXT) then Exit;
  7811. glGetRenderbufferParameterivEXT := wglGetProcAddress('glGetRenderbufferParameterivEXT');
  7812. if not Assigned(glGetRenderbufferParameterivEXT) then Exit;
  7813. glIsFramebufferEXT := wglGetProcAddress('glIsFramebufferEXT');
  7814. if not Assigned(glIsFramebufferEXT) then Exit;
  7815. glBindFramebufferEXT := wglGetProcAddress('glBindFramebufferEXT');
  7816. if not Assigned(glBindFramebufferEXT) then Exit;
  7817. glDeleteFramebuffersEXT := wglGetProcAddress('glDeleteFramebuffersEXT');
  7818. if not Assigned(glDeleteFramebuffersEXT) then Exit;
  7819. glGenFramebuffersEXT := wglGetProcAddress('glGenFramebuffersEXT');
  7820. if not Assigned(glGenFramebuffersEXT) then Exit;
  7821. glCheckFramebufferStatusEXT := wglGetProcAddress('glCheckFramebufferStatusEXT');
  7822. if not Assigned(glCheckFramebufferStatusEXT) then Exit;
  7823. glFramebufferTexture1DEXT := wglGetProcAddress('glFramebufferTexture1DEXT');
  7824. if not Assigned(glFramebufferTexture1DEXT) then Exit;
  7825. glFramebufferTexture2DEXT := wglGetProcAddress('glFramebufferTexture2DEXT');
  7826. if not Assigned(glFramebufferTexture2DEXT) then Exit;
  7827. glFramebufferTexture3DEXT := wglGetProcAddress('glFramebufferTexture3DEXT');
  7828. if not Assigned(glFramebufferTexture3DEXT) then Exit;
  7829. glFramebufferRenderbufferEXT := wglGetProcAddress('glFramebufferRenderbufferEXT');
  7830. if not Assigned(glFramebufferRenderbufferEXT) then Exit;
  7831. glGetFramebufferAttachmentParameterivEXT := wglGetProcAddress('glGetFramebufferAttachmentParameterivEXT');
  7832. if not Assigned(glGetFramebufferAttachmentParameterivEXT) then Exit;
  7833. glGenerateMipmapEXT := wglGetProcAddress('glGenerateMipmapEXT');
  7834. if not Assigned(glGenerateMipmapEXT) then Exit;
  7835. Result := TRUE;
  7836. end;
  7837. end;
  7838. function Load_GL_version_1_4: Boolean;
  7839. var
  7840. extstring: String;
  7841. begin
  7842. Result := FALSE;
  7843. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7844. glBlendFuncSeparate := wglGetProcAddress('glBlendFuncSeparate');
  7845. if not Assigned(glBlendFuncSeparate) then Exit;
  7846. glFogCoordf := wglGetProcAddress('glFogCoordf');
  7847. if not Assigned(glFogCoordf) then Exit;
  7848. glFogCoordfv := wglGetProcAddress('glFogCoordfv');
  7849. if not Assigned(glFogCoordfv) then Exit;
  7850. glFogCoordd := wglGetProcAddress('glFogCoordd');
  7851. if not Assigned(glFogCoordd) then Exit;
  7852. glFogCoorddv := wglGetProcAddress('glFogCoorddv');
  7853. if not Assigned(glFogCoorddv) then Exit;
  7854. glFogCoordPointer := wglGetProcAddress('glFogCoordPointer');
  7855. if not Assigned(glFogCoordPointer) then Exit;
  7856. glMultiDrawArrays := wglGetProcAddress('glMultiDrawArrays');
  7857. if not Assigned(glMultiDrawArrays) then Exit;
  7858. glMultiDrawElements := wglGetProcAddress('glMultiDrawElements');
  7859. if not Assigned(glMultiDrawElements) then Exit;
  7860. glPointParameterf := wglGetProcAddress('glPointParameterf');
  7861. if not Assigned(glPointParameterf) then Exit;
  7862. glPointParameterfv := wglGetProcAddress('glPointParameterfv');
  7863. if not Assigned(glPointParameterfv) then Exit;
  7864. glPointParameteri := wglGetProcAddress('glPointParameteri');
  7865. if not Assigned(glPointParameteri) then Exit;
  7866. glPointParameteriv := wglGetProcAddress('glPointParameteriv');
  7867. if not Assigned(glPointParameteriv) then Exit;
  7868. glSecondaryColor3b := wglGetProcAddress('glSecondaryColor3b');
  7869. if not Assigned(glSecondaryColor3b) then Exit;
  7870. glSecondaryColor3bv := wglGetProcAddress('glSecondaryColor3bv');
  7871. if not Assigned(glSecondaryColor3bv) then Exit;
  7872. glSecondaryColor3d := wglGetProcAddress('glSecondaryColor3d');
  7873. if not Assigned(glSecondaryColor3d) then Exit;
  7874. glSecondaryColor3dv := wglGetProcAddress('glSecondaryColor3dv');
  7875. if not Assigned(glSecondaryColor3dv) then Exit;
  7876. glSecondaryColor3f := wglGetProcAddress('glSecondaryColor3f');
  7877. if not Assigned(glSecondaryColor3f) then Exit;
  7878. glSecondaryColor3fv := wglGetProcAddress('glSecondaryColor3fv');
  7879. if not Assigned(glSecondaryColor3fv) then Exit;
  7880. glSecondaryColor3i := wglGetProcAddress('glSecondaryColor3i');
  7881. if not Assigned(glSecondaryColor3i) then Exit;
  7882. glSecondaryColor3iv := wglGetProcAddress('glSecondaryColor3iv');
  7883. if not Assigned(glSecondaryColor3iv) then Exit;
  7884. glSecondaryColor3s := wglGetProcAddress('glSecondaryColor3s');
  7885. if not Assigned(glSecondaryColor3s) then Exit;
  7886. glSecondaryColor3sv := wglGetProcAddress('glSecondaryColor3sv');
  7887. if not Assigned(glSecondaryColor3sv) then Exit;
  7888. glSecondaryColor3ub := wglGetProcAddress('glSecondaryColor3ub');
  7889. if not Assigned(glSecondaryColor3ub) then Exit;
  7890. glSecondaryColor3ubv := wglGetProcAddress('glSecondaryColor3ubv');
  7891. if not Assigned(glSecondaryColor3ubv) then Exit;
  7892. glSecondaryColor3ui := wglGetProcAddress('glSecondaryColor3ui');
  7893. if not Assigned(glSecondaryColor3ui) then Exit;
  7894. glSecondaryColor3uiv := wglGetProcAddress('glSecondaryColor3uiv');
  7895. if not Assigned(glSecondaryColor3uiv) then Exit;
  7896. glSecondaryColor3us := wglGetProcAddress('glSecondaryColor3us');
  7897. if not Assigned(glSecondaryColor3us) then Exit;
  7898. glSecondaryColor3usv := wglGetProcAddress('glSecondaryColor3usv');
  7899. if not Assigned(glSecondaryColor3usv) then Exit;
  7900. glSecondaryColorPointer := wglGetProcAddress('glSecondaryColorPointer');
  7901. if not Assigned(glSecondaryColorPointer) then Exit;
  7902. glWindowPos2d := wglGetProcAddress('glWindowPos2d');
  7903. if not Assigned(glWindowPos2d) then Exit;
  7904. glWindowPos2dv := wglGetProcAddress('glWindowPos2dv');
  7905. if not Assigned(glWindowPos2dv) then Exit;
  7906. glWindowPos2f := wglGetProcAddress('glWindowPos2f');
  7907. if not Assigned(glWindowPos2f) then Exit;
  7908. glWindowPos2fv := wglGetProcAddress('glWindowPos2fv');
  7909. if not Assigned(glWindowPos2fv) then Exit;
  7910. glWindowPos2i := wglGetProcAddress('glWindowPos2i');
  7911. if not Assigned(glWindowPos2i) then Exit;
  7912. glWindowPos2iv := wglGetProcAddress('glWindowPos2iv');
  7913. if not Assigned(glWindowPos2iv) then Exit;
  7914. glWindowPos2s := wglGetProcAddress('glWindowPos2s');
  7915. if not Assigned(glWindowPos2s) then Exit;
  7916. glWindowPos2sv := wglGetProcAddress('glWindowPos2sv');
  7917. if not Assigned(glWindowPos2sv) then Exit;
  7918. glWindowPos3d := wglGetProcAddress('glWindowPos3d');
  7919. if not Assigned(glWindowPos3d) then Exit;
  7920. glWindowPos3dv := wglGetProcAddress('glWindowPos3dv');
  7921. if not Assigned(glWindowPos3dv) then Exit;
  7922. glWindowPos3f := wglGetProcAddress('glWindowPos3f');
  7923. if not Assigned(glWindowPos3f) then Exit;
  7924. glWindowPos3fv := wglGetProcAddress('glWindowPos3fv');
  7925. if not Assigned(glWindowPos3fv) then Exit;
  7926. glWindowPos3i := wglGetProcAddress('glWindowPos3i');
  7927. if not Assigned(glWindowPos3i) then Exit;
  7928. glWindowPos3iv := wglGetProcAddress('glWindowPos3iv');
  7929. if not Assigned(glWindowPos3iv) then Exit;
  7930. glWindowPos3s := wglGetProcAddress('glWindowPos3s');
  7931. if not Assigned(glWindowPos3s) then Exit;
  7932. glWindowPos3sv := wglGetProcAddress('glWindowPos3sv');
  7933. if not Assigned(glWindowPos3sv) then Exit;
  7934. Result := TRUE;
  7935. end;
  7936. function Load_GL_version_1_5: Boolean;
  7937. var
  7938. extstring: String;
  7939. begin
  7940. Result := FALSE;
  7941. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7942. glGenQueries := wglGetProcAddress('glGenQueries');
  7943. if not Assigned(glGenQueries) then Exit;
  7944. glDeleteQueries := wglGetProcAddress('glDeleteQueries');
  7945. if not Assigned(glDeleteQueries) then Exit;
  7946. glIsQuery := wglGetProcAddress('glIsQuery');
  7947. if not Assigned(glIsQuery) then Exit;
  7948. glBeginQuery := wglGetProcAddress('glBeginQuery');
  7949. if not Assigned(glBeginQuery) then Exit;
  7950. glEndQuery := wglGetProcAddress('glEndQuery');
  7951. if not Assigned(glEndQuery) then Exit;
  7952. glGetQueryiv := wglGetProcAddress('glGetQueryiv');
  7953. if not Assigned(glGetQueryiv) then Exit;
  7954. glGetQueryObjectiv := wglGetProcAddress('glGetQueryObjectiv');
  7955. if not Assigned(glGetQueryObjectiv) then Exit;
  7956. glGetQueryObjectuiv := wglGetProcAddress('glGetQueryObjectuiv');
  7957. if not Assigned(glGetQueryObjectuiv) then Exit;
  7958. glBindBuffer := wglGetProcAddress('glBindBuffer');
  7959. if not Assigned(glBindBuffer) then Exit;
  7960. glDeleteBuffers := wglGetProcAddress('glDeleteBuffers');
  7961. if not Assigned(glDeleteBuffers) then Exit;
  7962. glGenBuffers := wglGetProcAddress('glGenBuffers');
  7963. if not Assigned(glGenBuffers) then Exit;
  7964. glIsBuffer := wglGetProcAddress('glIsBuffer');
  7965. if not Assigned(glIsBuffer) then Exit;
  7966. glBufferData := wglGetProcAddress('glBufferData');
  7967. if not Assigned(glBufferData) then Exit;
  7968. glBufferSubData := wglGetProcAddress('glBufferSubData');
  7969. if not Assigned(glBufferSubData) then Exit;
  7970. glGetBufferSubData := wglGetProcAddress('glGetBufferSubData');
  7971. if not Assigned(glGetBufferSubData) then Exit;
  7972. glMapBuffer := wglGetProcAddress('glMapBuffer');
  7973. if not Assigned(glMapBuffer) then Exit;
  7974. glUnmapBuffer := wglGetProcAddress('glUnmapBuffer');
  7975. if not Assigned(glUnmapBuffer) then Exit;
  7976. glGetBufferParameteriv := wglGetProcAddress('glGetBufferParameteriv');
  7977. if not Assigned(glGetBufferParameteriv) then Exit;
  7978. glGetBufferPointerv := wglGetProcAddress('glGetBufferPointerv');
  7979. if not Assigned(glGetBufferPointerv) then Exit;
  7980. Result := TRUE;
  7981. end;
  7982. function Load_GL_version_2_0: Boolean;
  7983. var
  7984. extstring: String;
  7985. begin
  7986. Result := FALSE;
  7987. extstring := String(PChar(glGetString(GL_EXTENSIONS)));
  7988. glBlendEquationSeparate := wglGetProcAddress('glBlendEquationSeparate');
  7989. if not Assigned(glBlendEquationSeparate) then Exit;
  7990. glDrawBuffers := wglGetProcAddress('glDrawBuffers');
  7991. if not Assigned(glDrawBuffers) then Exit;
  7992. glStencilOpSeparate := wglGetProcAddress('glStencilOpSeparate');
  7993. if not Assigned(glStencilOpSeparate) then Exit;
  7994. glStencilFuncSeparate := wglGetProcAddress('glStencilFuncSeparate');
  7995. if not Assigned(glStencilFuncSeparate) then Exit;
  7996. glStencilMaskSeparate := wglGetProcAddress('glStencilMaskSeparate');
  7997. if not Assigned(glStencilMaskSeparate) then Exit;
  7998. glAttachShader := wglGetProcAddress('glAttachShader');
  7999. if not Assigned(glAttachShader) then Exit;
  8000. glBindAttribLocation := wglGetProcAddress('glBindAttribLocation');
  8001. if not Assigned(glBindAttribLocation) then Exit;
  8002. glCompileShader := wglGetProcAddress('glCompileShader');
  8003. if not Assigned(glCompileShader) then Exit;
  8004. glCreateProgram := wglGetProcAddress('glCreateProgram');
  8005. if not Assigned(glCreateProgram) then Exit;
  8006. glCreateShader := wglGetProcAddress('glCreateShader');
  8007. if not Assigned(glCreateShader) then Exit;
  8008. glDeleteProgram := wglGetProcAddress('glDeleteProgram');
  8009. if not Assigned(glDeleteProgram) then Exit;
  8010. glDeleteShader := wglGetProcAddress('glDeleteShader');
  8011. if not Assigned(glDeleteShader) then Exit;
  8012. glDetachShader := wglGetProcAddress('glDetachShader');
  8013. if not Assigned(glDetachShader) then Exit;
  8014. glDisableVertexAttribArray := wglGetProcAddress('glDisableVertexAttribArray');
  8015. if not Assigned(glDisableVertexAttribArray) then Exit;
  8016. glEnableVertexAttribArray := wglGetProcAddress('glEnableVertexAttribArray');
  8017. if not Assigned(glEnableVertexAttribArray) then Exit;
  8018. glGetActiveAttrib := wglGetProcAddress('glGetActiveAttrib');
  8019. if not Assigned(glGetActiveAttrib) then Exit;
  8020. glGetActiveUniform := wglGetProcAddress('glGetActiveUniform');
  8021. if not Assigned(glGetActiveUniform) then Exit;
  8022. glGetAttachedShaders := wglGetProcAddress('glGetAttachedShaders');
  8023. if not Assigned(glGetAttachedShaders) then Exit;
  8024. glGetAttribLocation := wglGetProcAddress('glGetAttribLocation');
  8025. if not Assigned(glGetAttribLocation) then Exit;
  8026. glGetProgramiv := wglGetProcAddress('glGetProgramiv');
  8027. if not Assigned(glGetProgramiv) then Exit;
  8028. glGetProgramInfoLog := wglGetProcAddress('glGetProgramInfoLog');
  8029. if not Assigned(glGetProgramInfoLog) then Exit;
  8030. glGetShaderiv := wglGetProcAddress('glGetShaderiv');
  8031. if not Assigned(glGetShaderiv) then Exit;
  8032. glGetShaderInfoLog := wglGetProcAddress('glGetShaderInfoLog');
  8033. if not Assigned(glGetShaderInfoLog) then Exit;
  8034. glGetShaderSource := wglGetProcAddress('glGetShaderSource');
  8035. if not Assigned(glGetShaderSource) then Exit;
  8036. glGetUniformLocation := wglGetProcAddress('glGetUniformLocation');
  8037. if not Assigned(glGetUniformLocation) then Exit;
  8038. glGetUniformfv := wglGetProcAddress('glGetUniformfv');
  8039. if not Assigned(glGetUniformfv) then Exit;
  8040. glGetUniformiv := wglGetProcAddress('glGetUniformiv');
  8041. if not Assigned(glGetUniformiv) then Exit;
  8042. glGetVertexAttribdv := wglGetProcAddress('glGetVertexAttribdv');
  8043. if not Assigned(glGetVertexAttribdv) then Exit;
  8044. glGetVertexAttribfv := wglGetProcAddress('glGetVertexAttribfv');
  8045. if not Assigned(glGetVertexAttribfv) then Exit;
  8046. glGetVertexAttribiv := wglGetProcAddress('glGetVertexAttribiv');
  8047. if not Assigned(glGetVertexAttribiv) then Exit;
  8048. glGetVertexAttribPointerv := wglGetProcAddress('glGetVertexAttribPointerv');
  8049. if not Assigned(glGetVertexAttribPointerv) then Exit;
  8050. glIsProgram := wglGetProcAddress('glIsProgram');
  8051. if not Assigned(glIsProgram) then Exit;
  8052. glIsShader := wglGetProcAddress('glIsShader');
  8053. if not Assigned(glIsShader) then Exit;
  8054. glLinkProgram := wglGetProcAddress('glLinkProgram');
  8055. if not Assigned(glLinkProgram) then Exit;
  8056. glShaderSource := wglGetProcAddress('glShaderSource');
  8057. if not Assigned(glShaderSource) then Exit;
  8058. glUseProgram := wglGetProcAddress('glUseProgram');
  8059. if not Assigned(glUseProgram) then Exit;
  8060. glUniform1f := wglGetProcAddress('glUniform1f');
  8061. if not Assigned(glUniform1f) then Exit;
  8062. glUniform2f := wglGetProcAddress('glUniform2f');
  8063. if not Assigned(glUniform2f) then Exit;
  8064. glUniform3f := wglGetProcAddress('glUniform3f');
  8065. if not Assigned(glUniform3f) then Exit;
  8066. glUniform4f := wglGetProcAddress('glUniform4f');
  8067. if not Assigned(glUniform4f) then Exit;
  8068. glUniform1i := wglGetProcAddress('glUniform1i');
  8069. if not Assigned(glUniform1i) then Exit;
  8070. glUniform2i := wglGetProcAddress('glUniform2i');
  8071. if not Assigned(glUniform2i) then Exit;
  8072. glUniform3i := wglGetProcAddress('glUniform3i');
  8073. if not Assigned(glUniform3i) then Exit;
  8074. glUniform4i := wglGetProcAddress('glUniform4i');
  8075. if not Assigned(glUniform4i) then Exit;
  8076. glUniform1fv := wglGetProcAddress('glUniform1fv');
  8077. if not Assigned(glUniform1fv) then Exit;
  8078. glUniform2fv := wglGetProcAddress('glUniform2fv');
  8079. if not Assigned(glUniform2fv) then Exit;
  8080. glUniform3fv := wglGetProcAddress('glUniform3fv');
  8081. if not Assigned(glUniform3fv) then Exit;
  8082. glUniform4fv := wglGetProcAddress('glUniform4fv');
  8083. if not Assigned(glUniform4fv) then Exit;
  8084. glUniform1iv := wglGetProcAddress('glUniform1iv');
  8085. if not Assigned(glUniform1iv) then Exit;
  8086. glUniform2iv := wglGetProcAddress('glUniform2iv');
  8087. if not Assigned(glUniform2iv) then Exit;
  8088. glUniform3iv := wglGetProcAddress('glUniform3iv');
  8089. if not Assigned(glUniform3iv) then Exit;
  8090. glUniform4iv := wglGetProcAddress('glUniform4iv');
  8091. if not Assigned(glUniform4iv) then Exit;
  8092. glUniformMatrix2fv := wglGetProcAddress('glUniformMatrix2fv');
  8093. if not Assigned(glUniformMatrix2fv) then Exit;
  8094. glUniformMatrix3fv := wglGetProcAddress('glUniformMatrix3fv');
  8095. if not Assigned(glUniformMatrix3fv) then Exit;
  8096. glUniformMatrix4fv := wglGetProcAddress('glUniformMatrix4fv');
  8097. if not Assigned(glUniformMatrix4fv) then Exit;
  8098. glValidateProgram := wglGetProcAddress('glValidateProgram');
  8099. if not Assigned(glValidateProgram) then Exit;
  8100. glVertexAttrib1d := wglGetProcAddress('glVertexAttrib1d');
  8101. if not Assigned(glVertexAttrib1d) then Exit;
  8102. glVertexAttrib1dv := wglGetProcAddress('glVertexAttrib1dv');
  8103. if not Assigned(glVertexAttrib1dv) then Exit;
  8104. glVertexAttrib1f := wglGetProcAddress('glVertexAttrib1f');
  8105. if not Assigned(glVertexAttrib1f) then Exit;
  8106. glVertexAttrib1fv := wglGetProcAddress('glVertexAttrib1fv');
  8107. if not Assigned(glVertexAttrib1fv) then Exit;
  8108. glVertexAttrib1s := wglGetProcAddress('glVertexAttrib1s');
  8109. if not Assigned(glVertexAttrib1s) then Exit;
  8110. glVertexAttrib1sv := wglGetProcAddress('glVertexAttrib1sv');
  8111. if not Assigned(glVertexAttrib1sv) then Exit;
  8112. glVertexAttrib2d := wglGetProcAddress('glVertexAttrib2d');
  8113. if not Assigned(glVertexAttrib2d) then Exit;
  8114. glVertexAttrib2dv := wglGetProcAddress('glVertexAttrib2dv');
  8115. if not Assigned(glVertexAttrib2dv) then Exit;
  8116. glVertexAttrib2f := wglGetProcAddress('glVertexAttrib2f');
  8117. if not Assigned(glVertexAttrib2f) then Exit;
  8118. glVertexAttrib2fv := wglGetProcAddress('glVertexAttrib2fv');
  8119. if not Assigned(glVertexAttrib2fv) then Exit;
  8120. glVertexAttrib2s := wglGetProcAddress('glVertexAttrib2s');
  8121. if not Assigned(glVertexAttrib2s) then Exit;
  8122. glVertexAttrib2sv := wglGetProcAddress('glVertexAttrib2sv');
  8123. if not Assigned(glVertexAttrib2sv) then Exit;
  8124. glVertexAttrib3d := wglGetProcAddress('glVertexAttrib3d');
  8125. if not Assigned(glVertexAttrib3d) then Exit;
  8126. glVertexAttrib3dv := wglGetProcAddress('glVertexAttrib3dv');
  8127. if not Assigned(glVertexAttrib3dv) then Exit;
  8128. glVertexAttrib3f := wglGetProcAddress('glVertexAttrib3f');
  8129. if not Assigned(glVertexAttrib3f) then Exit;
  8130. glVertexAttrib3fv := wglGetProcAddress('glVertexAttrib3fv');
  8131. if not Assigned(glVertexAttrib3fv) then Exit;
  8132. glVertexAttrib3s := wglGetProcAddress('glVertexAttrib3s');
  8133. if not Assigned(glVertexAttrib3s) then Exit;
  8134. glVertexAttrib3sv := wglGetProcAddress('glVertexAttrib3sv');
  8135. if not Assigned(glVertexAttrib3sv) then Exit;
  8136. glVertexAttrib4Nbv := wglGetProcAddress('glVertexAttrib4Nbv');
  8137. if not Assigned(glVertexAttrib4Nbv) then Exit;
  8138. glVertexAttrib4Niv := wglGetProcAddress('glVertexAttrib4Niv');
  8139. if not Assigned(glVertexAttrib4Niv) then Exit;
  8140. glVertexAttrib4Nsv := wglGetProcAddress('glVertexAttrib4Nsv');
  8141. if not Assigned(glVertexAttrib4Nsv) then Exit;
  8142. glVertexAttrib4Nub := wglGetProcAddress('glVertexAttrib4Nub');
  8143. if not Assigned(glVertexAttrib4Nub) then Exit;
  8144. glVertexAttrib4Nubv := wglGetProcAddress('glVertexAttrib4Nubv');
  8145. if not Assigned(glVertexAttrib4Nubv) then Exit;
  8146. glVertexAttrib4Nuiv := wglGetProcAddress('glVertexAttrib4Nuiv');
  8147. if not Assigned(glVertexAttrib4Nuiv) then Exit;
  8148. glVertexAttrib4Nusv := wglGetProcAddress('glVertexAttrib4Nusv');
  8149. if not Assigned(glVertexAttrib4Nusv) then Exit;
  8150. glVertexAttrib4bv := wglGetProcAddress('glVertexAttrib4bv');
  8151. if not Assigned(glVertexAttrib4bv) then Exit;
  8152. glVertexAttrib4d := wglGetProcAddress('glVertexAttrib4d');
  8153. if not Assigned(glVertexAttrib4d) then Exit;
  8154. glVertexAttrib4dv := wglGetProcAddress('glVertexAttrib4dv');
  8155. if not Assigned(glVertexAttrib4dv) then Exit;
  8156. glVertexAttrib4f := wglGetProcAddress('glVertexAttrib4f');
  8157. if not Assigned(glVertexAttrib4f) then Exit;
  8158. glVertexAttrib4fv := wglGetProcAddress('glVertexAttrib4fv');
  8159. if not Assigned(glVertexAttrib4fv) then Exit;
  8160. glVertexAttrib4iv := wglGetProcAddress('glVertexAttrib4iv');
  8161. if not Assigned(glVertexAttrib4iv) then Exit;
  8162. glVertexAttrib4s := wglGetProcAddress('glVertexAttrib4s');
  8163. if not Assigned(glVertexAttrib4s) then Exit;
  8164. glVertexAttrib4sv := wglGetProcAddress('glVertexAttrib4sv');
  8165. if not Assigned(glVertexAttrib4sv) then Exit;
  8166. glVertexAttrib4ubv := wglGetProcAddress('glVertexAttrib4ubv');
  8167. if not Assigned(glVertexAttrib4ubv) then Exit;
  8168. glVertexAttrib4uiv := wglGetProcAddress('glVertexAttrib4uiv');
  8169. if not Assigned(glVertexAttrib4uiv) then Exit;
  8170. glVertexAttrib4usv := wglGetProcAddress('glVertexAttrib4usv');
  8171. if not Assigned(glVertexAttrib4usv) then Exit;
  8172. glVertexAttribPointer := wglGetProcAddress('glVertexAttribPointer');
  8173. if not Assigned(glVertexAttribPointer) then Exit;
  8174. Result := TRUE;
  8175. end;
  8176. function glext_LoadExtension(ext: String): Boolean;
  8177. begin
  8178. Result := FALSE;
  8179. if ext = 'GL_version_1_2' then Result := Load_GL_version_1_2
  8180. else if ext = 'GL_ARB_imaging' then Result := Load_GL_ARB_imaging
  8181. else if ext = 'GL_version_1_3' then Result := Load_GL_version_1_3
  8182. else if ext = 'GL_ARB_multitexture' then Result := Load_GL_ARB_multitexture
  8183. else if ext = 'GL_ARB_transpose_matrix' then Result := Load_GL_ARB_transpose_matrix
  8184. else if ext = 'GL_ARB_multisample' then Result := Load_GL_ARB_multisample
  8185. else if ext = 'GL_ARB_texture_env_add' then Result := Load_GL_ARB_texture_env_add
  8186. {$IFDEF Windows}
  8187. else if ext = 'WGL_ARB_extensions_string' then Result := Load_WGL_ARB_extensions_string
  8188. else if ext = 'WGL_ARB_buffer_region' then Result := Load_WGL_ARB_buffer_region
  8189. {$ENDIF}
  8190. else if ext = 'GL_ARB_texture_cube_map' then Result := Load_GL_ARB_texture_cube_map
  8191. else if ext = 'GL_ARB_depth_texture' then Result := Load_GL_ARB_depth_texture
  8192. else if ext = 'GL_ARB_point_parameters' then Result := Load_GL_ARB_point_parameters
  8193. else if ext = 'GL_ARB_shadow' then Result := Load_GL_ARB_shadow
  8194. else if ext = 'GL_ARB_shadow_ambient' then Result := Load_GL_ARB_shadow_ambient
  8195. else if ext = 'GL_ARB_texture_border_clamp' then Result := Load_GL_ARB_texture_border_clamp
  8196. else if ext = 'GL_ARB_texture_compression' then Result := Load_GL_ARB_texture_compression
  8197. else if ext = 'GL_ARB_texture_env_combine' then Result := Load_GL_ARB_texture_env_combine
  8198. else if ext = 'GL_ARB_texture_env_crossbar' then Result := Load_GL_ARB_texture_env_crossbar
  8199. else if ext = 'GL_ARB_texture_env_dot3' then Result := Load_GL_ARB_texture_env_dot3
  8200. else if ext = 'GL_ARB_texture_mirrored_repeat' then Result := Load_GL_ARB_texture_mirrored_repeat
  8201. else if ext = 'GL_ARB_vertex_blend' then Result := Load_GL_ARB_vertex_blend
  8202. else if ext = 'GL_ARB_vertex_program' then Result := Load_GL_ARB_vertex_program
  8203. else if ext = 'GL_ARB_window_pos' then Result := Load_GL_ARB_window_pos
  8204. else if ext = 'GL_EXT_422_pixels' then Result := Load_GL_EXT_422_pixels
  8205. else if ext = 'GL_EXT_abgr' then Result := Load_GL_EXT_abgr
  8206. else if ext = 'GL_EXT_bgra' then Result := Load_GL_EXT_bgra
  8207. else if ext = 'GL_EXT_blend_color' then Result := Load_GL_EXT_blend_color
  8208. else if ext = 'GL_EXT_blend_func_separate' then Result := Load_GL_EXT_blend_func_separate
  8209. else if ext = 'GL_EXT_blend_logic_op' then Result := Load_GL_EXT_blend_logic_op
  8210. else if ext = 'GL_EXT_blend_minmax' then Result := Load_GL_EXT_blend_minmax
  8211. else if ext = 'GL_EXT_blend_subtract' then Result := Load_GL_EXT_blend_subtract
  8212. else if ext = 'GL_EXT_clip_volume_hint' then Result := Load_GL_EXT_clip_volume_hint
  8213. else if ext = 'GL_EXT_color_subtable' then Result := Load_GL_EXT_color_subtable
  8214. else if ext = 'GL_EXT_compiled_vertex_array' then Result := Load_GL_EXT_compiled_vertex_array
  8215. else if ext = 'GL_EXT_convolution' then Result := Load_GL_EXT_convolution
  8216. else if ext = 'GL_EXT_fog_coord' then Result := Load_GL_EXT_fog_coord
  8217. else if ext = 'GL_EXT_histogram' then Result := Load_GL_EXT_histogram
  8218. else if ext = 'GL_EXT_multi_draw_arrays' then Result := Load_GL_EXT_multi_draw_arrays
  8219. else if ext = 'GL_EXT_packed_pixels' then Result := Load_GL_EXT_packed_pixels
  8220. else if ext = 'GL_EXT_paletted_texture' then Result := Load_GL_EXT_paletted_texture
  8221. else if ext = 'GL_EXT_point_parameters' then Result := Load_GL_EXT_point_parameters
  8222. else if ext = 'GL_EXT_polygon_offset' then Result := Load_GL_EXT_polygon_offset
  8223. else if ext = 'GL_EXT_secondary_color' then Result := Load_GL_EXT_secondary_color
  8224. else if ext = 'GL_EXT_separate_specular_color' then Result := Load_GL_EXT_separate_specular_color
  8225. else if ext = 'GL_EXT_shadow_funcs' then Result := Load_GL_EXT_shadow_funcs
  8226. else if ext = 'GL_EXT_shared_texture_palette' then Result := Load_GL_EXT_shared_texture_palette
  8227. else if ext = 'GL_EXT_stencil_two_side' then Result := Load_GL_EXT_stencil_two_side
  8228. else if ext = 'GL_EXT_stencil_wrap' then Result := Load_GL_EXT_stencil_wrap
  8229. else if ext = 'GL_EXT_subtexture' then Result := Load_GL_EXT_subtexture
  8230. else if ext = 'GL_EXT_texture3D' then Result := Load_GL_EXT_texture3D
  8231. else if ext = 'GL_EXT_texture_compression_s3tc' then Result := Load_GL_EXT_texture_compression_s3tc
  8232. else if ext = 'GL_EXT_texture_env_add' then Result := Load_GL_EXT_texture_env_add
  8233. else if ext = 'GL_EXT_texture_env_combine' then Result := Load_GL_EXT_texture_env_combine
  8234. else if ext = 'GL_EXT_texture_env_dot3' then Result := Load_GL_EXT_texture_env_dot3
  8235. else if ext = 'GL_EXT_texture_filter_anisotropic' then Result := Load_GL_EXT_texture_filter_anisotropic
  8236. else if ext = 'GL_EXT_texture_lod_bias' then Result := Load_GL_EXT_texture_lod_bias
  8237. else if ext = 'GL_EXT_texture_object' then Result := Load_GL_EXT_texture_object
  8238. else if ext = 'GL_EXT_vertex_array' then Result := Load_GL_EXT_vertex_array
  8239. else if ext = 'GL_EXT_vertex_shader' then Result := Load_GL_EXT_vertex_shader
  8240. else if ext = 'GL_EXT_vertex_weighting' then Result := Load_GL_EXT_vertex_weighting
  8241. else if ext = 'GL_HP_occlusion_test' then Result := Load_GL_HP_occlusion_test
  8242. else if ext = 'GL_NV_blend_square' then Result := Load_GL_NV_blend_square
  8243. else if ext = 'GL_NV_copy_depth_to_color' then Result := Load_GL_NV_copy_depth_to_color
  8244. else if ext = 'GL_NV_depth_clamp' then Result := Load_GL_NV_depth_clamp
  8245. else if ext = 'GL_NV_evaluators' then Result := Load_GL_NV_evaluators
  8246. else if ext = 'GL_NV_fence' then Result := Load_GL_NV_fence
  8247. else if ext = 'GL_NV_fog_distance' then Result := Load_GL_NV_fog_distance
  8248. else if ext = 'GL_NV_light_max_exponent' then Result := Load_GL_NV_light_max_exponent
  8249. else if ext = 'GL_NV_multisample_filter_hint' then Result := Load_GL_NV_multisample_filter_hint
  8250. else if ext = 'GL_NV_occlusion_query' then Result := Load_GL_NV_occlusion_query
  8251. else if ext = 'GL_NV_packed_depth_stencil' then Result := Load_GL_NV_packed_depth_stencil
  8252. else if ext = 'GL_NV_point_sprite' then Result := Load_GL_NV_point_sprite
  8253. else if ext = 'GL_NV_register_combiners' then Result := Load_GL_NV_register_combiners
  8254. else if ext = 'GL_NV_register_combiners2' then Result := Load_GL_NV_register_combiners2
  8255. else if ext = 'GL_NV_texgen_emboss' then Result := Load_GL_NV_texgen_emboss
  8256. else if ext = 'GL_NV_texgen_reflection' then Result := Load_GL_NV_texgen_reflection
  8257. else if ext = 'GL_NV_texture_compression_vtc' then Result := Load_GL_NV_texture_compression_vtc
  8258. else if ext = 'GL_NV_texture_env_combine4' then Result := Load_GL_NV_texture_env_combine4
  8259. else if ext = 'GL_NV_texture_rectangle' then Result := Load_GL_NV_texture_rectangle
  8260. else if ext = 'GL_NV_texture_shader' then Result := Load_GL_NV_texture_shader
  8261. else if ext = 'GL_NV_texture_shader2' then Result := Load_GL_NV_texture_shader2
  8262. else if ext = 'GL_NV_texture_shader3' then Result := Load_GL_NV_texture_shader3
  8263. else if ext = 'GL_NV_vertex_array_range' then Result := Load_GL_NV_vertex_array_range
  8264. else if ext = 'GL_NV_vertex_array_range2' then Result := Load_GL_NV_vertex_array_range2
  8265. else if ext = 'GL_NV_vertex_program' then Result := Load_GL_NV_vertex_program
  8266. else if ext = 'GL_NV_vertex_program1_1' then Result := Load_GL_NV_vertex_program1_1
  8267. else if ext = 'GL_ATI_element_array' then Result := Load_GL_ATI_element_array
  8268. else if ext = 'GL_ATI_envmap_bumpmap' then Result := Load_GL_ATI_envmap_bumpmap
  8269. else if ext = 'GL_ATI_fragment_shader' then Result := Load_GL_ATI_fragment_shader
  8270. else if ext = 'GL_ATI_pn_triangles' then Result := Load_GL_ATI_pn_triangles
  8271. else if ext = 'GL_ATI_texture_mirror_once' then Result := Load_GL_ATI_texture_mirror_once
  8272. else if ext = 'GL_ATI_vertex_array_object' then Result := Load_GL_ATI_vertex_array_object
  8273. else if ext = 'GL_ATI_vertex_streams' then Result := Load_GL_ATI_vertex_streams
  8274. {$IFDEF Windows}
  8275. else if ext = 'WGL_I3D_image_buffer' then Result := Load_WGL_I3D_image_buffer
  8276. else if ext = 'WGL_I3D_swap_frame_lock' then Result := Load_WGL_I3D_swap_frame_lock
  8277. else if ext = 'WGL_I3D_swap_frame_usage' then Result := Load_WGL_I3D_swap_frame_usage
  8278. {$ENDIF}
  8279. else if ext = 'GL_3DFX_texture_compression_FXT1' then Result := Load_GL_3DFX_texture_compression_FXT1
  8280. else if ext = 'GL_IBM_cull_vertex' then Result := Load_GL_IBM_cull_vertex
  8281. else if ext = 'GL_IBM_multimode_draw_arrays' then Result := Load_GL_IBM_multimode_draw_arrays
  8282. else if ext = 'GL_IBM_raster_pos_clip' then Result := Load_GL_IBM_raster_pos_clip
  8283. else if ext = 'GL_IBM_texture_mirrored_repeat' then Result := Load_GL_IBM_texture_mirrored_repeat
  8284. else if ext = 'GL_IBM_vertex_array_lists' then Result := Load_GL_IBM_vertex_array_lists
  8285. else if ext = 'GL_MESA_resize_buffers' then Result := Load_GL_MESA_resize_buffers
  8286. else if ext = 'GL_MESA_window_pos' then Result := Load_GL_MESA_window_pos
  8287. else if ext = 'GL_OML_interlace' then Result := Load_GL_OML_interlace
  8288. else if ext = 'GL_OML_resample' then Result := Load_GL_OML_resample
  8289. else if ext = 'GL_OML_subsample' then Result := Load_GL_OML_subsample
  8290. else if ext = 'GL_SGIS_generate_mipmap' then Result := Load_GL_SGIS_generate_mipmap
  8291. else if ext = 'GL_SGIS_multisample' then Result := Load_GL_SGIS_multisample
  8292. else if ext = 'GL_SGIS_pixel_texture' then Result := Load_GL_SGIS_pixel_texture
  8293. else if ext = 'GL_SGIS_texture_border_clamp' then Result := Load_GL_SGIS_texture_border_clamp
  8294. else if ext = 'GL_SGIS_texture_color_mask' then Result := Load_GL_SGIS_texture_color_mask
  8295. else if ext = 'GL_SGIS_texture_edge_clamp' then Result := Load_GL_SGIS_texture_edge_clamp
  8296. else if ext = 'GL_SGIS_texture_lod' then Result := Load_GL_SGIS_texture_lod
  8297. else if ext = 'GL_SGIS_depth_texture' then Result := Load_GL_SGIS_depth_texture
  8298. else if ext = 'GL_SGIX_fog_offset' then Result := Load_GL_SGIX_fog_offset
  8299. else if ext = 'GL_SGIX_interlace' then Result := Load_GL_SGIX_interlace
  8300. else if ext = 'GL_SGIX_shadow_ambient' then Result := Load_GL_SGIX_shadow_ambient
  8301. else if ext = 'GL_SGI_color_matrix' then Result := Load_GL_SGI_color_matrix
  8302. else if ext = 'GL_SGI_color_table' then Result := Load_GL_SGI_color_table
  8303. else if ext = 'GL_SGI_texture_color_table' then Result := Load_GL_SGI_texture_color_table
  8304. else if ext = 'GL_SUN_vertex' then Result := Load_GL_SUN_vertex
  8305. else if ext = 'GL_ARB_fragment_program' then Result := Load_GL_ARB_fragment_program
  8306. else if ext = 'GL_ATI_text_fragment_shader' then Result := Load_GL_ATI_text_fragment_shader
  8307. else if ext = 'GL_APPLE_client_storage' then Result := Load_GL_APPLE_client_storage
  8308. else if ext = 'GL_APPLE_element_array' then Result := Load_GL_APPLE_element_array
  8309. else if ext = 'GL_APPLE_fence' then Result := Load_GL_APPLE_fence
  8310. else if ext = 'GL_APPLE_vertex_array_object' then Result := Load_GL_APPLE_vertex_array_object
  8311. else if ext = 'GL_APPLE_vertex_array_range' then Result := Load_GL_APPLE_vertex_array_range
  8312. {$IFDEF Windows}
  8313. else if ext = 'WGL_ARB_pixel_format' then Result := Load_WGL_ARB_pixel_format
  8314. else if ext = 'WGL_ARB_make_current_read' then Result := Load_WGL_ARB_make_current_read
  8315. else if ext = 'WGL_ARB_pbuffer' then Result := Load_WGL_ARB_pbuffer
  8316. else if ext = 'WGL_EXT_swap_control' then Result := Load_WGL_EXT_swap_control
  8317. else if ext = 'WGL_ARB_render_texture' then Result := Load_WGL_ARB_render_texture
  8318. else if ext = 'WGL_EXT_extensions_string' then Result := Load_WGL_EXT_extensions_string
  8319. else if ext = 'WGL_EXT_make_current_read' then Result := Load_WGL_EXT_make_current_read
  8320. else if ext = 'WGL_EXT_pbuffer' then Result := Load_WGL_EXT_pbuffer
  8321. else if ext = 'WGL_EXT_pixel_format' then Result := Load_WGL_EXT_pixel_format
  8322. else if ext = 'WGL_I3D_digital_video_control' then Result := Load_WGL_I3D_digital_video_control
  8323. else if ext = 'WGL_I3D_gamma' then Result := Load_WGL_I3D_gamma
  8324. else if ext = 'WGL_I3D_genlock' then Result := Load_WGL_I3D_genlock
  8325. {$ENDIF}
  8326. else if ext = 'GL_ARB_matrix_palette' then Result := Load_GL_ARB_matrix_palette
  8327. else if ext = 'GL_NV_element_array' then Result := Load_GL_NV_element_array
  8328. else if ext = 'GL_NV_float_buffer' then Result := Load_GL_NV_float_buffer
  8329. else if ext = 'GL_NV_fragment_program' then Result := Load_GL_NV_fragment_program
  8330. else if ext = 'GL_NV_primitive_restart' then Result := Load_GL_NV_primitive_restart
  8331. else if ext = 'GL_NV_vertex_program2' then Result := Load_GL_NV_vertex_program2
  8332. {$IFDEF Windows}
  8333. else if ext = 'WGL_NV_render_texture_rectangle' then Result := Load_WGL_NV_render_texture_rectangle
  8334. {$ENDIF}
  8335. else if ext = 'GL_NV_pixel_data_range' then Result := Load_GL_NV_pixel_data_range
  8336. else if ext = 'GL_EXT_texture_rectangle' then Result := Load_GL_EXT_texture_rectangle
  8337. else if ext = 'GL_S3_s3tc' then Result := Load_GL_S3_s3tc
  8338. else if ext = 'GL_ATI_draw_buffers' then Result := Load_GL_ATI_draw_buffers
  8339. {$IFDEF Windows}
  8340. else if ext = 'WGL_ATI_pixel_format_float' then Result := Load_WGL_ATI_pixel_format_float
  8341. {$ENDIF}
  8342. else if ext = 'GL_ATI_texture_env_combine3' then Result := Load_GL_ATI_texture_env_combine3
  8343. else if ext = 'GL_ATI_texture_float' then Result := Load_GL_ATI_texture_float
  8344. else if ext = 'GL_NV_texture_expand_normal' then Result := Load_GL_NV_texture_expand_normal
  8345. else if ext = 'GL_NV_half_float' then Result := Load_GL_NV_half_float
  8346. else if ext = 'GL_ATI_map_object_buffer' then Result := Load_GL_ATI_map_object_buffer
  8347. else if ext = 'GL_ATI_separate_stencil' then Result := Load_GL_ATI_separate_stencil
  8348. else if ext = 'GL_ATI_vertex_attrib_array_object' then Result := Load_GL_ATI_vertex_attrib_array_object
  8349. else if ext = 'GL_ARB_vertex_buffer_object' then Result := Load_GL_ARB_vertex_buffer_object
  8350. else if ext = 'GL_ARB_occlusion_query' then Result := Load_GL_ARB_occlusion_query
  8351. else if ext = 'GL_ARB_shader_objects' then Result := Load_GL_ARB_shader_objects
  8352. else if ext = 'GL_ARB_vertex_shader' then Result := Load_GL_ARB_vertex_shader
  8353. else if ext = 'GL_ARB_fragment_shader' then Result := Load_GL_ARB_fragment_shader
  8354. else if ext = 'GL_ARB_shading_language_100' then Result := Load_GL_ARB_shading_language_100
  8355. else if ext = 'GL_ARB_texture_non_power_of_two' then Result := Load_GL_ARB_texture_non_power_of_two
  8356. else if ext = 'GL_ARB_point_sprite' then Result := Load_GL_ARB_point_sprite
  8357. else if ext = 'GL_EXT_depth_bounds_test' then Result := Load_GL_EXT_depth_bounds_test
  8358. else if ext = 'GL_EXT_texture_mirror_clamp' then Result := Load_GL_EXT_texture_mirror_clamp
  8359. else if ext = 'GL_EXT_blend_equation_separate' then Result := Load_GL_EXT_blend_equation_separate
  8360. else if ext = 'GL_MESA_pack_invert' then Result := Load_GL_MESA_pack_invert
  8361. else if ext = 'GL_MESA_ycbcr_texture' then Result := Load_GL_MESA_ycbcr_texture
  8362. else if ext = 'GL_ARB_fragment_program_shadow' then Result := Load_GL_ARB_fragment_program_shadow
  8363. else if ext = 'GL_NV_fragment_program_option' then Result := Load_GL_NV_fragment_program_option
  8364. else if ext = 'GL_EXT_pixel_buffer_object' then Result := Load_GL_EXT_pixel_buffer_object
  8365. else if ext = 'GL_NV_fragment_program2' then Result := Load_GL_NV_fragment_program2
  8366. else if ext = 'GL_NV_vertex_program2_option' then Result := Load_GL_NV_vertex_program2_option
  8367. else if ext = 'GL_NV_vertex_program3' then Result := Load_GL_NV_vertex_program3
  8368. else if ext = 'GL_ARB_draw_buffers' then Result := Load_GL_ARB_draw_buffers
  8369. else if ext = 'GL_ARB_texture_rectangle' then Result := Load_GL_ARB_texture_rectangle
  8370. else if ext = 'GL_ARB_color_buffer_float' then Result := Load_GL_ARB_color_buffer_float
  8371. else if ext = 'GL_ARB_half_float_pixel' then Result := Load_GL_ARB_half_float_pixel
  8372. else if ext = 'GL_ARB_texture_float' then Result := Load_GL_ARB_texture_float
  8373. else if ext = 'GL_EXT_texture_compression_dxt1' then Result := Load_GL_EXT_texture_compression_dxt1
  8374. else if ext = 'GL_ARB_pixel_buffer_object' then Result := Load_GL_ARB_pixel_buffer_object
  8375. else if ext = 'GL_EXT_framebuffer_object' then Result := Load_GL_EXT_framebuffer_object
  8376. else if ext = 'GL_version_1_4' then Result := Load_GL_version_1_4
  8377. else if ext = 'GL_version_1_5' then Result := Load_GL_version_1_5
  8378. else if ext = 'GL_version_2_0' then Result := Load_GL_version_2_0
  8379. end;
  8380. end.