OpenGLAdapter.pas 254 KB

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