forked from Green-Sky/tomato
Green Sky
5dd9834009
b475309fa1e Fonts: Fixed font ascent and descent calculation when a font hits exact integer values. (#7399, #7404) daecfffefbc Text, DrawList: Improved handling of long single-line wrapped text. (#7496, #5720) fab96a6e593 Backends: SDL3: Re-enable calling SDL_StartTextInput()/SDL_StopTextInput(). (#7452, #6306, #6071, #1953) dad1689bf7b Examples: SDL3: amend for removal of SDL_RENDERER_ACCELERATED. 3caa79c8a53 Version 1.90.6 WIP 76bc1b825e6 Extracted part of NewFrame() into SetupDrawListSharedData() for documentation purpose. (#7495, #6406) f790d516652 Silent zealous/stupid warning introduced by Clang 16 (shipping with VS2022) with -Weverything. Pointers are now illegal! 231cbee0fc4 Version 1.90.5 4f9ba19e520 Drags, Sliders, Inputs: Reactivated decimal point replacement for SliderScalar and DragScalar. (#7389, #6719, #2278) e7712ff103d Out of courtesy/consistency move all the DebugHookIdInfo compares into ifndef block. f959c417fec Refactor moving ID stack functions to their own section (part 2) 0bf134a8e2e Refactor moving ID stack functions to their own section. 9a2b598ec1e ListBox: Fixed text-baseline offset when using SameLine()+Text() after a labeled ListBox(). d3c3514a59b Tables: Fixed auto-width columns when using synced-instances of same table. (#7218) 25a492f3307 ProgressBar: Fixed passing fraction==NaN from leading to a crash. (#7451) 9638c2839a1 Internals: adding ImGuiNavMoveFlags_NoClearActiveId even though there's currently no satisfying way to take advantage of it. (#1418) 742e53434f4 Child Windows: adjust resizing limits to match window padding rather than inner clipping rectangle. (#7440) 515b437c084 Child windows: look at the parent window's flags to decide whether to clamp child resizes. (#7440, #1710) 976dc239656 Windows: extend outer resize borders to the edges when there are no corner grips. (#7440, #1710) 37b37fc2a3e DrawList: Allow AddText() to accept null ranges. (#3615, 7391) 5c5ae806aa1 Comments cf4c10bef74 Style: added ImGuiStyleVar_TabBorderSize, ImGuiStyleVar_TableAngledHeadersAngle. (#7411) f0802287db5 Tables: Angled headers: fixed table contents overflowing when a list clipper is used. (#7416) 29ff159f941 Tables: Angled headers: fixed borders not moving back up after TableAngleHeadersRow stops being called. (#7416) 38ddfb24f09 Tables: Angled headers: fixed border hit box extending beyond non-scrollable tables. (#7416) 8be48a44f78 Backends: WebGPU: Avoid using -1u literal (#7436) 868facff9de ImDrawList: (Breaking) merge float radius_x/radius_y parameters into ImVec2 radius in PathEllipticalArcTo(), AddEllipse(), AddEllipseFilled(). (#2743, #7417) 0a1f5b94e31 Demo: Two minor fixes (unchecked BeginTooltip + incorrect height constraint) (#7410)l 40df3db1a2a Tweaking terminology da29b776eed Backends: SDL3: Fix leak of SDL_GetGamepads() return value (#7381) 3c435c02978 Inputs: (Breaking) More formally obsoleted GetKeyIndex() when IMGUI_DISABLE_OBSOLETE_FUNCTIONS is set. (#4921) 286cd5bd41e Internals, InputText: removed ImGuiInputSource_Clipboard. (#4005) fc570ac9225 Examples: WGPU: fixed initialization of WGPURenderPassColorAttachment (#7371) 65dc67f63c6 Windows: Double-click to collapse may be disabled via key-ownership mechanism. (#7369) 6b7358e9f36 InputText: adding clarifying note about ImGuiInputTextCallbackData::Buf. (#7363) fbf45ad149b ImDrawList: add PathFillConcave(), AddConcavePolyFilled(): amends (#760) 1ff90c52d5f ImDrawList: add PathFillConcave(), AddConcavePolyFilled() (#760) 04f40014a62 Docs: added a mini wiki index in main source files. c6236699671 Added link to crawlable wiki 0573513d6df Windows: Scrollbar visibility decision uses current size when both size and contents size are submitted by API. (#7252) 44c7dfca030 Menus, Popup: Amend c3f8f4d for static analyzer warning ("condition always true"). (#7325) c3f8f4de257 Menus, Popups: Fixed an issue where sibling menu popups re-opening in successive frames would erroneously close the window. (#7325, #7287, #7063) 98779417751 Popups, Menus: rename ImGuiPopupData::BackupNavWindow > RestoreNavWindow and minor tweaks. Should be functionally a no-op. 725f91922d5 Tables: fixed TableGetHoveredRow() with overlapping frozen rows (#7350, #6588, #6347, #6250) e46d1e69ac3 Version 1.90.5 WIP 277ae93c413 Version 1.90.4 f5be90523d6 Nav: Fixed SetKeyboardFocusHere() or programmatic tabbing API from not working on windows with the ImGuiWindowFlags_NoNavInputs flag. 13d91ff9188 Nav: Fixed SetKeyboardFocusHere() or programmatic tabbing API from not working on windows with the ImGuiWindowFlags_NoNavInputs flag. 34965cf23a7 Modals: Temporary changes of ImGuiCol_ModalWindowDimBg are properly handled by BeginPopupModal(). (#7340) 659fb41d0a2 Debug Tools: moved DebugStartItemPicker() to public API. Added to Demo->Tools menu. (#2673) 198c38f0b11 Demo: Custom Rendering: better demonstrate PathArcTo(), PathBezierQuadraticCurveTo(), PathBezierCubicCurveTo(), PathStroke(), PathFillConvex() functions. 3b6d924acd0 ProgressBar: Fixed a minor tesselation issue when rendering rounded progress bars. d3f1a7165cb Popups: allow Child Popups to be resizable if not explicitly disabling. e78ce72eb6d Popups: Fixed resizable popup minimum size being too small. Standardized CalcWindowMinSize() logic a bit more. (#73290 014e0ac8c92 Menus, Popups: Fixed an issue where hovering a parent-menu upward would erroneously close the window. (#7325, #7287, #7063) c16043c1d58 Tables: Angled headers: improve clipping of text since multi-line labels makes clipping issues visible. (#6917) 405e54ebd50 Tables: Angled Headers: fixed support for multi-line labels. various padding/layout fixes. (#6917) 6655ab2e43f Tables: Angled Headers: fixed TableAngledHeadersRow() incorrect background fill drawn too low. Fixed row geometry with non-small values of CellPadding. (#6917) 9159cd7b4ac Updated invalid documentation link (#7331) ccc5347e451 Fix typos (#7332) 8a14b71f228 Version 1.90.4 WIP b19a4c5f2b3 Backends: OSX: remove legacy clearing of io.NavInputs in ImGui_ImplOSX_UpdateGamepads(). (#7320) 5b6f03213dd Version 1.90.3 f80e65a4068 Backends:,Examples: Vulkan: moved RenderPass parameter from ImGui_ImplVulkan_Init() function to ImGui_ImplVulkan_InitInfo structure. (#7308) 829f45df994 Backends: SDL2: removed obsolete ImGui_ImplSDL2_NewFrame(SDL_Window*) signature which was obsoleted in 1.84.. 3cc37170ca7 Examples: GLFW+Metal: Add -I and -L paths for MacPorts. 891b81fc5d7 Backends: SDL3: Fixed gamepad. Added support for disconnection. Added support for multiple gamepads. Added ImGui_ImplSDL3_SetGamepadMode(). (#7180, #3884, #6559, #6890) 262e30e3001 Backends: SDL2: rework new API as ImGui_ImplSDL2_SetGamepadMode(). (#3884, #6559, #6890, #7180) 9dfa2397deb Internals: Fixed ImFileOpen not working before context is created. (#7314, #7315) d15e4100b83 Backends: SDL2: Amend new API, all support for multiple gamepads. (#3884, #6559, #6890) f966da1f8fb Backends: SDL2: Gamepad handlng: amend bf1c96d. (#3884, #6559, #6890) bf1c96d4fa2 Backends: SDL2: Handle gamepad disconnection + fixed increasing refcount. Added ImGui_ImplSDL2_SelectGamepadAuto()/ImGui_ImplSDL2_SelectGamepadExplicit(). (#3884, #6559, #6890) fd8d6dc5d19 Backends: SDL2,SDL3: tidying up. e0ba0d0433a Backends: Vulkan: Fixes for building with pre Vulkan 1.3. Amend 8901931. (#7166) 11d73f03ee5 Backends: Vulkan: Fix/amend 8901931 89019319ddb Backends: Vulkan: use PipelineRenderingCreateInfo for dynamic rendering (#7166, #6855, #5446, #5037) 1d6f0cea0e6 Backends: DX9: use RGBA texture to avoid conversion if supported 3af739a2d17 Menus, Popups: fixed menus and popups with child window flag erroneously not displaying a scrollbar when contents is over parent viewport size. (#7287, #7063) 2af01baffd1 Backends: SDLRenderer3: query newly added SDL_RenderViewportSet() to not restore a wrong viewport if none was initially set. 915c6393ad7 Version 1.90.3 WIP 536090303a8 Version 1.90.2 7b5357d817e Debug Tools: Metrics: Improved Monitors and Viewports minimap display. Highlight on hover. 70aa717a8e1 Combo: Fixed not reusing windows optimally when used inside a popup stack. 5cdc4a2a413 Demo: use ImGui::MemAlloc/MemFree for consistency. (#7300) 76e09c4b0fa ClosePopupsOverWindow(): amend to remove _ChildWindow test. 3a078466a7a Nav: ImGuiWindowFlags_NoNavInputs is tested during scoring so NavFlattened windows can use it. 7d67623d15b InputText: Internal: ReloadUserBufXXX functions don't override revert value. (#2890) fix accidental comment. a5e0e90c16a Nav: tweak RenderNavHighlight() syntax. ImGuiNavHighlightFlags_TypeThin -> ImGuiNavHighlightFlags_Compact. 1e8fc01ddd7 InputText: Internal: ReloadUserBufXXX functions don't override revert value. (#2890) + rename a06dd7a27b6 OpenPopup(): Added ImGuiPopupFlags_NoReopen. Nav, Menus: Fixed click on a BeginMenu() followed by right-arrow. (#1497, #1533) f104967c68f Comments 06ce312745e InputText: Internal: added reload from user-buf feature. (#2890) f50ddc431e3 Fixed some typos. (#7282) 6172c22c5dc CI: Update to `actions/checkout` `v4` from `v3`. (#7281) 96839b445e3 Nav: Improve handling of Alt key to toggle menu so that key ownership may be claimed on indiviudal left/right alt key without intefering with the other. 71947563709 Shortcut: fixed single mod-key Shortcut from working e.g. Shortcut(ImGuiKey_LeftCtrl) f1960b60c1a Added "nop" to IM_DEBUG_BREAK macro on GCC to work around GDB bug (#7266) 8491cf36adb Inputs: g.ActiveIdUsingManyKeys[] prevent routes from being claimed. 9176eedf240 Internals: SetShortcutRouting() move code so next commit is easier to read. Should be no-op. 1509842107d Backends: OpenGL3: Shallow tweak of compile-time extensions detection. 1ce41f6218d Backends: OpenGL3: Backup and restore GL_PIXEL_UNPACK_BUFFER. (#7253) 81e0be856a6 Fixed strict-aliasing violation in FormatTextureIDForDebugDisplay(). (#7090, #7256) a201af73544 Added SetNextItemShortcut() wip function. (#456) 4c2c09450a6 Nav: keyboard/gamepad activation feedback properly timed instead of frame buffer. (#456) 5b5e9bd0cb3 Internals: Tweak shallow compaction as Clang complains about MS ABI signage of enums. 7c3fa7d049a Refactor: moved section in imgui_internal.h 9266c0d2d13 Backends: WebGPU: Avoid leaking pipeline layout. (#7245) 595eb86624d Changelog, comment, minor data compaction 6850194f60a CI: Fixes WGPU example build. 5fc0a361b24 Backends: WebGPU: added ImGui_ImplWGPU_InitInfo::PipelineMultisampleState. (#7240) 831d42c1ab3 Backends: WebGPU: ImGui_ImplWGPU_Init() now takes a ImGui_ImplWGPU_InitInfo structure instead of variety of parameters, allowing for easier further changes. (#7240) e3c7ff944d5 Examples: Emscripten+WebGPU: slightly refactor like other Emscripten compatible Desktop examples, as aiming to make this suppot desktop eventually. 15908502ed6 Backends: Vulkan: Define NOMINMAX when VK_USE_PLATFORM_WIN32_KHR is defined. (#7250) 788747f8635 Examples: Emscripten+WebGPU: Remove use of deprecated ObjectBase<...>::Release in favor of ::MoveToCHandle (#7251) 763100b3858 Nav: Fixed pressing Escape while in a child window with _NavFlattened flag. (#7237) c7edb446caa Shortcut(): always test ownership. 1844f903d55 Nav: space/enter poll check ownership. InputText: declare ownership of Enter key as it doesn't go through Shortcut 5ddfbb80d86 Backends: Vulkan: Fixed vkAcquireNextImageKHR() validation errors in VulkanSDK 1.3.275 by allocating one extra semaphore than in-flight frames. (#7236) 2f483373355 Examples: Vulkan: Rename compile-time defies for the examples to remove misleading IMGUI_ prefixes. d7c2a0e38f4 Shortcut(): fixed 8323a06 adding _Repeat to all Shortcut() calls. 3b828d3701e Refactor: moving ItemAdd() into a section abote ItemSize(). No logic change (part 2) ff5f3aa38b5 Refactor: moving ItemAdd() into a section abote ItemSize(). No logic change (part 1) 1a48a634466 Enclosed a few more remaining sections in ifndef IMGUI_DISABLE_DEBUG_TOOLS for completeness. 33fabdf392d Scrollbar() doesn't forcefully mark itself as hovered when held. d431d85839b Internals: removed obsolete ImPool::GetSize() (last used by implot 0.10, changed in implot 0.11) f0d1f61fa51 Internals: commented out long-time obsoleted FocusableItemRegister()/FocusableItemUnregister() documentaton-only leftovers. + 095665977f6 Nav: marking NavId as hovered in ButtonBehavior() doesn't check for ActiveId. d10641b04a3 Nav: keyboard/gamepad activation mark widgets as held to give better visual feedback. 03417cc77d1 Backends: WebGPU: Filling all WGPUDepthStencilState fields explicitly as a recent Dawn update stopped setting default values. (#7232) 5fdcdf7080a Shortcut: ImGuiInputFlags_RouteFocused policy can filter Shortcuts conflicting with character input when an item is active. (#456) 80d5cb1ab1f Comments around ImGuiInputFlags. 1cc0eb4d322 Internals: Rename NavFocusScopePath to NavFocusRoute + fixed a static analyzer warning. 46e5f44ec8c Shortcut()/SetShortcutRouting(): use mixed current window focus scope + ParentWindowForFocusRoute. (#6798, #2637, #456) e0c8c80adaa Shortcut()/SetShortcutRouting(): focus route testing now use ParentWindowForFocusRoute. Automatically set on child-window, manually configurable otherwise. (#6798, #2637, #456) 4b20a0217eb Internals: add window to FocusScopeStack. (#6798) 2156db7a075 Debug Log: added InputRouting logging. Made GetKeyChordName() use its own buffer. Fixed debug break in SetShortcutRouting(). (#6798, #2637, #456) dd0efdc6371 Fixed SetKeyboardFocusHere() not working when current nav focus is in different scope. (#7226) 8a3dfda8d08 Commented out obsolete ImGuiIO::ImeWindowHandle marked obsolete in 1.87, favor of writing to 'void* ImGuiViewport::PlatformHandleRaw'. 6228c2e1ec7 Backends: Vulkan: moved ImGui_ImplVulkanH_DestroyFrameRenderBuffers/ImGui_ImplVulkanH_DestroyWindowRenderBuffers as they are always used in a state where backend data is available. 70bb6d1e790 Backends: Vulkan: Fixed vkMapMemory() calls unnecessarily using full buffer size. (#3957) 82df7c8bf41 Backends: Vulkan: Fixed handling of ImGui_ImplVulkan_InitInfo::MinAllocationSize field. (#7189, #4238) 29809d72202 Version 1.90.2 WIP db049db8608 Docs: tweak, fixed misplaced changelog entry. (#7084) git-subtree-dir: external/imgui/imgui git-subtree-split: b475309fa1e9d7a91825a169e243f9c4fa085f71
817 lines
36 KiB
C
817 lines
36 KiB
C
//-----------------------------------------------------------------------------
|
|
// About imgui_impl_opengl3_loader.h:
|
|
//
|
|
// We embed our own OpenGL loader to not require user to provide their own or to have to use ours,
|
|
// which proved to be endless problems for users.
|
|
// Our loader is custom-generated, based on gl3w but automatically filtered to only include
|
|
// enums/functions that we use in our imgui_impl_opengl3.cpp source file in order to be small.
|
|
//
|
|
// YOU SHOULD NOT NEED TO INCLUDE/USE THIS DIRECTLY. THIS IS USED BY imgui_impl_opengl3.cpp ONLY.
|
|
// THE REST OF YOUR APP SHOULD USE A DIFFERENT GL LOADER: ANY GL LOADER OF YOUR CHOICE.
|
|
//
|
|
// IF YOU GET BUILD ERRORS IN THIS FILE (commonly macro redefinitions or function redefinitions):
|
|
// IT LIKELY MEANS THAT YOU ARE BUILDING 'imgui_impl_opengl3.cpp' OR INCUDING 'imgui_impl_opengl3_loader.h'
|
|
// IN THE SAME COMPILATION UNIT AS ONE OF YOUR FILE WHICH IS USING A THIRD-PARTY OPENGL LOADER.
|
|
// (e.g. COULD HAPPEN IF YOU ARE DOING A UNITY/JUMBO BUILD, OR INCLUDING .CPP FILES FROM OTHERS)
|
|
// YOU SHOULD NOT BUILD BOTH IN THE SAME COMPILATION UNIT.
|
|
// BUT IF YOU REALLY WANT TO, you can '#define IMGUI_IMPL_OPENGL_LOADER_CUSTOM' and imgui_impl_opengl3.cpp
|
|
// WILL NOT BE USING OUR LOADER, AND INSTEAD EXPECT ANOTHER/YOUR LOADER TO BE AVAILABLE IN THE COMPILATION UNIT.
|
|
//
|
|
// Regenerate with:
|
|
// python gl3w_gen.py --output ../imgui/backends/imgui_impl_opengl3_loader.h --ref ../imgui/backends/imgui_impl_opengl3.cpp ./extra_symbols.txt
|
|
//
|
|
// More info:
|
|
// https://github.com/dearimgui/gl3w_stripped
|
|
// https://github.com/ocornut/imgui/issues/4445
|
|
//-----------------------------------------------------------------------------
|
|
|
|
/*
|
|
* This file was generated with gl3w_gen.py, part of imgl3w
|
|
* (hosted at https://github.com/dearimgui/gl3w_stripped)
|
|
*
|
|
* This is free and unencumbered software released into the public domain.
|
|
*
|
|
* Anyone is free to copy, modify, publish, use, compile, sell, or
|
|
* distribute this software, either in source code form or as a compiled
|
|
* binary, for any purpose, commercial or non-commercial, and by any
|
|
* means.
|
|
*
|
|
* In jurisdictions that recognize copyright laws, the author or authors
|
|
* of this software dedicate any and all copyright interest in the
|
|
* software to the public domain. We make this dedication for the benefit
|
|
* of the public at large and to the detriment of our heirs and
|
|
* successors. We intend this dedication to be an overt act of
|
|
* relinquishment in perpetuity of all present and future rights to this
|
|
* software under copyright law.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
* IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
* OTHER DEALINGS IN THE SOFTWARE.
|
|
*/
|
|
|
|
#ifndef __gl3w_h_
|
|
#define __gl3w_h_
|
|
|
|
// Adapted from KHR/khrplatform.h to avoid including entire file.
|
|
#ifndef __khrplatform_h_
|
|
typedef float khronos_float_t;
|
|
typedef signed char khronos_int8_t;
|
|
typedef unsigned char khronos_uint8_t;
|
|
typedef signed short int khronos_int16_t;
|
|
typedef unsigned short int khronos_uint16_t;
|
|
#ifdef _WIN64
|
|
typedef signed long long int khronos_intptr_t;
|
|
typedef signed long long int khronos_ssize_t;
|
|
#else
|
|
typedef signed long int khronos_intptr_t;
|
|
typedef signed long int khronos_ssize_t;
|
|
#endif
|
|
|
|
#if defined(_MSC_VER) && !defined(__clang__)
|
|
typedef signed __int64 khronos_int64_t;
|
|
typedef unsigned __int64 khronos_uint64_t;
|
|
#elif (defined(__clang__) || defined(__GNUC__)) && (__cplusplus < 201100)
|
|
#include <stdint.h>
|
|
typedef int64_t khronos_int64_t;
|
|
typedef uint64_t khronos_uint64_t;
|
|
#else
|
|
typedef signed long long khronos_int64_t;
|
|
typedef unsigned long long khronos_uint64_t;
|
|
#endif
|
|
#endif // __khrplatform_h_
|
|
|
|
#ifndef __gl_glcorearb_h_
|
|
#define __gl_glcorearb_h_ 1
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
/*
|
|
** Copyright 2013-2020 The Khronos Group Inc.
|
|
** SPDX-License-Identifier: MIT
|
|
**
|
|
** This header is generated from the Khronos OpenGL / OpenGL ES XML
|
|
** API Registry. The current version of the Registry, generator scripts
|
|
** used to make the header, and the header can be found at
|
|
** https://github.com/KhronosGroup/OpenGL-Registry
|
|
*/
|
|
#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
|
|
#ifndef WIN32_LEAN_AND_MEAN
|
|
#define WIN32_LEAN_AND_MEAN 1
|
|
#endif
|
|
#include <windows.h>
|
|
#endif
|
|
#ifndef APIENTRY
|
|
#define APIENTRY
|
|
#endif
|
|
#ifndef APIENTRYP
|
|
#define APIENTRYP APIENTRY *
|
|
#endif
|
|
#ifndef GLAPI
|
|
#define GLAPI extern
|
|
#endif
|
|
/* glcorearb.h is for use with OpenGL core profile implementations.
|
|
** It should should be placed in the same directory as gl.h and
|
|
** included as <GL/glcorearb.h>.
|
|
**
|
|
** glcorearb.h includes only APIs in the latest OpenGL core profile
|
|
** implementation together with APIs in newer ARB extensions which
|
|
** can be supported by the core profile. It does not, and never will
|
|
** include functionality removed from the core profile, such as
|
|
** fixed-function vertex and fragment processing.
|
|
**
|
|
** Do not #include both <GL/glcorearb.h> and either of <GL/gl.h> or
|
|
** <GL/glext.h> in the same source file.
|
|
*/
|
|
/* Generated C header for:
|
|
* API: gl
|
|
* Profile: core
|
|
* Versions considered: .*
|
|
* Versions emitted: .*
|
|
* Default extensions included: glcore
|
|
* Additional extensions included: _nomatch_^
|
|
* Extensions removed: _nomatch_^
|
|
*/
|
|
#ifndef GL_VERSION_1_0
|
|
typedef void GLvoid;
|
|
typedef unsigned int GLenum;
|
|
|
|
typedef khronos_float_t GLfloat;
|
|
typedef int GLint;
|
|
typedef int GLsizei;
|
|
typedef unsigned int GLbitfield;
|
|
typedef double GLdouble;
|
|
typedef unsigned int GLuint;
|
|
typedef unsigned char GLboolean;
|
|
typedef khronos_uint8_t GLubyte;
|
|
#define GL_COLOR_BUFFER_BIT 0x00004000
|
|
#define GL_FALSE 0
|
|
#define GL_TRUE 1
|
|
#define GL_TRIANGLES 0x0004
|
|
#define GL_ONE 1
|
|
#define GL_SRC_ALPHA 0x0302
|
|
#define GL_ONE_MINUS_SRC_ALPHA 0x0303
|
|
#define GL_FRONT 0x0404
|
|
#define GL_BACK 0x0405
|
|
#define GL_FRONT_AND_BACK 0x0408
|
|
#define GL_POLYGON_MODE 0x0B40
|
|
#define GL_CULL_FACE 0x0B44
|
|
#define GL_DEPTH_TEST 0x0B71
|
|
#define GL_STENCIL_TEST 0x0B90
|
|
#define GL_VIEWPORT 0x0BA2
|
|
#define GL_BLEND 0x0BE2
|
|
#define GL_SCISSOR_BOX 0x0C10
|
|
#define GL_SCISSOR_TEST 0x0C11
|
|
#define GL_UNPACK_ROW_LENGTH 0x0CF2
|
|
#define GL_PACK_ALIGNMENT 0x0D05
|
|
#define GL_TEXTURE_2D 0x0DE1
|
|
#define GL_UNSIGNED_BYTE 0x1401
|
|
#define GL_UNSIGNED_SHORT 0x1403
|
|
#define GL_UNSIGNED_INT 0x1405
|
|
#define GL_FLOAT 0x1406
|
|
#define GL_RGBA 0x1908
|
|
#define GL_FILL 0x1B02
|
|
#define GL_VENDOR 0x1F00
|
|
#define GL_RENDERER 0x1F01
|
|
#define GL_VERSION 0x1F02
|
|
#define GL_EXTENSIONS 0x1F03
|
|
#define GL_LINEAR 0x2601
|
|
#define GL_TEXTURE_MAG_FILTER 0x2800
|
|
#define GL_TEXTURE_MIN_FILTER 0x2801
|
|
typedef void (APIENTRYP PFNGLPOLYGONMODEPROC) (GLenum face, GLenum mode);
|
|
typedef void (APIENTRYP PFNGLSCISSORPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
|
|
typedef void (APIENTRYP PFNGLTEXPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);
|
|
typedef void (APIENTRYP PFNGLTEXIMAGE2DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
|
|
typedef void (APIENTRYP PFNGLCLEARPROC) (GLbitfield mask);
|
|
typedef void (APIENTRYP PFNGLCLEARCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
|
|
typedef void (APIENTRYP PFNGLDISABLEPROC) (GLenum cap);
|
|
typedef void (APIENTRYP PFNGLENABLEPROC) (GLenum cap);
|
|
typedef void (APIENTRYP PFNGLFLUSHPROC) (void);
|
|
typedef void (APIENTRYP PFNGLPIXELSTOREIPROC) (GLenum pname, GLint param);
|
|
typedef void (APIENTRYP PFNGLREADPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels);
|
|
typedef GLenum (APIENTRYP PFNGLGETERRORPROC) (void);
|
|
typedef void (APIENTRYP PFNGLGETINTEGERVPROC) (GLenum pname, GLint *data);
|
|
typedef const GLubyte *(APIENTRYP PFNGLGETSTRINGPROC) (GLenum name);
|
|
typedef GLboolean (APIENTRYP PFNGLISENABLEDPROC) (GLenum cap);
|
|
typedef void (APIENTRYP PFNGLVIEWPORTPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
|
|
#ifdef GL_GLEXT_PROTOTYPES
|
|
GLAPI void APIENTRY glPolygonMode (GLenum face, GLenum mode);
|
|
GLAPI void APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height);
|
|
GLAPI void APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param);
|
|
GLAPI void APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
|
|
GLAPI void APIENTRY glClear (GLbitfield mask);
|
|
GLAPI void APIENTRY glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
|
|
GLAPI void APIENTRY glDisable (GLenum cap);
|
|
GLAPI void APIENTRY glEnable (GLenum cap);
|
|
GLAPI void APIENTRY glFlush (void);
|
|
GLAPI void APIENTRY glPixelStorei (GLenum pname, GLint param);
|
|
GLAPI void APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels);
|
|
GLAPI GLenum APIENTRY glGetError (void);
|
|
GLAPI void APIENTRY glGetIntegerv (GLenum pname, GLint *data);
|
|
GLAPI const GLubyte *APIENTRY glGetString (GLenum name);
|
|
GLAPI GLboolean APIENTRY glIsEnabled (GLenum cap);
|
|
GLAPI void APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
|
|
#endif
|
|
#endif /* GL_VERSION_1_0 */
|
|
#ifndef GL_VERSION_1_1
|
|
typedef khronos_float_t GLclampf;
|
|
typedef double GLclampd;
|
|
#define GL_TEXTURE_BINDING_2D 0x8069
|
|
typedef void (APIENTRYP PFNGLDRAWELEMENTSPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices);
|
|
typedef void (APIENTRYP PFNGLBINDTEXTUREPROC) (GLenum target, GLuint texture);
|
|
typedef void (APIENTRYP PFNGLDELETETEXTURESPROC) (GLsizei n, const GLuint *textures);
|
|
typedef void (APIENTRYP PFNGLGENTEXTURESPROC) (GLsizei n, GLuint *textures);
|
|
#ifdef GL_GLEXT_PROTOTYPES
|
|
GLAPI void APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const void *indices);
|
|
GLAPI void APIENTRY glBindTexture (GLenum target, GLuint texture);
|
|
GLAPI void APIENTRY glDeleteTextures (GLsizei n, const GLuint *textures);
|
|
GLAPI void APIENTRY glGenTextures (GLsizei n, GLuint *textures);
|
|
#endif
|
|
#endif /* GL_VERSION_1_1 */
|
|
#ifndef GL_VERSION_1_3
|
|
#define GL_TEXTURE0 0x84C0
|
|
#define GL_ACTIVE_TEXTURE 0x84E0
|
|
typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
|
|
#ifdef GL_GLEXT_PROTOTYPES
|
|
GLAPI void APIENTRY glActiveTexture (GLenum texture);
|
|
#endif
|
|
#endif /* GL_VERSION_1_3 */
|
|
#ifndef GL_VERSION_1_4
|
|
#define GL_BLEND_DST_RGB 0x80C8
|
|
#define GL_BLEND_SRC_RGB 0x80C9
|
|
#define GL_BLEND_DST_ALPHA 0x80CA
|
|
#define GL_BLEND_SRC_ALPHA 0x80CB
|
|
#define GL_FUNC_ADD 0x8006
|
|
typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
|
|
typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
|
|
#ifdef GL_GLEXT_PROTOTYPES
|
|
GLAPI void APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
|
|
GLAPI void APIENTRY glBlendEquation (GLenum mode);
|
|
#endif
|
|
#endif /* GL_VERSION_1_4 */
|
|
#ifndef GL_VERSION_1_5
|
|
typedef khronos_ssize_t GLsizeiptr;
|
|
typedef khronos_intptr_t GLintptr;
|
|
#define GL_ARRAY_BUFFER 0x8892
|
|
#define GL_ELEMENT_ARRAY_BUFFER 0x8893
|
|
#define GL_ARRAY_BUFFER_BINDING 0x8894
|
|
#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895
|
|
#define GL_STREAM_DRAW 0x88E0
|
|
#define GL_PIXEL_UNPACK_BUFFER 0x88EC
|
|
#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF
|
|
typedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
|
|
typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers);
|
|
typedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);
|
|
typedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void *data, GLenum usage);
|
|
typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);
|
|
#ifdef GL_GLEXT_PROTOTYPES
|
|
GLAPI void APIENTRY glBindBuffer (GLenum target, GLuint buffer);
|
|
GLAPI void APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers);
|
|
GLAPI void APIENTRY glGenBuffers (GLsizei n, GLuint *buffers);
|
|
GLAPI void APIENTRY glBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage);
|
|
GLAPI void APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);
|
|
#endif
|
|
#endif /* GL_VERSION_1_5 */
|
|
#ifndef GL_VERSION_2_0
|
|
typedef char GLchar;
|
|
typedef khronos_int16_t GLshort;
|
|
typedef khronos_int8_t GLbyte;
|
|
typedef khronos_uint16_t GLushort;
|
|
#define GL_BLEND_EQUATION_RGB 0x8009
|
|
#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622
|
|
#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623
|
|
#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624
|
|
#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625
|
|
#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645
|
|
#define GL_BLEND_EQUATION_ALPHA 0x883D
|
|
#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A
|
|
#define GL_FRAGMENT_SHADER 0x8B30
|
|
#define GL_VERTEX_SHADER 0x8B31
|
|
#define GL_COMPILE_STATUS 0x8B81
|
|
#define GL_LINK_STATUS 0x8B82
|
|
#define GL_INFO_LOG_LENGTH 0x8B84
|
|
#define GL_CURRENT_PROGRAM 0x8B8D
|
|
#define GL_UPPER_LEFT 0x8CA2
|
|
typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);
|
|
typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
|
|
typedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader);
|
|
typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC) (void);
|
|
typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC) (GLenum type);
|
|
typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program);
|
|
typedef void (APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader);
|
|
typedef void (APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);
|
|
typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index);
|
|
typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
|
|
typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name);
|
|
typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params);
|
|
typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
|
|
typedef void (APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);
|
|
typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
|
|
typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name);
|
|
typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params);
|
|
typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, void **pointer);
|
|
typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC) (GLuint program);
|
|
typedef void (APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program);
|
|
typedef void (APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
|
|
typedef void (APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program);
|
|
typedef void (APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0);
|
|
typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
|
typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
|
|
#ifdef GL_GLEXT_PROTOTYPES
|
|
GLAPI void APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha);
|
|
GLAPI void APIENTRY glAttachShader (GLuint program, GLuint shader);
|
|
GLAPI void APIENTRY glCompileShader (GLuint shader);
|
|
GLAPI GLuint APIENTRY glCreateProgram (void);
|
|
GLAPI GLuint APIENTRY glCreateShader (GLenum type);
|
|
GLAPI void APIENTRY glDeleteProgram (GLuint program);
|
|
GLAPI void APIENTRY glDeleteShader (GLuint shader);
|
|
GLAPI void APIENTRY glDetachShader (GLuint program, GLuint shader);
|
|
GLAPI void APIENTRY glDisableVertexAttribArray (GLuint index);
|
|
GLAPI void APIENTRY glEnableVertexAttribArray (GLuint index);
|
|
GLAPI GLint APIENTRY glGetAttribLocation (GLuint program, const GLchar *name);
|
|
GLAPI void APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params);
|
|
GLAPI void APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
|
|
GLAPI void APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params);
|
|
GLAPI void APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
|
|
GLAPI GLint APIENTRY glGetUniformLocation (GLuint program, const GLchar *name);
|
|
GLAPI void APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params);
|
|
GLAPI void APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, void **pointer);
|
|
GLAPI GLboolean APIENTRY glIsProgram (GLuint program);
|
|
GLAPI void APIENTRY glLinkProgram (GLuint program);
|
|
GLAPI void APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
|
|
GLAPI void APIENTRY glUseProgram (GLuint program);
|
|
GLAPI void APIENTRY glUniform1i (GLint location, GLint v0);
|
|
GLAPI void APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
|
GLAPI void APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
|
|
#endif
|
|
#endif /* GL_VERSION_2_0 */
|
|
#ifndef GL_VERSION_3_0
|
|
typedef khronos_uint16_t GLhalf;
|
|
#define GL_MAJOR_VERSION 0x821B
|
|
#define GL_MINOR_VERSION 0x821C
|
|
#define GL_NUM_EXTENSIONS 0x821D
|
|
#define GL_FRAMEBUFFER_SRGB 0x8DB9
|
|
#define GL_VERTEX_ARRAY_BINDING 0x85B5
|
|
typedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC) (GLenum target, GLuint index, GLboolean *data);
|
|
typedef void (APIENTRYP PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint *data);
|
|
typedef const GLubyte *(APIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint index);
|
|
typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC) (GLuint array);
|
|
typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays);
|
|
typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays);
|
|
#ifdef GL_GLEXT_PROTOTYPES
|
|
GLAPI const GLubyte *APIENTRY glGetStringi (GLenum name, GLuint index);
|
|
GLAPI void APIENTRY glBindVertexArray (GLuint array);
|
|
GLAPI void APIENTRY glDeleteVertexArrays (GLsizei n, const GLuint *arrays);
|
|
GLAPI void APIENTRY glGenVertexArrays (GLsizei n, GLuint *arrays);
|
|
#endif
|
|
#endif /* GL_VERSION_3_0 */
|
|
#ifndef GL_VERSION_3_1
|
|
#define GL_VERSION_3_1 1
|
|
#define GL_PRIMITIVE_RESTART 0x8F9D
|
|
#endif /* GL_VERSION_3_1 */
|
|
#ifndef GL_VERSION_3_2
|
|
#define GL_VERSION_3_2 1
|
|
typedef struct __GLsync *GLsync;
|
|
typedef khronos_uint64_t GLuint64;
|
|
typedef khronos_int64_t GLint64;
|
|
#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002
|
|
#define GL_CONTEXT_PROFILE_MASK 0x9126
|
|
typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
|
|
typedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC) (GLenum target, GLuint index, GLint64 *data);
|
|
#ifdef GL_GLEXT_PROTOTYPES
|
|
GLAPI void APIENTRY glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
|
|
#endif
|
|
#endif /* GL_VERSION_3_2 */
|
|
#ifndef GL_VERSION_3_3
|
|
#define GL_VERSION_3_3 1
|
|
#define GL_SAMPLER_BINDING 0x8919
|
|
typedef void (APIENTRYP PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler);
|
|
#ifdef GL_GLEXT_PROTOTYPES
|
|
GLAPI void APIENTRY glBindSampler (GLuint unit, GLuint sampler);
|
|
#endif
|
|
#endif /* GL_VERSION_3_3 */
|
|
#ifndef GL_VERSION_4_1
|
|
typedef void (APIENTRYP PFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat *data);
|
|
typedef void (APIENTRYP PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble *data);
|
|
#endif /* GL_VERSION_4_1 */
|
|
#ifndef GL_VERSION_4_3
|
|
typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
|
|
#endif /* GL_VERSION_4_3 */
|
|
#ifndef GL_VERSION_4_5
|
|
#define GL_CLIP_ORIGIN 0x935C
|
|
typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKI_VPROC) (GLuint xfb, GLenum pname, GLuint index, GLint *param);
|
|
typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKI64_VPROC) (GLuint xfb, GLenum pname, GLuint index, GLint64 *param);
|
|
#endif /* GL_VERSION_4_5 */
|
|
#ifndef GL_ARB_bindless_texture
|
|
typedef khronos_uint64_t GLuint64EXT;
|
|
#endif /* GL_ARB_bindless_texture */
|
|
#ifndef GL_ARB_cl_event
|
|
struct _cl_context;
|
|
struct _cl_event;
|
|
#endif /* GL_ARB_cl_event */
|
|
#ifndef GL_ARB_clip_control
|
|
#define GL_ARB_clip_control 1
|
|
#endif /* GL_ARB_clip_control */
|
|
#ifndef GL_ARB_debug_output
|
|
typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
|
|
#endif /* GL_ARB_debug_output */
|
|
#ifndef GL_EXT_EGL_image_storage
|
|
typedef void *GLeglImageOES;
|
|
#endif /* GL_EXT_EGL_image_storage */
|
|
#ifndef GL_EXT_direct_state_access
|
|
typedef void (APIENTRYP PFNGLGETFLOATI_VEXTPROC) (GLenum pname, GLuint index, GLfloat *params);
|
|
typedef void (APIENTRYP PFNGLGETDOUBLEI_VEXTPROC) (GLenum pname, GLuint index, GLdouble *params);
|
|
typedef void (APIENTRYP PFNGLGETPOINTERI_VEXTPROC) (GLenum pname, GLuint index, void **params);
|
|
typedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint *param);
|
|
typedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, void **param);
|
|
#endif /* GL_EXT_direct_state_access */
|
|
#ifndef GL_NV_draw_vulkan_image
|
|
typedef void (APIENTRY *GLVULKANPROCNV)(void);
|
|
#endif /* GL_NV_draw_vulkan_image */
|
|
#ifndef GL_NV_gpu_shader5
|
|
typedef khronos_int64_t GLint64EXT;
|
|
#endif /* GL_NV_gpu_shader5 */
|
|
#ifndef GL_NV_vertex_buffer_unified_memory
|
|
typedef void (APIENTRYP PFNGLGETINTEGERUI64I_VNVPROC) (GLenum value, GLuint index, GLuint64EXT *result);
|
|
#endif /* GL_NV_vertex_buffer_unified_memory */
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef GL3W_API
|
|
#define GL3W_API
|
|
#endif
|
|
|
|
#ifndef __gl_h_
|
|
#define __gl_h_
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define GL3W_OK 0
|
|
#define GL3W_ERROR_INIT -1
|
|
#define GL3W_ERROR_LIBRARY_OPEN -2
|
|
#define GL3W_ERROR_OPENGL_VERSION -3
|
|
|
|
typedef void (*GL3WglProc)(void);
|
|
typedef GL3WglProc (*GL3WGetProcAddressProc)(const char *proc);
|
|
|
|
/* gl3w api */
|
|
GL3W_API int imgl3wInit(void);
|
|
GL3W_API int imgl3wInit2(GL3WGetProcAddressProc proc);
|
|
GL3W_API int imgl3wIsSupported(int major, int minor);
|
|
GL3W_API GL3WglProc imgl3wGetProcAddress(const char *proc);
|
|
|
|
/* gl3w internal state */
|
|
union ImGL3WProcs {
|
|
GL3WglProc ptr[59];
|
|
struct {
|
|
PFNGLACTIVETEXTUREPROC ActiveTexture;
|
|
PFNGLATTACHSHADERPROC AttachShader;
|
|
PFNGLBINDBUFFERPROC BindBuffer;
|
|
PFNGLBINDSAMPLERPROC BindSampler;
|
|
PFNGLBINDTEXTUREPROC BindTexture;
|
|
PFNGLBINDVERTEXARRAYPROC BindVertexArray;
|
|
PFNGLBLENDEQUATIONPROC BlendEquation;
|
|
PFNGLBLENDEQUATIONSEPARATEPROC BlendEquationSeparate;
|
|
PFNGLBLENDFUNCSEPARATEPROC BlendFuncSeparate;
|
|
PFNGLBUFFERDATAPROC BufferData;
|
|
PFNGLBUFFERSUBDATAPROC BufferSubData;
|
|
PFNGLCLEARPROC Clear;
|
|
PFNGLCLEARCOLORPROC ClearColor;
|
|
PFNGLCOMPILESHADERPROC CompileShader;
|
|
PFNGLCREATEPROGRAMPROC CreateProgram;
|
|
PFNGLCREATESHADERPROC CreateShader;
|
|
PFNGLDELETEBUFFERSPROC DeleteBuffers;
|
|
PFNGLDELETEPROGRAMPROC DeleteProgram;
|
|
PFNGLDELETESHADERPROC DeleteShader;
|
|
PFNGLDELETETEXTURESPROC DeleteTextures;
|
|
PFNGLDELETEVERTEXARRAYSPROC DeleteVertexArrays;
|
|
PFNGLDETACHSHADERPROC DetachShader;
|
|
PFNGLDISABLEPROC Disable;
|
|
PFNGLDISABLEVERTEXATTRIBARRAYPROC DisableVertexAttribArray;
|
|
PFNGLDRAWELEMENTSPROC DrawElements;
|
|
PFNGLDRAWELEMENTSBASEVERTEXPROC DrawElementsBaseVertex;
|
|
PFNGLENABLEPROC Enable;
|
|
PFNGLENABLEVERTEXATTRIBARRAYPROC EnableVertexAttribArray;
|
|
PFNGLFLUSHPROC Flush;
|
|
PFNGLGENBUFFERSPROC GenBuffers;
|
|
PFNGLGENTEXTURESPROC GenTextures;
|
|
PFNGLGENVERTEXARRAYSPROC GenVertexArrays;
|
|
PFNGLGETATTRIBLOCATIONPROC GetAttribLocation;
|
|
PFNGLGETERRORPROC GetError;
|
|
PFNGLGETINTEGERVPROC GetIntegerv;
|
|
PFNGLGETPROGRAMINFOLOGPROC GetProgramInfoLog;
|
|
PFNGLGETPROGRAMIVPROC GetProgramiv;
|
|
PFNGLGETSHADERINFOLOGPROC GetShaderInfoLog;
|
|
PFNGLGETSHADERIVPROC GetShaderiv;
|
|
PFNGLGETSTRINGPROC GetString;
|
|
PFNGLGETSTRINGIPROC GetStringi;
|
|
PFNGLGETUNIFORMLOCATIONPROC GetUniformLocation;
|
|
PFNGLGETVERTEXATTRIBPOINTERVPROC GetVertexAttribPointerv;
|
|
PFNGLGETVERTEXATTRIBIVPROC GetVertexAttribiv;
|
|
PFNGLISENABLEDPROC IsEnabled;
|
|
PFNGLISPROGRAMPROC IsProgram;
|
|
PFNGLLINKPROGRAMPROC LinkProgram;
|
|
PFNGLPIXELSTOREIPROC PixelStorei;
|
|
PFNGLPOLYGONMODEPROC PolygonMode;
|
|
PFNGLREADPIXELSPROC ReadPixels;
|
|
PFNGLSCISSORPROC Scissor;
|
|
PFNGLSHADERSOURCEPROC ShaderSource;
|
|
PFNGLTEXIMAGE2DPROC TexImage2D;
|
|
PFNGLTEXPARAMETERIPROC TexParameteri;
|
|
PFNGLUNIFORM1IPROC Uniform1i;
|
|
PFNGLUNIFORMMATRIX4FVPROC UniformMatrix4fv;
|
|
PFNGLUSEPROGRAMPROC UseProgram;
|
|
PFNGLVERTEXATTRIBPOINTERPROC VertexAttribPointer;
|
|
PFNGLVIEWPORTPROC Viewport;
|
|
} gl;
|
|
};
|
|
|
|
GL3W_API extern union ImGL3WProcs imgl3wProcs;
|
|
|
|
/* OpenGL functions */
|
|
#define glActiveTexture imgl3wProcs.gl.ActiveTexture
|
|
#define glAttachShader imgl3wProcs.gl.AttachShader
|
|
#define glBindBuffer imgl3wProcs.gl.BindBuffer
|
|
#define glBindSampler imgl3wProcs.gl.BindSampler
|
|
#define glBindTexture imgl3wProcs.gl.BindTexture
|
|
#define glBindVertexArray imgl3wProcs.gl.BindVertexArray
|
|
#define glBlendEquation imgl3wProcs.gl.BlendEquation
|
|
#define glBlendEquationSeparate imgl3wProcs.gl.BlendEquationSeparate
|
|
#define glBlendFuncSeparate imgl3wProcs.gl.BlendFuncSeparate
|
|
#define glBufferData imgl3wProcs.gl.BufferData
|
|
#define glBufferSubData imgl3wProcs.gl.BufferSubData
|
|
#define glClear imgl3wProcs.gl.Clear
|
|
#define glClearColor imgl3wProcs.gl.ClearColor
|
|
#define glCompileShader imgl3wProcs.gl.CompileShader
|
|
#define glCreateProgram imgl3wProcs.gl.CreateProgram
|
|
#define glCreateShader imgl3wProcs.gl.CreateShader
|
|
#define glDeleteBuffers imgl3wProcs.gl.DeleteBuffers
|
|
#define glDeleteProgram imgl3wProcs.gl.DeleteProgram
|
|
#define glDeleteShader imgl3wProcs.gl.DeleteShader
|
|
#define glDeleteTextures imgl3wProcs.gl.DeleteTextures
|
|
#define glDeleteVertexArrays imgl3wProcs.gl.DeleteVertexArrays
|
|
#define glDetachShader imgl3wProcs.gl.DetachShader
|
|
#define glDisable imgl3wProcs.gl.Disable
|
|
#define glDisableVertexAttribArray imgl3wProcs.gl.DisableVertexAttribArray
|
|
#define glDrawElements imgl3wProcs.gl.DrawElements
|
|
#define glDrawElementsBaseVertex imgl3wProcs.gl.DrawElementsBaseVertex
|
|
#define glEnable imgl3wProcs.gl.Enable
|
|
#define glEnableVertexAttribArray imgl3wProcs.gl.EnableVertexAttribArray
|
|
#define glFlush imgl3wProcs.gl.Flush
|
|
#define glGenBuffers imgl3wProcs.gl.GenBuffers
|
|
#define glGenTextures imgl3wProcs.gl.GenTextures
|
|
#define glGenVertexArrays imgl3wProcs.gl.GenVertexArrays
|
|
#define glGetAttribLocation imgl3wProcs.gl.GetAttribLocation
|
|
#define glGetError imgl3wProcs.gl.GetError
|
|
#define glGetIntegerv imgl3wProcs.gl.GetIntegerv
|
|
#define glGetProgramInfoLog imgl3wProcs.gl.GetProgramInfoLog
|
|
#define glGetProgramiv imgl3wProcs.gl.GetProgramiv
|
|
#define glGetShaderInfoLog imgl3wProcs.gl.GetShaderInfoLog
|
|
#define glGetShaderiv imgl3wProcs.gl.GetShaderiv
|
|
#define glGetString imgl3wProcs.gl.GetString
|
|
#define glGetStringi imgl3wProcs.gl.GetStringi
|
|
#define glGetUniformLocation imgl3wProcs.gl.GetUniformLocation
|
|
#define glGetVertexAttribPointerv imgl3wProcs.gl.GetVertexAttribPointerv
|
|
#define glGetVertexAttribiv imgl3wProcs.gl.GetVertexAttribiv
|
|
#define glIsEnabled imgl3wProcs.gl.IsEnabled
|
|
#define glIsProgram imgl3wProcs.gl.IsProgram
|
|
#define glLinkProgram imgl3wProcs.gl.LinkProgram
|
|
#define glPixelStorei imgl3wProcs.gl.PixelStorei
|
|
#define glPolygonMode imgl3wProcs.gl.PolygonMode
|
|
#define glReadPixels imgl3wProcs.gl.ReadPixels
|
|
#define glScissor imgl3wProcs.gl.Scissor
|
|
#define glShaderSource imgl3wProcs.gl.ShaderSource
|
|
#define glTexImage2D imgl3wProcs.gl.TexImage2D
|
|
#define glTexParameteri imgl3wProcs.gl.TexParameteri
|
|
#define glUniform1i imgl3wProcs.gl.Uniform1i
|
|
#define glUniformMatrix4fv imgl3wProcs.gl.UniformMatrix4fv
|
|
#define glUseProgram imgl3wProcs.gl.UseProgram
|
|
#define glVertexAttribPointer imgl3wProcs.gl.VertexAttribPointer
|
|
#define glViewport imgl3wProcs.gl.Viewport
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#ifdef IMGL3W_IMPL
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <stdlib.h>
|
|
|
|
#define GL3W_ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
|
|
|
|
#if defined(_WIN32)
|
|
#ifndef WIN32_LEAN_AND_MEAN
|
|
#define WIN32_LEAN_AND_MEAN 1
|
|
#endif
|
|
#include <windows.h>
|
|
|
|
static HMODULE libgl;
|
|
typedef PROC(__stdcall* GL3WglGetProcAddr)(LPCSTR);
|
|
static GL3WglGetProcAddr wgl_get_proc_address;
|
|
|
|
static int open_libgl(void)
|
|
{
|
|
libgl = LoadLibraryA("opengl32.dll");
|
|
if (!libgl)
|
|
return GL3W_ERROR_LIBRARY_OPEN;
|
|
wgl_get_proc_address = (GL3WglGetProcAddr)GetProcAddress(libgl, "wglGetProcAddress");
|
|
return GL3W_OK;
|
|
}
|
|
|
|
static void close_libgl(void) { FreeLibrary(libgl); }
|
|
static GL3WglProc get_proc(const char *proc)
|
|
{
|
|
GL3WglProc res;
|
|
res = (GL3WglProc)wgl_get_proc_address(proc);
|
|
if (!res)
|
|
res = (GL3WglProc)GetProcAddress(libgl, proc);
|
|
return res;
|
|
}
|
|
#elif defined(__APPLE__)
|
|
#include <dlfcn.h>
|
|
|
|
static void *libgl;
|
|
static int open_libgl(void)
|
|
{
|
|
libgl = dlopen("/System/Library/Frameworks/OpenGL.framework/OpenGL", RTLD_LAZY | RTLD_LOCAL);
|
|
if (!libgl)
|
|
return GL3W_ERROR_LIBRARY_OPEN;
|
|
return GL3W_OK;
|
|
}
|
|
|
|
static void close_libgl(void) { dlclose(libgl); }
|
|
|
|
static GL3WglProc get_proc(const char *proc)
|
|
{
|
|
GL3WglProc res;
|
|
*(void **)(&res) = dlsym(libgl, proc);
|
|
return res;
|
|
}
|
|
#else
|
|
#include <dlfcn.h>
|
|
|
|
static void *libgl;
|
|
static GL3WglProc (*glx_get_proc_address)(const GLubyte *);
|
|
|
|
static int open_libgl(void)
|
|
{
|
|
// While most systems use libGL.so.1, NetBSD seems to use that libGL.so.3. See https://github.com/ocornut/imgui/issues/6983
|
|
libgl = dlopen("libGL.so", RTLD_LAZY | RTLD_LOCAL);
|
|
if (!libgl)
|
|
libgl = dlopen("libGL.so.1", RTLD_LAZY | RTLD_LOCAL);
|
|
if (!libgl)
|
|
libgl = dlopen("libGL.so.3", RTLD_LAZY | RTLD_LOCAL);
|
|
if (!libgl)
|
|
return GL3W_ERROR_LIBRARY_OPEN;
|
|
*(void **)(&glx_get_proc_address) = dlsym(libgl, "glXGetProcAddressARB");
|
|
return GL3W_OK;
|
|
}
|
|
|
|
static void close_libgl(void) { dlclose(libgl); }
|
|
|
|
static GL3WglProc get_proc(const char *proc)
|
|
{
|
|
GL3WglProc res;
|
|
res = glx_get_proc_address((const GLubyte *)proc);
|
|
if (!res)
|
|
*(void **)(&res) = dlsym(libgl, proc);
|
|
return res;
|
|
}
|
|
#endif
|
|
|
|
static struct { int major, minor; } version;
|
|
|
|
static int parse_version(void)
|
|
{
|
|
if (!glGetIntegerv)
|
|
return GL3W_ERROR_INIT;
|
|
glGetIntegerv(GL_MAJOR_VERSION, &version.major);
|
|
glGetIntegerv(GL_MINOR_VERSION, &version.minor);
|
|
if (version.major == 0 && version.minor == 0)
|
|
{
|
|
// Query GL_VERSION in desktop GL 2.x, the string will start with "<major>.<minor>"
|
|
if (const char* gl_version = (const char*)glGetString(GL_VERSION))
|
|
sscanf(gl_version, "%d.%d", &version.major, &version.minor);
|
|
}
|
|
if (version.major < 2)
|
|
return GL3W_ERROR_OPENGL_VERSION;
|
|
return GL3W_OK;
|
|
}
|
|
|
|
static void load_procs(GL3WGetProcAddressProc proc);
|
|
|
|
int imgl3wInit(void)
|
|
{
|
|
int res = open_libgl();
|
|
if (res)
|
|
return res;
|
|
atexit(close_libgl);
|
|
return imgl3wInit2(get_proc);
|
|
}
|
|
|
|
int imgl3wInit2(GL3WGetProcAddressProc proc)
|
|
{
|
|
load_procs(proc);
|
|
return parse_version();
|
|
}
|
|
|
|
int imgl3wIsSupported(int major, int minor)
|
|
{
|
|
if (major < 2)
|
|
return 0;
|
|
if (version.major == major)
|
|
return version.minor >= minor;
|
|
return version.major >= major;
|
|
}
|
|
|
|
GL3WglProc imgl3wGetProcAddress(const char *proc) { return get_proc(proc); }
|
|
|
|
static const char *proc_names[] = {
|
|
"glActiveTexture",
|
|
"glAttachShader",
|
|
"glBindBuffer",
|
|
"glBindSampler",
|
|
"glBindTexture",
|
|
"glBindVertexArray",
|
|
"glBlendEquation",
|
|
"glBlendEquationSeparate",
|
|
"glBlendFuncSeparate",
|
|
"glBufferData",
|
|
"glBufferSubData",
|
|
"glClear",
|
|
"glClearColor",
|
|
"glCompileShader",
|
|
"glCreateProgram",
|
|
"glCreateShader",
|
|
"glDeleteBuffers",
|
|
"glDeleteProgram",
|
|
"glDeleteShader",
|
|
"glDeleteTextures",
|
|
"glDeleteVertexArrays",
|
|
"glDetachShader",
|
|
"glDisable",
|
|
"glDisableVertexAttribArray",
|
|
"glDrawElements",
|
|
"glDrawElementsBaseVertex",
|
|
"glEnable",
|
|
"glEnableVertexAttribArray",
|
|
"glFlush",
|
|
"glGenBuffers",
|
|
"glGenTextures",
|
|
"glGenVertexArrays",
|
|
"glGetAttribLocation",
|
|
"glGetError",
|
|
"glGetIntegerv",
|
|
"glGetProgramInfoLog",
|
|
"glGetProgramiv",
|
|
"glGetShaderInfoLog",
|
|
"glGetShaderiv",
|
|
"glGetString",
|
|
"glGetStringi",
|
|
"glGetUniformLocation",
|
|
"glGetVertexAttribPointerv",
|
|
"glGetVertexAttribiv",
|
|
"glIsEnabled",
|
|
"glIsProgram",
|
|
"glLinkProgram",
|
|
"glPixelStorei",
|
|
"glPolygonMode",
|
|
"glReadPixels",
|
|
"glScissor",
|
|
"glShaderSource",
|
|
"glTexImage2D",
|
|
"glTexParameteri",
|
|
"glUniform1i",
|
|
"glUniformMatrix4fv",
|
|
"glUseProgram",
|
|
"glVertexAttribPointer",
|
|
"glViewport",
|
|
};
|
|
|
|
GL3W_API union ImGL3WProcs imgl3wProcs;
|
|
|
|
static void load_procs(GL3WGetProcAddressProc proc)
|
|
{
|
|
size_t i;
|
|
for (i = 0; i < GL3W_ARRAY_SIZE(proc_names); i++)
|
|
imgl3wProcs.ptr[i] = proc(proc_names[i]);
|
|
}
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif
|