123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473 |
- (*
- * Copyright (c) 2022 Serge - SSW
- *
- * This software is provided 'as-is', without any express or
- * implied warranty. In no event will the authors be held
- * liable for any damages arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute
- * it freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented;
- * you must not claim that you wrote the original software.
- * If you use this software in a product, an acknowledgment
- * in the product documentation would be appreciated but
- * is not required.
- *
- * 2. Altered source versions must be plainly marked as such,
- * and must not be misrepresented as being the original software.
- *
- * 3. This notice may not be removed or altered from any
- * source distribution.
- *)
- unit zgl_glx_wgl;
- {$I zgl_config.cfg}
- {$I GLdefine.cfg}
- interface
- uses
- {$IfDef LINUX}
- X,
- XLib,
- XUtil,
- {$EndIf}
- {$IfDef WINDOWS}
- Windows,
- {$EndIf}
- // zgl_opengl_all,
- zgl_gltypeconst;
- {$IfDef WINDOWS}
- var
- WGL_ARB_buffer_region: Boolean;
- WGL_ARB_context_flush_control: Boolean;
- WGL_ARB_create_context: Boolean;
- WGL_ARB_create_context_no_error: Boolean;
- WGL_ARB_create_context_profile: Boolean;
- WGL_ARB_create_context_robustness: Boolean;
- WGL_ARB_make_current_read: Boolean;
- WGL_ARB_extensions_string: Boolean;
- WGL_ARB_framebuffer_sRGB: Boolean;
- WGL_ARB_multisample: Boolean;
- WGL_ARB_pbuffer: Boolean;
- WGL_ARB_pixel_format: Boolean;
- WGL_ARB_pixel_format_float: Boolean;
- WGL_ARB_render_texture: Boolean;
- WGL_ARB_robustness_application_isolation: Boolean;
- WGL_ARB_robustness_share_group_isolation: Boolean;
- WGL_3DFX_multisample: Boolean;
- WGL_3DL_stereo_control: Boolean;
- WGL_AMD_gpu_association: Boolean;
- WGL_ATI_pixel_format_float: Boolean;
- WGL_ATI_render_texture_rectangle: Boolean;
- WGL_EXT_colorspace: Boolean;
- WGL_EXT_create_context_es2_profile: Boolean;
- WGL_EXT_create_context_es_profile: Boolean;
- WGL_EXT_depth_float: Boolean;
- WGL_EXT_display_color_table: Boolean;
- WGL_EXT_framebuffer_sRGB: Boolean;
- WGL_EXT_make_current_read: Boolean;
- WGL_EXT_multisample: Boolean;
- WGL_EXT_pbuffer: Boolean;
- WGL_EXT_extensions_string: Boolean;
- WGL_EXT_pixel_format: Boolean;
- WGL_EXT_pixel_format_packed_float: Boolean;
- WGL_EXT_swap_control: Boolean;
- WGL_EXT_swap_control_tear: Boolean;
- WGL_I3D_digital_video_control: Boolean;
- WGL_I3D_gamma: Boolean;
- WGL_I3D_genlock: Boolean;
- WGL_I3D_image_buffer: Boolean;
- WGL_I3D_swap_frame_lock: Boolean;
- WGL_I3D_swap_frame_usage: Boolean;
- WGL_NV_DX_interop: Boolean;
- WGL_NV_DX_interop2: Boolean;
- WGL_NV_copy_image: Boolean;
- WGL_NV_delay_before_swap: Boolean;
- WGL_NV_float_buffer: Boolean;
- WGL_NV_gpu_affinity: Boolean;
- WGL_NV_multigpu_context: Boolean;
- WGL_NV_multisample_coverage: Boolean;
- WGL_NV_present_video: Boolean;
- WGL_NV_render_depth_texture: Boolean;
- WGL_NV_render_texture_rectangle: Boolean;
- WGL_NV_swap_group: Boolean;
- WGL_NV_vertex_array_range: Boolean;
- WGL_NV_video_capture: Boolean;
- WGL_NV_video_output: Boolean;
- WGL_OML_sync_control: Boolean;
- { wgl Windows OpenGL helper functions }
- {$IfNDef FPC}
- function wglGetProcAddress(ProcName: LPCSTR): Pointer; stdcall; external 'opengl32.dll';
- {$IfDef USE_FULL_WGL}
- var
- (* WGL_VERSION_1_0 *)
- wglCopyContext: function(glrcSrc: HGLRC; glrcDst: HGLRC; mask: UINT): WINBOOL; stdcall;
- wglCreateContext: function(hdc: HDC): HGLRC; stdcall;
- wglCreateLayerContext: function(hdc: HDC; iLayerPlane: longint): HGLRC; stdcall;
- wglDeleteContext: function(glrc: HGLRC): WINBOOL; stdcall;
- wglDescribeLayerPlane: function(DC: HDC; iPixelFormat: longint; iLayerPane: longint; nBytes: UINT; plpd: LPLAYERPLANEDESCRIPTOR): WINBOOL; stdcall;
- wglGetCurrentContext: function: HGLRC; stdcall;
- wglGetCurrentDC: function: HDC; stdcall;
- wglGetLayerPaletteEntries: function(DC: HDC; iLayerPlane: longint; iStart: longint; cEntries: longint; var cr: COLORREF): longint; stdcall;
- wglMakeCurrent: function(DC: HDC; glrc: HGLRC): WINBOOL; stdcall;
- wglRealizeLayerPalette: function(DC: HDC; iLayerPlane: longint; bRealize: WINBOOL): WINBOOL; stdcall;
- wglSetLayerPaletteEntries: function(DC: HDC; iLayerPlane: longint; iStart: longint; cEntries: longint; var cr: COLORREF): longint; stdcall;
- wglShareLists: function(glrc1: HGLRC; glrc2: HGLRC): WINBOOL; stdcall;
- wglSwapLayerBuffers: function(DC: HDC; fuPlanes: UINT): WINBOOL; stdcall;
- { откуда взялась эта функция? Нет ни каких указаний на неё - wglSwapMultipleBuffers: function(p1: UINT; const p2: PWGLSWAP): DWORD; stdcall; }
- wglUseFontBitmaps: function(DC: HDC; first: DWORD; count: DWORD; listbase: DWORD):WINBOOL; stdcall;
- wglUseFontBitmapsW: function(DC: HDC; first: DWORD; count: DWORD; listbase: DWORD):WINBOOL; stdcall;
- wglUseFontBitmapsA: function(DC: HDC; first: DWORD; count: DWORD; listbase: DWORD):WINBOOL; stdcall;
- wglUseFontOutlines: function(DC: HDC; first: DWORD; count: DWORD; listbase: DWORD; deviation: Single; extrusion: Single; format: longint; lpgmf: LPGLYPHMETRICSFLOAT): WINBOOL; stdcall;
- wglUseFontOutlinesA: function(DC: HDC; first: DWORD; count: DWORD; listbase: DWORD; deviation: Single; extrusion: Single; format: longint; lpgmf: LPGLYPHMETRICSFLOAT): WINBOOL; stdcall;
- wglUseFontOutlinesW: function(DC: HDC; first: DWORD; count: DWORD; listbase: DWORD; deviation: Single; extrusion: Single; format: longint; lpgmf: LPGLYPHMETRICSFLOAT): WINBOOL; stdcall;
- {$EndIf}
- {$EndIf}
- var
- {$if defined(WGL_ARB_pixel_format) or defined(WGL_EXT_pixel_format)} // WGL_ARB_pixel_format or WGL_EXT_pixel_format => WGL_ARB_pixel_format
- wglGetPixelFormatAttribivARB: function(hdc: HDC; iPixelFormat: GLint; iLayerPlane: GLint; nAttributes: GLuint; const piAttributes: PGLint; piValues: PGLint): Boolean; stdcall;
- wglGetPixelFormatAttribfvARB: function(hdc: HDC; iPixelFormat: GLint; iLayerPlane: GLint; nAttributes: GLuint; const piAttributes: PGLint; pfValues: PGLfloat): Boolean; stdcall;
- wglChoosePixelFormatARB: function(hdc: HDC; const piAttribIList: PGLint; const pfAttribFList: PGLfloat; nMaxFormats: GLuint; piFormats: PGLint; nNumFormats: PGLuint): BOOL; stdcall;
- {$IfEnd}
- {$ifdef WGL_EXT_swap_control}
- wglSwapIntervalEXT: function(interval: GLint): Boolean; stdcall;
- wglGetSwapIntervalEXT: function(): GLint; stdcall;
- {$EndIf}
- {$If defined(WGL_ARB_pbuffer) or defined(WGL_EXT_pbuffer)} // (WGL_ARB_pbuffer or WGL_EXT_pbuffer) => WGL_ARB_pbuffer
- wglCreatePbufferARB: function(hDC: HDC; iPixelFormat: GLint; iWidth: GLint; iHeight: GLint; const piAttribList: PGLint): THANDLE; stdcall;
- wglGetPbufferDCARB: function(hPbuffer: THandle): HDC; stdcall;
- wglReleasePbufferDCARB: function(hPbuffer: THandle; hDC: HDC): GLint; stdcall;
- wglDestroyPbufferARB: function(hPbuffer: THandle): Boolean; stdcall;
- // вернуть значения ширины, высоты или потеря пиксельного буфера.
- wglQueryPbufferARB: function(hPbuffer: THandle; iAttribute: GLint; piValue: PGLint): Boolean; stdcall;
- {$IfEnd}
- {$If defined(WGL_ARB_extensions_string) or defined(WGL_EXT_extensions_string)}
- // это полный кабздец... для каждого окна эта функция может возвращать разные значения!!!
- // это означает, что создавая новое окно, вы заново должны переопределить эту функцию (так же и с другими, которые запрашивают окно).
- wglGetExtensionsStringARB: function(hdc: HDC): PAnsiChar; stdcall;
- {$IfEnd}
- {$ifdef WGL_ARB_buffer_region}
- wglCreateBufferRegionARB: function(hDC: HDC; iLayerPlane: GLint; uType: GLuint): THandle; stdcall;
- wglDeleteBufferRegionARB: procedure(hRegion: THandle); stdcall;
- wglSaveBufferRegionARB: function(hRegion: THandle; x: GLint; y: GLint; width: GLint; height: GLint): Boolean; stdcall;
- wglRestoreBufferRegionARB: function(hRegion: THandle; x: GLint; y: GLint; width: GLint; height: GLint; xSrc: GLint; ySrc: GLint): Boolean; stdcall;
- {$EndIf}
- {$if defined(WGL_ARB_make_current_read) or defined(WGL_EXT_make_current_read)}
- wglMakeContextCurrentARB: function(hDrawDC: HDC; hReadDC: HDC; hglrc: HGLRC): Boolean; stdcall;
- wglGetCurrentReadDCARB: function(): HDC; stdcall;
- {$IfEnd}
- // WGL_ARB_color_buffer_float - удалено???
- // wglClampColorARB: procedure(target: GLenum; clamp: GLenum); stdcall;
- {$ifdef WGL_ARB_render_texture}
- wglBindTexImageARB: function(hPbuffer: THandle; iBuffer: GLint): Boolean; stdcall;
- wglReleaseTexImageARB: function(hPbuffer: THandle; iBuffer: GLint): Boolean; stdcall;
- wglSetPbufferAttribARB: function(hPbuffer: THandle; const piAttribList: PGLint): Boolean; stdcall;
- {$EndIf}
- {$ifdef WGL_ARB_create_context}
- wglCreateContextAttribsARB: function(hDC: HDC; hShareContext: HGLRC; const attribList: PGLint): HGLRC; stdcall;
- {$EndIf}
- {$IfDef WGL_AMD_gpu_association}
- wglGetGPUIDsAMD: function(maxCount: Cardinal; ids: PCardinal): Cardinal; stdcall;
- wglGetGPUInfoAMD: function(id: Cardinal; property_: Integer; dataType: GLenum; size: Cardinal; data: Pointer): Integer; stdcall;
- wglGetContextGPUIDAMD: function(hglrc: HGLRC): Cardinal; stdcall;
- wglCreateAssociatedContextAMD: function(id: Cardinal): HGLRC; stdcall;
- wglCreateAssociatedContextAttribsAMD: function(id: Cardinal; hShareContext: HGLRC; const attribList: PInteger): HGLRC; stdcall;
- wglDeleteAssociatedContextAMD: function(hglrc: HGLRC): Boolean; stdcall;
- wglMakeAssociatedContextCurrentAMD: function(hglrc: HGLRC): Boolean; stdcall;
- wglGetCurrentAssociatedContextAMD: function(): HGLRC; stdcall;
- wglBlitContextFramebufferAMD: procedure(dstCtx: HGLRC; srcX0: GLint; srcY0: GLint; srcX1: GLint; srcY1: GLint; dstX0: GLint; dstY0: GLint; dstX1: GLint; dstY1: GLint; mask: GLbitfield; filter: GLenum); stdcall;
- {$EndIf}
- {$IfDef WGL_EXT_display_color_table}
- wglCreateDisplayColorTableEXT: function(id: GLushort): GLboolean; stdcall;
- wglLoadDisplayColorTableEXT: function(const table: PGLushort; length: GLuint): GLboolean; stdcall;
- wglBindDisplayColorTableEXT: function(id: GLushort): GLboolean; stdcall;
- wglDestroyDisplayColorTableEXT: procedure(id: GLushort); stdcall;
- {$EndIf}
- {$IfDef WGL_EXT_extensions_string}
- // wglGetExtensionsStringEXT: function(): PAnsiChar{PChar}; stdcall;
- {$EndIf}
- {$IfDef WGL_EXT_make_current_read}
- // wglMakeContextCurrentEXT: function(hDrawDC: HDC; hReadDC: HDC; hglrc: HGLRC): Boolean; stdcall;
- // wglGetCurrentReadDCEXT: function(): HDC; stdcall;
- {$EndIf}
- {$ifdef WGL_EXT_pbuffer}
- // wglCreatePbufferEXT: function(hDC: HDC; iPixelFormat: GLint; iWidth: GLint; iHeight: GLint; const piAttribList: PGLint): HPBUFFEREXT; stdcall;
- // wglGetPbufferDCEXT: function(hPbuffer: HPBUFFEREXT): HDC; stdcall;
- // wglReleasePbufferDCEXT: function(hPbuffer: HPBUFFEREXT; hDC: HDC): GLint; stdcall;
- // wglDestroyPbufferEXT: function(hPbuffer: HPBUFFEREXT): Boolean; stdcall;
- // wglQueryPbufferEXT: function(hPbuffer: HPBUFFEREXT; iAttribute: GLint; piValue: PGLint): Boolean; stdcall;
- {$EndIf}
- {$IfDef WGL_EXT_pixel_format}
- // wglGetPixelFormatAttribivEXT: function(hdc: HDC; iPixelFormat: GLint; iLayerPlane: GLint; nAttributes: GLuint; piAttributes: PGLint; piValues: PGLint): Boolean; stdcall;
- // wglGetPixelFormatAttribfvEXT: function(hdc: HDC; iPixelFormat: GLint; iLayerPlane: GLint; nAttributes: GLuint; piAttributes: PGLint; pfValues: PGLfloat): Boolean; stdcall;
- // wglChoosePixelFormatEXT: function(hdc: HDC; const piAttribIList: PGLint; const pfAttribFList: PGLfloat; nMaxFormats: GLuint; piFormats: PGLint; nNumFormats: PGLuint): Boolean; stdcall;
- {$EndIf}
- {$IfDef WGL_I3D_digital_video_control}
- wglGetDigitalVideoParametersI3D: function(hDC: HDC; iAttribute: GLint; piValue: PGLint): Boolean; stdcall;
- wglSetDigitalVideoParametersI3D: function(hDC: HDC; iAttribute: GLint; const piValue: PGLint): Boolean; stdcall;
- {$EndIf}
- {$IfDef WGL_I3D_gamma}
- wglGetGammaTableParametersI3D: function(hDC: HDC; iAttribute: GLint; piValue: PGLint): Boolean; stdcall;
- wglSetGammaTableParametersI3D: function(hDC: HDC; iAttribute: GLint; const piValue: PGLint): Boolean; stdcall;
- wglGetGammaTableI3D: function(hDC: HDC; iEntries: GLint; puRed: PGLushort; puGreen: PGLushort; puBlue: PGLushort): Boolean; stdcall;
- wglSetGammaTableI3D: function(hDC: HDC; iEntries: GLint; const puRed: PGLushort; const puGreen: PGLushort; const puBlue: PGLushort): Boolean; stdcall;
- {$EndIf}
- {$IfDef WGL_I3D_genlock}
- wglEnableGenlockI3D: function(hDC: HDC): Boolean; stdcall;
- wglDisableGenlockI3D: function(hDC: HDC): Boolean; stdcall;
- wglIsEnabledGenlockI3D: function(hDC: HDC; pFlag: Boolean): Boolean; stdcall;
- wglGenlockSourceI3D: function(hDC: HDC; uSource: GLuint): Boolean; stdcall;
- wglGetGenlockSourceI3D: function(hDC: HDC; uSource: PGLuint): Boolean; stdcall;
- wglGenlockSourceEdgeI3D: function(hDC: HDC; uEdge: GLuint): Boolean; stdcall;
- wglGetGenlockSourceEdgeI3D: function(hDC: HDC; uEdge: PGLuint): Boolean; stdcall;
- wglGenlockSampleRateI3D: function(hDC: HDC; uRate: GLuint): Boolean; stdcall;
- wglGetGenlockSampleRateI3D: function(hDC: HDC; uRate: PGLuint): Boolean; stdcall;
- wglGenlockSourceDelayI3D: function(hDC: HDC; uDelay: GLuint): Boolean; stdcall;
- wglGetGenlockSourceDelayI3D: function(hDC: HDC; uDelay: PGLuint): Boolean; stdcall;
- wglQueryGenlockMaxSourceDelayI3D: function(hDC: HDC; uMaxLineDelay: PGLuint; uMaxPixelDelay: PGLuint): Boolean; stdcall;
- {$EndIf}
- {$IfDef WGL_I3D_image_buffer}
- wglCreateImageBufferI3D: function(hDC: HDC; dwSize: GLuint; uFlags: GLuint): GLvoid; stdcall;
- wglDestroyImageBufferI3D: function(hDC: HDC; pAddress: GLvoid): Boolean; stdcall;
- wglAssociateImageBufferEventsI3D: function(hDC: HDC; const pEvent: THandle; const pAddress: PGLvoid; const pSize: PGLuint; count: GLuint): Boolean; stdcall;
- wglReleaseImageBufferEventsI3D: function(hDC: HDC; const pAddress: PGLvoid; count: GLuint): Boolean; stdcall;
- {$EndIf}
- {$IfDef WGL_I3D_swap_frame_lock}
- wglEnableFrameLockI3D: function(): Boolean; stdcall;
- wglDisableFrameLockI3D: function(): Boolean; stdcall;
- wglIsEnabledFrameLockI3D: function(pFlag: Boolean): Boolean; stdcall;
- wglQueryFrameLockMasterI3D: function(pFlag: Boolean): Boolean; stdcall;
- {$EndIf}
- {$IfDef WGL_I3D_swap_frame_usage}
- wglGetFrameUsageI3D: function(pUsage: PGLfloat): Boolean; stdcall;
- wglBeginFrameTrackingI3D: function(): Boolean; stdcall;
- wglEndFrameTrackingI3D: function(): Boolean; stdcall;
- wglQueryFrameTrackingI3D: function(pFrameCount: PGLuint; pMissedFrames: PGLuint; pLastMissedUsage: PGLfloat): Boolean; stdcall;
- {$EndIf}
- {$IfDef WGL_NV_vertex_array_range}
- wglAllocateMemoryNV: procedure(size: GLsizei; readfreq: GLfloat; writefreq: GLfloat; priority: GLfloat); stdcall;
- wglFreeMemoryNV: procedure(_pointer: Pointer); stdcall;
- {$EndIf}
- {$IfDef WGL_NV_present_video}
- wglEnumerateVideoDevicesNV: function(hdc: HDC; phDeviceList: PHVIDEOOUTPUTDEVICENV): Integer; stdcall;
- wglBindVideoDeviceNV: function(hd: HDC; uVideoSlot: Cardinal; hVideoDevice: HVIDEOOUTPUTDEVICENV; piAttribList: PInteger): Boolean; stdcall;
- wglQueryCurrentContextNV: function(iAttribute: Integer; piValue: PInteger): Boolean; stdcall;
- {$EndIf}
- {$IfDef WGL_NV_video_output}
- wglGetVideoDeviceNV: function(hDC: HDC; numDevices: Integer; hVideoDevice: PHPVIDEODEV): Boolean; stdcall;
- wglReleaseVideoDeviceNV: function(hVideoDevice: HPVIDEODEV): Boolean; stdcall;
- wglBindVideoImageNV: function(hVideoDevice: HPVIDEODEV; hPbuffer: THandle; iVideoBuffer: Integer): Boolean; stdcall;
- wglReleaseVideoImageNV: function(hPbuffer: THandle; iVideoBuffer: Integer): Boolean; stdcall;
- wglSendPbufferToVideoNV: function(hPbuffer: THandle; iBufferType: Integer; pulCounterPbuffer: PCardinal; bBlock: Boolean): Boolean; stdcall;
- wglGetVideoInfoNV: function(hpVideoDevice: HPVIDEODEV; pulCounterOutputPbuffer: PCardinal; pulCounterOutputVideo: PCardinal): Boolean; stdcall;
- {$EndIf}
- {$IfDef WGL_NV_swap_group}
- wglJoinSwapGroupNV: function(hDC: HDC; group: GLuint): Boolean; stdcall;
- wglBindSwapBarrierNV: function(group: GLuint; barrier: GLuint): Boolean; stdcall;
- wglQuerySwapGroupNV: function(hDC: HDC; group: PGLuint; barrier: PGLuint): Boolean; stdcall;
- wglQueryMaxSwapGroupsNV: function(hDC: HDC; mxGroups: PGLuint; maxBarriers: PGLuint): Boolean; stdcall;
- wglQueryFrameCountNV: function(hDC: HDC; count: PGLuint): Boolean; stdcall;
- wglResetFrameCountNV: function(hDC: HDC): Boolean; stdcall;
- {$EndIf}
- {$IfDef WGL_NV_gpu_affinity}
- wglEnumGpusNV: function(iGpuIndex: Cardinal; phGpu: PHGPUNV): Boolean; stdcall;
- wglEnumGpuDevicesNV: function(hGpu: HGPUNV; iDeviceIndex: Cardinal; lpGpuDevice: PGPU_DEVICE): Boolean; stdcall;
- wglCreateAffinityDCNV: function(const phGpuList: PHGPUNV): HDC; stdcall;
- wglEnumGpusFromAffinityDCNV: function(hAffinityDC: HDC; iGpuIndex: Cardinal; hGpu: PHGPUNV): Boolean; stdcall;
- wglDeleteDCNV: function(hDC: HDC): Boolean; stdcall;
- {$EndIf}
- {$ifdef WGL_NV_video_capture}
- wglBindVideoCaptureDeviceNV: function(uVideoSlot: Cardinal; hDevice: HVIDEOINPUTDEVICENV): Boolean; stdcall;
- wglEnumerateVideoCaptureDevicesNV: function(hDc: HDC; phDeviceList: PHVIDEOINPUTDEVICENV): Cardinal; stdcall;
- wglLockVideoCaptureDeviceNV: function(hDc: HDC; hDevice: HVIDEOINPUTDEVICENV): Boolean; stdcall;
- wglQueryVideoCaptureDeviceNV: function(hDc: HDC; hDevice: HVIDEOINPUTDEVICENV; iAttribute: Integer; piValue: PInteger): Boolean; stdcall;
- wglReleaseVideoCaptureDeviceNV: function(hDc: HDC; hDevice: HVIDEOINPUTDEVICENV): Boolean; stdcall;
- {$EndIf}
- {$IfDef WGL_NV_copy_image}
- wglCopyImageSubDataNV: function(hSrcRc: HGLRC; srcName: GLuint; srcTarget: GLenum; srcLevel: GLint; srcX: GLint; srcY: GLint; srcZ: GLint; hDstRC: HGLRC; dstName: GLuint; dstTarget: GLenum; dstLevel: GLint; dstX: GLint; dstY: GLint; dstZ: GLint; width: GLsizei; height: GLsizei; depth: GLsizei): Boolean; stdcall;
- {$EndIf}
- {$ifdef WGL_NV_delay_before_swap}
- wglDelayBeforeSwapNV: function (hDC:HDC; seconds:GLfloat): Boolean; stdcall;
- {$EndIf}
- {$IfDef WGL_NV_DX_interop}
- wglDXSetResourceShareHandleNV: function(dxObject : PGLVoid; hareHandle : Cardinal) : Boolean; stdcall;
- wglDXOpenDeviceNV: function(dxDevice : PGLVoid) : Cardinal; stdcall;
- wglDXCloseDeviceNV: function(hDevice : Cardinal) : Boolean; stdcall;
- wglDXRegisterObjectNV: function(hDevice : Cardinal; dxObject : PGLVoid; name : GLUInt; _type : GLEnum; access : GLenum) : Cardinal; stdcall;
- wglDXUnregisterObjectNV: function(hDevice : Cardinal; hObject : Cardinal) : Boolean; stdcall;
- wglDXObjectAccessNV: function(hObject : Cardinal; access : GLenum) : Boolean; stdcall;
- wglDXLockObjectsNV: function(hDevice : Cardinal; count : GLint; hObjects : PCardinal) : Boolean; stdcall;
- wglDXUnlockObjectsNV: function (hDevice : Cardinal; count : GLint; hObjects : PCardinal) : Boolean; stdcall;
- {$EndIf}
- {$IfDef WGL_OML_sync_control}
- wglGetSyncValuesOML: function(hdc: HDC; ust: PGLint64; msc: PGLint64; sbc: PGLint64): Boolean; stdcall;
- wglGetMscRateOML: function(hdc: HDC; numerator: PGLint; denominator: PGLint): Boolean; stdcall;
- wglSwapBuffersMscOML: function(hdc: HDC; target_msc: GLint64; divisor: GLint64; remainder: GLint64): GLint64; stdcall;
- wglSwapLayerBuffersMscOML: function(hdc: HDC; fuPlanes: GLint; target_msc: GLint64; divisor: GLint64; remainder: GLint64): GLint64; stdcall;
- wglWaitForMscOML: function(hdc: HDC; target_msc: GLint64; divisor: GLint64; remainder: GLint64; ust: PGLint64; msc: PGLint64; sbc: PGLint64): Boolean; stdcall;
- wglWaitForSbcOML: function(hdc: HDC; target_sbc: GLint64; ust: PGLint64; msc: PGLint64; sbc: PGLint64): Boolean; stdcall;
- {$EndIf}
- {$IfDef WGL_3DL_stereo_control}
- wglSetStereoEmitterState3DL: function(hDC: HDC; uState: UINT): Boolean; stdcall;
- {$EndIf}
- // WIN_draw_range_elements узнать что это за функции и здесь ли они должны быть?
- // glDrawRangeElementsWIN = procedure(mode: GLenum; start: GLuint; _end: GLuint; count: GLsizei; _type: GLenum; const indices: PGLvoid); stdcall;
- // WIN_swap_hint
- // glAddSwapHintRectWIN = procedure(x: GLint; y: GLint; width: GLsizei; height: GLsizei); stdcall;
- {$EndIf}
- {$IfDef LINUX}
- var
- GLX_VERSION_1_3: Boolean;
- GLX_VERSION_1_4: Boolean;
- // ZenGL ++
- GLX_SGIX_fbconfig: boolean;
- GLX_SGIX_pbuffer: boolean;
- GLX_SGI_swap_control: boolean;
- {$IFDEF GL_VERSION_3_0}
- GLX_ARB_create_context: boolean;
- {$ENDIF}
- {$IfDef USE_FULL_GLX}
- GLX_ARB_context_flush_control: Boolean;
- GLX_ARB_create_context_no_error: boolean;
- GLX_ARB_create_context_profile: boolean;
- GLX_ARB_create_context_robustness: boolean;
- GLX_ARB_fbconfig_float: boolean;
- GLX_ARB_framebuffer_sRGB: boolean;
- GLX_ARB_get_proc_address: boolean;
- GLX_ARB_multisample: boolean;
- GLX_ARB_robustness_application_isolation: boolean;
- GLX_ARB_robustness_share_group_isolation: boolean;
- GLX_ARB_vertex_buffer_object: boolean;
- GLX_3DFX_multisample: boolean;
- GLX_AMD_gpu_association: boolean;
- GLX_EXT_buffer_age: boolean;
- GLX_EXT_context_priority: boolean;
- GLX_EXT_create_context_es2_profile: boolean;
- GLX_EXT_create_context_es_profile: boolean;
- GLX_EXT_fbconfig_packed_float: boolean;
- GLX_EXT_framebuffer_sRGB: boolean;
- GLX_EXT_get_drawable_type: boolean;
- GLX_EXT_import_context: boolean;
- GLX_EXT_libglvnd: boolean;
- GLX_EXT_no_config_context: boolean;
- GLX_EXT_stereo_tree: boolean;
- GLX_EXT_swap_control: boolean;
- GLX_EXT_swap_control_tear: boolean;
- GLX_EXT_texture_from_pixmap: Boolean;
- GLX_EXT_visual_info: boolean;
- GLX_EXT_visual_rating: boolean;
- GLX_INTEL_swap_event: boolean;
- GLX_MESA_agp_offset: boolean;
- GLX_MESA_copy_sub_buffer: boolean;
- GLX_MESA_pixmap_colormap: boolean;
- GLX_MESA_query_renderer: boolean;
- GLX_MESA_release_buffers: boolean;
- GLX_MESA_set_3dfx_mode: boolean;
- GLX_MESA_swap_control: boolean;
- GLX_NV_copy_buffer: boolean;
- GLX_NV_copy_image: boolean;
- GLX_NV_delay_before_swap: boolean;
- GLX_NV_float_buffer: boolean;
- GLX_NV_multigpu_context: boolean;
- GLX_NV_multisample_coverage: boolean;
- GLX_NV_present_video: boolean;
- GLX_NV_robustness_video_memory_purge: boolean;
- GLX_NV_swap_group: boolean;
- GLX_NV_video_capture: boolean;
- GLX_NV_video_out: boolean;
- GLX_OML_swap_method: boolean;
- GLX_OML_sync_control: boolean;
- GLX_SGIS_blended_overlay: boolean;
- GLX_SGIS_multisample: boolean;
- GLX_SGIS_shared_multisample: boolean;
- GLX_SGIX_dmbuffer: boolean;
- GLX_SGIX_hyperpipe: boolean;
- GLX_SGIX_swap_barrier: boolean;
- GLX_SGIX_swap_group: boolean;
- GLX_SGIX_video_resize: boolean;
- GLX_SGIX_video_source: boolean;
- GLX_SGIX_visual_select_group: boolean;
- GLX_SGI_cushion: boolean;
- GLX_SGI_make_current_read: boolean;
- GLX_SGI_video_sync: boolean;
- GLX_SUN_get_transparent_index: boolean;
- // GLX_SGIX_fbconfig: boolean;
- // GLX_SGIX_pbuffer: boolean;
- // GLX_SGI_swap_control: boolean;
- {$EndIf}
- // GLX_VERSION_1_0
- glXChooseVisual: function(dpy: PDisplay; screen: Integer; attribList: PInteger): PXVisualInfo; cdecl;
- glXCreateContext: function(dpy: PDisplay; vis: PXVisualInfo; shareList: GLXContext; direct: GLBoolean): GLXContext; cdecl;
- glXDestroyContext: procedure(dpy: PDisplay; ctx: GLXContext); cdecl;
- glXMakeCurrent: function(dpy: PDisplay; drawable: GLXDrawable; ctx: GLXContext): Boolean; cdecl;
- glXSwapBuffers: procedure(dpy: PDisplay; drawable: GLXDrawable); cdecl;
- glXQueryExtension: function(dpy: PDisplay; out errorb, event: Integer): Boolean; cdecl;
- // возвращаем версию GLX
- glXQueryVersion: function(dpy: PDisplay; out major, minor: Integer): Boolean; cdecl;
- glXIsDirect: function(dpy: PDisplay; ctx: GLXContext): Boolean; cdecl;
- // GLX_VERSION_1_1
- // вернуть строку - GLX_VENDOR , GLX_VERSION или GLX_EXTENSIONS.
- glXQueryServerString: function(dpy: PDisplay; screen: Integer; name: Integer): PAnsiChar; cdecl;
- // GLX_VERSION_1_3
- glXGetFBConfigAttrib: function(dpy: PDisplay; config: GLXFBConfig; attribute: GLint; var value: GLint): glint; cdecl;
- // создание нового контекста рендеринга GLX
- glXCreateNewContext: function(dpy: PDisplay; config: GLXFBConfig; render_type: GLint; share_list: GLXContext; direct: GLboolean): GLXContext cdecl;
- {$IfDef USE_FULL_GLX}
- // Rus: Важно знать, это полная версия переведённая библиотека GLX для ZenGL.
- // Вы можете использовать вместо этого модуля модуль GLX.
- // Eng: It is important to know, this is the full version of the translated GLX
- // library for ZenGL. You can use the GLX module instead.
- // GLX_VERSION_1_0
- glXCopyContext: procedure(dpy: PDisplay; src: GLXContext; dst: GLXContext; mask: GLuint); cdecl;
- glXCreateGLXPixmap: function(dpy: PDisplay; vis: PXVisualInfo; pixmap: XPixmap): GLXPixmap cdecl;
- glXDestroyGLXPixmap: procedure(dpy: PDisplay; pix: GLXPixmap); cdecl;
- glXGetConfig: function(dpy: PDisplay; vis: PXVisualInfo; attrib: GLint; value: PGLint): GLint; cdecl;
- glXGetCurrentContext: function: GLXContext; cdecl;
- glXGetCurrentDrawable: function: GLXDrawable; cdecl;
- glXUseXFont: procedure(font: XFont; first: GLint; count: GLint; listBase: GLint); cdecl;
- glXWaitGL: procedure; cdecl;
- glXWaitX: procedure; cdecl;
- // GLX_VERSION_1_1
- glXGetClientString: function(dpy: PDisplay; name: GLint): PGLchar; cdecl;
- glXQueryExtensionsString: function(dpy: PDisplay; screen: GLint): PGLchar; cdecl;
- {$IfDef GLX_VERSION_1_3} // - http://code.nabla.net/doc/OpenGL/index_man1.html
- glXGetFBConfigs: function(dpy: PDisplay; screen: GLint; var nelements: GLint): PGLXFBConfig; cdecl;
- // создание области рендеринга на экране
- glXCreateWindow: function(dpy: PDisplay; config: GLXFBConfig; win: XWindow; attrib_list: PGLint): GLXWindow; cdecl;
- // уничтожение области рендеринга
- glXDestroyWindow: procedure(dpy: PDisplay; win: GLXWindow); cdecl;
- // создание области рендеринга вне экрана (вне окна? или вообще не на экране?)
- glXCreatePixmap: function(dpy: PDisplay; config: GLXFBConfig; pixmap: XPixmap; attrib_list: PGLint): GLXPixmap; cdecl;
- // уничтожение области рендеринга вне экрана
- glXDestroyPixmap: procedure(dpy: PDisplay; pixmap: GLXPixmap); cdecl;
- // возвращает атрибут, связанный с возможностью рисования GLX
- glXQueryDrawable: procedure(dpy: PDisplay; draw: GLXDrawable; attribute: GLint; value: PGLuint); cdecl;
- // связывание контекста GLX с окном
- glXMakeContextCurrent: function(display: PDisplay; draw: GLXDrawable; read_: GLXDrawable; ctx: GLXContext): GLboolean; cdecl;
- // вернуть текущий (контекст?) доступный для рисования
- glXGetCurrentReadDrawable: function: GLXDrawable; cdecl;
- // вернуть текущее окно? Удалена???
- // glXGetCurreentDisplay: function: PDisplay; cdecl;
- // информация о контексте запроса
- glXQueryContext: function(dpy: PDisplay; ctx: GLXContext; attribute: GLint; value: PGLint): GLint; cdecl;
- // устанавливаем маску события GLX для пиксельного буфера или окна
- glXSelectEvent: procedure(dpy: PDisplay; draw: GLXDrawable; event_mask: GLuint); cdecl;
- // возвращаем маску события выбранного для рисования
- glXGetSelectedEvent: procedure(dpy: PDisplay; draw: GLXDrawable; event_mask: PGLuint); cdecl;
- {$EndIf}
- {$EndIf}
- {$ifdef GLX_ARB_create_context}
- glXCreateContextAttribsARB: function(dpy: PDisplay; config: GLXFBConfig; share_context: GLXContext; direct: boolean; const attrib_list: PGLint): GLXContext; cdecl;
- {$EndIf}
- {$ifdef GLX_AMD_gpu_association}
- glXGetGPUIDsAMD: function(maxCount: dword; ids: Pdword): dword; cdecl;
- glXGetGPUInfoAMD: function(id: dword; _property: longint; dataType: GLenum; size: dword; data: pointer): longint; cdecl;
- glXGetContextGPUIDAMD: function(ctx: GLXContext): dword; cdecl;
- glXCreateAssociatedContextAMD: function(id: dword; share_list: GLXContext): GLXContext; cdecl;
- glXCreateAssociatedContextAttribsAMD: function(id: dword; share_context: GLXContext; attribList: Plongint): GLXContext; cdecl;
- glXDeleteAssociatedContextAMD: function(ctx: GLXContext): Boolean; cdecl;
- glXMakeAssociatedContextCurrentAMD: function(ctx: GLXContext): Boolean; cdecl;
- glXGetCurrentAssociatedContextAMD: function: GLXContext; cdecl;
- glXBlitContextFramebufferAMD: procedure(dstCtx: GLXContext; srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1: GLint; mask: GLbitfield; filter: GLenum); cdecl;
- {$EndIf}
- {$ifdef GLX_EXT_import_context}
- glXGetCurrentDisplayEXT: function: PDisplay; cdecl;
- glXQueryContextInfoEXT: function(dpy: PDisplay; context: GLXContext; attribute: GLint; value: PGLint): GLint; cdecl;
- glXGetContextIDEXT: function(const context: GLXContext): GLXContextID; cdecl;
- glXImportContextEXT: function(dpy: PDisplay; contextID: GLXContextID): GLXContext; cdecl;
- glXFreeContextEXT: procedure(dpy: PDisplay; context: GLXContext); cdecl;
- {$EndIf}
- {$ifdef GLX_EXT_texture_from_pixmap}
- glXBindTexImageEXT: procedure(dpy: PDisplay; drawable: GLXDrawable; buffer: GLint; const attrib_list: PGLint); cdecl;
- glXReleaseTexImageEXT: procedure(dpy: PDisplay; drawable: GLXDrawable; buffer: GLint); cdecl;
- {$EndIf}
- {$ifdef GLX_EXT_swap_control}
- glXSwapIntervalEXT: procedure(dpy : PDisplay; drawable : GLXDrawable; interval : GLint); cdecl;
- {$EndIf}
- {$ifdef GLX_MESA_agp_offset}
- glXGetAGPOffsetMESA: function(pointer: pointer): dword; cdecl;
- {$endif}
- {$ifdef GLX_MESA_pixmap_colormap}
- glXCreateGLXPixmapMESA: function(dpy: PDisplay; visual: PXVisualInfo; pixmap: XPixmap; cmap: XColormap): GLXPixmap; cdecl;
- {$EndIf}
- {$ifdef GLX_MESA_query_renderer}
- glXQueryCurrentRendererIntegerMESA: function(attribute: longint; value: Pdword): Boolean; cdecl;
- glXQueryCurrentRendererStringMESA: function(attribute:longint): Pchar; cdecl;
- glXQueryRendererIntegerMESA: function(dpy: PDisplay; screen: longint; renderer: longint; attribute: longint; value: Pdword): Boolean; cdecl;
- glXQueryRendererStringMESA: function(dpy: PDisplay; screen: longint; renderer: longint; attribute: longint): Pchar; cdecl;
- {$EndIf}
- {$ifdef GLX_MESA_swap_control}
- glXSwapIntervalMESA: function(interval: cuint): cint; cdecl;
- glXGetSwapIntervalMESA: function: cint; cdecl;
- {$EndIf}
- // Unknown Mesa GLX extension (undocumented in current GLX C headers?)
- {$ifdef GLX_MESA_release_buffers}
- glXReleaseBuffersMESA: function(dpy: PDisplay; d: GLXDrawable): TBoolResult; cdecl;
- {$EndIf}
- {$ifdef GLX_MESA_copy_sub_buffer}
- glXCopySubBufferMESA: procedure(dpy: PDisplay; drawable: GLXDrawable; x, y, width, height: cint); cdecl;
- {$EndIf}
- {$ifdef GLX_MESA_set_3dfx_mode}
- glXSet3DfxModeMESA: function(mode: GLint): GLboolean; cdecl;
- {$EndIf}
- {$ifdef GLX_NV_copy_buffer}
- glXCopyBufferSubDataNV: procedure(dpy: PDisplay; readCtx, writeCtx: GLXContext; readTarget, writeTarget: GLenum; readOffset, writeOffset: GLintptr; size: GLsizeiptr); cdecl;
- glXNamedCopyBufferSubDataNV: procedure(dpy: PDisplay; readCtx, writeCtx: GLXContext; readBuffer, writeBuffer: GLuint; readOffset, writeOffset: GLintptr; size: GLsizeiptr); cdecl;
- {$endif}
- {$ifdef GLX_NV_copy_image}
- glXCopyImageSubDataNV: procedure(dpy: PDisplay; srcCtx: GLXContext; srcName: GLuint; srcTarget: GLenum; srcLevel, srcX, srcY, srcZ: GLint; dstCtx: GLXContext; dstName: GLuint; dstTarget: GLenum; dstLevel, dstX, dstY, dstZ: GLint; width, height, depth: GLsizei); cdecl;
- {$endif}
- {$ifdef GLX_NV_delay_before_swap}
- glXDelayBeforeSwapNV: function(dpy: PDisplay; drawable: GLXDrawable; seconds: GLfloat): Boolean; cdecl;
- {$endif}
- {$ifdef GLX_NV_present_video}
- glXEnumerateVideoDevicesNV: function(dpy: PDisplay; screen: longint; nelements: Plongint): Pdword; cdecl;
- glXBindVideoDeviceNV: function(dpy: PDisplay; video_slot: dword; video_device: dword; attrib_list: Plongint): longint; cdecl;
- {$EndIf}
- {$ifdef GLX_NV_swap_group}
- glXJoinSwapGroupNV: function(dpy: PDisplay; drawable: GLXDrawable; group: GLuint): Boolean; cdecl;
- glXBindSwapBarrierNV: function(dpy: PDisplay; group: GLuint; barrier: GLuint): Boolean; cdecl;
- glXQuerySwapGroupNV: function(dpy: PDisplay; drawable: GLXDrawable; group: PGLuint; barrier: PGLuint): Boolean; cdecl;
- glXQueryMaxSwapGroupsNV: function(dpy: PDisplay; screen: longint; maxGroups: PGLuint; maxBarriers: PGLuint): Boolean; cdecl;
- glXQueryFrameCountNV: function(dpy: PDisplay; screen: longint; count: PGLuint): Boolean; cdecl;
- glXResetFrameCountNV: function(dpy: PDisplay; screen: longint):Boolean; cdecl;
- {$endif}
- {$ifdef GLX_NV_video_capture}
- glXBindVideoCaptureDeviceNV: function(dpy: PDisplay; video_capture_slot: dword; device: GLXVideoCaptureDeviceNV): longint; cdecl;
- glXEnumerateVideoCaptureDevicesNV: function(dpy: PDisplay; screen: longint; nelements: Plongint): PGLXVideoCaptureDeviceNV; cdecl;
- glXLockVideoCaptureDeviceNV: procedure(dpy: PDisplay; device: GLXVideoCaptureDeviceNV); cdecl;
- glXQueryVideoCaptureDeviceNV: function(dpy: PDisplay; device: GLXVideoCaptureDeviceNV; attribute: longint; value: Plongint): longint; cdecl;
- glXReleaseVideoCaptureDeviceNV: procedure(dpy: PDisplay; device: GLXVideoCaptureDeviceNV); cdecl;
- {$EndIf}
- {$ifdef GLX_NV_video_out}
- glXGetVideoDeviceNV: function(dpy: PDisplay; screen: longint; numVideoDevices: longint; pVideoDevice: PGLXVideoDeviceNV): longint; cdecl;
- glXReleaseVideoDeviceNV: function(dpy: PDisplay; screen: longint; VideoDevice: GLXVideoDeviceNV): longint; cdecl;
- glXBindVideoImageNV: function(dpy: PDisplay; VideoDevice: GLXVideoDeviceNV; pbuf: GLXPbuffer; iVideoBuffer: longint): longint; cdecl;
- glXReleaseVideoImageNV: function(dpy: PDisplay; pbuf: GLXPbuffer): longint; cdecl;
- glXSendPbufferToVideoNV: function(dpy: PDisplay; pbuf: GLXPbuffer; iBufferType: longint; pulCounterPbuffer: Pdword; bBlock: GLboolean): longint; cdecl;
- glXGetVideoInfoNV: function(dpy: PDisplay; screen: longint; VideoDevice: GLXVideoDeviceNV; pulCounterOutputPbuffer: Pdword; pulCounterOutputVideo: Pdword): longint; cdecl;
- {$EndIf}
- {$ifdef GLX_OML_sync_control}
- glXGetSyncValuesOML: function(dpy: PDisplay; drawable: GLXDrawable; ust: Pint64_t; msc: Pint64_t; sbc: Pint64_t): Boolean; cdecl;
- glXGetMscRateOML: function(dpy: PDisplay; drawable: GLXDrawable; numerator: Pint32_t; denominator: Pint32_t):Boolean; cdecl;
- glXSwapBuffersMscOML: function(dpy: PDisplay; drawable: GLXDrawable; target_msc: int64_t; divisor: int64_t; remainder: int64_t): int64_t; cdecl;
- glXWaitForMscOML: function(dpy: PDisplay; drawable: GLXDrawable; target_msc: int64_t; divisor: int64_t; remainder: int64_t; ust: Pint64_t; msc: Pint64_t; sbc: Pint64_t): Boolean; cdecl;
- glXWaitForSbcOML: function(dpy: PDisplay; drawable: GLXDrawable; target_sbc: int64_t; ust: Pint64_t; msc: Pint64_t; sbc: Pint64_t): Boolean; cdecl;
- {$EndIf}
- {$ifdef GLX_SGIX_dmbuffer} // dm_buffer.h застрелитесь - Digital media
- glXAssociateDMPbufferSGIX: function(dpy: PDisplay; pbuffer: GLXPbufferSGIX; params: PDMparams; dmbuffer: DMbuffer): Boolean; cdecl;
- {$EndIf}
- {$ifdef GLX_SGIX_fbconfig}
- glXGetFBConfigAttribSGIX: function(dpy: PDisplay; config: GLXFBConfigSGIX; attribute: longint; var value: longint): longint; cdecl;
- glXChooseFBConfigSGIX: function(dpy: PDisplay; screen: longint; attrib_list: Plongint; var nelements: longint): PGLXFBConfigSGIX; cdecl;
- glXCreateGLXPixmapWithConfigSGIX: function(dpy: PDisplay; config: GLXFBConfigSGIX; pixmap: XPixmap): GLXPixmap; cdecl;
- glXCreateContextWithConfigSGIX: function(dpy: PDisplay; config: GLXFBConfigSGIX; render_type: longint; share_list: GLXContext; direct: Boolean): GLXContext; cdecl;
- glXGetVisualFromFBConfigSGIX: function(dpy: PDisplay; config: GLXFBConfigSGIX): PXVisualInfo; cdecl;
- glXGetFBConfigFromVisualSGIX: function(dpy: PDisplay; vis: PXVisualInfo): GLXFBConfigSGIX; cdecl;
- {$EndIf}
- {$ifdef GLX_SGIX_hyperpipe}
- glXQueryHyperpipeNetworkSGIX: function(dpy: PDisplay; npipes: Plongint): PGLXHyperpipeNetworkSGIX; cdecl;
- glXHyperpipeConfigSGIX: function(dpy: PDisplay; networkId: longint; npipes: longint; cfg: PGLXHyperpipeConfigSGIX; hpId: Plongint): longint; cdecl;
- glXQueryHyperpipeConfigSGIX: function(dpy: PDisplay; hpId: longint; npipes: Plongint): PGLXHyperpipeConfigSGIX; cdecl;
- glXDestroyHyperpipeConfigSGIX: function(dpy: PDisplay; hpId: longint): longint; cdecl;
- glXBindHyperpipeSGIX: function(dpy: PDisplay; hpId: longint): longint; cdecl;
- glXQueryHyperpipeBestAttribSGIX: function(dpy: PDisplay; timeSlice: longint; attrib: longint; size: longint; attribList: pointer; returnAttribList: pointer): longint; cdecl;
- glXHyperpipeAttribSGIX: function(dpy: PDisplay; timeSlice: longint; attrib: longint; size: longint; attribList: pointer): longint; cdecl;
- glXQueryHyperpipeAttribSGIX: function(dpy: PDisplay; timeSlice: longint; attrib: longint; size: longint; returnAttribList: pointer): longint; cdecl;
- {$EndIf}
- {$ifdef GLX_SGIX_swap_barrier}
- glXBindSwapBarrierSGIX: procedure(dpy: PDisplay; drawable: GLXDrawable; barrier: longint); cdecl;
- glXQueryMaxSwapBarriersSGIX: function(dpy: PDisplay; screen: longint; max: Plongint): Boolean; cdecl;
- {$endif}
- {$ifdef GLX_SGIX_swap_group}
- glXJoinSwapGroupSGIX: procedure(dpy: PDisplay; drawable: GLXDrawable; member: GLXDrawable); cdecl;
- {$endif}
- {$ifdef GLX_SGIX_video_resize}
- glXBindChannelToWindowSGIX: function(display: PDisplay; screen: longint; channel: longint; window: XWindow): longint; cdecl;
- glXChannelRectSGIX: function(display: PDisplay; screen: longint; channel: longint; x: longint; y: longint; w: longint; h: longint): longint; cdecl;
- glXQueryChannelRectSGIX: function(display: PDisplay; screen: longint; channel: longint; dx: Plongint; dy: Plongint; dw: Plongint; dh: Plongint): longint; cdecl;
- glXQueryChannelDeltasSGIX: function(display: PDisplay; screen: longint; channel: longint; x: Plongint; y: Plongint; w: Plongint; h: Plongint): longint; cdecl;
- glXChannelRectSyncSGIX: function(display: PDisplay; screen: longint; channel: longint; synctype: GLenum): longint; cdecl;
- {$EndIf}
- {$ifdef GLX_SGIX_video_source} // afs_vl.h https://wiki.gentoo.org/wiki/OpenAFS#What_is_AFS.3F
- glXCreateGLXVideoSourceSGIX: function(display: PDisplay; screen: longint; server: VLServer; path: VLPath; nodeClass: longint; drainNode: VLNode): GLXVideoSourceSGIX; cdecl;
- glXDestroyGLXVideoSourceSGIX: procedure(dpy: PDisplay; glxvideosource: GLXVideoSourceSGIX); cdecl;
- {$EndIf}
- {$ifdef GLX_SGI_cushion}
- glXCushionSGI: procedure(dpy: PDisplay; window: XWindow; cushion: single); cdecl;
- {$endif}
- {$ifdef GLX_SGI_make_current_read}
- glXMakeCurrentReadSGI: function(dpy: PDisplay; draw: GLXDrawable; read: GLXDrawable; ctx: GLXContext): Boolean; cdecl;
- glXGetCurrentReadDrawableSGI: function: GLXDrawable; cdecl;
- {$endif}
- {$ifdef GLX_SGI_video_sync}
- glXGetVideoSyncSGI: function(var count: cuint): cint; cdecl;
- glXWaitVideoSyncSGI: function(divisor, remainder: cint; var count: cuint): cint; cdecl;
- {$EndIf}
- {$ifdef GLX_SUN_get_transparent_index}
- glXGetTransparentIndexSUN: function(dpy: PDisplay; overlay: XWindow; underlay: XWindow; pTransparentIndex: Pdword): Integer {Status}; cdecl;
- {$endif}
- {$If defined(GLX_VERSION_1_4) or defined(GLX_ARB_get_proc_address)}
- glXGetProcAddressARB: function(name: PAnsiChar): Pointer; cdecl;
- {$IfEnd}
- {$IfDef GLX_SGI_swap_control}
- glXSwapIntervalSGI: function(interval: Integer): Integer; cdecl;
- {$EndIf}
- // 1.3
- {$IfDef GLX_VERSION_1_3}
- // PBuffer
- glXGetVisualFromFBConfig: function(dpy: PDisplay; config: GLXFBConfig): PXVisualInfo; cdecl;
- glXChooseFBConfig: function(dpy: PDisplay; screen: GLint; attribList: PGLint; var nitems: GLint): PGLXFBConfig; cdecl;
- // создание области рендеринга вне экрана
- glXCreatePbuffer: function(dpy: PDisplay; config: Integer; attribList: PInteger): GLXPBuffer; cdecl;
- // уничтожение области рендеринга вне экрана
- glXDestroyPbuffer: procedure(dpy: PDisplay; pbuf: GLXPBuffer); cdecl;
- {$EndIf}
- {$IfDef GLX_SGIX_pbuffer}
- glXCreateGLXPbufferSGIX: function(dpy: PDisplay; config: Integer; width, height: LongWord; attribList: PInteger): GLXPBuffer; cdecl;
- glXDestroyGLXPbufferSGIX: procedure(dpy: PDisplay; pbuf: GLXPBuffer); cdecl;
- glXQueryGLXPbufferSGIX: procedure(dpy: PDisplay; pbuf: GLXPbufferSGIX; attribute: longint; value: Pdword); cdecl;
- glXSelectEventSGIX: procedure(dpy: PDisplay; drawable: GLXDrawable; mask: dword); cdecl;
- glXGetSelectedEventSGIX: procedure(dpy: PDisplay; drawable: GLXDrawable; mask: Pdword); cdecl;
- {$EndIf}
- {$EndIf}
- procedure AllCheckWGLorGLXExtension;
- procedure Init_GLX_WGL;
- implementation
- uses
- {$IfDef LINUX}
- zgl_screen,
- {$EndIf}
- zgl_opengl_all,
- zgl_opengl;
- procedure AllCheckWGLorGLXExtension;
- begin
- {$IfDef LINUX}
- // ZenGL ++
- GLX_SGIX_fbconfig := gl_IsSupported('GLX_SGIX_fbconfig', oglXExtensions);
- GLX_SGIX_pbuffer := gl_IsSupported('GLX_SGIX_pbuffer', oglXExtensions);
- GLX_SGI_swap_control := gl_IsSupported('GLX_SGI_swap_control', oglXExtensions);
- {$IFDEF GL_VERSION_3_0}
- GLX_ARB_create_context := gl_IsSupported('GLX_ARB_create_context', oglXExtensions);
- {$ENDIF}
- {$IfDef USE_FULL_GLX}
- GLX_ARB_context_flush_control := gl_IsSupported('GLX_ARB_context_flush_control', oglXExtensions);
- GLX_ARB_create_context_no_error := gl_IsSupported('GLX_ARB_create_context_no_error', oglXExtensions);
- GLX_ARB_create_context_profile := gl_IsSupported('GLX_ARB_create_context_profile', oglXExtensions);
- GLX_ARB_create_context_robustness := gl_IsSupported('GLX_ARB_create_context_robustness', oglXExtensions);
- GLX_ARB_fbconfig_float := gl_IsSupported('GLX_ARB_fbconfig_float', oglXExtensions);
- GLX_ARB_framebuffer_sRGB := gl_IsSupported('GLX_ARB_framebuffer_sRGB', oglXExtensions);
- GLX_ARB_get_proc_address := gl_IsSupported('GLX_ARB_get_proc_address', oglXExtensions);
- GLX_ARB_multisample := gl_IsSupported('GLX_ARB_multisample', oglXExtensions);
- GLX_ARB_robustness_application_isolation := gl_IsSupported('GLX_ARB_robustness_application_isolation', oglXExtensions);
- GLX_ARB_robustness_share_group_isolation := gl_IsSupported('GLX_ARB_robustness_share_group_isolation', oglXExtensions);
- GLX_ARB_vertex_buffer_object := gl_IsSupported('GLX_ARB_vertex_buffer_object', oglXExtensions);
- GLX_3DFX_multisample := gl_IsSupported('GLX_3DFX_multisample', oglXExtensions);
- GLX_AMD_gpu_association := gl_IsSupported('GLX_AMD_gpu_association', oglXExtensions);
- GLX_EXT_buffer_age := gl_IsSupported('GLX_EXT_buffer_age', oglXExtensions);
- GLX_EXT_context_priority := gl_IsSupported('GLX_EXT_context_priority', oglXExtensions);
- GLX_EXT_create_context_es2_profile := gl_IsSupported('GLX_EXT_create_context_es2_profile', oglXExtensions);
- GLX_EXT_create_context_es_profile := gl_IsSupported('GLX_EXT_create_context_es_profile', oglXExtensions);
- GLX_EXT_fbconfig_packed_float := gl_IsSupported('GLX_EXT_fbconfig_packed_float', oglXExtensions);
- GLX_EXT_framebuffer_sRGB := gl_IsSupported('GLX_EXT_framebuffer_sRGB', oglXExtensions);
- GLX_EXT_get_drawable_type := gl_IsSupported('GLX_EXT_get_drawable_type', oglXExtensions);
- GLX_EXT_import_context := gl_IsSupported('GLX_EXT_import_context', oglXExtensions);
- GLX_EXT_libglvnd := gl_IsSupported('GLX_EXT_libglvnd', oglXExtensions);
- GLX_EXT_no_config_context := gl_IsSupported('GLX_EXT_no_config_context', oglXExtensions);
- GLX_EXT_stereo_tree := gl_IsSupported('GLX_EXT_stereo_tree', oglXExtensions);
- GLX_EXT_swap_control := gl_IsSupported('GLX_EXT_swap_control', oglXExtensions);
- GLX_EXT_swap_control_tear := gl_IsSupported('GLX_EXT_swap_control_tear', oglXExtensions);
- GLX_EXT_texture_from_pixmap := gl_IsSupported('GLX_EXT_texture_from_pixmap', oglXExtensions);
- GLX_EXT_visual_info := gl_IsSupported('GLX_EXT_visual_info', oglXExtensions);
- GLX_EXT_visual_rating := gl_IsSupported('GLX_EXT_visual_rating', oglXExtensions);
- GLX_INTEL_swap_event := gl_IsSupported('GLX_INTEL_swap_event', oglXExtensions);
- GLX_MESA_agp_offset := gl_IsSupported('GLX_MESA_agp_offset', oglXExtensions);
- GLX_MESA_copy_sub_buffer := gl_IsSupported('GLX_MESA_copy_sub_buffer', oglXExtensions);
- GLX_MESA_pixmap_colormap := gl_IsSupported('GLX_MESA_pixmap_colormap', oglXExtensions);
- GLX_MESA_query_renderer := gl_IsSupported('GLX_MESA_query_renderer', oglXExtensions);
- GLX_MESA_release_buffers := gl_IsSupported('GLX_MESA_release_buffers', oglXExtensions);
- GLX_MESA_set_3dfx_mode := gl_IsSupported('GLX_MESA_set_3dfx_mode', oglXExtensions);
- GLX_MESA_swap_control := gl_IsSupported('GLX_MESA_swap_control', oglXExtensions);
- GLX_NV_copy_buffer := gl_IsSupported('GLX_NV_copy_buffer', oglXExtensions);
- GLX_NV_copy_image := gl_IsSupported('GLX_NV_copy_image', oglXExtensions);
- GLX_NV_delay_before_swap := gl_IsSupported('GLX_NV_delay_before_swap', oglXExtensions);
- GLX_NV_float_buffer := gl_IsSupported('GLX_NV_float_buffer', oglXExtensions);
- GLX_NV_multigpu_context := gl_IsSupported('GLX_NV_multigpu_context', oglXExtensions);
- GLX_NV_multisample_coverage := gl_IsSupported('GLX_NV_multisample_coverage', oglXExtensions);
- GLX_NV_present_video := gl_IsSupported('GLX_NV_present_video', oglXExtensions);
- GLX_NV_robustness_video_memory_purge := gl_IsSupported('GLX_NV_robustness_video_memory_purge', oglXExtensions);
- GLX_NV_swap_group := gl_IsSupported('GLX_NV_swap_group', oglXExtensions);
- GLX_NV_video_capture := gl_IsSupported('GLX_NV_video_capture', oglXExtensions);
- GLX_NV_video_out := gl_IsSupported('GLX_NV_video_out', oglXExtensions);
- GLX_OML_swap_method := gl_IsSupported('GLX_OML_swap_method', oglXExtensions);
- GLX_OML_sync_control := gl_IsSupported('GLX_OML_sync_control', oglXExtensions);
- GLX_SGIS_blended_overlay := gl_IsSupported('GLX_SGIS_blended_overlay', oglXExtensions);
- GLX_SGIS_multisample := gl_IsSupported('GLX_SGIS_multisample', oglXExtensions);
- GLX_SGIS_shared_multisample := gl_IsSupported('GLX_SGIS_shared_multisample', oglXExtensions);
- GLX_SGIX_dmbuffer := gl_IsSupported('GLX_SGIX_dmbuffer', oglXExtensions);
- GLX_SGIX_hyperpipe := gl_IsSupported('GLX_SGIX_hyperpipe', oglXExtensions);
- GLX_SGIX_swap_barrier := gl_IsSupported('GLX_SGIX_swap_barrier', oglXExtensions);
- GLX_SGIX_swap_group := gl_IsSupported('GLX_SGIX_swap_group', oglXExtensions);
- GLX_SGIX_video_resize := gl_IsSupported('GLX_SGIX_video_resize', oglXExtensions);
- GLX_SGIX_video_source := gl_IsSupported('GLX_SGIX_video_source', oglXExtensions);
- GLX_SGIX_visual_select_group := gl_IsSupported('GLX_SGIX_visual_select_group', oglXExtensions);
- GLX_SGI_cushion := gl_IsSupported('GLX_SGI_cushion', oglXExtensions);
- GLX_SGI_make_current_read := gl_IsSupported('GLX_SGI_make_current_read', oglXExtensions);
- GLX_SGI_video_sync := gl_IsSupported('GLX_SGI_video_sync', oglXExtensions);
- GLX_SUN_get_transparent_index := gl_IsSupported('GLX_SUN_get_transparent_index', oglXExtensions);
- {$EndIf}
- {$EndIf}
- {$IfDef WINDOWS}
- // 1 - запросить версию OpenGL
- // 2 - запросить glGetString для нужной версии, получить строку расширений.
- // 3 - проверить расширение wglGetExtensionsStringARB, если существует, второй раз запрашиваем строку расширений.
- // замкнутый круг... без расширений нельзя использовать WGL,
- // для использования WGL нужно получить расширение... олени.
- WGL_ARB_extensions_string := gl_IsSupported('WGL_ARB_extensions_string', oWGLExtensions);
- WGL_EXT_extensions_string := gl_IsSupported('WGL_EXT_extensions_string', oWGLExtensions);
- {$IfDef GL_VERSION_3_0}
- WGL_ARB_create_context := gl_IsSupported('WGL_ARB_create_context', oWGLExtensions);
- {$EndIf}
- {$IfDef USE_FULL_WGL}
- WGL_ARB_buffer_region := gl_IsSupported('WGL_ARB_buffer_region', oWGLExtensions);
- WGL_ARB_context_flush_control := gl_IsSupported('WGL_ARB_context_flush_control', oWGLExtensions);
- WGL_ARB_create_context_no_error := gl_IsSupported('WGL_ARB_create_context_no_error', oWGLExtensions);
- WGL_ARB_create_context_profile := gl_IsSupported('WGL_ARB_create_context_profile', oWGLExtensions);
- WGL_ARB_create_context_robustness := gl_IsSupported('WGL_ARB_create_context_robustness', oWGLExtensions);
- WGL_ARB_make_current_read := gl_IsSupported('WGL_ARB_make_current_read', oWGLExtensions);
- {$EndIf}
- WGL_ARB_framebuffer_sRGB := gl_IsSupported('WGL_ARB_framebuffer_sRGB', oWGLExtensions);
- WGL_ARB_multisample := gl_IsSupported('WGL_ARB_multisample', oWGLExtensions);
- WGL_ARB_pbuffer := gl_IsSupported('WGL_ARB_pbuffer', oWGLExtensions);
- WGL_ARB_pixel_format := gl_IsSupported('WGL_ARB_pixel_format', oWGLExtensions);
- {$IfDef USE_FULL_WGL}
- WGL_ARB_pixel_format_float := gl_IsSupported('WGL_ARB_pixel_format_float', oWGLExtensions);
- WGL_ARB_render_texture := gl_IsSupported('WGL_ARB_render_texture', oWGLExtensions);
- WGL_ARB_robustness_application_isolation := gl_IsSupported('WGL_ARB_robustness_application_isolation', oWGLExtensions);
- WGL_ARB_robustness_share_group_isolation := gl_IsSupported('WGL_ARB_robustness_share_group_isolation', oWGLExtensions);
- WGL_3DFX_multisample := gl_IsSupported('WGL_3DFX_multisample', oWGLExtensions);
- WGL_3DL_stereo_control := gl_IsSupported('WGL_3DL_stereo_control', oWGLExtensions);
- WGL_AMD_gpu_association := gl_IsSupported('WGL_AMD_gpu_association', oWGLExtensions);
- WGL_ATI_pixel_format_float := gl_IsSupported('WGL_ATI_pixel_format_float', oWGLExtensions);
- WGL_ATI_render_texture_rectangle := gl_IsSupported('WGL_ATI_render_texture_rectangle', oWGLExtensions);
- WGL_EXT_colorspace := gl_IsSupported('WGL_EXT_colorspace', oWGLExtensions);
- WGL_EXT_create_context_es2_profile := gl_IsSupported('WGL_EXT_create_context_es2_profile', oWGLExtensions);
- WGL_EXT_create_context_es_profile := gl_IsSupported('WGL_EXT_create_context_es_profile', oWGLExtensions);
- WGL_EXT_depth_float := gl_IsSupported('WGL_EXT_depth_float', oWGLExtensions);
- WGL_EXT_display_color_table := gl_IsSupported('WGL_EXT_display_color_table', oWGLExtensions);
- WGL_EXT_framebuffer_sRGB := gl_IsSupported('WGL_EXT_framebuffer_sRGB', oWGLExtensions);
- WGL_EXT_make_current_read := gl_IsSupported('WGL_EXT_make_current_read', oWGLExtensions);
- WGL_EXT_multisample := gl_IsSupported('WGL_EXT_multisample', oWGLExtensions);
- {$EndIf}
- WGL_EXT_pbuffer := gl_IsSupported('WGL_EXT_pbuffer', oWGLExtensions);
- WGL_EXT_pixel_format := gl_IsSupported('WGL_EXT_pixel_format', oWGLExtensions);
- WGL_EXT_pixel_format_packed_float := gl_IsSupported('WGL_EXT_pixel_format_packed_float', oWGLExtensions);
- WGL_EXT_swap_control := gl_IsSupported('WGL_EXT_swap_control', oWGLExtensions);
- {$IfDef USE_FULL_WGL}
- WGL_EXT_swap_control_tear := gl_IsSupported('WGL_EXT_swap_control_tear', oWGLExtensions);
- WGL_I3D_digital_video_control := gl_IsSupported('WGL_I3D_digital_video_control', oWGLExtensions);
- WGL_I3D_gamma := gl_IsSupported('WGL_I3D_gamma', oWGLExtensions);
- WGL_I3D_genlock := gl_IsSupported('WGL_I3D_genlock', oWGLExtensions);
- WGL_I3D_image_buffer := gl_IsSupported('WGL_I3D_image_buffer', oWGLExtensions);
- WGL_I3D_swap_frame_lock := gl_IsSupported('WGL_I3D_swap_frame_lock', oWGLExtensions);
- WGL_I3D_swap_frame_usage := gl_IsSupported('WGL_I3D_swap_frame_usage', oWGLExtensions);
- WGL_NV_DX_interop := gl_IsSupported('WGL_NV_DX_interop', oWGLExtensions);
- WGL_NV_DX_interop2 := gl_IsSupported('WGL_NV_DX_interop2', oWGLExtensions);
- WGL_NV_copy_image := gl_IsSupported('WGL_NV_copy_image', oWGLExtensions);
- WGL_NV_delay_before_swap := gl_IsSupported('WGL_NV_delay_before_swap', oWGLExtensions);
- WGL_NV_float_buffer := gl_IsSupported('WGL_NV_float_buffer', oWGLExtensions);
- WGL_NV_gpu_affinity := gl_IsSupported('WGL_NV_gpu_affinity', oWGLExtensions);
- WGL_NV_multigpu_context := gl_IsSupported('WGL_NV_multigpu_context', oWGLExtensions);
- WGL_NV_multisample_coverage := gl_IsSupported('WGL_NV_multisample_coverage', oWGLExtensions);
- WGL_NV_present_video := gl_IsSupported('WGL_NV_present_video', oWGLExtensions);
- WGL_NV_render_depth_texture := gl_IsSupported('WGL_NV_render_depth_texture', oWGLExtensions);
- WGL_NV_render_texture_rectangle := gl_IsSupported('WGL_NV_render_texture_rectangle', oWGLExtensions);
- WGL_NV_swap_group := gl_IsSupported('WGL_NV_swap_group', oWGLExtensions);
- WGL_NV_vertex_array_range := gl_IsSupported('WGL_NV_vertex_array_range', oWGLExtensions);
- WGL_NV_video_capture := gl_IsSupported('WGL_NV_video_capture', oWGLExtensions);
- WGL_NV_video_output := gl_IsSupported('WGL_NV_video_output', oWGLExtensions);
- WGL_OML_sync_control := gl_IsSupported('WGL_OML_sync_control', oWGLExtensions);
- {$EndIf}
- {$EndIf}
- end;
- procedure Init_GLX_WGL;
- {$IfDef LINUX}
- var
- i, j: Integer;
- {$EndIf}
- begin
- {$IfDef LINUX}
- glXGetProcAddressARB := gl_GetProc('glXGetProcAddress');
-
- glXChooseVisual := gl_GetProc('glXChooseVisual');
- glXCreateContext := gl_GetProc('glXCreateContext');
- glXDestroyContext := gl_GetProc('glXDestroyContext');
- glXMakeCurrent := gl_GetProc('glXMakeCurrent');
- glXSwapBuffers := gl_GetProc('glXSwapBuffers');
- glXQueryExtension := gl_GetProc('glXQueryExtension');
- glXQueryVersion := gl_GetProc('glXQueryVersion');
- glXIsDirect := gl_GetProc('glXIsDirect');
- glXQueryServerString := gl_GetProc('glXQueryServerString');
- oglxExtensions := glXQueryServerString(scrDisplay, scrDefault, GLX_EXTENSIONS);
- glXQueryVersion(scrDisplay, i, j);
- if i = 1 then
- begin
- if j >= 3 then
- GLX_VERSION_1_3 := true;
- if j = 4 then
- GLX_VERSION_1_4 := true;
- end;
- {$EndIf}
- AllCheckWGLorGLXExtension;
- {$IfDef LINUX}
- if GLX_VERSION_1_3 then
- begin
- glXGetFBConfigAttrib := gl_GetProc('glXGetFBConfigAttrib');
- glXCreateNewContext := gl_GetProc('glXCreateNewContext');;
- end;
-
- // for ZenGL
- // PBUFFER or OpenGL 3+
- if GLX_VERSION_1_4 or GLX_VERSION_1_3 then
- oglPBufferMode := 1
- else
- if GLX_SGIX_fbconfig and GLX_SGIX_pbuffer Then
- oglPBufferMode := 2
- else
- oglPBufferMode := 0;
- oglCanPBuffer := oglPBufferMode <> 0;
-
- case oglPBufferMode of
- 1:
- begin
- glXGetVisualFromFBConfig := gl_GetProc('glXGetVisualFromFBConfig');
- glXChooseFBConfig := gl_GetProc('glXChooseFBConfig');
- glXCreatePbuffer := gl_GetProc('glXCreatePbuffer');
- glXDestroyPbuffer := gl_GetProc('glXDestroyPbuffer');
- end;
- 2:
- begin
- glXGetVisualFromFBConfig := gl_GetProc('glXGetVisualFromFBConfigSGIX');
- glXChooseFBConfig := gl_GetProc('glXChooseFBConfigSGIX');
- glXCreateGLXPbufferSGIX := gl_GetProc('glXCreateGLXPbufferSGIX');
- glXDestroyGLXPbufferSGIX := gl_GetProc('glXDestroyGLXPbufferSGIX');
- end;
- end;
-
- {$IfDef USE_FULL_GLX}
- glXCopyContext := gl_GetProc('glXCopyContext');
- glXCreateGLXPixmap := gl_GetProc('glXCreateGLXPixmap');
- glXDestroyGLXPixmap := gl_GetProc('glXDestroyGLXPixmap');
- glXGetConfig := gl_GetProc('glXGetConfig');
- glXGetCurrentContext := gl_GetProc('glXGetCurrentContext');
- glXGetCurrentDrawable := gl_GetProc('glXGetCurrentDrawable');
- glXUseXFont := gl_GetProc('glXUseXFont');
- glXWaitGL := gl_GetProc('glXWaitGL');
- glXWaitX := gl_GetProc('glXWaitX');
- glXGetClientString := gl_GetProc('glXGetClientString');
- glXQueryExtensionsString := gl_GetProc('glXQueryExtensionsString');
- {$IfDef GLX_VERSION_1_3}
- if GLX_VERSION_1_3 then
- begin
- glXGetFBConfigs := gl_GetProc('glXGetFBConfigs');
- glXCreateWindow := gl_GetProc('glXCreateWindow');
- glXDestroyWindow := gl_GetProc('glXDestroyWindow');
- glXCreatePixmap := gl_GetProc('glXCreatePixmap');
- glXDestroyPixmap := gl_GetProc('glXDestroyPixmap');
- glXQueryDrawable := gl_GetProc('glXQueryDrawable');
- glXMakeContextCurrent := gl_GetProc('glXMakeContextCurrent');
- glXGetCurrentReadDrawable := gl_GetProc('glXGetCurrentReadDrawable');
- // glXGetCurreentDisplay := gl_GetProc('glXGetCurreentDisplay');
- glXQueryContext := gl_GetProc('glXQueryContext');
- glXSelectEvent := gl_GetProc('glXSelectEvent');
- glXGetSelectedEvent := gl_GetProc('glXGetSelectedEvent');
- end;
- {$EndIf}
- {$EndIf}
- {$ifdef GLX_ARB_create_context}
- if GLX_ARB_create_context then
- glXCreateContextAttribsARB := gl_GetProc('glXCreateContextAttribsARB');
- {$EndIf}
- {$ifdef GLX_AMD_gpu_association}
- if GLX_AMD_gpu_association then
- begin
- glXGetGPUIDsAMD := gl_GetProc('glXGetGPUIDsAMD');
- glXGetGPUInfoAMD := gl_GetProc('glXGetGPUInfoAMD');
- glXGetContextGPUIDAMD := gl_GetProc('glXGetContextGPUIDAMD');
- glXCreateAssociatedContextAMD := gl_GetProc('glXCreateAssociatedContextAMD');
- glXCreateAssociatedContextAttribsAMD := gl_GetProc('glXCreateAssociatedContextAttribsAMD');
- glXDeleteAssociatedContextAMD := gl_GetProc('glXDeleteAssociatedContextAMD');
- glXMakeAssociatedContextCurrentAMD := gl_GetProc('glXMakeAssociatedContextCurrentAMD');
- glXGetCurrentAssociatedContextAMD := gl_GetProc('glXGetCurrentAssociatedContextAMD');
- glXBlitContextFramebufferAMD := gl_GetProc('glXBlitContextFramebufferAMD');
- end;
- {$EndIf}
- {$ifdef GLX_EXT_import_context}
- if GLX_EXT_import_context then
- begin
- glXGetCurrentDisplayEXT := gl_GetProc('glXGetCurrentDisplayEXT');
- glXQueryContextInfoEXT := gl_GetProc('glXQueryContextInfoEXT');
- glXGetContextIDEXT := gl_GetProc('glXGetContextIDEXT');
- glXImportContextEXT := gl_GetProc('glXImportContextEXT');
- glXFreeContextEXT := gl_GetProc('glXFreeContextEXT');
- end;
- {$EndIf}
- {$ifdef GLX_EXT_texture_from_pixmap}
- if GLX_EXT_texture_from_pixmap then
- begin
- glXBindTexImageEXT := gl_GetProc('glXBindTexImageEXT');
- glXReleaseTexImageEXT := gl_GetProc('glXReleaseTexImageEXT');
- end;
- {$EndIf}
- {$ifdef GLX_EXT_swap_control}
- if GLX_EXT_swap_control then
- glXSwapIntervalEXT := gl_GetProc('glXSwapIntervalEXT');
- {$EndIf}
- {$ifdef GLX_MESA_agp_offset}
- if GLX_MESA_agp_offset then
- glXGetAGPOffsetMESA := gl_GetProc('glXGetAGPOffsetMESA');
- {$endif}
- {$ifdef GLX_MESA_pixmap_colormap}
- if GLX_MESA_pixmap_colormap then
- glXCreateGLXPixmapMESA := gl_GetProc('glXCreateGLXPixmapMESA');
- {$EndIf}
- {$ifdef GLX_MESA_query_renderer}
- if GLX_MESA_query_renderer then
- begin
- glXQueryCurrentRendererIntegerMESA := gl_GetProc('glXQueryCurrentRendererIntegerMESA');
- glXQueryCurrentRendererStringMESA := gl_GetProc('glXQueryCurrentRendererStringMESA');
- glXQueryRendererIntegerMESA := gl_GetProc('glXQueryRendererIntegerMESA');
- glXQueryRendererStringMESA := gl_GetProc('glXQueryRendererStringMESA');
- end;
- {$EndIf}
- {$ifdef GLX_MESA_swap_control}
- if GLX_MESA_swap_control then
- begin
- glXSwapIntervalMESA := gl_GetProc('glXSwapIntervalMESA');
- glXGetSwapIntervalMESA := gl_GetProc('glXGetSwapIntervalMESA');
- end;
- {$EndIf}
- {$ifdef GLX_MESA_release_buffers}
- if GLX_MESA_release_buffers then
- glXReleaseBuffersMESA := gl_GetProc('glXReleaseBuffersMESA');
- {$EndIf}
- {$ifdef GLX_MESA_set_3dfx_mode}
- if GLX_MESA_set_3dfx_mode then
- glXSet3DfxModeMESA := gl_GetProc('glXSet3DfxModeMESA');
- {$EndIf}
- {$ifdef GLX_MESA_copy_sub_buffer}
- if GLX_MESA_copy_sub_buffer then
- glXCopySubBufferMESA := gl_GetProc('glXCopySubBufferMESA');
- {$EndIf}
- {$ifdef GLX_NV_copy_buffer}
- if GLX_NV_copy_buffer then
- begin
- glXCopyBufferSubDataNV := gl_GetProc('glXCopyBufferSubDataNV');
- glXNamedCopyBufferSubDataNV := gl_GetProc('glXNamedCopyBufferSubDataNV');
- end;
- {$EndIf}
- {$ifdef GLX_NV_copy_image}
- if GLX_NV_copy_image then
- glXCopyImageSubDataNV := gl_GetProc('glXCopyImageSubDataNV');
- {$EndIf}
- {$ifdef GLX_NV_delay_before_swap}
- if GLX_NV_delay_before_swap then
- glXDelayBeforeSwapNV := gl_GetProc('glXDelayBeforeSwapNV');
- {$EndIf}
- {$ifdef GLX_NV_present_video}
- if GLX_NV_present_video then
- begin
- glXEnumerateVideoDevicesNV := gl_GetProc('glXEnumerateVideoDevicesNV');
- glXBindVideoDeviceNV := gl_GetProc('glXBindVideoDeviceNV');
- end;
- {$EndIf}
- {$ifdef GLX_NV_swap_group}
- if GLX_NV_swap_group then
- begin
- glXJoinSwapGroupNV := gl_GetProc('glXJoinSwapGroupNV');
- glXBindSwapBarrierNV := gl_GetProc('glXBindSwapBarrierNV');
- glXQuerySwapGroupNV := gl_GetProc('glXQuerySwapGroupNV');
- glXQueryMaxSwapGroupsNV := gl_GetProc('glXQueryMaxSwapGroupsNV');
- glXQueryFrameCountNV := gl_GetProc('glXQueryFrameCountNV');
- glXResetFrameCountNV := gl_GetProc('glXResetFrameCountNV');
- end;
- {$EndIf}
- {$ifdef GLX_NV_video_capture}
- if GLX_NV_video_capture then
- begin
- glXBindVideoCaptureDeviceNV := gl_GetProc('glXBindVideoCaptureDeviceNV');
- glXEnumerateVideoCaptureDevicesNV := gl_GetProc('glXEnumerateVideoCaptureDevicesNV');
- glXLockVideoCaptureDeviceNV := gl_GetProc('glXLockVideoCaptureDeviceNV');
- glXQueryVideoCaptureDeviceNV := gl_GetProc('glXQueryVideoCaptureDeviceNV');
- glXReleaseVideoCaptureDeviceNV := gl_GetProc('glXReleaseVideoCaptureDeviceNV');
- end;
- {$EndIf}
- {$ifdef GLX_NV_video_out}
- if GLX_NV_video_out then
- begin
- glXGetVideoDeviceNV := gl_GetProc('glXGetVideoDeviceNV');
- glXReleaseVideoDeviceNV := gl_GetProc('glXReleaseVideoDeviceNV');
- glXBindVideoImageNV := gl_GetProc('glXBindVideoImageNV');
- glXReleaseVideoImageNV := gl_GetProc('glXReleaseVideoImageNV');
- glXSendPbufferToVideoNV := gl_GetProc('glXSendPbufferToVideoNV');
- glXGetVideoInfoNV := gl_GetProc('glXGetVideoInfoNV');
- end;
- {$EndIf}
- {$ifdef GLX_OML_sync_control}
- if GLX_OML_sync_control then
- begin
- glXGetSyncValuesOML := gl_GetProc('glXGetSyncValuesOML');
- glXGetMscRateOML := gl_GetProc('glXGetMscRateOML');
- glXSwapBuffersMscOML := gl_GetProc('glXSwapBuffersMscOML');
- glXWaitForMscOML := gl_GetProc('glXWaitForMscOML');
- glXWaitForSbcOML := gl_GetProc('glXWaitForSbcOML');
- end;
- {$EndIf}
- {$ifdef GLX_SGIX_dmbuffer}
- if GLX_SGIX_dmbuffer then
- glXAssociateDMPbufferSGIX := gl_GetProc('glXAssociateDMPbufferSGIX');
- {$EndIf}
- {$ifdef GLX_SGIX_hyperpipe}
- if GLX_SGIX_hyperpipe then
- begin
- glXQueryHyperpipeNetworkSGIX := gl_GetProc('glXQueryHyperpipeNetworkSGIX');
- glXHyperpipeConfigSGIX := gl_GetProc('glXHyperpipeConfigSGIX');
- glXQueryHyperpipeConfigSGIX := gl_GetProc('glXQueryHyperpipeConfigSGIX');
- glXDestroyHyperpipeConfigSGIX := gl_GetProc('glXDestroyHyperpipeConfigSGIX');
- glXBindHyperpipeSGIX := gl_GetProc('glXBindHyperpipeSGIX');
- glXQueryHyperpipeBestAttribSGIX := gl_GetProc('glXQueryHyperpipeBestAttribSGIX');
- glXHyperpipeAttribSGIX := gl_GetProc('glXHyperpipeAttribSGIX');
- glXQueryHyperpipeAttribSGIX := gl_GetProc('glXQueryHyperpipeAttribSGIX');
- end;
- {$EndIf}
- {$ifdef GLX_SGIX_swap_barrier}
- if GLX_SGIX_swap_barrier then
- begin
- glXBindSwapBarrierSGIX := gl_GetProc('glXBindSwapBarrierSGIX');
- glXQueryMaxSwapBarriersSGIX := gl_GetProc('glXQueryMaxSwapBarriersSGIX');
- end;
- {$EndIf}
- {$ifdef GLX_SGIX_swap_group}
- if GLX_SGIX_swap_group then
- glXJoinSwapGroupSGIX := gl_GetProc('glXJoinSwapGroupSGIX');
- {$EndIf}
- {$ifdef GLX_SGIX_video_resize}
- if GLX_SGIX_video_resize then
- begin
- glXBindChannelToWindowSGIX := gl_GetProc('glXBindChannelToWindowSGIX');
- glXChannelRectSGIX := gl_GetProc('glXChannelRectSGIX');
- glXQueryChannelRectSGIX := gl_GetProc('glXQueryChannelRectSGIX');
- glXQueryChannelDeltasSGIX := gl_GetProc('glXQueryChannelDeltasSGIX');
- glXChannelRectSyncSGIX := gl_GetProc('glXChannelRectSyncSGIX');
- end;
- {$EndIf}
- {$ifdef GLX_SGIX_video_source}
- if GLX_SGIX_video_source then
- begin
- glXCreateGLXVideoSourceSGIX := gl_GetProc('glXCreateGLXVideoSourceSGIX');
- glXDestroyGLXVideoSourceSGIX := gl_GetProc('glXDestroyGLXVideoSourceSGIX');
- end;
- {$EndIf}
- {$ifdef GLX_SGI_cushion}
- if GLX_SGI_cushion then
- glXCushionSGI := gl_GetProc('glXCushionSGI');
- {$EndIf}
- {$ifdef GLX_SGI_make_current_read}
- if GLX_SGI_make_current_read then
- begin
- glXMakeCurrentReadSGI := gl_GetProc('glXMakeCurrentReadSGI');
- glXGetCurrentReadDrawableSGI := gl_GetProc('glXGetCurrentReadDrawableSGI');
- end;
- {$EndIf}
- {$ifdef GLX_SGI_video_sync}
- if GLX_SGI_video_sync then
- begin
- glXGetVideoSyncSGI := gl_GetProc('glXGetVideoSyncSGI');
- glXWaitVideoSyncSGI := gl_GetProc('glXWaitVideoSyncSGI');
- end;
- {$EndIf}
- {$ifdef GLX_SUN_get_transparent_index}
- if GLX_SUN_get_transparent_index then
- glXGetTransparentIndexSUN := gl_GetProc('glXGetTransparentIndexSUN');
- {$EndIf}
- {$ifdef GLX_SGIX_fbconfig}
- if GLX_SGIX_fbconfig then
- begin
- glXGetFBConfigAttribSGIX := gl_GetProc('glXGetFBConfigAttribSGIX');
- // glXChooseFBConfigSGIX := gl_GetProc('glXChooseFBConfigSGIX');
- glXCreateGLXPixmapWithConfigSGIX := gl_GetProc('glXCreateGLXPixmapWithConfigSGIX');
- glXCreateContextWithConfigSGIX := gl_GetProc('glXCreateContextWithConfigSGIX');
- // glXGetVisualFromFBConfigSGIX := gl_GetProc('glXGetVisualFromFBConfigSGIX');
- glXGetFBConfigFromVisualSGIX := gl_GetProc('glXGetFBConfigFromVisualSGIX');
- end;
- {$EndIf}
- (* {$IfDef GLX_SGI_swap_control}
- glXSwapIntervalSGI := gl_GetProc('glXSwapIntervalSGI');
- {$EndIf}
- {$IfDef GLX_VERSION_1_3}
- glXCreatePbuffer := gl_GetProc('glXCreatePbuffer');
- glXDestroyPbuffer := gl_GetProc('glXDestroyPbuffer');
- {$EndIf} *)
- {$ifdef GLX_SGIX_pbuffer}
- if GLX_SGIX_pbuffer then
- begin
- { glXCreateGLXPbufferSGIX := gl_GetProc('glXCreateGLXPbufferSGIX');
- glXDestroyGLXPbufferSGIX := gl_GetProc('glXDestroyGLXPbufferSGIX'); }
- glXQueryGLXPbufferSGIX := gl_GetProc('glXQueryGLXPbufferSGIX');
- glXSelectEventSGIX := gl_GetProc('glXSelectEventSGIX');
- glXGetSelectedEventSGIX := gl_GetProc('glXGetSelectedEventSGIX');
- end;
- {$EndIf}
- {$EndIf}
- {$IfDef WINDOWS}
- { wglCopyContext := gl_GetProc('wglCopyContext');
- wglCreateContext := gl_GetProc('wglCreateContext');
- wglCreateLayerContext := gl_GetProc('wglCreateLayerContext');
- wglDeleteContext := gl_GetProc('wglDeleteContext');
- wglDescribeLayerPlane := gl_GetProc('wglDescribeLayerPlane');
- wglGetCurrentContext := gl_GetProc('wglGetCurrentContext');
- wglGetCurrentDC := gl_GetProc('wglGetCurrentDC');
- wglGetLayerPaletteEntries := gl_GetProc('wglGetLayerPaletteEntries');
- wglMakeCurrent := gl_GetProc('wglMakeCurrent');
- wglRealizeLayerPalette := gl_GetProc('wglRealizeLayerPalette');
- wglSetLayerPaletteEntries := gl_GetProc('wglSetLayerPaletteEntries');
- wglShareLists := gl_GetProc('wglShareLists');
- wglSwapLayerBuffers := gl_GetProc('wglSwapLayerBuffers');
- wglUseFontBitmaps := gl_GetProc('wglUseFontBitmaps');
- wglUseFontBitmapsW := gl_GetProc('wglUseFontBitmapsW');
- wglUseFontBitmapsA := gl_GetProc('wglUseFontBitmapsA');
- wglUseFontOutlines := gl_GetProc('wglUseFontOutlines');
- wglUseFontOutlinesA := gl_GetProc('wglUseFontOutlinesA');
- wglUseFontOutlinesW := gl_GetProc('wglUseFontOutlinesW'); }
- {$If defined(WGL_ARB_extensions_string) or defined(WGL_EXT_extensions_string)}
- if WGL_ARB_extensions_string or WGL_EXT_extensions_string then
- wglGetExtensionsStringARB := gl_GetProc('wglGetExtensionsString');
- {$IfEnd}
- {$if defined(WGL_ARB_pixel_format) or defined(WGL_EXT_pixel_format)}
- if WGL_ARB_pixel_format or WGL_EXT_pixel_format then
- begin
- wglChoosePixelFormatARB := gl_GetProc('wglChoosePixelFormat');
- wglGetPixelFormatAttribivARB := gl_GetProc('wglGetPixelFormatAttribiv');
- wglGetPixelFormatAttribfvARB := gl_GetProc('wglGetPixelFormatAttribfv');
- end;
- {$IfEnd}
- {$ifdef WGL_EXT_swap_control}
- if WGL_EXT_swap_control then
- begin
- // wglSwapIntervalEXT := gl_GetProc('wglSwapIntervalEXT');
- wglGetSwapIntervalEXT := gl_GetProc('wglGetSwapIntervalEXT');
- end;
- {$EndIf}
- {$If defined(WGL_ARB_pbuffer) or defined(WGL_EXT_pbuffer)}
- if WGL_ARB_pbuffer or WGL_EXT_pbuffer then
- begin
- wglCreatePbufferARB := gl_GetProc('wglCreatePbuffer');
- // wglGetPbufferDCARB := gl_GetProc('wglGetPbufferDC');
- // wglReleasePbufferDCARB := gl_GetProc('wglReleasePbufferDC');
- // wglDestroyPbufferARB := gl_GetProc('wglDestroyPbuffer');
- // wglQueryPbufferARB := gl_GetProc('wglQueryPbuffer');
- end;
- {$IfEnd}
- {$ifdef WGL_ARB_buffer_region}
- if WGL_ARB_buffer_region then
- begin
- wglCreateBufferRegionARB := gl_GetProc('wglCreateBufferRegionARB');
- wglDeleteBufferRegionARB := gl_GetProc('wglDeleteBufferRegionARB');
- wglSaveBufferRegionARB := gl_GetProc('wglSaveBufferRegionARB');
- wglRestoreBufferRegionARB := gl_GetProc('wglRestoreBufferRegionARB');
- end;
- {$EndIf}
- {$if defined(WGL_ARB_make_current_read) or defined(WGL_EXT_make_current_read)}
- if WGL_ARB_make_current_read or WGL_EXT_make_current_read then
- begin
- wglMakeContextCurrentARB := gl_GetProc('wglMakeContextCurrent');
- wglGetCurrentReadDCARB := gl_GetProc('wglGetCurrentReadDC');
- end;
- {$IfEnd}
- // wglClampColorARB := gl_GetProc('wglClampColorARB');
- {$ifdef WGL_ARB_render_texture}
- if WGL_ARB_render_texture then
- begin
- wglBindTexImageARB := gl_GetProc('wglBindTexImageARB');
- wglReleaseTexImageARB := gl_GetProc('wglReleaseTexImageARB');
- wglSetPbufferAttribARB := gl_GetProc('wglSetPbufferAttribARB');
- end;
- {$EndIf}
- {$ifdef WGL_ARB_create_context}
- if WGL_ARB_create_context then
- wglCreateContextAttribsARB := gl_GetProc('wglCreateContextAttribsARB');
- {$EndIf}
- {$IfDef WGL_AMD_gpu_association}
- if WGL_AMD_gpu_association then
- begin
- wglGetGPUIDsAMD := gl_GetProc('wglGetGPUIDsAMD');
- wglGetGPUInfoAMD := gl_GetProc('wglGetGPUInfoAMD');
- wglGetContextGPUIDAMD := gl_GetProc('wglGetContextGPUIDAMD');
- wglCreateAssociatedContextAMD := gl_GetProc('wglCreateAssociatedContextAMD');
- wglCreateAssociatedContextAttribsAMD := gl_GetProc('wglCreateAssociatedContextAttribsAMD');
- wglDeleteAssociatedContextAMD := gl_GetProc('wglDeleteAssociatedContextAMD');
- wglMakeAssociatedContextCurrentAMD := gl_GetProc('wglMakeAssociatedContextCurrentAMD');
- wglGetCurrentAssociatedContextAMD := gl_GetProc('wglGetCurrentAssociatedContextAMD');
- wglBlitContextFramebufferAMD := gl_GetProc('wglBlitContextFramebufferAMD');
- end;
- {$EndIf}
- {$IfDef WGL_EXT_display_color_table}
- if WGL_EXT_display_color_table then
- begin
- wglCreateDisplayColorTableEXT := gl_GetProc('wglCreateDisplayColorTableEXT');
- wglLoadDisplayColorTableEXT := gl_GetProc('wglLoadDisplayColorTableEXT');
- wglBindDisplayColorTableEXT := gl_GetProc('wglBindDisplayColorTableEXT');
- wglDestroyDisplayColorTableEXT := gl_GetProc('wglDestroyDisplayColorTableEXT');
- end;
- {$EndIf}
- // WGL_EXT_extensions_string
- // wglGetExtensionsStringEXT := gl_GetProc('wglGetExtensionsStringEXT');
- // WGL_EXT_make_current_read
- // wglMakeContextCurrentEXT := gl_GetProc('wglMakeContextCurrentEXT');
- // wglGetCurrentReadDCEXT := gl_GetProc('wglGetCurrentReadDCEXT');
- // WGL_EXT_pixel_format
- // wglGetPixelFormatAttribivEXT := gl_GetProc('wglGetPixelFormatAttribivEXT');
- // wglGetPixelFormatAttribfvEXT := gl_GetProc('wglGetPixelFormatAttribfvEXT');
- // wglChoosePixelFormatEXT := gl_GetProc('wglChoosePixelFormatEXT');
- {$IfDef WGL_I3D_digital_video_control}
- if WGL_I3D_digital_video_control then
- begin
- wglGetDigitalVideoParametersI3D := gl_GetProc('wglGetDigitalVideoParametersI3D');
- wglSetDigitalVideoParametersI3D := gl_GetProc('wglSetDigitalVideoParametersI3D');
- end;
- {$EndIf}
- {$IfDef WGL_I3D_gamma}
- if WGL_I3D_gamma then
- begin
- wglGetGammaTableParametersI3D := gl_GetProc('wglGetGammaTableParametersI3D');
- wglSetGammaTableParametersI3D := gl_GetProc('wglSetGammaTableParametersI3D');
- wglGetGammaTableI3D := gl_GetProc('wglGetGammaTableI3D');
- wglSetGammaTableI3D := gl_GetProc('wglSetGammaTableI3D');
- end;
- {$EndIf}
- {$IfDef WGL_I3D_genlock}
- if WGL_I3D_genlock then
- begin
- wglEnableGenlockI3D := gl_GetProc('wglEnableGenlockI3D');
- wglDisableGenlockI3D := gl_GetProc('wglDisableGenlockI3D');
- wglIsEnabledGenlockI3D := gl_GetProc('wglIsEnabledGenlockI3D');
- wglGenlockSourceI3D := gl_GetProc('wglGenlockSourceI3D');
- wglGetGenlockSourceI3D := gl_GetProc('wglGetGenlockSourceI3D');
- wglGenlockSourceEdgeI3D := gl_GetProc('wglGenlockSourceEdgeI3D');
- wglGetGenlockSourceEdgeI3D := gl_GetProc('wglGetGenlockSourceEdgeI3D');
- wglGenlockSampleRateI3D := gl_GetProc('wglGenlockSampleRateI3D');
- wglGetGenlockSampleRateI3D := gl_GetProc('wglGetGenlockSampleRateI3D');
- wglGenlockSourceDelayI3D := gl_GetProc('wglGenlockSourceDelayI3D');
- wglGetGenlockSourceDelayI3D := gl_GetProc('wglGetGenlockSourceDelayI3D');
- wglQueryGenlockMaxSourceDelayI3D := gl_GetProc('wglQueryGenlockMaxSourceDelayI3D');
- end;
- {$EndIf}
- {$IfDef WGL_I3D_image_buffer}
- if WGL_I3D_image_buffer then
- begin
- wglCreateImageBufferI3D := gl_GetProc('wglCreateImageBufferI3D');
- wglDestroyImageBufferI3D := gl_GetProc('wglDestroyImageBufferI3D');
- wglAssociateImageBufferEventsI3D := gl_GetProc('wglAssociateImageBufferEventsI3D');
- wglReleaseImageBufferEventsI3D := gl_GetProc('wglReleaseImageBufferEventsI3D');
- end;
- {$EndIf}
- {$IfDef WGL_I3D_swap_frame_lock}
- if WGL_I3D_swap_frame_lock then
- begin
- wglEnableFrameLockI3D := gl_GetProc('wglEnableFrameLockI3D');
- wglDisableFrameLockI3D := gl_GetProc('wglDisableFrameLockI3D');
- wglIsEnabledFrameLockI3D := gl_GetProc('wglIsEnabledFrameLockI3D');
- wglQueryFrameLockMasterI3D := gl_GetProc('wglQueryFrameLockMasterI3D');
- end;
- {$EndIf}
- {$IfDef WGL_I3D_swap_frame_usage}
- if WGL_I3D_swap_frame_usage then
- begin
- wglGetFrameUsageI3D := gl_GetProc('wglGetFrameUsageI3D');
- wglBeginFrameTrackingI3D := gl_GetProc('wglBeginFrameTrackingI3D');
- wglEndFrameTrackingI3D := gl_GetProc('wglEndFrameTrackingI3D');
- wglQueryFrameTrackingI3D := gl_GetProc('wglQueryFrameTrackingI3D');
- end;
- {$EndIf}
- {$IfDef WGL_NV_vertex_array_range}
- if WGL_NV_vertex_array_range then
- begin
- wglAllocateMemoryNV := gl_GetProc('wglAllocateMemoryNV');
- wglFreeMemoryNV := gl_GetProc('wglFreeMemoryNV');
- end;
- {$EndIf}
- {$IfDef WGL_NV_present_video}
- if WGL_NV_present_video then
- begin
- wglEnumerateVideoDevicesNV := gl_GetProc('wglEnumerateVideoDevicesNV');
- wglBindVideoDeviceNV := gl_GetProc('wglBindVideoDeviceNV');
- wglQueryCurrentContextNV := gl_GetProc('wglQueryCurrentContextNV');
- end;
- {$EndIf}
- {$IfDef WGL_NV_video_output}
- if WGL_NV_video_output then
- begin
- wglGetVideoDeviceNV := gl_GetProc('wglGetVideoDeviceNV');
- wglReleaseVideoDeviceNV := gl_GetProc('wglReleaseVideoDeviceNV');
- wglBindVideoImageNV := gl_GetProc('wglBindVideoImageNV');
- wglReleaseVideoImageNV := gl_GetProc('wglReleaseVideoImageNV');
- wglSendPbufferToVideoNV := gl_GetProc('wglSendPbufferToVideoNV');
- wglGetVideoInfoNV := gl_GetProc('wglGetVideoInfoNV');
- end;
- {$EndIf}
- {$IfDef WGL_NV_swap_group}
- if WGL_NV_swap_group then
- begin
- wglJoinSwapGroupNV := gl_GetProc('wglJoinSwapGroupNV');
- wglBindSwapBarrierNV := gl_GetProc('wglBindSwapBarrierNV');
- wglQuerySwapGroupNV := gl_GetProc('wglQuerySwapGroupNV');
- wglQueryMaxSwapGroupsNV := gl_GetProc('wglQueryMaxSwapGroupsNV');
- wglQueryFrameCountNV := gl_GetProc('wglQueryFrameCountNV');
- wglResetFrameCountNV := gl_GetProc('wglResetFrameCountNV');
- end;
- {$EndIf}
- {$IfDef WGL_NV_gpu_affinity}
- if WGL_NV_gpu_affinity then
- begin
- wglEnumGpusNV := gl_GetProc('wglEnumGpusNV');
- wglEnumGpuDevicesNV := gl_GetProc('wglEnumGpuDevicesNV');
- wglCreateAffinityDCNV := gl_GetProc('wglCreateAffinityDCNV');
- wglEnumGpusFromAffinityDCNV := gl_GetProc('wglEnumGpusFromAffinityDCNV');
- wglDeleteDCNV := gl_GetProc('wglDeleteDCNV');
- end;
- {$EndIf}
- {$ifdef WGL_NV_video_capture}
- if WGL_NV_video_capture then
- begin
- wglBindVideoCaptureDeviceNV := gl_GetProc('wglBindVideoCaptureDeviceNV');
- wglEnumerateVideoCaptureDevicesNV := gl_GetProc('wglEnumerateVideoCaptureDevicesNV');
- wglLockVideoCaptureDeviceNV := gl_GetProc('wglLockVideoCaptureDeviceNV');
- wglQueryVideoCaptureDeviceNV := gl_GetProc('wglQueryVideoCaptureDeviceNV');
- wglReleaseVideoCaptureDeviceNV := gl_GetProc('wglReleaseVideoCaptureDeviceNV');
- end;
- {$EndIf}
- {$IfDef WGL_NV_copy_image}
- if WGL_NV_copy_image then
- wglCopyImageSubDataNV := gl_GetProc('wglCopyImageSubDataNV');
- {$EndIf}
- {$ifdef WGL_NV_delay_before_swap}
- if WGL_NV_delay_before_swap then
- wglDelayBeforeSwapNV := gl_GetProc('wglDelayBeforeSwapNV');
- {$EndIf}
- {$IfDef WGL_NV_DX_interop}
- if WGL_NV_DX_interop then
- begin
- wglDXSetResourceShareHandleNV := gl_GetProc('wglDXSetResourceShareHandleNV');
- wglDXOpenDeviceNV := gl_GetProc('wglDXOpenDeviceNV');
- wglDXCloseDeviceNV := gl_GetProc('wglDXCloseDeviceNV');
- wglDXRegisterObjectNV := gl_GetProc('wglDXRegisterObjectNV');
- wglDXUnregisterObjectNV := gl_GetProc('wglDXUnregisterObjectNV');
- wglDXObjectAccessNV := gl_GetProc('wglDXObjectAccessNV');
- wglDXLockObjectsNV := gl_GetProc('wglDXLockObjectsNV');
- wglDXUnlockObjectsNV := gl_GetProc('wglDXUnlockObjectsNV');
- end;
- {$EndIf}
- {$IfDef WGL_OML_sync_control}
- if WGL_OML_sync_control then
- begin
- wglGetSyncValuesOML := gl_GetProc('wglGetSyncValuesOML');
- wglGetMscRateOML := gl_GetProc('wglGetMscRateOML');
- wglSwapBuffersMscOML := gl_GetProc('wglSwapBuffersMscOML');
- wglSwapLayerBuffersMscOML := gl_GetProc('wglSwapLayerBuffersMscOML');
- wglWaitForMscOML := gl_GetProc('wglWaitForMscOML');
- wglWaitForSbcOML := gl_GetProc('wglWaitForSbcOML');
- end;
- {$EndIf}
- {$IfDef WGL_3DL_stereo_control}
- if WGL_3DL_stereo_control then
- wglSetStereoEmitterState3DL := gl_GetProc('wglSetStereoEmitterState3DL');
- {$EndIf}
- {$EndIf}
- end;
- end.
|